Full Code of Gulden/gulden-official for AI

master 63d424c0b30f cached
2078 files
30.4 MB
3.4M tokens
8844 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (13,771K chars total). Download the full file to get everything.
Repository: Gulden/gulden-official
Branch: master
Commit: 63d424c0b30f
Files: 2078
Total size: 30.4 MB

Directory structure:
gitextract_g53w6fs0/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE.md
├── .gitignore
├── .gitmodules
├── .mailmap
├── .travis.yml
├── CONTRIBUTING.md
├── COPYING
├── COPYING_munt
├── COPYING_upstream
├── INSTALL.md
├── Makefile.am
├── README.md
├── autogen.sh
├── changelog.txt
├── configure.ac
├── contrib/
│   ├── Munt-cli.bash-completion
│   ├── Munt-daemon.bash-completion
│   ├── Munt-tx.bash-completion
│   ├── README.md
│   ├── devtools/
│   │   ├── security-check.py
│   │   ├── split-debug.sh.in
│   │   ├── symbol-check.py
│   │   └── test-security-check.py
│   ├── guix/
│   │   ├── INSTALL.md
│   │   ├── README.md
│   │   ├── guix-attest
│   │   ├── guix-build
│   │   ├── guix-clean
│   │   ├── guix-codesign
│   │   ├── guix-verify
│   │   ├── libexec/
│   │   │   ├── build.sh
│   │   │   ├── codesign.sh
│   │   │   └── prelude.bash
│   │   └── manifest.scm
│   ├── init/
│   │   ├── README.md
│   │   ├── daemon.conf
│   │   ├── daemon.init
│   │   ├── daemon.openrc
│   │   ├── daemon.openrcconf
│   │   └── daemon.service
│   ├── macdeploy/
│   │   ├── DS_Store
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── background.tiff
│   │   ├── background@2x.tiff
│   │   ├── custom_dsstore.py
│   │   ├── detached-sig-apply.sh
│   │   ├── detached-sig-create.sh
│   │   ├── extract-osx-sdk.sh
│   │   └── fancy.plist
│   ├── qos/
│   │   ├── README.md
│   │   └── tc.sh
│   ├── shell/
│   │   ├── git-utils.bash
│   │   └── realpath.bash
│   ├── testgen/
│   │   ├── README.md
│   │   ├── base58.py
│   │   └── gen_base58_test_vectors.py
│   ├── tidy_datadir.sh
│   └── zmq/
│       ├── zmq_sub.py
│       └── zmq_sub3.4.py
├── dependabot.yml
├── depends/
│   ├── .gitignore
│   ├── README.md
│   ├── builders/
│   │   ├── darwin.mk
│   │   ├── default.mk
│   │   ├── linux.mk
│   │   ├── mingw32.mk
│   │   └── mingw64.mk
│   ├── config.guess
│   ├── config.site.in
│   ├── config.sub
│   ├── description.md
│   ├── funcs.mk
│   ├── gen_id
│   ├── hosts/
│   │   ├── android.mk
│   │   ├── darwin.mk
│   │   ├── default.mk
│   │   ├── ios.mk
│   │   ├── linux.mk
│   │   ├── mingw32.mk
│   │   └── mingw64.mk
│   ├── packages/
│   │   ├── bdb.mk
│   │   ├── boost.mk
│   │   ├── djinni.mk
│   │   ├── electron_node_headers.mk
│   │   ├── libcryptopp.mk
│   │   ├── libcryptoppunity.mk
│   │   ├── libevent.mk
│   │   ├── miniupnpc.mk
│   │   ├── native_biplist.mk
│   │   ├── native_cctools.mk
│   │   ├── native_cdrkit.mk
│   │   ├── native_clang.mk
│   │   ├── native_ds_store.mk
│   │   ├── native_libdmg-hfsplus.mk
│   │   ├── native_libtapi.mk
│   │   ├── native_mac_alias.mk
│   │   ├── node_addon_api.mk
│   │   ├── openssl.mk
│   │   ├── packages.mk
│   │   ├── protobufunity.mk
│   │   ├── qrencode.mk
│   │   ├── rapidcheck.mk
│   │   ├── zeromq.mk
│   │   └── zlib.mk
│   ├── packages.md
│   ├── patches/
│   │   └── electron_node_headers/
│   │       └── node.def
│   └── sdk.guess
├── developer-tools/
│   ├── README.md
│   ├── build_docker.sh
│   ├── build_node.sh
│   ├── djinni_generate_bindings.sh
│   ├── docker-build/
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   └── build.sh
│   ├── genbootstrap.sh
│   ├── gencheckpoints.sh
│   ├── genstaticdiffs.sh
│   ├── genstaticfilters.sh
│   ├── mobile/
│   │   ├── android/
│   │   │   ├── build_android_core.sh
│   │   │   ├── build_targets/
│   │   │   │   ├── aarch64-linux-android-clang
│   │   │   │   ├── arm-linux-androideabi-clang
│   │   │   │   ├── x86-clang
│   │   │   │   └── x86_64-clang
│   │   │   ├── fetch_android.sh
│   │   │   └── ndk_definitions.conf
│   │   ├── ios/
│   │   │   ├── build_ios_core.sh
│   │   │   └── build_targets/
│   │   │       ├── aarch64
│   │   │       └── x86_64
│   │   └── thirdparty.licenses.sh
│   ├── node/
│   │   └── node.def
│   ├── private.conf.example
│   └── python/
│       ├── genbootstrap.py
│       ├── gencheckpoints.py
│       ├── genstaticdiffs.py
│       └── genstaticfilters.py
├── doc/
│   ├── .gitignore
│   ├── Doxyfile.in
│   ├── REST-interface.md
│   ├── benchmarking.md
│   ├── building.md
│   ├── building_windows.md
│   ├── developer-notes.md
│   ├── developer_guidelines.md
│   ├── files.md
│   ├── fuzzing.md
│   ├── init.md
│   ├── reduce-traffic.md
│   ├── stack_trace_from_frozen_process.md
│   ├── translation_strings_policy.md
│   └── zmq.md
├── libscriptconsensus.pc.in
├── mining_documentation/
│   └── historical_list_of_mining_pools.md
├── share/
│   ├── genbuild.sh
│   ├── rpcauth/
│   │   ├── README.md
│   │   └── rpcauth.py
│   ├── rpcuser/
│   │   ├── README.md
│   │   └── rpcuser.py
│   ├── seeds/
│   │   ├── nodes_main.txt
│   │   └── nodes_test.txt
│   └── setup.nsi.in
├── src/
│   ├── LRUCache/
│   │   ├── COPYING
│   │   └── LRUCache11.hpp
│   ├── Makefile.am
│   ├── Makefile.bench.include
│   ├── Makefile.crc32c.include
│   ├── Makefile.leveldb.include
│   ├── Makefile.sigmabench.include
│   ├── Makefile.test.include
│   ├── Makefile.univalue.include
│   ├── addrdb.cpp
│   ├── addrdb.h
│   ├── addrman.cpp
│   ├── addrman.h
│   ├── alert.cpp
│   ├── alert.h
│   ├── amount.h
│   ├── appname.h
│   ├── arith_uint256.cpp
│   ├── arith_uint256.h
│   ├── attributes.h
│   ├── base58.cpp
│   ├── base58.h
│   ├── bench/
│   │   ├── .gitignore
│   │   ├── Examples.cpp
│   │   ├── base58.cpp
│   │   ├── bench.cpp
│   │   ├── bench.h
│   │   ├── bench_munt.cpp
│   │   ├── bench_sigma.cpp
│   │   ├── ccoins_caching.cpp
│   │   ├── checkblock.cpp
│   │   ├── checkqueue.cpp
│   │   ├── coin_selection.cpp
│   │   ├── crypto_hash.cpp
│   │   ├── data/
│   │   │   └── block413567.raw
│   │   ├── lockedpool.cpp
│   │   ├── mempool_eviction.cpp
│   │   ├── perf.cpp
│   │   ├── perf.h
│   │   ├── prevector_destructor.cpp
│   │   ├── rollingbloom.cpp
│   │   └── verify_script.cpp
│   ├── blockencodings.cpp
│   ├── blockencodings.h
│   ├── blockfilter.cpp
│   ├── blockfilter.h
│   ├── blockstore.cpp
│   ├── blockstore.h
│   ├── bloom.cpp
│   ├── bloom.h
│   ├── chain.cpp
│   ├── chain.h
│   ├── chainparams.cpp
│   ├── chainparams.h
│   ├── chainparamsbase.cpp
│   ├── chainparamsbase.h
│   ├── chainparamsseeds.h
│   ├── checkpoints.cpp
│   ├── checkpoints.h
│   ├── checkqueue.h
│   ├── cli-main.cpp
│   ├── cli-res.rc
│   ├── clientversion.cpp
│   ├── clientversion.h
│   ├── coins.cpp
│   ├── coins.h
│   ├── compat/
│   │   ├── arch.h
│   │   ├── assumptions.h
│   │   ├── byteswap.h
│   │   ├── cpuid.h
│   │   ├── endian.h
│   │   ├── glibc_sanity.cpp
│   │   ├── glibcxx_sanity.cpp
│   │   ├── sanity.h
│   │   ├── sse.h
│   │   ├── sse2neon.h
│   │   ├── strnlen.cpp
│   │   └── sys.h
│   ├── compat.h
│   ├── compressor.cpp
│   ├── compressor.h
│   ├── config/
│   │   └── .empty
│   ├── consensus/
│   │   ├── consensus.h
│   │   ├── merkle.cpp
│   │   ├── merkle.h
│   │   ├── params.h
│   │   ├── tx_verify.cpp
│   │   ├── tx_verify.h
│   │   └── validation.h
│   ├── controllers/
│   │   ├── rpccontroller.cpp
│   │   └── rpccontroller.h
│   ├── core_io.h
│   ├── core_memusage.h
│   ├── core_read.cpp
│   ├── core_write.cpp
│   ├── crc32c/
│   │   ├── .appveyor.yml
│   │   ├── .clang-format
│   │   ├── .clang_complete
│   │   ├── .gitignore
│   │   ├── .gitmodules
│   │   ├── .travis.yml
│   │   ├── .ycm_extra_conf.py
│   │   ├── AUTHORS
│   │   ├── CMakeLists.txt
│   │   ├── CONTRIBUTING.md
│   │   ├── Crc32cConfig.cmake.in
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── crc32c/
│   │   │       └── crc32c.h
│   │   └── src/
│   │       ├── crc32c.cc
│   │       ├── crc32c_arm64.cc
│   │       ├── crc32c_arm64.h
│   │       ├── crc32c_arm64_check.h
│   │       ├── crc32c_arm64_unittest.cc
│   │       ├── crc32c_benchmark.cc
│   │       ├── crc32c_capi_unittest.c
│   │       ├── crc32c_config.h.in
│   │       ├── crc32c_extend_unittests.h
│   │       ├── crc32c_internal.h
│   │       ├── crc32c_portable.cc
│   │       ├── crc32c_portable_unittest.cc
│   │       ├── crc32c_prefetch.h
│   │       ├── crc32c_prefetch_unittest.cc
│   │       ├── crc32c_read_le.h
│   │       ├── crc32c_read_le_unittest.cc
│   │       ├── crc32c_round_up.h
│   │       ├── crc32c_round_up_unittest.cc
│   │       ├── crc32c_sse42.cc
│   │       ├── crc32c_sse42.h
│   │       ├── crc32c_sse42_check.h
│   │       ├── crc32c_sse42_unittest.cc
│   │       ├── crc32c_test_main.cc
│   │       └── crc32c_unittest.cc
│   ├── crypto/
│   │   ├── chacha20.cpp
│   │   ├── chacha20.h
│   │   ├── common.h
│   │   ├── hash/
│   │   │   ├── city.cpp
│   │   │   ├── city.h
│   │   │   ├── cityconfig.h
│   │   │   ├── hash.h
│   │   │   ├── scrypt-sse2.cpp
│   │   │   ├── scrypt.cpp
│   │   │   ├── scrypt.h
│   │   │   └── sigma/
│   │   │       ├── README.md
│   │   │       ├── argon_echo/
│   │   │       │   ├── argon2.cpp
│   │   │       │   ├── argon_echo.h
│   │   │       │   ├── blake2/
│   │   │       │   │   ├── blake2-impl.h
│   │   │       │   │   ├── blake2.h
│   │   │       │   │   ├── blake2b.cpp
│   │   │       │   │   ├── blamka-round-opt_avx2.h
│   │   │       │   │   ├── blamka-round-opt_avx512f.h
│   │   │       │   │   ├── blamka-round-opt_sse2.h
│   │   │       │   │   ├── blamka-round-opt_sse3.h
│   │   │       │   │   └── blamka-round-ref.h
│   │   │       │   ├── core.cpp
│   │   │       │   ├── core.h
│   │   │       │   ├── opt/
│   │   │       │   │   ├── core_opt_arm_cortex_a53.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a53.h
│   │   │       │   │   ├── core_opt_arm_cortex_a53_aes.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a53_aes.h
│   │   │       │   │   ├── core_opt_arm_cortex_a57.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a57.h
│   │   │       │   │   ├── core_opt_arm_cortex_a57_aes.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a57_aes.h
│   │   │       │   │   ├── core_opt_arm_cortex_a72.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a72.h
│   │   │       │   │   ├── core_opt_arm_cortex_a72_aes.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a72_aes.h
│   │   │       │   │   ├── core_opt_arm_thunderx_aes.cpp
│   │   │       │   │   ├── core_opt_arm_thunderx_aes.h
│   │   │       │   │   ├── core_opt_avx.cpp
│   │   │       │   │   ├── core_opt_avx.h
│   │   │       │   │   ├── core_opt_avx2.cpp
│   │   │       │   │   ├── core_opt_avx2.h
│   │   │       │   │   ├── core_opt_avx2_aes.cpp
│   │   │       │   │   ├── core_opt_avx2_aes.h
│   │   │       │   │   ├── core_opt_avx512f.cpp
│   │   │       │   │   ├── core_opt_avx512f.h
│   │   │       │   │   ├── core_opt_avx512f_aes.cpp
│   │   │       │   │   ├── core_opt_avx512f_aes.h
│   │   │       │   │   ├── core_opt_avx_aes.cpp
│   │   │       │   │   ├── core_opt_avx_aes.h
│   │   │       │   │   ├── core_opt_hybrid.cpp
│   │   │       │   │   ├── core_opt_hybrid.h
│   │   │       │   │   ├── core_opt_sse2.cpp
│   │   │       │   │   ├── core_opt_sse2.h
│   │   │       │   │   ├── core_opt_sse2_aes.cpp
│   │   │       │   │   ├── core_opt_sse2_aes.h
│   │   │       │   │   ├── core_opt_sse3.cpp
│   │   │       │   │   ├── core_opt_sse3.h
│   │   │       │   │   ├── core_opt_sse3_aes.cpp
│   │   │       │   │   ├── core_opt_sse3_aes.h
│   │   │       │   │   ├── core_opt_sse4.cpp
│   │   │       │   │   ├── core_opt_sse4.h
│   │   │       │   │   ├── core_opt_sse4_aes.cpp
│   │   │       │   │   └── core_opt_sse4_aes.h
│   │   │       │   └── ref.cpp
│   │   │       ├── echo256/
│   │   │       │   ├── COPYING
│   │   │       │   ├── echo256_opt.cpp
│   │   │       │   ├── echo256_opt.h
│   │   │       │   ├── opt/
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53_aes.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57_aes.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72_aes.h
│   │   │       │   │   ├── echo256_opt_arm_thunderx_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_thunderx_aes.h
│   │   │       │   │   ├── echo256_opt_avx.cpp
│   │   │       │   │   ├── echo256_opt_avx.h
│   │   │       │   │   ├── echo256_opt_avx2.cpp
│   │   │       │   │   ├── echo256_opt_avx2.h
│   │   │       │   │   ├── echo256_opt_avx2_aes.cpp
│   │   │       │   │   ├── echo256_opt_avx2_aes.h
│   │   │       │   │   ├── echo256_opt_avx512f.cpp
│   │   │       │   │   ├── echo256_opt_avx512f.h
│   │   │       │   │   ├── echo256_opt_avx512f_aes.cpp
│   │   │       │   │   ├── echo256_opt_avx512f_aes.h
│   │   │       │   │   ├── echo256_opt_avx_aes.cpp
│   │   │       │   │   ├── echo256_opt_avx_aes.h
│   │   │       │   │   ├── echo256_opt_sse3.cpp
│   │   │       │   │   ├── echo256_opt_sse3.h
│   │   │       │   │   ├── echo256_opt_sse3_aes.cpp
│   │   │       │   │   ├── echo256_opt_sse3_aes.h
│   │   │       │   │   ├── echo256_opt_sse4.cpp
│   │   │       │   │   ├── echo256_opt_sse4.h
│   │   │       │   │   ├── echo256_opt_sse4_aes.cpp
│   │   │       │   │   └── echo256_opt_sse4_aes.h
│   │   │       │   └── sphlib/
│   │   │       │       ├── aes_helper.c
│   │   │       │       ├── echo.cpp
│   │   │       │       ├── sph_echo.h
│   │   │       │       └── sph_types.h
│   │   │       ├── shavite3_256/
│   │   │       │   ├── COPYING
│   │   │       │   ├── opt/
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53_aes.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57_aes.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72_aes.h
│   │   │       │   │   ├── shavite3_256_opt_arm_thunderx_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_thunderx_aes.h
│   │   │       │   │   ├── shavite3_256_opt_avx.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx.h
│   │   │       │   │   ├── shavite3_256_opt_avx2.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx2.h
│   │   │       │   │   ├── shavite3_256_opt_avx2_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx2_aes.h
│   │   │       │   │   ├── shavite3_256_opt_avx512f.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx512f.h
│   │   │       │   │   ├── shavite3_256_opt_avx512f_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx512f_aes.h
│   │   │       │   │   ├── shavite3_256_opt_avx_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx_aes.h
│   │   │       │   │   ├── shavite3_256_opt_sse3.cpp
│   │   │       │   │   ├── shavite3_256_opt_sse3.h
│   │   │       │   │   ├── shavite3_256_opt_sse3_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_sse3_aes.h
│   │   │       │   │   ├── shavite3_256_opt_sse4.cpp
│   │   │       │   │   ├── shavite3_256_opt_sse4.h
│   │   │       │   │   ├── shavite3_256_opt_sse4_aes.cpp
│   │   │       │   │   └── shavite3_256_opt_sse4_aes.h
│   │   │       │   ├── ref/
│   │   │       │   │   ├── AESround.h
│   │   │       │   │   ├── portable.h
│   │   │       │   │   ├── shavite3_256_ref_compress.h
│   │   │       │   │   ├── shavite3_ref.cpp
│   │   │       │   │   └── shavite3_ref.h
│   │   │       │   ├── shavite3_256_aesni.h
│   │   │       │   ├── shavite3_256_opt.cpp
│   │   │       │   └── shavite3_256_opt.h
│   │   │       ├── sigma.cpp
│   │   │       └── sigma.h
│   │   ├── hmac_sha256.cpp
│   │   ├── hmac_sha256.h
│   │   ├── hmac_sha512.cpp
│   │   ├── hmac_sha512.h
│   │   ├── ripemd160.cpp
│   │   ├── ripemd160.h
│   │   ├── scrypt/
│   │   │   ├── COPYING
│   │   │   ├── README.md
│   │   │   ├── crypto_scrypt.cpp
│   │   │   ├── crypto_scrypt.h
│   │   │   ├── crypto_scrypt_smix.cpp
│   │   │   ├── crypto_scrypt_smix.h
│   │   │   ├── crypto_scrypt_smix_sse2.cpp
│   │   │   ├── crypto_scrypt_smix_sse2.h
│   │   │   ├── sha256_scrypt.cpp
│   │   │   └── sha256_scrypt.h
│   │   ├── sha1.cpp
│   │   ├── sha1.h
│   │   ├── sha256.cpp
│   │   ├── sha256.h
│   │   ├── sha256_arm_shani.cpp
│   │   ├── sha256_sse4.cpp
│   │   ├── sha256_x86_shani.cpp
│   │   ├── sha512.cpp
│   │   └── sha512.h
│   ├── cuckoocache.h
│   ├── daemon-main.cpp
│   ├── daemon-res.rc
│   ├── data/
│   │   ├── chainparams_mainnet_static_checkpoint_data.cpp
│   │   ├── core-packages.licenses
│   │   ├── static_diff_data.cpp
│   │   ├── staticfiltercp
│   │   └── staticfiltercptestnet
│   ├── dbwrapper.cpp
│   ├── dbwrapper.h
│   ├── frontend/
│   │   ├── android/
│   │   │   └── unity_wallet/
│   │   │       ├── .gitignore
│   │   │       ├── app/
│   │   │       │   ├── build.gradle
│   │   │       │   ├── proguard-rules.pro
│   │   │       │   └── src/
│   │   │       │       ├── androidTest/
│   │   │       │       │   └── java/
│   │   │       │       │       └── unity_wallet/
│   │   │       │       │           └── ExampleInstrumentedTest.kt
│   │   │       │       ├── main/
│   │   │       │       │   ├── AndroidManifest.xml
│   │   │       │       │   ├── assets/
│   │   │       │       │   │   ├── font_awesome_free.license.txt
│   │   │       │       │   │   ├── font_awesome_pro.license.txt
│   │   │       │       │   │   └── glyphicons_license.txt
│   │   │       │       │   ├── java/
│   │   │       │       │   │   ├── barcodereader/
│   │   │       │       │   │   │   ├── BarcodeCaptureActivity.kt
│   │   │       │       │   │   │   ├── BarcodeTracker.kt
│   │   │       │       │   │   │   ├── CameraSource.kt
│   │   │       │       │   │   │   └── CameraSourcePreview.kt
│   │   │       │       │   │   └── unity_wallet/
│   │   │       │       │   │       ├── ActivityManager.kt
│   │   │       │       │   │       ├── AppContext.kt
│   │   │       │       │   │       ├── Authentication.kt
│   │   │       │       │   │       ├── BackgroundSync.kt
│   │   │       │       │   │       ├── Common.kt
│   │   │       │       │   │       ├── Config.kt
│   │   │       │       │   │       ├── Constants.kt
│   │   │       │       │   │       ├── Currency.kt
│   │   │       │       │   │       ├── LicenseActivity.kt
│   │   │       │       │   │       ├── SendCoinsFragment.kt
│   │   │       │       │   │       ├── TransactionInfoActivity.kt
│   │   │       │       │   │       ├── URIHandlerActivity.kt
│   │   │       │       │   │       ├── UnityCore.kt
│   │   │       │       │   │       ├── UpgradeActivity.kt
│   │   │       │       │   │       ├── WalletActivity.kt
│   │   │       │       │   │       ├── WelcomeActivity.kt
│   │   │       │       │   │       ├── jniunifiedbackend/
│   │   │       │       │   │       │   ├── AccountLinkRecord.java
│   │   │       │       │   │       │   ├── AccountRecord.java
│   │   │       │       │   │       │   ├── AddressRecord.java
│   │   │       │       │   │       │   ├── BalanceRecord.java
│   │   │       │       │   │       │   ├── BannedPeerRecord.java
│   │   │       │       │   │       │   ├── BlockInfoRecord.java
│   │   │       │       │   │       │   ├── IAccountsController.java
│   │   │       │       │   │       │   ├── IAccountsListener.java
│   │   │       │       │   │       │   ├── IGenerationController.java
│   │   │       │       │   │       │   ├── IGenerationListener.java
│   │   │       │       │   │       │   ├── ILibraryController.java
│   │   │       │       │   │       │   ├── ILibraryListener.java
│   │   │       │       │   │       │   ├── IP2pNetworkController.java
│   │   │       │       │   │       │   ├── IP2pNetworkListener.java
│   │   │       │       │   │       │   ├── IRpcController.java
│   │   │       │       │   │       │   ├── IRpcListener.java
│   │   │       │       │   │       │   ├── IWalletController.java
│   │   │       │       │   │       │   ├── IWalletListener.java
│   │   │       │       │   │       │   ├── IWitnessController.java
│   │   │       │       │   │       │   ├── InputRecord.java
│   │   │       │       │   │       │   ├── LegacyWalletResult.java
│   │   │       │       │   │       │   ├── MnemonicRecord.java
│   │   │       │       │   │       │   ├── MonitorListener.java
│   │   │       │       │   │       │   ├── MonitorRecord.java
│   │   │       │       │   │       │   ├── MutationRecord.java
│   │   │       │       │   │       │   ├── OutputRecord.java
│   │   │       │       │   │       │   ├── PaymentResultStatus.java
│   │   │       │       │   │       │   ├── PeerRecord.java
│   │   │       │       │   │       │   ├── QrCodeRecord.java
│   │   │       │       │   │       │   ├── ResultRecord.java
│   │   │       │       │   │       │   ├── TransactionRecord.java
│   │   │       │       │   │       │   ├── TransactionStatus.java
│   │   │       │       │   │       │   ├── UriRecipient.java
│   │   │       │       │   │       │   ├── UriRecord.java
│   │   │       │       │   │       │   ├── WalletLockStatus.java
│   │   │       │       │   │       │   ├── WitnessAccountStatisticsRecord.java
│   │   │       │       │   │       │   ├── WitnessEstimateInfoRecord.java
│   │   │       │       │   │       │   └── WitnessFundingResultRecord.java
│   │   │       │       │   │       ├── main_activity_fragments/
│   │   │       │       │   │       │   ├── LocalCurrencyFragment.kt
│   │   │       │       │   │       │   ├── MutationFragment.kt
│   │   │       │       │   │       │   ├── ReceiveFragment.kt
│   │   │       │       │   │       │   ├── SendFragment.kt
│   │   │       │       │   │       │   ├── SettingsFragment.kt
│   │   │       │       │   │       │   └── WalletSettingsFragment.kt
│   │   │       │       │   │       ├── ui/
│   │   │       │       │   │       │   ├── AddressBookAdapter.kt
│   │   │       │       │   │       │   ├── DisplayHelpers.kt
│   │   │       │       │   │       │   ├── EnterRecoveryPhraseActivity.kt
│   │   │       │       │   │       │   ├── LocalCurrenciesAdapter.kt
│   │   │       │       │   │       │   ├── MutationAdapter.kt
│   │   │       │       │   │       │   ├── ShowRecoveryPhraseActivity.kt
│   │   │       │       │   │       │   ├── monitor/
│   │   │       │       │   │       │   │   ├── BlockListAdapter.kt
│   │   │       │       │   │       │   │   ├── BlockListFragment.kt
│   │   │       │       │   │       │   │   ├── BlockListViewModel.kt
│   │   │       │       │   │       │   │   ├── NetworkMonitorActivity.kt
│   │   │       │       │   │       │   │   ├── PeerListAdapter.kt
│   │   │       │       │   │       │   │   ├── PeerListFragment.kt
│   │   │       │       │   │       │   │   ├── PeerListViewModel.kt
│   │   │       │       │   │       │   │   └── ProcessingFragment.kt
│   │   │       │       │   │       │   └── widgets/
│   │   │       │       │   │       │       ├── ActionMultiAutoCompleteTextView.kt
│   │   │       │       │   │       │       ├── AuthenticatedRecoveryView.kt
│   │   │       │       │   │       │       ├── HideBalanceView.kt
│   │   │       │       │   │       │       ├── LockView.kt
│   │   │       │       │   │       │       └── UnityBuildInfoView.kt
│   │   │       │       │   │       └── util/
│   │   │       │       │   │           ├── ActivityHelpers.kt
│   │   │       │       │   │           ├── AppBaseActivity.kt
│   │   │       │       │   │           ├── AppBaseFragment.kt
│   │   │       │       │   │           ├── Button.kt
│   │   │       │       │   │           ├── CoroutineHelpers.kt
│   │   │       │       │   │           ├── DeviceInfo.kt
│   │   │       │       │   │           ├── SwipeToDeleteCallback.kt
│   │   │       │       │   │           └── ViewPagerTabs.java
│   │   │       │       │   └── res/
│   │   │       │       │       ├── anim/
│   │   │       │       │       │   └── shake.xml
│   │   │       │       │       ├── color/
│   │   │       │       │       │   └── bottom_nav_color_selector.xml
│   │   │       │       │       ├── drawable/
│   │   │       │       │       │   ├── ic_fontawesome_arrow_up_right_from_square.xml
│   │   │       │       │       │   ├── ic_fontawesome_arrow_up_right_from_square_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_arrow_up_right_from_square_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_bolt_lightning.xml
│   │   │       │       │       │   ├── ic_fontawesome_bolt_lightning_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_bolt_lightning_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_chart_network.xml
│   │   │       │       │       │   ├── ic_fontawesome_chart_network_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_chart_network_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_down.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_down_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_down_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_up.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_up_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_up_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_copy.xml
│   │   │       │       │       │   ├── ic_fontawesome_copy_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_copy_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_cube.xml
│   │   │       │       │       │   ├── ic_fontawesome_cube_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_cube_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_gear.xml
│   │   │       │       │       │   ├── ic_fontawesome_gear_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_gear_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_lock.xml
│   │   │       │       │       │   ├── ic_fontawesome_lock_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_lock_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_share_nodes.xml
│   │   │       │       │       │   ├── ic_fontawesome_share_nodes_light.xml
│   │   │       │       │       │   ├── ic_fontawesome_share_nodes_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_list.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_list_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_list_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_x.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_x_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_x_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_trash.xml
│   │   │       │       │       │   ├── ic_fontawesome_trash_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_trash_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_wave_pulse.xml
│   │   │       │       │       │   ├── ic_fontawesome_wave_pulse_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_wave_pulse_solid.xml
│   │   │       │       │       │   ├── ic_launcher_foreground.xml
│   │   │       │       │       │   ├── ic_logo.xml
│   │   │       │       │       │   ├── ic_logo_white.xml
│   │   │       │       │       │   ├── ic_scan_target.xml
│   │   │       │       │       │   ├── shape_square_button.xml
│   │   │       │       │       │   ├── shape_square_button_disabled.xml
│   │   │       │       │       │   ├── shape_square_button_enabled.xml
│   │   │       │       │       │   └── shape_square_button_with_border.xml
│   │   │       │       │       ├── drawable-v24/
│   │   │       │       │       │   └── shape_square_button.xml
│   │   │       │       │       ├── layout/
│   │   │       │       │       │   ├── access_code_entry.xml
│   │   │       │       │       │   ├── access_code_recovery.xml
│   │   │       │       │       │   ├── activity_enter_recovery_phrase.xml
│   │   │       │       │       │   ├── activity_license.xml
│   │   │       │       │       │   ├── activity_main.xml
│   │   │       │       │       │   ├── activity_network_monitor.xml
│   │   │       │       │       │   ├── activity_show_recovery_phrase.xml
│   │   │       │       │       │   ├── activity_transaction_info.xml
│   │   │       │       │       │   ├── activity_upgrade.xml
│   │   │       │       │       │   ├── activity_welcome.xml
│   │   │       │       │       │   ├── add_address_entry.xml
│   │   │       │       │       │   ├── address_book_list_item.xml
│   │   │       │       │       │   ├── barcode_capture.xml
│   │   │       │       │       │   ├── block_list_fragment.xml
│   │   │       │       │       │   ├── block_row.xml
│   │   │       │       │       │   ├── content_transaction_info.xml
│   │   │       │       │       │   ├── fragment_local_currencies.xml
│   │   │       │       │       │   ├── fragment_mutation.xml
│   │   │       │       │       │   ├── fragment_receive.xml
│   │   │       │       │       │   ├── fragment_send.xml
│   │   │       │       │       │   ├── fragment_send_coins.xml
│   │   │       │       │       │   ├── local_currency_list_item.xml
│   │   │       │       │       │   ├── mutation_list_item.xml
│   │   │       │       │       │   ├── mutation_list_item_with_header.xml
│   │   │       │       │       │   ├── numeric_keypad.xml
│   │   │       │       │       │   ├── peer_list_fragment.xml
│   │   │       │       │       │   ├── peer_list_row.xml
│   │   │       │       │       │   ├── pref_about_app.xml
│   │   │       │       │       │   ├── pref_view_recovery.xml
│   │   │       │       │       │   ├── preference_fragment_layout.xml
│   │   │       │       │       │   ├── processing_fragment.xml
│   │   │       │       │       │   ├── text_input_address_label.xml
│   │   │       │       │       │   ├── transaction_info_item.xml
│   │   │       │       │       │   └── upgrade_password.xml
│   │   │       │       │       ├── layout-land/
│   │   │       │       │       │   └── barcode_capture.xml
│   │   │       │       │       ├── menu/
│   │   │       │       │       │   ├── blocks_context.xml
│   │   │       │       │       │   ├── navigation.xml
│   │   │       │       │       │   ├── network_monitor_navigation.xml
│   │   │       │       │       │   └── share_menu.xml
│   │   │       │       │       ├── mipmap-anydpi-v26/
│   │   │       │       │       │   ├── ic_launcher.xml
│   │   │       │       │       │   └── ic_launcher_round.xml
│   │   │       │       │       ├── raw/
│   │   │       │       │       │   └── license.txt
│   │   │       │       │       ├── values/
│   │   │       │       │       │   ├── colors.xml
│   │   │       │       │       │   ├── dimens.xml
│   │   │       │       │       │   ├── ic_launcher_background.xml
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   ├── styles.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ca/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-de/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rAU/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rCA/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rGB/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rUS/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rZA/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-es/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-fi/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-fr/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-it/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ja/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ko/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-nl/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-no/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-pl/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-pt/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-pt-rBR/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ru/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-v23/
│   │   │       │       │       │   └── styles.xml
│   │   │       │       │       ├── values-vi/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-zh-rCN/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-zh-rTW/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       └── xml/
│   │   │       │       │           ├── fragment_settings.xml
│   │   │       │       │           └── fragment_wallet_settings.xml
│   │   │       │       └── test/
│   │   │       │           └── java/
│   │   │       │               └── unity_wallet/
│   │   │       │                   └── ExampleUnitTest.kt
│   │   │       ├── build.gradle
│   │   │       ├── gradle/
│   │   │       │   └── wrapper/
│   │   │       │       ├── gradle-wrapper.jar
│   │   │       │       └── gradle-wrapper.properties
│   │   │       ├── gradle.properties
│   │   │       ├── gradlew
│   │   │       ├── gradlew.bat
│   │   │       └── settings.gradle
│   │   ├── electron_sample/
│   │   │   ├── .gitignore
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── package.json
│   │   │   ├── renderer.js
│   │   │   └── run.sh
│   │   ├── electron_vue/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── babel.config.js
│   │   │   ├── holdinAPI.js.in
│   │   │   ├── libunity/
│   │   │   │   ├── copy.js
│   │   │   │   └── generate.js
│   │   │   ├── notarize.js
│   │   │   ├── package.json
│   │   │   ├── public/
│   │   │   │   └── index.html
│   │   │   ├── setup.js
│   │   │   ├── sign.js
│   │   │   ├── src/
│   │   │   │   ├── App.vue
│   │   │   │   ├── AppStatus.js
│   │   │   │   ├── AppWallet.vue
│   │   │   │   ├── EventBus.js
│   │   │   │   ├── background.js
│   │   │   │   ├── components/
│   │   │   │   │   ├── AccountHeader.vue
│   │   │   │   │   ├── AccountTooltip.vue
│   │   │   │   │   ├── ActivityIndicator.vue
│   │   │   │   │   ├── AppLoader.vue
│   │   │   │   │   ├── ClipboardField.vue
│   │   │   │   │   ├── ConfirmDialog.vue
│   │   │   │   │   ├── CurrencyInput.vue
│   │   │   │   │   ├── ModalDialog.vue
│   │   │   │   │   ├── PhraseInput.vue
│   │   │   │   │   ├── SelectList.vue
│   │   │   │   │   ├── TransactionDetailsDialog.vue
│   │   │   │   │   ├── UnlockWalletDialog.vue
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── layout/
│   │   │   │   │       ├── AppButtonSection.vue
│   │   │   │   │       ├── AppFormField.vue
│   │   │   │   │       ├── AppSection.vue
│   │   │   │   │       ├── ContentWrapper.vue
│   │   │   │   │       ├── FooterButton.vue
│   │   │   │   │       └── MainHeader.vue
│   │   │   │   ├── css/
│   │   │   │   │   ├── app.less
│   │   │   │   │   ├── app_styles.less
│   │   │   │   │   ├── css-reset.css
│   │   │   │   │   ├── fonts.less
│   │   │   │   │   └── variables.less
│   │   │   │   ├── i18n.js
│   │   │   │   ├── layouts/
│   │   │   │   │   ├── AccountsSection.vue
│   │   │   │   │   ├── SetupLayout.vue
│   │   │   │   │   └── WalletLayout.vue
│   │   │   │   ├── locales/
│   │   │   │   │   ├── en.json
│   │   │   │   │   └── nl.json
│   │   │   │   ├── main.js
│   │   │   │   ├── router/
│   │   │   │   │   └── index.js
│   │   │   │   ├── store/
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── modules/
│   │   │   │   │   │   ├── app.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── mining.js
│   │   │   │   │   │   └── wallet.js
│   │   │   │   │   └── syncState.js
│   │   │   │   ├── unity/
│   │   │   │   │   ├── Controllers.js
│   │   │   │   │   └── LibUnity.js
│   │   │   │   ├── util.js
│   │   │   │   ├── views/
│   │   │   │   │   ├── AboutDialog/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── Account/
│   │   │   │   │   │   ├── AccountSettings.vue
│   │   │   │   │   │   ├── MiningAccount/
│   │   │   │   │   │   │   ├── Send.vue
│   │   │   │   │   │   │   ├── SetupMining.vue
│   │   │   │   │   │   │   └── index.vue
│   │   │   │   │   │   ├── SavingAccount/
│   │   │   │   │   │   │   ├── AddSavingAccount.vue
│   │   │   │   │   │   │   ├── LinkSavingAccount.vue
│   │   │   │   │   │   │   ├── OptimiseAccount.vue
│   │   │   │   │   │   │   ├── RenewAccount.vue
│   │   │   │   │   │   │   └── index.vue
│   │   │   │   │   │   ├── SpendingAccount/
│   │   │   │   │   │   │   ├── AddSpendingAccount.vue
│   │   │   │   │   │   │   ├── ConfirmTransactionDialog.vue
│   │   │   │   │   │   │   ├── Receive.vue
│   │   │   │   │   │   │   ├── Send.vue
│   │   │   │   │   │   │   ├── TransactionDetails.vue
│   │   │   │   │   │   │   ├── Transactions.vue
│   │   │   │   │   │   │   └── index.vue
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── DebugDialog/
│   │   │   │   │   │   ├── DebugConsole.vue
│   │   │   │   │   │   ├── InformationPage.vue
│   │   │   │   │   │   ├── PeerDetailsDialog.vue
│   │   │   │   │   │   ├── PeersPage.vue
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── Settings/
│   │   │   │   │   │   ├── ChangePassword.vue
│   │   │   │   │   │   ├── SettingsList.vue
│   │   │   │   │   │   ├── ViewRecoveryPhrase.vue
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   └── Setup.vue
│   │   │   │   └── walletPath.js
│   │   │   ├── ui-config.json
│   │   │   └── vue.config.js
│   │   └── lite/
│   │       ├── .gitignore
│   │       ├── README.md
│   │       ├── babel.config.js
│   │       ├── holdinAPI.js.in
│   │       ├── libunity/
│   │       │   ├── copy.js
│   │       │   └── generate.js
│   │       ├── notarize.js
│   │       ├── package.json
│   │       ├── public/
│   │       │   └── index.html
│   │       ├── setup.js
│   │       ├── sign.js
│   │       ├── src/
│   │       │   ├── App.vue
│   │       │   ├── AppStatus.js
│   │       │   ├── AppWallet.vue
│   │       │   ├── EventBus.js
│   │       │   ├── background.js
│   │       │   ├── components/
│   │       │   │   ├── AccountHeader.vue
│   │       │   │   ├── AccountTooltip.vue
│   │       │   │   ├── ActivityIndicator.vue
│   │       │   │   ├── AppLoader.vue
│   │       │   │   ├── ClipboardField.vue
│   │       │   │   ├── ConfirmDialog.vue
│   │       │   │   ├── CurrencyInput.vue
│   │       │   │   ├── ModalDialog.vue
│   │       │   │   ├── PhraseInput.vue
│   │       │   │   ├── SelectList.vue
│   │       │   │   ├── TransactionDetailsDialog.vue
│   │       │   │   ├── UnlockWalletDialog.vue
│   │       │   │   ├── WalletPasswordDialog.vue
│   │       │   │   ├── index.js
│   │       │   │   └── layout/
│   │       │   │       ├── AppButtonSection.vue
│   │       │   │       ├── AppFormField.vue
│   │       │   │       ├── AppSection.vue
│   │       │   │       ├── ContentWrapper.vue
│   │       │   │       ├── FooterButton.vue
│   │       │   │       └── MainHeader.vue
│   │       │   ├── css/
│   │       │   │   ├── app.less
│   │       │   │   ├── app_styles.less
│   │       │   │   ├── css-reset.css
│   │       │   │   ├── fonts.less
│   │       │   │   └── variables.less
│   │       │   ├── i18n.js
│   │       │   ├── layouts/
│   │       │   │   ├── AccountsSection.vue
│   │       │   │   ├── SetupLayout.vue
│   │       │   │   └── WalletLayout.vue
│   │       │   ├── locales/
│   │       │   │   ├── en.json
│   │       │   │   └── nl.json
│   │       │   ├── main.js
│   │       │   ├── router/
│   │       │   │   └── index.js
│   │       │   ├── store/
│   │       │   │   ├── index.js
│   │       │   │   ├── modules/
│   │       │   │   │   ├── app.js
│   │       │   │   │   ├── index.js
│   │       │   │   │   ├── mining.js
│   │       │   │   │   └── wallet.js
│   │       │   │   └── syncState.js
│   │       │   ├── unity/
│   │       │   │   ├── Controllers.js
│   │       │   │   └── LibUnity.js
│   │       │   ├── util.js
│   │       │   ├── views/
│   │       │   │   ├── Account/
│   │       │   │   │   ├── AccountSettings.vue
│   │       │   │   │   ├── SpendingAccount/
│   │       │   │   │   │   ├── ConfirmTransactionDialog.vue
│   │       │   │   │   │   ├── Receive.vue
│   │       │   │   │   │   ├── Send.vue
│   │       │   │   │   │   ├── TransactionDetails.vue
│   │       │   │   │   │   ├── Transactions.vue
│   │       │   │   │   │   └── index.vue
│   │       │   │   │   └── index.vue
│   │       │   │   ├── DebugDialog/
│   │       │   │   │   ├── DebugConsole.vue
│   │       │   │   │   ├── InformationPage.vue
│   │       │   │   │   ├── PeerDetailsDialog.vue
│   │       │   │   │   ├── PeersPage.vue
│   │       │   │   │   └── index.vue
│   │       │   │   ├── Settings/
│   │       │   │   │   ├── ChangePassword.vue
│   │       │   │   │   ├── SettingsList.vue
│   │       │   │   │   ├── ViewRecoveryPhrase.vue
│   │       │   │   │   └── index.vue
│   │       │   │   └── Setup.vue
│   │       │   └── walletPath.js
│   │       ├── ui-config.json
│   │       └── vue.config.js
│   ├── fs.cpp
│   ├── fs.h
│   ├── generation/
│   │   ├── generation.h
│   │   ├── miner.cpp
│   │   ├── miner.h
│   │   ├── witness.cpp
│   │   ├── witness.h
│   │   ├── witnessrewardtemplate.cpp
│   │   └── witnessrewardtemplate.h
│   ├── hash.cpp
│   ├── hash.h
│   ├── httprpc.cpp
│   ├── httprpc.h
│   ├── httpserver.cpp
│   ├── httpserver.h
│   ├── indirectmap.h
│   ├── init.cpp
│   ├── init.h
│   ├── key.cpp
│   ├── key.h
│   ├── keystore.cpp
│   ├── keystore.h
│   ├── leveldb/
│   │   ├── .appveyor.yml
│   │   ├── .clang-format
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── AUTHORS
│   │   ├── CMakeLists.txt
│   │   ├── CONTRIBUTING.md
│   │   ├── LICENSE
│   │   ├── NEWS
│   │   ├── README.md
│   │   ├── TODO
│   │   ├── benchmarks/
│   │   │   ├── db_bench.cc
│   │   │   ├── db_bench_sqlite3.cc
│   │   │   └── db_bench_tree_db.cc
│   │   ├── cmake/
│   │   │   └── leveldbConfig.cmake
│   │   ├── db/
│   │   │   ├── autocompact_test.cc
│   │   │   ├── builder.cc
│   │   │   ├── builder.h
│   │   │   ├── c.cc
│   │   │   ├── c_test.c
│   │   │   ├── corruption_test.cc
│   │   │   ├── db_impl.cc
│   │   │   ├── db_impl.h
│   │   │   ├── db_iter.cc
│   │   │   ├── db_iter.h
│   │   │   ├── db_test.cc
│   │   │   ├── dbformat.cc
│   │   │   ├── dbformat.h
│   │   │   ├── dbformat_test.cc
│   │   │   ├── dumpfile.cc
│   │   │   ├── fault_injection_test.cc
│   │   │   ├── filename.cc
│   │   │   ├── filename.h
│   │   │   ├── filename_test.cc
│   │   │   ├── leveldbutil.cc
│   │   │   ├── log_format.h
│   │   │   ├── log_reader.cc
│   │   │   ├── log_reader.h
│   │   │   ├── log_test.cc
│   │   │   ├── log_writer.cc
│   │   │   ├── log_writer.h
│   │   │   ├── memtable.cc
│   │   │   ├── memtable.h
│   │   │   ├── recovery_test.cc
│   │   │   ├── repair.cc
│   │   │   ├── skiplist.h
│   │   │   ├── skiplist_test.cc
│   │   │   ├── snapshot.h
│   │   │   ├── table_cache.cc
│   │   │   ├── table_cache.h
│   │   │   ├── version_edit.cc
│   │   │   ├── version_edit.h
│   │   │   ├── version_edit_test.cc
│   │   │   ├── version_set.cc
│   │   │   ├── version_set.h
│   │   │   ├── version_set_test.cc
│   │   │   ├── write_batch.cc
│   │   │   ├── write_batch_internal.h
│   │   │   └── write_batch_test.cc
│   │   ├── doc/
│   │   │   ├── benchmark.html
│   │   │   ├── impl.md
│   │   │   ├── index.md
│   │   │   ├── log_format.md
│   │   │   └── table_format.md
│   │   ├── helpers/
│   │   │   └── memenv/
│   │   │       ├── memenv.cc
│   │   │       ├── memenv.h
│   │   │       └── memenv_test.cc
│   │   ├── include/
│   │   │   └── leveldb/
│   │   │       ├── c.h
│   │   │       ├── cache.h
│   │   │       ├── comparator.h
│   │   │       ├── db.h
│   │   │       ├── dumpfile.h
│   │   │       ├── env.h
│   │   │       ├── export.h
│   │   │       ├── filter_policy.h
│   │   │       ├── iterator.h
│   │   │       ├── options.h
│   │   │       ├── slice.h
│   │   │       ├── status.h
│   │   │       ├── table.h
│   │   │       ├── table_builder.h
│   │   │       └── write_batch.h
│   │   ├── issues/
│   │   │   ├── issue178_test.cc
│   │   │   ├── issue200_test.cc
│   │   │   └── issue320_test.cc
│   │   ├── port/
│   │   │   ├── README.md
│   │   │   ├── port.h
│   │   │   ├── port_config.h.in
│   │   │   ├── port_example.h
│   │   │   ├── port_stdcxx.h
│   │   │   └── thread_annotations.h
│   │   ├── table/
│   │   │   ├── block.cc
│   │   │   ├── block.h
│   │   │   ├── block_builder.cc
│   │   │   ├── block_builder.h
│   │   │   ├── filter_block.cc
│   │   │   ├── filter_block.h
│   │   │   ├── filter_block_test.cc
│   │   │   ├── format.cc
│   │   │   ├── format.h
│   │   │   ├── iterator.cc
│   │   │   ├── iterator_wrapper.h
│   │   │   ├── merger.cc
│   │   │   ├── merger.h
│   │   │   ├── table.cc
│   │   │   ├── table_builder.cc
│   │   │   ├── table_test.cc
│   │   │   ├── two_level_iterator.cc
│   │   │   └── two_level_iterator.h
│   │   └── util/
│   │       ├── arena.cc
│   │       ├── arena.h
│   │       ├── arena_test.cc
│   │       ├── bloom.cc
│   │       ├── bloom_test.cc
│   │       ├── cache.cc
│   │       ├── cache_test.cc
│   │       ├── coding.cc
│   │       ├── coding.h
│   │       ├── coding_test.cc
│   │       ├── comparator.cc
│   │       ├── crc32c.cc
│   │       ├── crc32c.h
│   │       ├── crc32c_test.cc
│   │       ├── env.cc
│   │       ├── env_posix.cc
│   │       ├── env_posix_test.cc
│   │       ├── env_posix_test_helper.h
│   │       ├── env_test.cc
│   │       ├── env_windows.cc
│   │       ├── env_windows_test.cc
│   │       ├── env_windows_test_helper.h
│   │       ├── filter_policy.cc
│   │       ├── hash.cc
│   │       ├── hash.h
│   │       ├── hash_test.cc
│   │       ├── histogram.cc
│   │       ├── histogram.h
│   │       ├── logging.cc
│   │       ├── logging.h
│   │       ├── logging_test.cc
│   │       ├── mutexlock.h
│   │       ├── no_destructor.h
│   │       ├── no_destructor_test.cc
│   │       ├── options.cc
│   │       ├── posix_logger.h
│   │       ├── random.h
│   │       ├── status.cc
│   │       ├── status_test.cc
│   │       ├── testharness.cc
│   │       ├── testharness.h
│   │       ├── testutil.cc
│   │       ├── testutil.h
│   │       └── windows_logger.h
│   ├── limitedmap.h
│   ├── llvm-cpumodel-hack.cpp
│   ├── logging.cpp
│   ├── logging.h
│   ├── memusage.h
│   ├── merkleblock.cpp
│   ├── merkleblock.h
│   ├── net.cpp
│   ├── net.h
│   ├── net_processing.cpp
│   ├── net_processing.h
│   ├── netaddress.cpp
│   ├── netaddress.h
│   ├── netbase.cpp
│   ├── netbase.h
│   ├── netmessagemaker.h
│   ├── node/
│   │   ├── context.cpp
│   │   └── context.h
│   ├── noui.cpp
│   ├── noui.h
│   ├── obj/
│   │   └── .gitignore
│   ├── obj-test/
│   │   └── .gitignore
│   ├── policy/
│   │   ├── feerate.cpp
│   │   ├── feerate.h
│   │   ├── fees.cpp
│   │   ├── fees.h
│   │   ├── policy.cpp
│   │   ├── policy.h
│   │   ├── rbf.cpp
│   │   └── rbf.h
│   ├── pow/
│   │   ├── diff.h
│   │   ├── diff_common.cpp
│   │   ├── diff_common.h
│   │   ├── diff_delta.cpp
│   │   ├── diff_delta.h
│   │   ├── diff_old.cpp
│   │   ├── diff_old.h
│   │   ├── pow.cpp
│   │   └── pow.h
│   ├── prevector.h
│   ├── primitives/
│   │   ├── block.cpp
│   │   ├── block.h
│   │   ├── transaction.cpp
│   │   └── transaction.h
│   ├── protocol.cpp
│   ├── protocol.h
│   ├── pubkey.cpp
│   ├── pubkey.h
│   ├── random.cpp
│   ├── random.h
│   ├── randomenv.cpp
│   ├── randomenv.h
│   ├── rest.cpp
│   ├── reverse_iterator.h
│   ├── reverselock.h
│   ├── rpc/
│   │   ├── accounts.cpp
│   │   ├── accounts.h
│   │   ├── blockchain.cpp
│   │   ├── blockchain.h
│   │   ├── client.cpp
│   │   ├── client.h
│   │   ├── mining.cpp
│   │   ├── misc.cpp
│   │   ├── netrpc.cpp
│   │   ├── protocol.cpp
│   │   ├── protocol.h
│   │   ├── rawtransaction.cpp
│   │   ├── register.h
│   │   ├── server.cpp
│   │   └── server.h
│   ├── scheduler.cpp
│   ├── scheduler.h
│   ├── script/
│   │   ├── consensus.cpp
│   │   ├── consensus.h
│   │   ├── interpreter.cpp
│   │   ├── interpreter.h
│   │   ├── ismine.cpp
│   │   ├── ismine.h
│   │   ├── script.cpp
│   │   ├── script.h
│   │   ├── script_error.cpp
│   │   ├── script_error.h
│   │   ├── sigcache.cpp
│   │   ├── sigcache.h
│   │   ├── sign.cpp
│   │   ├── sign.h
│   │   ├── standard.cpp
│   │   └── standard.h
│   ├── secp256k1/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── COPYING
│   │   ├── Makefile.am
│   │   ├── README.md
│   │   ├── TODO
│   │   ├── autogen.sh
│   │   ├── build-aux/
│   │   │   └── m4/
│   │   │       ├── ax_jni_include_dir.m4
│   │   │       ├── ax_prog_cc_for_build.m4
│   │   │       └── bitcoin_secp.m4
│   │   ├── configure.ac
│   │   ├── contrib/
│   │   │   ├── lax_der_parsing.c
│   │   │   ├── lax_der_parsing.h
│   │   │   ├── lax_der_privatekey_parsing.c
│   │   │   └── lax_der_privatekey_parsing.h
│   │   ├── include/
│   │   │   ├── secp256k1.h
│   │   │   ├── secp256k1_ecdh.h
│   │   │   └── secp256k1_recovery.h
│   │   ├── libsecp256k1.pc.in
│   │   ├── obj/
│   │   │   └── .gitignore
│   │   ├── sage/
│   │   │   ├── group_prover.sage
│   │   │   ├── secp256k1.sage
│   │   │   └── weierstrass_prover.sage
│   │   └── src/
│   │       ├── asm/
│   │       │   └── field_10x26_arm.s
│   │       ├── basic-config.h
│   │       ├── bench.h
│   │       ├── bench_ecdh.c
│   │       ├── bench_internal.c
│   │       ├── bench_recover.c
│   │       ├── bench_sign.c
│   │       ├── bench_verify.c
│   │       ├── ecdsa.h
│   │       ├── ecdsa_impl.h
│   │       ├── eckey.h
│   │       ├── eckey_impl.h
│   │       ├── ecmult.h
│   │       ├── ecmult_const.h
│   │       ├── ecmult_const_impl.h
│   │       ├── ecmult_gen.h
│   │       ├── ecmult_gen_impl.h
│   │       ├── ecmult_impl.h
│   │       ├── field.h
│   │       ├── field_10x26.h
│   │       ├── field_10x26_impl.h
│   │       ├── field_5x52.h
│   │       ├── field_5x52_asm_impl.h
│   │       ├── field_5x52_impl.h
│   │       ├── field_5x52_int128_impl.h
│   │       ├── field_impl.h
│   │       ├── gen_context.c
│   │       ├── group.h
│   │       ├── group_impl.h
│   │       ├── hash.h
│   │       ├── hash_impl.h
│   │       ├── java/
│   │       │   ├── org/
│   │       │   │   └── bitcoin/
│   │       │   │       ├── NativeSecp256k1.java
│   │       │   │       ├── NativeSecp256k1Test.java
│   │       │   │       ├── NativeSecp256k1Util.java
│   │       │   │       └── Secp256k1Context.java
│   │       │   ├── org_bitcoin_NativeSecp256k1.c
│   │       │   ├── org_bitcoin_NativeSecp256k1.h
│   │       │   ├── org_bitcoin_Secp256k1Context.c
│   │       │   └── org_bitcoin_Secp256k1Context.h
│   │       ├── modules/
│   │       │   ├── ecdh/
│   │       │   │   ├── Makefile.am.include
│   │       │   │   ├── main_impl.h
│   │       │   │   └── tests_impl.h
│   │       │   └── recovery/
│   │       │       ├── Makefile.am.include
│   │       │       ├── main_impl.h
│   │       │       └── tests_impl.h
│   │       ├── num.h
│   │       ├── num_gmp.h
│   │       ├── num_gmp_impl.h
│   │       ├── num_impl.h
│   │       ├── scalar.h
│   │       ├── scalar_4x64.h
│   │       ├── scalar_4x64_impl.h
│   │       ├── scalar_8x32.h
│   │       ├── scalar_8x32_impl.h
│   │       ├── scalar_impl.h
│   │       ├── scalar_low.h
│   │       ├── scalar_low_impl.h
│   │       ├── secp256k1.c
│   │       ├── testrand.h
│   │       ├── testrand_impl.h
│   │       ├── tests.c
│   │       ├── tests_exhaustive.c
│   │       └── util.h
│   ├── serialize.h
│   ├── span.h
│   ├── streams.h
│   ├── support/
│   │   ├── allocators/
│   │   │   ├── secure.h
│   │   │   └── zeroafterfree.h
│   │   ├── cleanse.cpp
│   │   ├── cleanse.h
│   │   ├── events.h
│   │   ├── lockedpool.cpp
│   │   └── lockedpool.h
│   ├── sync.cpp
│   ├── sync.h
│   ├── test/
│   │   ├── DoS_tests.cpp
│   │   ├── README.md
│   │   ├── addrman_tests.cpp
│   │   ├── allocator_tests.cpp
│   │   ├── amount_tests.cpp
│   │   ├── arith_uint256_tests.cpp
│   │   ├── base32_tests.cpp
│   │   ├── base58_tests.cpp
│   │   ├── base64_tests.cpp
│   │   ├── bip32_tests.cpp
│   │   ├── bip39_tests.cpp
│   │   ├── blockencodings_tests.cpp
│   │   ├── bloom_tests.cpp
│   │   ├── bswap_tests.cpp
│   │   ├── checkqueue_tests.cpp
│   │   ├── coins_tests.cpp
│   │   ├── compress_tests.cpp
│   │   ├── crypto_tests.cpp
│   │   ├── cuckoocache_tests.cpp
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── base58_encode_decode.json
│   │   │   ├── base58_keys_invalid.json
│   │   │   ├── base58_keys_valid.json
│   │   │   ├── script_tests.json
│   │   │   ├── sighash.json
│   │   │   ├── tx_invalid.json
│   │   │   ├── tx_valid.json
│   │   │   ├── wallet-linked-no-password-protobuf
│   │   │   ├── wallet-linked-password-5281-protobuf
│   │   │   ├── wallet-seed-no-password-protobuf
│   │   │   └── wallet-seed-password-1234-protobuf
│   │   ├── dbwrapper_tests.cpp
│   │   ├── getarg_tests.cpp
│   │   ├── hash_tests.cpp
│   │   ├── key_tests.cpp
│   │   ├── limitedmap_tests.cpp
│   │   ├── main_tests.cpp
│   │   ├── mempool_tests.cpp
│   │   ├── merkle_tests.cpp
│   │   ├── miner_tests.cpp
│   │   ├── multisig_tests.cpp
│   │   ├── net_tests.cpp
│   │   ├── netbase_tests.cpp
│   │   ├── pmt_tests.cpp
│   │   ├── policyestimator_tests.cpp
│   │   ├── pow_tests.cpp
│   │   ├── prevector_tests.cpp
│   │   ├── raii_event_tests.cpp
│   │   ├── random_tests.cpp
│   │   ├── reverselock_tests.cpp
│   │   ├── rpc_tests.cpp
│   │   ├── sanity_tests.cpp
│   │   ├── scheduler_tests.cpp
│   │   ├── script_P2SH_tests.cpp
│   │   ├── script_tests.cpp
│   │   ├── scriptnum10.h
│   │   ├── scriptnum_tests.cpp
│   │   ├── serialize_tests.cpp
│   │   ├── sighash_tests.cpp
│   │   ├── sigopcount_tests.cpp
│   │   ├── skiplist_tests.cpp
│   │   ├── streams_tests.cpp
│   │   ├── test.cpp
│   │   ├── test.h
│   │   ├── test_fuzzy.cpp
│   │   ├── test_main.cpp
│   │   ├── testutil.cpp
│   │   ├── testutil.h
│   │   ├── timedata_tests.cpp
│   │   ├── torcontrol_tests.cpp
│   │   ├── transaction_tests.cpp
│   │   ├── txvalidationcache_tests.cpp
│   │   ├── uint256_tests.cpp
│   │   ├── unity_tests.cpp
│   │   ├── univalue_tests.cpp
│   │   ├── util_tests.cpp
│   │   └── versionbits_tests.cpp
│   ├── threadinterrupt.cpp
│   ├── threadinterrupt.h
│   ├── threadsafety.h
│   ├── timedata.cpp
│   ├── timedata.h
│   ├── tinyformat.h
│   ├── torcontrol.cpp
│   ├── torcontrol.h
│   ├── tx-main.cpp
│   ├── tx-res.rc
│   ├── txdb.cpp
│   ├── txdb.h
│   ├── txmempool.cpp
│   ├── txmempool.h
│   ├── ui_interface.cpp
│   ├── ui_interface.h
│   ├── uint256.cpp
│   ├── uint256.h
│   ├── undo.h
│   ├── unity/
│   │   ├── android/
│   │   │   ├── init_android.cpp
│   │   │   └── logging_android.cpp
│   │   ├── appmanager.cpp
│   │   ├── appmanager.h
│   │   ├── compat/
│   │   │   ├── android_wallet.cpp
│   │   │   └── android_wallet.h
│   │   ├── controllers/
│   │   │   ├── iaccountscontroller.cpp
│   │   │   ├── igenerationcontroller.cpp
│   │   │   ├── ip2pnetworkcontroller.cpp
│   │   │   ├── irpccontroller.cpp
│   │   │   ├── iwalletcontroller.cpp
│   │   │   └── iwitnesscontroller.cpp
│   │   ├── djinni/
│   │   │   ├── cpp/
│   │   │   │   ├── account_link_record.hpp
│   │   │   │   ├── account_record.hpp
│   │   │   │   ├── address_record.hpp
│   │   │   │   ├── balance_record.hpp
│   │   │   │   ├── banned_peer_record.hpp
│   │   │   │   ├── block_info_record.hpp
│   │   │   │   ├── i_accounts_controller.hpp
│   │   │   │   ├── i_accounts_listener.hpp
│   │   │   │   ├── i_generation_controller.hpp
│   │   │   │   ├── i_generation_listener.hpp
│   │   │   │   ├── i_library_controller.cpp
│   │   │   │   ├── i_library_controller.hpp
│   │   │   │   ├── i_library_listener.hpp
│   │   │   │   ├── i_p2p_network_controller.hpp
│   │   │   │   ├── i_p2p_network_listener.hpp
│   │   │   │   ├── i_rpc_controller.hpp
│   │   │   │   ├── i_rpc_listener.hpp
│   │   │   │   ├── i_wallet_controller.hpp
│   │   │   │   ├── i_wallet_listener.hpp
│   │   │   │   ├── i_witness_controller.hpp
│   │   │   │   ├── input_record.hpp
│   │   │   │   ├── legacy_wallet_result.hpp
│   │   │   │   ├── mnemonic_record.hpp
│   │   │   │   ├── monitor_listener.hpp
│   │   │   │   ├── monitor_record.hpp
│   │   │   │   ├── mutation_record.hpp
│   │   │   │   ├── output_record.hpp
│   │   │   │   ├── payment_result_status.hpp
│   │   │   │   ├── peer_record.cpp
│   │   │   │   ├── peer_record.hpp
│   │   │   │   ├── qr_code_record.hpp
│   │   │   │   ├── result_record.hpp
│   │   │   │   ├── transaction_record.hpp
│   │   │   │   ├── transaction_status.hpp
│   │   │   │   ├── uri_recipient.hpp
│   │   │   │   ├── uri_record.hpp
│   │   │   │   ├── wallet_lock_status.hpp
│   │   │   │   ├── witness_account_statistics_record.hpp
│   │   │   │   ├── witness_estimate_info_record.hpp
│   │   │   │   └── witness_funding_result_record.hpp
│   │   │   ├── jni/
│   │   │   │   ├── NativeAccountLinkRecord.cpp
│   │   │   │   ├── NativeAccountLinkRecord.hpp
│   │   │   │   ├── NativeAccountRecord.cpp
│   │   │   │   ├── NativeAccountRecord.hpp
│   │   │   │   ├── NativeAddressRecord.cpp
│   │   │   │   ├── NativeAddressRecord.hpp
│   │   │   │   ├── NativeBalanceRecord.cpp
│   │   │   │   ├── NativeBalanceRecord.hpp
│   │   │   │   ├── NativeBannedPeerRecord.cpp
│   │   │   │   ├── NativeBannedPeerRecord.hpp
│   │   │   │   ├── NativeBlockInfoRecord.cpp
│   │   │   │   ├── NativeBlockInfoRecord.hpp
│   │   │   │   ├── NativeIAccountsController.cpp
│   │   │   │   ├── NativeIAccountsController.hpp
│   │   │   │   ├── NativeIAccountsListener.cpp
│   │   │   │   ├── NativeIAccountsListener.hpp
│   │   │   │   ├── NativeIGenerationController.cpp
│   │   │   │   ├── NativeIGenerationController.hpp
│   │   │   │   ├── NativeIGenerationListener.cpp
│   │   │   │   ├── NativeIGenerationListener.hpp
│   │   │   │   ├── NativeILibraryController.cpp
│   │   │   │   ├── NativeILibraryController.hpp
│   │   │   │   ├── NativeILibraryListener.cpp
│   │   │   │   ├── NativeILibraryListener.hpp
│   │   │   │   ├── NativeIP2pNetworkController.cpp
│   │   │   │   ├── NativeIP2pNetworkController.hpp
│   │   │   │   ├── NativeIP2pNetworkListener.cpp
│   │   │   │   ├── NativeIP2pNetworkListener.hpp
│   │   │   │   ├── NativeIRpcController.cpp
│   │   │   │   ├── NativeIRpcController.hpp
│   │   │   │   ├── NativeIRpcListener.cpp
│   │   │   │   ├── NativeIRpcListener.hpp
│   │   │   │   ├── NativeIWalletController.cpp
│   │   │   │   ├── NativeIWalletController.hpp
│   │   │   │   ├── NativeIWalletListener.cpp
│   │   │   │   ├── NativeIWalletListener.hpp
│   │   │   │   ├── NativeIWitnessController.cpp
│   │   │   │   ├── NativeIWitnessController.hpp
│   │   │   │   ├── NativeInputRecord.cpp
│   │   │   │   ├── NativeInputRecord.hpp
│   │   │   │   ├── NativeLegacyWalletResult.hpp
│   │   │   │   ├── NativeMnemonicRecord.cpp
│   │   │   │   ├── NativeMnemonicRecord.hpp
│   │   │   │   ├── NativeMonitorListener.cpp
│   │   │   │   ├── NativeMonitorListener.hpp
│   │   │   │   ├── NativeMonitorRecord.cpp
│   │   │   │   ├── NativeMonitorRecord.hpp
│   │   │   │   ├── NativeMutationRecord.cpp
│   │   │   │   ├── NativeMutationRecord.hpp
│   │   │   │   ├── NativeOutputRecord.cpp
│   │   │   │   ├── NativeOutputRecord.hpp
│   │   │   │   ├── NativePaymentResultStatus.hpp
│   │   │   │   ├── NativePeerRecord.cpp
│   │   │   │   ├── NativePeerRecord.hpp
│   │   │   │   ├── NativeQrCodeRecord.cpp
│   │   │   │   ├── NativeQrCodeRecord.hpp
│   │   │   │   ├── NativeResultRecord.cpp
│   │   │   │   ├── NativeResultRecord.hpp
│   │   │   │   ├── NativeTransactionRecord.cpp
│   │   │   │   ├── NativeTransactionRecord.hpp
│   │   │   │   ├── NativeTransactionStatus.hpp
│   │   │   │   ├── NativeUriRecipient.cpp
│   │   │   │   ├── NativeUriRecipient.hpp
│   │   │   │   ├── NativeUriRecord.cpp
│   │   │   │   ├── NativeUriRecord.hpp
│   │   │   │   ├── NativeWalletLockStatus.cpp
│   │   │   │   ├── NativeWalletLockStatus.hpp
│   │   │   │   ├── NativeWitnessAccountStatisticsRecord.cpp
│   │   │   │   ├── NativeWitnessAccountStatisticsRecord.hpp
│   │   │   │   ├── NativeWitnessEstimateInfoRecord.cpp
│   │   │   │   ├── NativeWitnessEstimateInfoRecord.hpp
│   │   │   │   ├── NativeWitnessFundingResultRecord.cpp
│   │   │   │   └── NativeWitnessFundingResultRecord.hpp
│   │   │   ├── node_js/
│   │   │   │   ├── NJSIAccountsController.cpp
│   │   │   │   ├── NJSIAccountsController.hpp
│   │   │   │   ├── NJSIAccountsListener.cpp
│   │   │   │   ├── NJSIAccountsListener.hpp
│   │   │   │   ├── NJSIGenerationController.cpp
│   │   │   │   ├── NJSIGenerationController.hpp
│   │   │   │   ├── NJSIGenerationListener.cpp
│   │   │   │   ├── NJSIGenerationListener.hpp
│   │   │   │   ├── NJSILibraryController.cpp
│   │   │   │   ├── NJSILibraryController.hpp
│   │   │   │   ├── NJSILibraryListener.cpp
│   │   │   │   ├── NJSILibraryListener.hpp
│   │   │   │   ├── NJSIP2pNetworkController.cpp
│   │   │   │   ├── NJSIP2pNetworkController.hpp
│   │   │   │   ├── NJSIP2pNetworkListener.cpp
│   │   │   │   ├── NJSIP2pNetworkListener.hpp
│   │   │   │   ├── NJSIRpcController.cpp
│   │   │   │   ├── NJSIRpcController.hpp
│   │   │   │   ├── NJSIRpcListener.cpp
│   │   │   │   ├── NJSIRpcListener.hpp
│   │   │   │   ├── NJSIWalletController.cpp
│   │   │   │   ├── NJSIWalletController.hpp
│   │   │   │   ├── NJSIWalletListener.cpp
│   │   │   │   ├── NJSIWalletListener.hpp
│   │   │   │   ├── NJSIWitnessController.cpp
│   │   │   │   ├── NJSIWitnessController.hpp
│   │   │   │   ├── NJSMonitorListener.cpp
│   │   │   │   ├── NJSMonitorListener.hpp
│   │   │   │   ├── unifiedbackend.cpp
│   │   │   │   └── unifiedbackend_doc.js
│   │   │   ├── objc/
│   │   │   │   ├── DBAccountLinkRecord+Private.h
│   │   │   │   ├── DBAccountLinkRecord+Private.mm
│   │   │   │   ├── DBAccountLinkRecord.h
│   │   │   │   ├── DBAccountLinkRecord.mm
│   │   │   │   ├── DBAccountRecord+Private.h
│   │   │   │   ├── DBAccountRecord+Private.mm
│   │   │   │   ├── DBAccountRecord.h
│   │   │   │   ├── DBAccountRecord.mm
│   │   │   │   ├── DBAddressRecord+Private.h
│   │   │   │   ├── DBAddressRecord+Private.mm
│   │   │   │   ├── DBAddressRecord.h
│   │   │   │   ├── DBAddressRecord.mm
│   │   │   │   ├── DBBalanceRecord+Private.h
│   │   │   │   ├── DBBalanceRecord+Private.mm
│   │   │   │   ├── DBBalanceRecord.h
│   │   │   │   ├── DBBalanceRecord.mm
│   │   │   │   ├── DBBannedPeerRecord+Private.h
│   │   │   │   ├── DBBannedPeerRecord+Private.mm
│   │   │   │   ├── DBBannedPeerRecord.h
│   │   │   │   ├── DBBannedPeerRecord.mm
│   │   │   │   ├── DBBlockInfoRecord+Private.h
│   │   │   │   ├── DBBlockInfoRecord+Private.mm
│   │   │   │   ├── DBBlockInfoRecord.h
│   │   │   │   ├── DBBlockInfoRecord.mm
│   │   │   │   ├── DBIAccountsController+Private.h
│   │   │   │   ├── DBIAccountsController+Private.mm
│   │   │   │   ├── DBIAccountsController.h
│   │   │   │   ├── DBIAccountsListener+Private.h
│   │   │   │   ├── DBIAccountsListener+Private.mm
│   │   │   │   ├── DBIAccountsListener.h
│   │   │   │   ├── DBIGenerationController+Private.h
│   │   │   │   ├── DBIGenerationController+Private.mm
│   │   │   │   ├── DBIGenerationController.h
│   │   │   │   ├── DBIGenerationListener+Private.h
│   │   │   │   ├── DBIGenerationListener+Private.mm
│   │   │   │   ├── DBIGenerationListener.h
│   │   │   │   ├── DBILibraryController+Private.h
│   │   │   │   ├── DBILibraryController+Private.mm
│   │   │   │   ├── DBILibraryController.h
│   │   │   │   ├── DBILibraryController.mm
│   │   │   │   ├── DBILibraryListener+Private.h
│   │   │   │   ├── DBILibraryListener+Private.mm
│   │   │   │   ├── DBILibraryListener.h
│   │   │   │   ├── DBIP2pNetworkController+Private.h
│   │   │   │   ├── DBIP2pNetworkController+Private.mm
│   │   │   │   ├── DBIP2pNetworkController.h
│   │   │   │   ├── DBIP2pNetworkListener+Private.h
│   │   │   │   ├── DBIP2pNetworkListener+Private.mm
│   │   │   │   ├── DBIP2pNetworkListener.h
│   │   │   │   ├── DBIRpcController+Private.h
│   │   │   │   ├── DBIRpcController+Private.mm
│   │   │   │   ├── DBIRpcController.h
│   │   │   │   ├── DBIRpcListener+Private.h
│   │   │   │   ├── DBIRpcListener+Private.mm
│   │   │   │   ├── DBIRpcListener.h
│   │   │   │   ├── DBIWalletController+Private.h
│   │   │   │   ├── DBIWalletController+Private.mm
│   │   │   │   ├── DBIWalletController.h
│   │   │   │   ├── DBIWalletListener+Private.h
│   │   │   │   ├── DBIWalletListener+Private.mm
│   │   │   │   ├── DBIWalletListener.h
│   │   │   │   ├── DBIWitnessController+Private.h
│   │   │   │   ├── DBIWitnessController+Private.mm
│   │   │   │   ├── DBIWitnessController.h
│   │   │   │   ├── DBInputRecord+Private.h
│   │   │   │   ├── DBInputRecord+Private.mm
│   │   │   │   ├── DBInputRecord.h
│   │   │   │   ├── DBInputRecord.mm
│   │   │   │   ├── DBLegacyWalletResult+Private.h
│   │   │   │   ├── DBLegacyWalletResult.h
│   │   │   │   ├── DBMnemonicRecord+Private.h
│   │   │   │   ├── DBMnemonicRecord+Private.mm
│   │   │   │   ├── DBMnemonicRecord.h
│   │   │   │   ├── DBMnemonicRecord.mm
│   │   │   │   ├── DBMonitorListener+Private.h
│   │   │   │   ├── DBMonitorListener+Private.mm
│   │   │   │   ├── DBMonitorListener.h
│   │   │   │   ├── DBMonitorRecord+Private.h
│   │   │   │   ├── DBMonitorRecord+Private.mm
│   │   │   │   ├── DBMonitorRecord.h
│   │   │   │   ├── DBMonitorRecord.mm
│   │   │   │   ├── DBMutationRecord+Private.h
│   │   │   │   ├── DBMutationRecord+Private.mm
│   │   │   │   ├── DBMutationRecord.h
│   │   │   │   ├── DBMutationRecord.mm
│   │   │   │   ├── DBOutputRecord+Private.h
│   │   │   │   ├── DBOutputRecord+Private.mm
│   │   │   │   ├── DBOutputRecord.h
│   │   │   │   ├── DBOutputRecord.mm
│   │   │   │   ├── DBPaymentResultStatus+Private.h
│   │   │   │   ├── DBPaymentResultStatus.h
│   │   │   │   ├── DBPeerRecord+Private.h
│   │   │   │   ├── DBPeerRecord+Private.mm
│   │   │   │   ├── DBPeerRecord.h
│   │   │   │   ├── DBPeerRecord.mm
│   │   │   │   ├── DBQrCodeRecord+Private.h
│   │   │   │   ├── DBQrCodeRecord+Private.mm
│   │   │   │   ├── DBQrCodeRecord.h
│   │   │   │   ├── DBQrCodeRecord.mm
│   │   │   │   ├── DBResultRecord+Private.h
│   │   │   │   ├── DBResultRecord+Private.mm
│   │   │   │   ├── DBResultRecord.h
│   │   │   │   ├── DBResultRecord.mm
│   │   │   │   ├── DBTransactionRecord+Private.h
│   │   │   │   ├── DBTransactionRecord+Private.mm
│   │   │   │   ├── DBTransactionRecord.h
│   │   │   │   ├── DBTransactionRecord.mm
│   │   │   │   ├── DBTransactionStatus+Private.h
│   │   │   │   ├── DBTransactionStatus.h
│   │   │   │   ├── DBUriRecipient+Private.h
│   │   │   │   ├── DBUriRecipient+Private.mm
│   │   │   │   ├── DBUriRecipient.h
│   │   │   │   ├── DBUriRecipient.mm
│   │   │   │   ├── DBUriRecord+Private.h
│   │   │   │   ├── DBUriRecord+Private.mm
│   │   │   │   ├── DBUriRecord.h
│   │   │   │   ├── DBUriRecord.mm
│   │   │   │   ├── DBWalletLockStatus+Private.h
│   │   │   │   ├── DBWalletLockStatus+Private.mm
│   │   │   │   ├── DBWalletLockStatus.h
│   │   │   │   ├── DBWalletLockStatus.mm
│   │   │   │   ├── DBWitnessAccountStatisticsRecord+Private.h
│   │   │   │   ├── DBWitnessAccountStatisticsRecord+Private.mm
│   │   │   │   ├── DBWitnessAccountStatisticsRecord.h
│   │   │   │   ├── DBWitnessAccountStatisticsRecord.mm
│   │   │   │   ├── DBWitnessEstimateInfoRecord+Private.h
│   │   │   │   ├── DBWitnessEstimateInfoRecord+Private.mm
│   │   │   │   ├── DBWitnessEstimateInfoRecord.h
│   │   │   │   ├── DBWitnessEstimateInfoRecord.mm
│   │   │   │   ├── DBWitnessFundingResultRecord+Private.h
│   │   │   │   ├── DBWitnessFundingResultRecord+Private.mm
│   │   │   │   ├── DBWitnessFundingResultRecord.h
│   │   │   │   └── DBWitnessFundingResultRecord.mm
│   │   │   └── support-lib/
│   │   │       ├── djinni_common.hpp
│   │   │       ├── ios-build-support-lib.sh
│   │   │       ├── java/
│   │   │       │   └── com/
│   │   │       │       └── dropbox/
│   │   │       │           └── djinni/
│   │   │       │               └── NativeLibLoader.java
│   │   │       ├── jni/
│   │   │       │   ├── Marshal.hpp
│   │   │       │   ├── djinni_main.cpp
│   │   │       │   ├── djinni_support.cpp
│   │   │       │   └── djinni_support.hpp
│   │   │       ├── nodejs/
│   │   │       │   └── win_delay_load_hook.cpp
│   │   │       ├── objc/
│   │   │       │   ├── DJICppWrapperCache+Private.h
│   │   │       │   ├── DJIError.h
│   │   │       │   ├── DJIError.mm
│   │   │       │   ├── DJIMarshal+Private.h
│   │   │       │   ├── DJIObjcWrapperCache+Private.h
│   │   │       │   └── DJIProxyCaches.mm
│   │   │       ├── proxy_cache_impl.hpp
│   │   │       ├── proxy_cache_interface.hpp
│   │   │       ├── support-lib.iml
│   │   │       └── support_lib.gyp
│   │   ├── generic/
│   │   │   ├── init_generic.cpp
│   │   │   ├── init_generic_node.cpp
│   │   │   └── logging.cpp
│   │   ├── glob.py
│   │   ├── ios/
│   │   │   ├── init_ios.cpp
│   │   │   ├── logging_ios.cpp
│   │   │   └── munt_static/
│   │   │       └── MuntCore/
│   │   │           └── Info.plist
│   │   ├── libinit.cpp
│   │   ├── libinit.h
│   │   ├── libmunt_unity.gyp
│   │   ├── libunity.djinni
│   │   ├── node_js/
│   │   │   ├── init_node_js.cpp
│   │   │   └── logging_node_js.cpp
│   │   ├── signals.h
│   │   ├── unity_impl.cpp
│   │   └── unity_impl.h
│   ├── univalue/
│   │   ├── .gitignore
│   │   ├── COPYING
│   │   ├── Makefile.am
│   │   ├── README.md
│   │   ├── TODO
│   │   ├── autogen.sh
│   │   ├── build-aux/
│   │   │   └── m4/
│   │   │       ├── .gitignore
│   │   │       └── ax_cxx_compile_stdcxx.m4
│   │   ├── configure.ac
│   │   ├── include/
│   │   │   └── univalue.h
│   │   ├── lib/
│   │   │   ├── .gitignore
│   │   │   ├── univalue.cpp
│   │   │   ├── univalue_escapes.h
│   │   │   ├── univalue_get.cpp
│   │   │   ├── univalue_read.cpp
│   │   │   ├── univalue_utffilter.h
│   │   │   └── univalue_write.cpp
│   │   ├── pc/
│   │   │   ├── libunivalue-uninstalled.pc.in
│   │   │   └── libunivalue.pc.in
│   │   ├── sources.mk
│   │   └── test/
│   │       ├── .gitignore
│   │       ├── fail1.json
│   │       ├── fail10.json
│   │       ├── fail11.json
│   │       ├── fail12.json
│   │       ├── fail13.json
│   │       ├── fail14.json
│   │       ├── fail15.json
│   │       ├── fail16.json
│   │       ├── fail17.json
│   │       ├── fail18.json
│   │       ├── fail19.json
│   │       ├── fail2.json
│   │       ├── fail20.json
│   │       ├── fail21.json
│   │       ├── fail22.json
│   │       ├── fail23.json
│   │       ├── fail24.json
│   │       ├── fail25.json
│   │       ├── fail26.json
│   │       ├── fail27.json
│   │       ├── fail28.json
│   │       ├── fail29.json
│   │       ├── fail3.json
│   │       ├── fail30.json
│   │       ├── fail31.json
│   │       ├── fail32.json
│   │       ├── fail33.json
│   │       ├── fail34.json
│   │       ├── fail35.json
│   │       ├── fail36.json
│   │       ├── fail37.json
│   │       ├── fail38.json
│   │       ├── fail39.json
│   │       ├── fail4.json
│   │       ├── fail40.json
│   │       ├── fail41.json
│   │       ├── fail42.json
│   │       ├── fail44.json
│   │       ├── fail45.json
│   │       ├── fail5.json
│   │       ├── fail6.json
│   │       ├── fail7.json
│   │       ├── fail8.json
│   │       ├── fail9.json
│   │       ├── no_nul.cpp
│   │       ├── object.cpp
│   │       ├── pass1.json
│   │       ├── pass2.json
│   │       ├── pass3.json
│   │       ├── pass4.json
│   │       ├── round1.json
│   │       ├── round2.json
│   │       ├── round3.json
│   │       ├── round4.json
│   │       ├── round5.json
│   │       ├── round6.json
│   │       ├── round7.json
│   │       ├── test_json.cpp
│   │       └── unitester.cpp
│   ├── util/
│   │   ├── bytevectorhash.cpp
│   │   ├── bytevectorhash.h
│   │   ├── check.h
│   │   ├── getuniquepath.cpp
│   │   ├── getuniquepath.h
│   │   ├── macros.h
│   │   ├── moneystr.cpp
│   │   ├── moneystr.h
│   │   ├── overloaded.h
│   │   ├── strencodings.cpp
│   │   ├── strencodings.h
│   │   ├── syscall_sandbox.cpp
│   │   ├── syscall_sandbox.h
│   │   ├── thread.cpp
│   │   ├── thread.h
│   │   ├── threadnames.cpp
│   │   ├── threadnames.h
│   │   ├── time.cpp
│   │   └── time.h
│   ├── util.cpp
│   ├── util.h
│   ├── validation/
│   │   ├── validation.cpp
│   │   ├── validation.h
│   │   ├── validation_mempool.cpp
│   │   ├── validation_misc.cpp
│   │   ├── validationinterface.cpp
│   │   ├── validationinterface.h
│   │   ├── versionbitsvalidation.cpp
│   │   ├── versionbitsvalidation.h
│   │   ├── witnessvalidation.cpp
│   │   └── witnessvalidation.h
│   ├── version.h
│   ├── versionbits.cpp
│   ├── versionbits.h
│   ├── wallet/
│   │   ├── account.cpp
│   │   ├── account.h
│   │   ├── coincontrol.h
│   │   ├── crypter.cpp
│   │   ├── crypter.h
│   │   ├── db.cpp
│   │   ├── db.h
│   │   ├── extwallet.cpp
│   │   ├── extwallet.h
│   │   ├── feebumper.cpp
│   │   ├── feebumper.h
│   │   ├── merkletx.cpp
│   │   ├── merkletx.h
│   │   ├── mnemonic.cpp
│   │   ├── mnemonic.h
│   │   ├── rpcdump.cpp
│   │   ├── rpcwallet.cpp
│   │   ├── rpcwallet.h
│   │   ├── spvscanner.cpp
│   │   ├── spvscanner.h
│   │   ├── test/
│   │   │   ├── accounting_tests.cpp
│   │   │   ├── crypto_tests.cpp
│   │   │   ├── wallet_test_fixture.cpp
│   │   │   ├── wallet_test_fixture.h
│   │   │   └── wallet_tests.cpp
│   │   ├── wallet.cpp
│   │   ├── wallet.h
│   │   ├── wallet_init.cpp
│   │   ├── wallet_ismine.cpp
│   │   ├── wallet_keypool.cpp
│   │   ├── wallet_transaction.cpp
│   │   ├── walletbalance.cpp
│   │   ├── walletdb.cpp
│   │   ├── walletdb.h
│   │   ├── walletdberrors.h
│   │   ├── wallettx.cpp
│   │   ├── wallettx.h
│   │   ├── witness_operations.cpp
│   │   └── witness_operations.h
│   ├── warnings.cpp
│   ├── warnings.h
│   ├── witnessutil.cpp
│   ├── witnessutil.h
│   └── zmq/
│       ├── zmqabstractnotifier.cpp
│       ├── zmqabstractnotifier.h
│       ├── zmqconfig.h
│       ├── zmqnotificationinterface.cpp
│       ├── zmqnotificationinterface.h
│       ├── zmqpublishnotifier.cpp
│       └── zmqpublishnotifier.h
├── technical_documentation/
│   ├── accelerated_testnet.md
│   ├── account_system.md
│   ├── gui_development.md
│   └── transaction_format.md
└── test/
    ├── README.md
    ├── config.ini.in
    ├── functional/
    │   ├── .gitignore
    │   ├── README.md
    │   ├── combine_logs.py
    │   ├── combined_log_template.html
    │   ├── create_cache.py
    │   ├── data/
    │   │   ├── invalid_txs.py
    │   │   ├── rpc_getblockstats.json
    │   │   └── rpc_psbt.json
    │   ├── example_test.py
    │   ├── feature_assumevalid.py
    │   ├── feature_bip68_sequence.py
    │   ├── feature_block.py
    │   ├── feature_blocksdir.py
    │   ├── feature_cltv.py
    │   ├── feature_config_args.py
    │   ├── feature_csv_activation.py
    │   ├── feature_dbcrash.py
    │   ├── feature_dersig.py
    │   ├── feature_fee_estimation.py
    │   ├── feature_filelock.py
    │   ├── feature_help.py
    │   ├── feature_includeconf.py
    │   ├── feature_logging.py
    │   ├── feature_maxuploadtarget.py
    │   ├── feature_minchainwork.py
    │   ├── feature_notifications.py
    │   ├── feature_nulldummy.py
    │   ├── feature_proxy.py
    │   ├── feature_pruning.py
    │   ├── feature_rbf.py
    │   ├── feature_reindex.py
    │   ├── feature_segwit.py
    │   ├── feature_shutdown.py
    │   ├── feature_uacomment.py
    │   ├── feature_versionbits_warning.py
    │   ├── interface_cli.py
    │   ├── interface_http.py
    │   ├── interface_rest.py
    │   ├── interface_rpc.py
    │   ├── interface_zmq.py
    │   ├── mempool_accept.py
    │   ├── mempool_limit.py
    │   ├── mempool_packages.py
    │   ├── mempool_persist.py
    │   ├── mempool_reorg.py
    │   ├── mempool_resurrect.py
    │   ├── mempool_spend_coinbase.py
    │   ├── mining_basic.py
    │   ├── mining_getblocktemplate_longpoll.py
    │   ├── mining_prioritisetransaction.py
    │   ├── p2p_compactblocks.py
    │   ├── p2p_disconnect_ban.py
    │   ├── p2p_feefilter.py
    │   ├── p2p_fingerprint.py
    │   ├── p2p_invalid_block.py
    │   ├── p2p_invalid_locator.py
    │   ├── p2p_invalid_messages.py
    │   ├── p2p_invalid_tx.py
    │   ├── p2p_leak.py
    │   ├── p2p_leak_tx.py
    │   ├── p2p_mempool.py
    │   ├── p2p_node_network_limited.py
    │   ├── p2p_segwit.py
    │   ├── p2p_sendheaders.py
    │   ├── p2p_timeouts.py
    │   ├── p2p_unrequested_blocks.py
    │   ├── rpc_bind.py
    │   ├── rpc_blockchain.py
    │   ├── rpc_createmultisig.py
    │   ├── rpc_decodescript.py
    │   ├── rpc_deprecated.py
    │   ├── rpc_deriveaddresses.py
    │   ├── rpc_fundrawtransaction.py
    │   ├── rpc_getblockstats.py
    │   ├── rpc_getchaintips.py
    │   ├── rpc_help.py
    │   ├── rpc_invalidateblock.py
    │   ├── rpc_misc.py
    │   ├── rpc_named_arguments.py
    │   ├── rpc_net.py
    │   ├── rpc_preciousblock.py
    │   ├── rpc_psbt.py
    │   ├── rpc_rawtransaction.py
    │   ├── rpc_scantxoutset.py
    │   ├── rpc_signmessage.py
    │   ├── rpc_signrawtransaction.py
    │   ├── rpc_txoutproof.py
    │   ├── rpc_uptime.py
    │   ├── rpc_users.py
    │   ├── test_framework/
    │   │   ├── __init__.py
    │   │   ├── address.py
    │   │   ├── authproxy.py
    │   │   ├── bignum.py
    │   │   ├── blocktools.py
    │   │   ├── coverage.py
    │   │   ├── descriptors.py
    │   │   ├── key.py
    │   │   ├── messages.py
    │   │   ├── mininode.py
    │   │   ├── netutil.py
    │   │   ├── script.py
    │   │   ├── segwit_addr.py
    │   │   ├── siphash.py
    │   │   ├── socks5.py
    │   │   ├── test_framework.py
    │   │   ├── test_node.py
    │   │   ├── util.py
    │   │   └── wallet_util.py
    │   ├── test_runner.py
    │   ├── tool_wallet.py
    │   ├── wallet_abandonconflict.py
    │   ├── wallet_address_types.py
    │   ├── wallet_backup.py
    │   ├── wallet_balance.py
    │   ├── wallet_basic.py
    │   ├── wallet_bumpfee.py
    │   ├── wallet_coinbase_category.py
    │   ├── wallet_create_tx.py
    │   ├── wallet_createwallet.py
    │   ├── wallet_disable.py
    │   ├── wallet_dump.py
    │   ├── wallet_encryption.py
    │   ├── wallet_fallbackfee.py
    │   ├── wallet_groups.py
    │   ├── wallet_hd.py
    │   ├── wallet_import_rescan.py
    │   ├── wallet_import_with_label.py
    │   ├── wallet_importmulti.py
    │   ├── wallet_importprunedfunds.py
    │   ├── wallet_keypool.py
    │   ├── wallet_keypool_topup.py
    │   ├── wallet_listreceivedby.py
    │   ├── wallet_listsinceblock.py
    │   ├── wallet_listtransactions.py
    │   ├── wallet_multiwallet.py
    │   ├── wallet_resendwallettransactions.py
    │   ├── wallet_txn_clone.py
    │   ├── wallet_txn_doublespend.py
    │   └── wallet_zapwallettxes.py
    ├── fuzz/
    │   └── test_runner.py
    ├── lint/
    │   ├── README.md
    │   ├── check-doc.py
    │   ├── check-rpc-mappings.py
    │   ├── commit-script-check.sh
    │   ├── git-subtree-check.sh
    │   ├── lint-all.sh
    │   ├── lint-assertions.sh
    │   ├── lint-circular-dependencies.sh
    │   ├── lint-filenames.sh
    │   ├── lint-format-strings.py
    │   ├── lint-format-strings.sh
    │   ├── lint-include-guards.sh
    │   ├── lint-includes.sh
    │   ├── lint-locale-dependence.sh
    │   ├── lint-logs.sh
    │   ├── lint-python-dead-code.sh
    │   ├── lint-python-utf8-encoding.sh
    │   ├── lint-python.sh
    │   ├── lint-rpc-help.sh
    │   ├── lint-shebang.sh
    │   ├── lint-shell-locale.sh
    │   ├── lint-shell.sh
    │   ├── lint-spelling.ignore-words.txt
    │   ├── lint-spelling.sh
    │   ├── lint-tests.sh
    │   └── lint-whitespace.sh
    ├── sanitizer_suppressions/
    │   ├── lsan
    │   ├── tsan
    │   └── ubsan
    └── util/
        ├── data/
        │   ├── blanktxv1.hex
        │   ├── blanktxv1.json
        │   ├── blanktxv2.hex
        │   ├── blanktxv2.json
        │   ├── tt-delin1-out.hex
        │   ├── tt-delin1-out.json
        │   ├── tt-delout1-out.hex
        │   ├── tt-delout1-out.json
        │   ├── tt-locktime317000-out.hex
        │   ├── tt-locktime317000-out.json
        │   ├── tx394b54bb.hex
        │   ├── txcreate1.hex
        │   ├── txcreate1.json
        │   ├── txcreate2.hex
        │   ├── txcreate2.json
        │   ├── txcreatedata1.hex
        │   ├── txcreatedata1.json
        │   ├── txcreatedata2.hex
        │   ├── txcreatedata2.json
        │   ├── txcreatedata_seq0.hex
        │   ├── txcreatedata_seq0.json
        │   ├── txcreatedata_seq1.hex
        │   ├── txcreatedata_seq1.json
        │   ├── txcreatemultisig1.hex
        │   ├── txcreatemultisig1.json
        │   ├── txcreatemultisig2.hex
        │   ├── txcreatemultisig2.json
        │   ├── txcreatemultisig3.hex
        │   ├── txcreatemultisig3.json
        │   ├── txcreatemultisig4.hex
        │   ├── txcreatemultisig4.json
        │   ├── txcreatemultisig5.json
        │   ├── txcreateoutpubkey1.hex
        │   ├── txcreateoutpubkey1.json
        │   ├── txcreateoutpubkey2.hex
        │   ├── txcreateoutpubkey2.json
        │   ├── txcreateoutpubkey3.hex
        │   ├── txcreateoutpubkey3.json
        │   ├── txcreatescript1.hex
        │   ├── txcreatescript1.json
        │   ├── txcreatescript2.hex
        │   ├── txcreatescript2.json
        │   ├── txcreatescript3.hex
        │   ├── txcreatescript3.json
        │   ├── txcreatescript4.hex
        │   ├── txcreatescript4.json
        │   ├── txcreatesignv1.hex
        │   ├── txcreatesignv1.json
        │   ├── txcreatesignv2.hex
        │   └── util-test.json
        ├── rpcauth-test.py
        └── util-test.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
src/clientversion.cpp export-subst


================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
<!--- Remove sections that do not apply -->

This issue tracker is only for technical issues related to Gulden.

General support questions and/or support requests and are best directed to our slack.

Please ensure you are running the latest version of the software before reporting issues.

### Describe the issue

### Can you reliably reproduce the issue?
#### If so, please list the steps to reproduce below:
1.
2.
3.

### Expected behaviour
Tell us what should happen

### Actual behaviour
Tell us what happens instead

### Screenshots.
If the issue is related to the GUI, screenshots can be added to this issue via drag & drop.

### What version of Gulden are you using?
List the version number/commit ID, and if it is an official binary, self compiled or a distribution package such as PPA.

### Machine specs:
- OS:
- CPU:
- RAM:
- Disk size:
- Disk Type (HD/SDD):

### Any extra information that might be useful in the debugging process.
This is normally the contents of a `debug.log` or `config.log` file. Raw text or a link to a pastebin type site are preferred.


================================================
FILE: .gitignore
================================================
*.tar.gz

*.exe

# autoreconf
Makefile.in
aclocal.m4
autom4te.cache/
build-aux/config.guess
build-aux/config.sub
build-aux/depcomp
build-aux/install-sh
build-aux/ltmain.sh
build-aux/m4/libtool.m4
build-aux/m4/lt~obsolete.m4
build-aux/m4/ltoptions.m4
build-aux/m4/ltsugar.m4
build-aux/m4/ltversion.m4
build-aux/missing
build-aux/compile
build-aux/test-driver
config.log
config.status
configure
libtool
src/config/gulden-config.h
src/config/gulden-config.h.in
src/config/stamp-h1
share/setup.nsi
share/qt/Info.plist

src/univalue/gen

src/qt/*.moc
src/qt/_Gulden/*.moc
src/qt/moc_*.cpp
src/qt/_Gulden/moc_*.cpp
src/qt/forms/ui_*.h
src/qt/_Gulden/forms/ui_*.h
src/qt/qfonticon/moc_*.cpp
src/qt/test/moc*.cpp

.deps
.dirstamp
.libs
.*.swp
*.*~*
*.bak
*.rej
*.orig
*.pyc
*.o
*.o-*
*.patch
*.a
*.pb.cc
*.pb.h

*.log
*.trs
*.dmg

*.json.h
*.raw.h

#libtool object files
*.lo
*.la

# Compilation and Qt preprocessor part
*.qm
Makefile
Makefile.am.user
Gulden-tx
Gulden-cli
GuldenD
/src/qt/Gulden

# Unit-tests
Makefile.test
test_Gulden
test_gulden

# Resources cpp
qrc_*.cpp

# Mac specific
.DS_Store
build

#lcov
*.gcno
*.gcda
/*.info
test_bitcoin.coverage/
total.coverage/
coverage_percent.txt

#build tests
linux-coverage-build
linux-build
win32-build
test/config.ini
test/cache/*

!src/leveldb*/Makefile

/doc/doxygen/

libguldenconsensus.pc
contrib/devtools/split-debug.sh
contrib/gitian-descriptors/*.yml

#Auto generated npm files
src/frontend/electron/dist

#Private local config file for developer tools
private.conf

#Generated by translation system, not actually used by build
src/qt/guldenstrings.cpp

src/test/test_gulden_fuzzy

debug
debug2
release
massif
profile
releasewithdebug
foo
foo2
*.po

# In tree build files take form of /build/<build-type> and/or /build_<build-type>
/build*

# In tree files auto generated and/or downloaded for the Android build
/developer-tools/android-ndk-gulden/
/djinni/

xcuserdata

# Android Studio/IntelliJ IDE
.idea


================================================
FILE: .gitmodules
================================================


================================================
FILE: .mailmap
================================================
Willem de Jonge	<willem@isnapp.nl>	Willem de Jonge	<willem@isnapp.nl>
<malcolm@gulden.com>	<mmacleod@webmail.co.za>
<malcolm@gulden.com>	<malcolm@Malcolms-MacBook-Pro.local>
Malcolm MacLeod <malcolm@gulden.com>	Malcolm	<malcolm@gulden.com>
Malcolm MacLeod <malcolm@gulden.com>    Malcolm James MacLeod <malcolm@gulden.com>



================================================
FILE: .travis.yml
================================================
language: minimal
dist: trusty
sudo: required
cache:
  ccache: true
  directories:
  - depends/built
  - depends/sdk-sources
  - $HOME/.ccache

env:
  global:
    - MAKEJOBS=-j3
    - BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
    - CCACHE_SIZE=500M
    - CCACHE_TEMPDIR=/tmp/.ccache-temp
    - CCACHE_COMPRESS=1
    - CCACHE_DIR=$HOME/.ccache
    - BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
    - WINEDEBUG=fixme-all
    - DOCKER_PACKAGES="build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache"
matrix:
  include:
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-7
      env: MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" HOST=x86_64-unknown-linux-gnu PACKAGES="libqrencode-dev libminiupnpc-dev libqwt-qt5-dev libqwt-headers python3-zmq libqt5webkit5-dev qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" DEP_OPTS="NO_QT=1 NO_UPNP=1 ALLOW_HOST_PACKAGES=1" RUN_TESTS=false GOAL="install" GULDEN_CONFIG='--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS="-DBYPASS_TEST_REWRITES"'
#    - os: linux
#      addons:
#        apt:
#          sources:
#            - ubuntu-toolchain-r-test
#          packages:
#            - g++-7
#      env: MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" HOST=x86_64-unknown-linux-gnu PACKAGES="libqrencode-dev libminiupnpc-dev python3-zmq protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" DEP_OPTS="NO_QT=1 NO_WALLET=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1" RUN_TESTS=true GOAL="install" GULDEN_CONFIG='--enable-zmq --disable-wallet --with-gui=no --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS="-DBYPASS_TEST_REWRITES"'
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-7
      env: MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" HOST=x86_64-unknown-linux-gnu PACKAGES="libqrencode-dev libminiupnpc-dev python3-zmq protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" DEP_OPTS="NO_QT=1 NO_UPNP=1 ALLOW_HOST_PACKAGES=1" RUN_TESTS=true GOAL="install" GULDEN_CONFIG='--enable-zmq --disable-wallet --with-gui=no --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS="-DBYPASS_TEST_REWRITES"'
    #Tests only make dist
    - os: linux
      addons:
        apt:
          sources:
            - ubuntu-toolchain-r-test
          packages:
            - g++-7
      env: MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" HOST=x86_64-unknown-linux-gnu PACKAGES="libqrencode-dev libminiupnpc-dev libqwt-qt5-dev libqwt-headers python3-zmq libqt5webkit5-dev qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" DEP_OPTS="NO_QT=1 NO_UPNP=1 ALLOW_HOST_PACKAGES=1" DIST_ONLY=true GOAL="install" GULDEN_CONFIG='--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS="-DBYPASS_TEST_REWRITES"'

before_install:
    - eval "${MATRIX_EVAL}"
    - export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
install:
    - env | grep -E '^(CCACHE_|WINEDEBUG|DISPLAY|BOOST_TEST_RANDOM|CONFIG_SHELL|TRAVIS)' | tee /tmp/env
    - DOCKER_ID=$(docker run $DOCKER_ADMIN -idt --mount type=bind,src=$TRAVIS_BUILD_DIR,dst=$TRAVIS_BUILD_DIR --mount type=bind,src=$CCACHE_DIR,dst=$CCACHE_DIR -w $TRAVIS_BUILD_DIR --env-file /tmp/env ubuntu:18.04)
    - DOCKER_EXEC () { docker exec $DOCKER_ID bash -c "cd $PWD && $*"; }
    - if [ -n "$DPKG_ADD_ARCH" ]; then DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
    - travis_retry DOCKER_EXEC apt-get update
    - travis_retry DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES $DOCKER_PACKAGES
before_script:
    - if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC CONFIG_SHELL= make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS; fi
    # Start xvfb if needed, as documented at https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI
    - if [ "$NEED_XVFB" = 1 ]; then DOCKER_EXEC /sbin/start-stop-daemon --start --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac; fi
script:
    - export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
    - OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
    - GULDEN_CONFIG_ALL="--enable-werror --disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
    - if [ -z "$NO_DEPENDS" ]; then DOCKER_EXEC ccache --max-size=$CCACHE_SIZE; fi
    - test -n "$CONFIG_SHELL" && DOCKER_EXEC "$CONFIG_SHELL" -c "./autogen.sh" || DOCKER_EXEC ./autogen.sh
    - mkdir build && cd build
    - DOCKER_EXEC "echo 'prefix=/usr' | tee /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'exec_prefix=/usr' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'libdir=/usr/lib64' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'includedir=/usr/include/qwt' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'Name:Qwt' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'Description:Qt Widgets for Technical Applications' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'Version:6.1.3' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'Libs:-lqwt-qt5' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC "echo 'Cflags:-I/usr/include/qwt' | tee -a /usr/share/pkgconfig/Qt5Qwt.pc"
    - DOCKER_EXEC ../configure --cache-file=config.cache $GULDEN_CONFIG_ALL $GULDEN_CONFIG || ( cat config.log && false)
    - if [ "DIST_ONLY" = "true" ]; then DOCKER_EXEC make dist; fi
    - if [ "DIST_ONLY" != "true" ]; then DOCKER_EXEC make $MAKEJOBS; fi
#    - if [ "$RUN_TESTS" = "true" ]; then travis_wait 60 DOCKER_EXEC ./src/test/test_gulden; fi
after_script:
    - echo $TRAVIS_COMMIT_RANGE
    - echo $TRAVIS_COMMIT_LOG

notifications:
  slack:
    secure: iNEHGC+a1uC0bGNKDH85XuSwk18Jyqb8t02dosNcZd46L1eZyUrcL/AoQBVw/r8Ay+dOUcTY6arjKrkobPjvXGpamrJo0ejI6vZlfe8t1nR+P7feYLDhYeJQ4yb6ZV7uKzOP+ZocoEoTKttsHkoWKGGNuNzHcPcjhzLkYmY3MHfGmIQDVcU6DAGGTw6SQB1FkMbOWpgpqXndidEpX6N8pdZ3gCG3EFLKI/xQAVlyvzEmQOc4uP4vLMVhCQVc03MgnQIm5DpbsPdMMp4h24ysstTIFk6zO8qwjqzeePr4bRWTYRdaVxIHvd269bo7rCMn7p+Apc+xHnDIaCHJbzrI7HN8iJ4Pe9W4MTOR/GUNesfQhnrkWndSYRfObTzpfZHOgdv+K9dQ+A+kn3CUEQfLXFtwtmafgpVzQ0PeU3mLqXJt1zzYVoxCSqyO/dpye9Ezr5cPged29a35lL80ChIywlL83EkbcXpctoA9AHu4M44h1gTCG5oleulsuQjEPnNZYdEKuY2uAmB0dszzbgu1R+BBVmnBQSW0LT1AwJGD/30SihQZhY+vXrJOBBTrQl6mrA7iX5kAe2o5kGCkVuKj/o8P9ia5LF88PsWibYm4cB+wt07DxVK/rjZDw/yi0+G59D6HrF0B2i8Jg7yJOQ2JyC3Au/1d+17tHmxqAdp6xPE=


================================================
FILE: CONTRIBUTING.md
================================================
Contributing to Munt
============================

Want to contribute to Munt? There are many ways you can contribute, see below.

Opening issues
--------------------

Open an issue to report bugs or to propose new features. 
Note please first check for existing issues before reporting new ones; and ideally check with the slack support channels that your issue is legitimate.

Contributing code
---------------------------
Code contributions are always welcome, simply submit a pull request for it to be reviewed. For larger changes first check with the developers and Munt community whether the changes are ones that fit the vision of the project and are not already being worked on by someone else, to avoid dissapointment and/or wasting your time.

Keep your pull requests as clean as possible, don't mix multiple issues into one request, don't make unnecesssary formatting or name changes that make the patch larger than it needs to be, these can rather be split into multiple requests.

View [the developer guidelines](./doc/developer_guidelines.md) for basic code style standards and suggestions.

Testing
---------------------------

Read here about our [testnet](./technical_documentation/accelerated_testnet.md) which includes a testbed for merchant integration and join the community on slack for further communication/assistance.


Localisation/Translation
-----------------------

Improvements/additions to the localisations are always welcome, however please don't modify the .ts files directly - the correct place to participate in translation is our translation portal translate.munt.org
Discussion around translation can be had in the #translate channel on our slack.


================================================
FILE: COPYING
================================================
For licensing of all original portions of the code coming from the Munt project, please review the license in this file or in COPYING_munt which is an unmodified copy of the GNU Lesser General Public License v3
For licensing of all original unmodified portions of code coming from upstream, please review COPYING_upstream which is an unmodified copy of the upstream license.
For licensing of all portions of the code in specific subdirectories, please review the COPYING or LICENSE file for the sub directory in question: src/secp256k1/COPYING; src/LRUCache/COPYING; src/crypto/ctaes/COPYING; src/univalue/COPYING; src/leveldb/LICENSE.

In all cases review also the licensing comments in the files themselves which superceed the above when present. All code in this repository falls under the above licenses unless specifically stated otherwise in the file.
All modifications to all files, irrespective of the original licensing of the file form part of the work of the Munt project and are subject to the GNU Lesser General Public License v3, please review the text below or in COPYING_munt which is an unmodified copy of the GNU Lesser General Public License v3.


-----------------------------------------------------

GNU LESSER GENERAL PUBLIC LICENSE

Version 3, 29 June 2007

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.
0. Additional Definitions.

As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.

“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.

The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.

The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.

You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.

If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:

    a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or
    b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

3. Object Code Incorporating Material from Library Header Files.

The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

    a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
    b) Accompany the object code with a copy of the GNU GPL and this license document.

4. Combined Works.

You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

    a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
    b) Accompany the Combined Work with a copy of the GNU GPL and this license document.
    c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
    d) Do one of the following:
        0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
        1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
    e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

5. Combined Libraries.

You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:

    a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
    b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

6. Revised Versions of the GNU Lesser General Public License.

The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.

If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.


================================================
FILE: COPYING_munt
================================================
GNU LESSER GENERAL PUBLIC LICENSE

Version 3, 29 June 2007

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.
0. Additional Definitions.

As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.

“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.

The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.

The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.

You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.

If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:

    a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or
    b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

3. Object Code Incorporating Material from Library Header Files.

The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

    a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
    b) Accompany the object code with a copy of the GNU GPL and this license document.

4. Combined Works.

You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

    a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.
    b) Accompany the Combined Work with a copy of the GNU GPL and this license document.
    c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.
    d) Do one of the following:
        0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
        1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
    e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

5. Combined Libraries.

You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:

    a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.
    b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

6. Revised Versions of the GNU Lesser General Public License.

The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.

If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.


================================================
FILE: COPYING_upstream
================================================
The MIT License (MIT)

Copyright (c) 2009-2017 The Bitcoin Core developers

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.


================================================
FILE: INSTALL.md
================================================
Windows
================
Download and install the latest .exe setup file from [releases](https://github.com/muntorg/munt-official/releases)

Linux
================
Desktop users - Download and install the latest .AppImage from [releases](https://github.com/muntorg/munt-official/releases)
Server/Embeddeded - Download and decompress the latest binaries for your architecture from [releases](https://github.com/muntorg/munt-official/releases)

macOS
================
Download and install the latest .dmg file from [releases](https://github.com/muntorg/munt-official/releases)

Building
================

See [build instructions](./doc/building.md) for instructions on building Munt.


================================================
FILE: Makefile.am
================================================
# Copyright (c) 2013-2016 The Bitcoin developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
#
# File contains modifications by: The Centure developers
# All modifications:
# Copyright (c) 2016-2022 The Centure developers
# Authored by: Malcolm MacLeod (mmacleod@gmx.com)
# Distributed under the GNU Lesser General Public License v3, see the accompanying
# file COPYING

ACLOCAL_AMFLAGS = -I build-aux/m4
SUBDIRS = src
.PHONY: deploy FORCE

GZIP_ENV="-9n"
export PYTHONPATH

DAEMON_BIN=$(top_builddir)/src/$(_DAEMON_NAME)$(EXEEXT)
CLI_BIN=$(top_builddir)/src/$(_CLI_NAME)$(EXEEXT)
WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT)

empty :=
space := $(empty) $(empty)

OSX_APP=Munt.app
OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME))
OSX_DMG = $(OSX_VOLNAME).dmg
OSX_BACKGROUND_SVG=background.svg
OSX_BACKGROUND_IMAGE=background.tiff
OSX_BACKGROUND_IMAGE_DPIS=36 72
OSX_DSSTORE_GEN=DS_Store
OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist
OSX_INSTALLER_ICONS=$(top_srcdir)/src/frontend/electron/build/icon.icns

DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md)
DIST_CONTRIB = $(top_srcdir)/contrib/Munt-cli.bash-completion \
	       $(top_srcdir)/contrib/Munt-tx.bash-completion \
	       $(top_srcdir)/contrib/Munt-daemon.bash-completion \
	       $(top_srcdir)/contrib/init 

BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \
           $(top_srcdir)/contrib/devtools/security-check.py

WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/icon.ico \
  $(top_srcdir)/share/pixmaps/nsis-header.bmp \
  $(top_srcdir)/share/pixmaps/nsis-wizard.bmp

OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \
  $(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_SVG) \
  $(top_srcdir)/contrib/macdeploy/$(OSX_DSSTORE_GEN) \
  $(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \
  $(top_srcdir)/contrib/macdeploy/detached-sig-create.sh

COVERAGE_INFO = baseline_filtered_combined.info baseline.info \
  leveldb_baseline.info test_filtered.info total_coverage.info \
  baseline_filtered.info functional_test.info functional_test_filtered.info \
  leveldb_baseline_filtered.info test_coverage.info test.info

dist-hook:
	-$(GIT) archive --format=tar HEAD -- src/clientversion.cpp | $(AMTAR) -C $(top_distdir) -xf -

strip: all-recursive
	$(MKDIR_P) $(top_builddir)/release
	STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(DAEMON_BIN) $(top_builddir)/release
	STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $(CLI_BIN) $(top_builddir)/release


$(WIN_INSTALLER): all-recursive
	@test -f $(MAKENSIS) && $(MAKENSIS) -V2 $(top_builddir)/share/setup.nsi || \
	  echo error: could not build $@
	@echo built $@

$(OSX_APP)/Contents/PkgInfo:
	$(MKDIR_P) $(@D)
	@echo "APPL????" > $@

$(OSX_APP)/Contents/Resources/empty.lproj:
	$(MKDIR_P) $(@D)
	@touch $@ 

$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST)
	$(MKDIR_P) $(@D)
	$(INSTALL_DATA) $< $@

$(OSX_APP)/Contents/Resources/Munt.icns: $(OSX_INSTALLER_ICONS)
	$(MKDIR_P) $(@D)
	$(INSTALL_DATA) $< $@

$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:
	$(MKDIR_P) $(@D)
	echo '{	CFBundleDisplayName = "$(PACKAGE_NAME)"; CFBundleName = "$(PACKAGE_NAME)"; }' > $@

OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
  $(OSX_APP)/Contents/Resources/Munt.icns $(OSX_APP)/Contents/Info.plist \
  $(OSX_APP)/Contents/MacOS/Munt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings

osx_volname:
	echo $(OSX_VOLNAME) >$@

if BUILD_DARWIN
$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) $(OSX_BACKGROUND_IMAGE)
	$(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 -volname $(OSX_VOLNAME)

$(OSX_BACKGROUND_IMAGE).png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
	sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 36 -p 36 -o $@
$(OSX_BACKGROUND_IMAGE)@2x.png: contrib/macdeploy/$(OSX_BACKGROUND_SVG)
	sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d 72 -p 72 -o $@
$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE).png $(OSX_BACKGROUND_IMAGE)@2x.png
	tiffutil -cathidpicheck $^ -out $@

deploydir: $(OSX_DMG)
else
APP_DIST_DIR=$(top_builddir)/dist
APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/.VolumeIcon.icns  $(APP_DIST_DIR)/Applications

$(APP_DIST_DIR)/Applications:
	@rm -f $@
	@cd $(@D); $(LN_S) /Applications $(@F)

$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Munt

$(OSX_DMG): $(APP_DIST_EXTRAS)
	$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist

dpi%.$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_SVG)
	sed 's/PACKAGE_NAME/$(PACKAGE_NAME)/' < "$<" | $(RSVG_CONVERT) -f png -d $* -p $* | $(IMAGEMAGICK_CONVERT) - $@
OSX_BACKGROUND_IMAGE_DPIFILES := $(foreach dpi,$(OSX_BACKGROUND_IMAGE_DPIS),dpi$(dpi).$(OSX_BACKGROUND_IMAGE))
$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIFILES)
	$(MKDIR_P) $(@D)
	$(TIFFCP) -c none $(OSX_BACKGROUND_IMAGE_DPIFILES) $@

$(APP_DIST_DIR)/.DS_Store: contrib/macdeploy/$(OSX_DSSTORE_GEN)
$(APP_DIST_DIR)/.VolumeIcon.icns: $(top_srcdir)/src/qt/res/icons/Munt.icns
	$(INSTALL) $< $@



deploydir: $(APP_DIST_EXTRAS)
endif

if TARGET_DARWIN
appbundle: $(OSX_APP_BUILT)
deploy: $(OSX_DMG)
endif
if TARGET_WINDOWS
deploy: $(WIN_INSTALLER)
endif

$(DAEMON_BIN): FORCE
	$(MAKE) -C src $(@F)

$(CLI_BIN): FORCE
	$(MAKE) -C src $(@F)

if USE_LCOV

baseline.info:
	$(LCOV) -c -i -d $(abs_builddir)/src -o $@

baseline_filtered.info: baseline.info
	$(LCOV) -r $< "/usr/include/*" -o $@

leveldb_baseline.info: baseline_filtered.info
	$(LCOV) -c -i -d $(abs_builddir)/src/leveldb -b $(abs_builddir)/src/leveldb -o $@

leveldb_baseline_filtered.info: leveldb_baseline.info
	$(LCOV) -r $< "/usr/include/*" -o $@

baseline_filtered_combined.info: leveldb_baseline_filtered.info baseline_filtered.info
	$(LCOV) -a leveldb_baseline_filtered.info -a baseline_filtered.info -o $@

test.info: baseline_filtered_combined.info
	$(MAKE) -C src/ check
	$(LCOV) -c -d $(abs_builddir)/src -t test -o $@
	$(LCOV) -z -d $(abs_builddir)/src
	$(LCOV) -z -d $(abs_builddir)/src/leveldb

test_filtered.info: test.info
	$(LCOV) -r $< "/usr/include/*" -o $@

functional_test.info: test_filtered.info
	-@TIMEOUT=15 python test/functional/test_runner.py $(EXTENDED_FUNCTIONAL_TESTS)
	$(LCOV) -c -d $(abs_builddir)/src --t functional-tests -o $@
	$(LCOV) -z -d $(abs_builddir)/src
	$(LCOV) -z -d $(abs_builddir)/src/leveldb

functional_test_filtered.info: functional_test.info
	$(LCOV) -r $< "/usr/include/*" -o $@

test_coverage.info: baseline_filtered_combined.info test_filtered.info
	$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_filtered.info -o $@

total_coverage.info: baseline_filtered_combined.info test_filtered.info functional_test_filtered.info
	$(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_filtered.info -a functional_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt

test.coverage/.dirstamp:  test_coverage.info
	$(GENHTML) -s $< -o $(@D)
	@touch $@

total.coverage/.dirstamp: total_coverage.info
	$(GENHTML) -s $< -o $(@D)
	@touch $@

cov: test.coverage/.dirstamp total.coverage/.dirstamp

endif

dist_noinst_SCRIPTS = autogen.sh

EXTRA_DIST = $(top_srcdir)/share/genbuild.sh test/functional/test_runner.py test/functional $(DIST_CONTRIB) $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING) $(BIN_CHECKS) COPYING COPYING_munt COPYING_upstream

EXTRA_DIST += \
    test/util/util-test.py \
    test/util/data/util-test.json \
    test/util/data/blanktxv1.hex \
    test/util/data/blanktxv1.json \
    test/util/data/blanktxv2.hex \
    test/util/data/blanktxv2.json \
    test/util/data/tt-delin1-out.hex \
    test/util/data/tt-delin1-out.json \
    test/util/data/tt-delout1-out.hex \
    test/util/data/tt-delout1-out.json \
    test/util/data/tt-locktime317000-out.hex \
    test/util/data/tt-locktime317000-out.json \
    test/util/data/tx394b54bb.hex \
    test/util/data/txcreate1.hex \
    test/util/data/txcreate1.json \
    test/util/data/txcreate2.hex \
    test/util/data/txcreate2.json \
    test/util/data/txcreatedata1.hex \
    test/util/data/txcreatedata1.json \
    test/util/data/txcreatedata2.hex \
    test/util/data/txcreatedata2.json \
    test/util/data/txcreatedata_seq0.hex \
    test/util/data/txcreatedata_seq0.json \
    test/util/data/txcreatedata_seq1.hex \
    test/util/data/txcreatedata_seq1.json \
    test/util/data/txcreatemultisig1.hex \
    test/util/data/txcreatemultisig1.json \
    test/util/data/txcreatemultisig2.hex \
    test/util/data/txcreatemultisig2.json \
    test/util/data/txcreatemultisig3.hex \
    test/util/data/txcreatemultisig3.json \
    test/util/data/txcreatemultisig4.hex \
    test/util/data/txcreatemultisig4.json \
    test/util/data/txcreateoutpubkey1.hex \
    test/util/data/txcreateoutpubkey1.json \
    test/util/data/txcreateoutpubkey2.hex \
    test/util/data/txcreateoutpubkey2.json \
    test/util/data/txcreateoutpubkey3.hex \
    test/util/data/txcreateoutpubkey3.json \
    test/util/data/txcreatescript1.hex \
    test/util/data/txcreatescript1.json \
    test/util/data/txcreatescript2.hex \
    test/util/data/txcreatescript2.json \
    test/util/data/txcreatescript3.hex \
    test/util/data/txcreatescript3.json \
    test/util/data/txcreatescript4.hex \
    test/util/data/txcreatescript4.json \
    test/util/data/txcreatesignv1.hex \
    test/util/data/txcreatesignv1.json \
    test/util/data/txcreatesignv2.hex \
    src/data/chainparams_mainnet_static_checkpoint_data.cpp \
    src/data/static_diff_data.cpp


CLEANFILES = $(OSX_DMG) $(WIN_INSTALLER)

.INTERMEDIATE: $(COVERAGE_INFO)

DISTCHECK_CONFIGURE_FLAGS = --enable-man

clean-local:
	rm -rf coverage_percent.txt test.coverage/ total.coverage/ test/tmp/ cache/ $(OSX_APP)
	rm -rf test/functional/__pycache__


================================================
FILE: README.md
================================================
<table cellspacing="0" cellpadding="0" color="grey" border="1px">
  <tr border=0>
    <td border="0px" width="80%" rowspan="7">
      <a href="https://www.munt.org">
        <img height=260px align="left" src="https://munt.org/img/design/munt-000000.svg" alt="Munt"/>
      </a>
      <p>Munt is a witness-secured decentralized network for payments, digital assets, finance and more<br/>
      Munt takes the basic blockchain concept and improves on the areas where it has shortcomings in order to make a product that is more suitable for every day use.</p>
      <p>The project is driven at the core by a focus on key concepts of <i>usability</i> and <i>quality</i>.</p><p>Join the Munt project today and help build the future!</p>
    </td>
    <td width="20%" border=0>
      <a href="#">
        <img height="20px" src="https://travis-ci.org/muntorg/munt-official.svg?branch=master" alt="ci build status"/>
      </a>
    </td>
  </tr>
  <tr border=0>
    <td>
      <a href="https://github.com/muntorg/munt-official/issues">
        <img  height="20px" src="https://img.shields.io/github/issues/muntorg/munt-official.svg?color=blue" alt="open issues"/>
    </td>
  </tr>
  <tr border=0>
    <td>
      <a href="https://github.com/muntorg/munt-official/issues?q=is%3Aissue+is%3Aclosed">
        <img  height="20px" src="https://img.shields.io/github/issues-closed/muntorg/munt-official.svg?color=blue" alt="closed issues"/>
      </a>
    </td>
  </tr>
  <tr border=0>
    <td border=0>
      <a href="https://github.com/muntorg/munt-official/releases">
        <img height="20px" src="https://img.shields.io/github/downloads/muntorg/munt-official/total.svg?color=blue" alt="total downloads"/>
      </a>
    </td>
  </tr>
  <tr border=0>
    <td>
      <a href="https://github.com/munt/munt-official/commits/master">
        <img height="20px" src="https://img.shields.io/github/commit-activity/y/muntorg/munt-official.svg" alt="commits 1y"/>
      </a>
    </td>
  </tr>
  <tr>
    <td>
      <a href="https://github.com/muntorg/munt-official/compare/master@%7B12month%7D...develop">
        <img height="20px" src="https://img.shields.io/badge/dev%20branch-develop-blue.svg" alt="active_branch"/>
      </a>
    </td>
  </tr>
</table>



### License
All code, binaries and other assets in this repository are subject to [The GNU Lesser General Public License v3](https://github.com/muntorg/munt-official/blob/master/COPYING_munt) except where explicitely stated otherwise.

### Branches
`master` branch tracks the current public release; is generally updated only for each release (with accompanying tag) and very occasionally for minor documentation or other commits. If all you want is to build/track the current version of the sofrware than use the `master` branch.

`develop` branch tracks current major development branch
This is where most development that will go into the next major release is always taking place (feature branches are merged into here) and is linked in the table at the top of this README as the `dev branch`. For development changes you will generally want to work on this branch.


Major features are worked on in temporary feature branches until they can be merged back into one of the development branches. 
The currently most active branch, where most development that will go into the next major release is taking place is linked in the table at the top of this README as the `dev branch` and may be updated as development mandates seperate branches, for development changes you will generally want to work on this branch.

Old versions that are still maintained get their own version branch e.g. there might be `2.4_development` even if we are already on `3.x` development series


### Contributing
If you are thinking about contributing toward the development of Munt in some capacity whether small or large, code or translating; Please read [this guide](./CONTRIBUTING.md) first for information on how to do so.

### Technical documentation
* [PoW² whitepaper](.//technical_documentation/PoW2.pdf); [PoW² activation](./technical_documentation/PoW2_activation.md)
* [Transaction format](./technical_documentation/transaction_format.md)
* [Account system](./technical_documentation/account_system.md)
* [Accelerated testnet](./technical_documentation/accelerated_testnet.md)
* [Official testnet](./technical_documentation/accelerated_testnet.md#official-testnet)


### Community

Connect with the community through one or more of the following:

[Website](https://munt.org) ◾ [Slack](https://munt.org/join) ◾ [Twitter](https://twitter.com/munt_org) ◾ [Facebook](http://facebook.com/gulden) ◾ [Meetup](https://www.meetup.com/gulden) ◾ [Reddit](https://www.reddit.com/r/munt) ◾ [IRC](https://web.libera.chat/?channels=Muntorg)


### Downloading

The latest binaries and installers can be found [here](https://github.com/muntorg/munt-official/releases) for all platforms, including raspbian.

### Building
[Binaries](https://github.com/munt/munt-official/releases) for both the UI as well as the daemon and command line interface for multiple architectures.

For those who really need too or are technically inclined it is of course possible to build the software yourself. Please read the [build instructions](./doc/building.md) before attempting to build the software and/or seeking support.

### Additional technical information


|Technical specifications|Main network|[Testnet](./technical_documentation/accelerated_testnet.md#official-testnet)|
|:-----------|:---------|:---------|
|Consensus algorithm:|PoW² SIGMA/Witness|PoW² SIGMA/Witness|
|Recommended transaction confirmations:|2|2|
|Block reward SIGMA:|75 (10|65) MUNT|1000 MUNT|
|Block reward witness:|15 MUNT|20 MUNT|
|Block interval target:|150 seconds (2.5 minutes)|Configurable|
|Difficulty adjustment period:|Every block|Every block|
|Difficulty adjustment algorithm:|Delta|Delta|
|Total coins to be minted over time:|750M|-|
|P2P Port|9231|9923|
|RPC Port|9232|9924|
|P2P Network Header|fcfef7e0|Look in debug.log|
|Address version byte|38 (G)|65 (T)|
|P2SH version byte|98 (g)|127 (t)|
|BIP44 coin type|87 0x80000057|87 0x80000057|
|**Infrastructure**|**Main network**|**[Testnet](./technical_documentation/accelerated_testnet.md#official-testnet)**|
|Official block explorer|https://explorer.munt.org/|-|
|Community block explorer|https://muntbook.org/|-|
|Community block explorer|https://munt.chainviewer.org/|-|
|DNS Seed 1|seed.gulden.com|-|
|DNS Seed 2|amsterdam.gulden.com|-|
|DNS Seed 3|rotterdam.gulden.network|-|


================================================
FILE: autogen.sh
================================================
#!/bin/sh
# Copyright (c) 2013-2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

set -e
srcdir="$(dirname $0)"
cd "$srcdir"
if [ -z ${LIBTOOLIZE} ] && GLIBTOOLIZE="`which glibtoolize 2>/dev/null`"; then
  LIBTOOLIZE="${GLIBTOOLIZE}"
  export LIBTOOLIZE
fi
which autoreconf >/dev/null || \
  (echo "configuration failed, please install autoconf first" && exit 1)
autoreconf --install --force --warnings=all


================================================
FILE: changelog.txt
================================================
3.0.5

Final release by Centure developers
Relicensed under the GNU Lesser General Public License v3
General maintenance, version bump of most electron/vue/node libraries, update of checkpoints and other data etc.
UI        - Transaction export functionality
UI        - Add a basic about dialog displaying licensing information




3.0.4

Maintenence release, no major changes.



3.0.2

CORE      - Fix a crash that was triggering on windows builds




3.0.1

Software rebrands to Munt name.
This build represents our final switch from Qt to Electron for UI builds, Qt is completely removed from the codebase, users who require Qt specific functionality should remain on 2.5.0 until the 3.x series matures and gains more features

UI        - New electron based UI
CORE      - Switch to guix for macOS builds as well; all official builds now done on guix
CORE      - Update various library dependencies to latest versions
NET       - Bump MIN_PEER_PROTO_VERSION to 70020; This will disconnect from network all peers not on 2.5.0 or above
UI        - Native M1/arm64 builds for macOS




2.5.0

Introduce reward changes
    
At block 1'619'997 chain forks and per block dev reward is removed, with a once off dev payment of 100'000'000 NLG paid into address GSTG9pQ6yRdGurmjUDGwm8FyYc272vP13b
    
To keep the eventual supply at exactly 700'000'000 other small changes are then made:
    * First halving is brought forward to block 2'074'989
    * We slightly alter the rounding of each halving step to give cleaner numbers
    * We continue halving for more rounds all the way down to 0.00000001 reward
    * Final reward amount continues until block 433'009'989 with the 12.2709 NLG for this period being slowly paid out over a very very long period

Halving schedule as follows (every four years):
    5 mining,          7.5 witness
    2 mining,          4 witness
    1 mining,          2 witness
    0.5 mining,        1 witness
    0.2 mining,        0.5 witness
    0.1 mining,        0.2 witness
    0.05 mining,       0.1 witness
    0.02 mining,       0.05 witness
    0.01 mining,       0.02 witness
    0.005 mining,      0.01 witness
    0.002 mining,      0.005 witness
    0.001 mining,      0.002 witness
    0.0005 mining,     0.001 witness
    0.0002 mining,     0.0005 witness
    0.0001 mining,     0.0002 witness
    0.00005 mining,    0.0001 witness
    0.00002 mining,    0.00005 witness
    0.00001 mining,    0.00002 witness
    0.000005 mining,   0.00001 witness
    0.000002 mining,   0.000005 witness
    0.000001 mining,   0.000002 witness
    0.0000005 mining,  0.000001 witness
    0.0000002 mining,  0.0000005 witness
    0.0000001 mining,  0.0000002 witness
    0.00000005 mining, 0.0000001 witness
    0.00000002 mining, 0.00000005 witness
    0.00000001 mining, 0.00000002 witness (Stays here until completion - block 433'009'989)




2.4.11

This build aims to be the final 2.4.x series release after issues were found that prevented 2.4.8 from being so.
As such it will likely represent the final Qt UI release with 2.5 series of builds replacing Qt with the electron UI.

CORE      - Implement several important fixes to the fast path of the "index based" portion of the coin cache, these issues would  have resulted in nodes temporarily falling out of sync (until restarted) in some instances had the fast path been turned on however it has been off until now
CORE      - Turn on the fast path for "index based" portion of the coin caches, this should drastically improve node performance in some instances
CORE      - Introduce optimised sha256 implementations to take advantage of available CPU features (SSE4, neon etc.) when available/possible
CORE      - Various performance improvements, removal of lock contention in some instances 
CORE      - Various improvements to mutexes to make it easier to spot issues as well as for better performance
CORE      - Improved debug logging in various places throghout the program
CORE      - Update linux builds to GCC 11
CORE      - Update macOS builds to clang 14 (sdk 12)
CORE      - Update android builds to clang 12 (ndk r23b)
CORE      - Update windows builds to GCC 10
CORE      - Switch to guix instead of gitian for official builds (all except macOS which will switch also for subsequent releases)
CORE      - With all compilers updated we are now able to target C++20
CORE      - Update libraries (boost 1.77.0; zmq 4.3.4; univalue 1.0.4; leveldb 1.22+)
CORE      - Flush chainstate more frequently to prevent nodes having to resync if they terminate uncleanly after a full sync etc.
LITE      - Fix issue that was preventing lite wallet from functioning on testnet
LITE      - Fix a crash on macOS at program exit
LITE      - Fix/improve behaviour of loading/synchronisation screen and make it smoother
LITE      - Native M1/arm64 builds macOS
RPC       - Add a 'loaded' paramater to results of 'getmempoolinfo' command
RPC       - Improve/fix 'fundrawtransaction' command that failed in some instances
RPC       - Improve/fix help text for several commands
QA        - Introduction of more unit and functional tests

Dozens of other stability, code quality, build system, testing etc. related fixes and improvements.




2.4.8

Final maintanence release ahead of upcoming 2.5 series of builds; 2.5 will fully activate witness sync and drop the deprecated Qt UI in favour of the electron one (Edit: This ended up not being the case)




2.4.7

CORE      - Fix an issue that would cause witness loop to terminate under some error conditions
CORE      - Remove behaviour that would cause a complete resync under some error conditions, only do this on mobile/spv wallets and favour a plain assert on regular wallets instead
RPC       - Improve output for `validateaddress` command when used on witness addresses
MISC      - Various minor logging improvements to help with stability and user support




2.4.6

CORE      - Introduce a discount on relay fees for transactions that contain mining/witness rewards




2.4.5

CORE      - Chain stability fix for rare issue experienced by some peers




2.4.4

UI        - Fix witness earning estimates for recent reward changes
CORE      - Improve regression in coin cache performance




2.4.3

CONSENSUS - Fix an issue with fresh syncs stalling, regression was introduced in 2.4.1 release
CONSENSUS - Fix a rare issue with index based utxo getting corrupted (memory only, disk data remained valid)
CORE      - Fix an issue that was causing unnecessarily frequent flushing to disk; this should bring large performance improvements for machines with slow disks
CORE      - CORE: Major load time performance increase on large wallets, especially on machines with slower disks
CORE      - Introduce some code that makes it easier for users that missed the fork to update with any manual intervention
CORE      - Introduce some performance improvements to the code
CORE      - Various regtest/testing improvements and general codebase cleanup




2.4.1

RPC       - Add arena setup time to "gethashps" output
RPC       - New command "getlinkedaccount" as counterpart for existing "importlinkedaccount" command
CORE      - Fix a DoS attack that can be utilised against miners




2.4.0

CONSENSUS - Implement proposed reward reductions and halving, as decided by community and GAB
            Reward changes to take place at block 1'400'000
            Halvings every 842'500 blocks, this is roughly four years assuming stable block times (a tiny fraction over in order to make things work out smoothly)
            Very minor truncation based rounding applied when halving in order to keep numbers clean and end on a clean supply amount
            Final supply of 700'000'000 with last reward mined on block 17'727'500
CORE      - Implement a new/simplified way of tracking the witness specific portion of the UTXO set, this improves code simplicity as well as efficiency in a variety of ways
CORE      - Implement methods/functionality to track/encode witness set "deltas" (changes) between blocks
CONSENSUS - Store the witness set delta as part of each header, this allows for a very efficient syncing method which we are calling "witness sync"
CONSENSUS - Enable spending of addresses with uncompressed keys again
CONSENSUS - Allow renewal of multiple parts of the same witness account in a single transaction instead of requiring a renewal for each part
CORE/UI   - Introduce a separate mining parameter for number of threads to use for "arena setup" when mining so that this can be set independently of "mining threads"
CORE      - Fix a sync issue that would sometimes cause new installs to get stuck when syncing the first few blocks 
CORE      - Apply some optimisations to ConnectBlock calls that should improve performance quite substantially on some machines
RPC       - "setgenerate" gains an extra parameter for the above, all miners should be aware of this as previous setgenerate syntax may fail
RPC       - New command "setwitnessrewardaddress"
RPC       - New command "restoreaccount"
RPC       - Improve behaviour of "deleteaccount" to permanently remove/purge accounts from the wallet if they are readonly accounts; as opposed to the regular behaviour of just hiding accounts that applies to other account types
RPC       - Fix return value of "enablenetwork" command
RPC       - Add "selected_shavite_implementation", "selected_echo_implementation" and "selected_argon_implementation" to "getmininginfo" output
UI        - Show "elapsed" time to current date for witness accounts
ZMQ       - Add a new ZMQ channel "zmqpubwallettx"

And a variety of other small performance, stability and code quality enhancements, general maintenence etc. many of which are backported from the Florin project.




2.3.12

CORE    - Mining/Witness stability fix; Fix an issue that was causing periodic freezing of some mining/witnessing nodes




2.3.11

Reduce eventual supply to a total of 750'000'000 coins as first step in implementing the supply reduction that has been requested by community/GAB; The intention is for the rewards to also change (as requested) however this will take place in a later release after a bit more time has been allowed for technical consideration of the implications.

MISC    - Minor performance improvements to witnessing
RPC     - New RPC command "submitheader"
RPC     - Fix an issue where "rotatewitnessaddress" would fail if used on account that has never performed any witness actions
RPC     - Introduce "forcesigseg" command (Only useful for development)
RPC     - Add command "repairwalletfromutxo"
RPC     - New command "decodeblock"
RPC     - New "defrag" command, this can be used to recombine lots of small "dust" outputs into one single output again
RPC     - New command "invalidateunwitnessedblocksatheight"

This build contains quite a large variety of misc. bug fixes, code improvements and stability fixes, quite a few backported from Novo development.




2.3.10

MISC    - New URI handlers "guldenlite:" and "guldenpro:" for specific targeting of lite/pro apps; "gulden:" URI handler still remains and will be used to target whichever app is installed
UI      - Add in-app sell functionality (as companion to recent buy functionality); In collaboration with Blockhut




2.3.9

RPC     - Add 'selected_witness_index' info to 'getwitnessoutput' command
Debug   - Introduce split debug uploads for all linux/windows builds and add documentation on how to utilise it
Bench   - Add some additional benchmark info to "bench_sigma" tool




2.3.0.8

Fix a regression in SPV wallets causing sync issues on some devices




2.3.0.7

Minor maintenence release, introduce new buy behaviour into desktop wallets




2.3.0.6

LITE/UI - New/Improved buy functionality
RPC     - Introduce range based 'getwitnessinfo' ability for explorers and similar




2.3.0.5

Initial release of new "lite" wallet; an SPV based desktop wallet with trimmed down feature set for those who want something fast but with less features than the core wallet
RPC     - Fix '*' behaviour in listaccounts command
RPC     - Give 'decodescript' the ability to decode old phase3 transactions




2.3.0.4

CORE    - Fix a crash in SIGMA verification code that could be triggered in some (relatively rare) instances
RPC     - Hide various "hidden" developer RPC commands from the autocomplete
RPC     - Introduce a new command "repairwitnessaddress" that can be used to repair a wallet if the witness key for a witness address is not available while wallet is locked (which is required for witnessing)
RPC     - Extend "validateaddress" command to give more information for witness addresses
CORE    - Minor improvement when renewing witness accounts; check for and repair any instances of missing witness key when doing a renewal




2.3.0.2

RPC     - Implement new command "removeallorphans"
RPC     - Introduce a new command "checkwalletagainstutxo"
NET     - Increase minimum peer protocol version to ban old peers
CORE    - Checkpoint server deactivation has kicked in, so take away check and permanently disable auto checkpoints instead




2.3.0.1

Maintenance release, update to new code signing certificates.




2.3.0.0

CORE    - Set checkpoint server deactivation for 1602774915 (Thursday, 15-Oct-20 15:15:15 UTC)
          Checkpointing is now no longer required with witnessing now fully implemented and stable as per the original whitepaper specification
NET     - Disallow all peers below protocol version 70018 after timestamp server deactivates
RPC     - Correction to return value of 'enablenetwork' command




2.2.0.14

CORE    - Implement a change that improves mining efficiency for update miners
CORE    - Increment protocol version and ban older peer versions, this will lead to some bandwidth savings for nodes and make the network more efficient




2.2.0.12

CORE    - Undo accidental increase in mining subsidy [Activate at block: 1228004]
UI      - Fix a minor regression in witness funding dialog




2.2.0.11

UI      - Fix up display of various phase3 related accounts/transactions for older wallets.




2.2.0.10

CORE    - Change dev subsidy reward to 80 NLG per block, as decided by GAB [Activate at block: 1226652 (Estimate 09/07/2020 @ 2:30pm (UTC+2)]
CORE    - Activate changes to the Delta difficulty adjustment algorithm, which should see slightly smoother block times [Activates at timestamp: 1599494400 09/07/2020 @ 6:00pm (UTC+2)]
CORE    - Fix a bug that was preventing witnesses from taking advantage of the ability to add transactions to the block they witness
          This should lead to smoother transaction verification (lower average time until first confirm) and also allow witnesses to earn a small amount extra through transaction rewards
CMDFLAG - Implement blockmaxsize flag for witness block creation as well, previously was only for mining block creation
RPC     - Introduce some special case code to 'move' command to assist a small amount of 'legacy' phase3 witness accounts that otherwise experience difficulty being emptied when lock expires
RPC     - Fix balance display for 'getaccountbalances'
RPC     - Add rescan paramater to 'importwitnesskeys'
RPC     - Remove 'getwitnessinfo' support for all blocks prior to phase5
UI      - Improve estimated earnings calculation in UI
CORE    - Fix a bug where in rare instances a "null" transaction could potentially be added to the wallet and make the wallet falsely appear corrupted on reload. There is no known release version of the code that could trigger this, however we protect against any future mistakes that might allow it to be sure
CORE    - Remove various phase3 related parts of the codebase, these removals improve application performance and simplify the codebase
CORE    - Remove old official testnet and start a new improved testnet in its place
CORE    - Introduce "genesis witness" concept for testnet, that allows accelerated testnets to start with witnessing/phase5 already active from block 0
CORE    - Introduce various unity/node.js/electron related changes to the codebase, that will allow for electron UI to be adopted in future. Electron UI already in relatively advanced stages but needs further work before merge

NB! (Only relevant for old phase3 accounts, does not apply to phase4 accounts)
With the removal of special purpose phase3 code this release introduces some potential oddities to transaction lists for accounts that locked/unlocked funds to a phase 3 witness, instead of showing as a lock/unlock these actions will show as sending/receiving external funds.
Witness generation actions of old phase 3 accounts will still show correctly.
This will be cleaned up as part of the ongoing work on a new UI, and will show correctly again in future.




2.2.0.7

NET     - Improve networking performance
NET     - Remove support for old protocol versions that are no longer supported
RPC     - Fix a crash in gettxoutsetinfo; Improve gettxoutsetinfo behaviour for new transaction output types
RPC     - Fix GetNetworkHashPS calculation; It was incorrectly including witness 'work' in the mining calculation and returning an overly high number as a result
RPC     - Introduce 'pow_time' and 'witness_time' fields to all block based RPC commands that include 'time' in the output; Change 'time' to display the most accurate time always (witness time if available, otherwise pow time)
MINING  - Prevent mining of orphan blocks while wallet is still syncing on startup
UI      - Fix a balance display issue some wallets were experiencing
CORE    - Fix a rare crash that was being triggered in some nodes
CORE    - Various performance improvements from removal of parts of the phase3 backwards support




2.2.0.6

UI      - Fix a UI freeze that was occuring on 'finished' witness accounts
RPC     - Fix a crash in 'signrawtransaction' when signing new transaction types (of non script type)
RPC     - Improve 'dumpblockgaps' command to output data for both witness and PoW timestamps; previous behaviour considered PoW timestamps only
RPC     - Backport/add 'uptime' command from upstream
RPC     - Backport/add 'getblockstats' command from upstream
RPC     - Update second paramater of 'estimatesmartfee' from bool to string to match changes in upstream
RPC     - Add output of witness/spending pubkeyhash when calling validateaddress on a witness address
CORE    - Fix an issue some wallets were having with signing extend/optimise transactions
CORE    - Remove various parts of the old phase3 codebase, this should bring performance improvements




2.2.0.5

UI      - Fix UI behaviour for upgrading expired witness accounts
UI      - Improve UI behaviour for displaying 'extend' button for witness accounts 
UI      - Add/Fix "Ctrl+L" shortcut to clear debug console text
RPC     - Make 'renewwitnessaccount' command work also for upgrading witness accounts
CORE    - Restore 'first' mining address for those miners whose address was changed to a new one by buils containing the issue that was fixed in 2.2.0.3 release
CORE    - Improve mining behaviour for v2 transactions, insert an extra nonce, this is unlikely to matter at current mining speeds in any way but is better for correctness anyway. (Only really relevant in fringe cases like mining with -limitdeltadiffdrop=0)




2.2.0.4

UI      - Fix display of witness locktime end date
UI      - Improve phase4 witness renewal so that multi-part witness accounts can renew all parts in one go
UI      - Fix display of witness earnings graph for expired accounts
UI      - Fix witness renewal for phase3; A regression broke it in some instances
CORE    - Fix an issue with txdb 'corrupting' its index based outpoints; also repair already corrupted databases in place
CORE    - Increase the size of the maximum allowed fee on the network to 2 NLG




2.2.0.3

UI      - Fix issue where a witness account that had o nly partially been emptied could not be fully emptied
UI      - Fix a bug in witness overview when transaction was still pending first confirmation after funding
UI      - Fix some issues where transactions spending money out of witness accounts were not displaying the right amount in transaction list
UI      - Fix an issue with witness graph display strangely
CORE    - Fix an issue where mining address would change if doing a restore on top of an existing block chain
CORE    - Temporarily lower default memory usage on pis for first batch of 2.2 pi upgrades; we will raise these limits again in future




2.2.0.2

UI      - Minor fixes to witness dialog
CORE    - Minor stability fixes




2.2.0.1

UI      - Minor cosmetic fixes
CORE    - Minor stability fixes




2.2.0.0

This release incorporates several major feature branches, which combined involve over years of major development effort.
Highlights include:
 * The final phase of our PoW² rollout, which brings new functionality to witness addresses/accounts
 * Our new 'v2' transaction format
 * Unity; A single unified codebase backend that is shared between desktop and mobile wallets

PoW² phase4:
CORE    - Ability to compound witness earnings becomes active
CORE    - Delta difficulty adjustments now uses the more accurate witness time instead of the mining time, which should improve block timings and reduce  hash rate swings
UI      - Easily toggle compounding on/off for a witness account
UI      - Extend the locktime and/or quantity of a witness account via UI
UI      - New optimise button which can be used on large witness accounts (>1% network weight) to divide/combine into smaller/larger parts for better earnings
UI      - Improved dialog for funding witness accounts; Also automatically optimizes large witness accounts (>1% network weight) into multiple parts when creating if appropriate
RPC     - Various Phase4 RPC commands become active:
            Add funds to a witness account and/or extend the lock period - extendwitnessaccount "funding_account" "witness_account" "amount" "time" 
            Add funds to a witness address and/or extend the lock period - extendwitnessaddress "funding_account" "witness_address" "amount" "time" 
            Split a witness account into multiple witness addresses; Lock period is not changed this exists for the benefit of users whose weight is too large for the network - splitwitnessaccount "funding_account" "witness_account" "amounts" 
            Merge multiple identical witness addresses into a single one; Only works on identical accounts i.e. ones that have previously been split - mergewitnessaccount "funding_account" "witness_account"
            Change the witness key on an account where the key may have been compromised or as a periodic precaution - rotatewitnessaccount "funding_account" "witness_account" 
            Change the witness key on an address where the key may have been compromised or as a periodic precaution  - rotatewitnessaddress "funding_account" "witness_address" 
            Set a witness account to compound all or part of the earnings it receives - setwitnesscompound "witness_account" "amount"
            Check the compounding settings for a witness account - getwitnesscompound "witness_account"
            Set an address or script other than the default for witness reward payout - setwitnessrewardscript "witness_account" "destination" force_pubkey
            Get the current address or script that has been set for witness reward payout - getwitnessrewardscript "witness_account" 
            Set the compounding template for a witness account; Can be used to managed advanced configurations of how the reward should be paid out - setwitnessrewardtemplate "witness_account" [["destination1" (,"amount") (,"percentage%") (,"remainder") (,"compound_overflow")], ["destination2" ...], ...]
            Get the compounding template for a witness account - getwitnessrewardtemplate "witness_account" 


v2 transaction format (SegSig):
CORE    - New compact transaction format, with a "only pay for what you use" philosophy. Extensible transaction output/input types and flags for easier future extendability in various directions. Uses various built in methods like compact amount representation to ensure transactions are as small as possible while being efficient to process.
CORE    - Transaction functionality like RBF using proper built in flags instead of magic values
CORE    - Three new initial transaction types (extensible to more)
            * Script - Bitcoin compatible 'script' format as in v1 transaction format, for more complex types of transactions that require this functionality 
            * StandardKeyHash - A compact and concise format for regular day to day transactions without the extra unnecessary processing overhead of a scripting language
            * PoW2WitnessOutput - A compact and concise format for witness transactions; Replaces the sub-optimal requirement of placing all the witnessing information in; More compact, faster to process and leads to a cleaner code base
CORE    - Compact transaction signatures used throghout for smaller transaction size
CORE    - Introduce 'index based outpoints' to new transaction format; allowing for reduction of transaction size in many cases.
CORE    - Remove unncessary requirement of 'OP_0' from multisig transaction signatures (Legacy bitcoin bug)
CORE    - Transaction signatures are seperate from the transaction script; Similar to SegWit, but done in a more efficient way that doesn't have to worry about backwards compatibility
CORE    - Remove sources of transaction malleability; Similar to SegWit, but done in a more efficient way that doesn't have to worry about backwards compatibility 


Other:
CORE    - Extend recovery phrase with (optional) birth number
UI      - Option to hide status bar when synchronized (default enabled). Disable to always show status indicators.
RPC     - Implement new 'importlinkedaccount' command.
RPC     - Add an optional purge option to 'deleteseed' command.
RPC     - Add 'initialblockdownload', 'automatic_pruning' and 'prune_target_size' fields to 'getblockchaininfo' results
RPC     - Add 'fail_count' and 'action_nonce' data to 'getwitnessinfo' command.
And numerous more smaller changes and bug fixes, for a comprehensive list view the commit history on our github repository.




2.1.0.24

CORE    - Lower default memory usage on devices with <1gb memory.
CORE    - Update to V2 nocks API for IBAN transactions.
CORE    - Several minor mining improvements
UI      - Display arena setup time in mining UI
RPC     - Improve 'resetdatadirpartial' and 'resetdatadirfull' functionality.




2.1.0.22

UI      - Performance improvement when syncing with a wallet that has a witness account and lots of transactions
UI      - Introduce a way to show/hide orphan transactions in account transaction list
UI      - Transaction list export functionality, and button for account transaction list export
UI      - Add a context menu item to remove all orphan transactions for an account
UI      - New 'recipient' input field and related functionality for IBAN payments
CORE    - Fix an issue with reporting of peer IPv6 addresses
CORE    - Fix an issue with dual IPv6/IPv4 binds
CORE    - Fix an issue when binding multiple listening sockets




2.1.0.20

UI      - Various minor UI fixes.
CORE    - Minor enhancements to SIGMA mining performance.
CORE    - Fix some periodic crashes and minor stability issues with SIGMA mining.
CMDFLAG - New config flag "sigmaalgo" which can be used to bypass automatic algorithm detection. (Valid options currently are: ref, avx512f, avx2, avx, sse4.2, ssse3, avx512faes, avx2aes, avxaes, sse4.2aes, ssse3aes)




2.1.0.19

UI      - Introduce an 'open datadir' button to debug info window
UI      - Fix a small bug with sending funds from mining account
CORE    - Fix various minor race conditions in code
CORE    - Minor improvements to default settings for low memory machines
RPC     - New support specific RPC commands to aid support staff in assisting users: resetdatadirpartial, resetdatadirfull, getcheckpoint, getlastblocks, resetconfig, resetconfig_pi_lowmem, resetconfig_pi_medmem
RPC     - Improve responsiveness of 'setgenerate' and 'getgenerate' commands
RPC     - Update output of getblock and other commands to include pre/post nonce 




2.1.0.18

MISC    - Introduce small new feature to help update users who got stuck on a fork
UI      - Automatically lower the mining memory limits on 32 bit systems that can't handle 4GB of process memory
UI      - Various minor improvements to mining UI
CORE    - Fix an issue with autodetection of mining accounts when recovering from phrase
CORE    - Improve the way total network hashrate is estimated (RPC: getnetworkhashps)
RPC     - New RPC command 'getminingrewardaddress'
RPC     - Improve the way human difficulty is displayed for SIGMA so that its more human friendly (not fractional)




2.1.0.17

MISC    - Update checkpoints
CORE    - Improve upgrade procedure for any users who failed to upgrade for previous releases in time and were temporarily stuck on a fork.
UI      - Minor improvements to information display in mining dialog.




2.1.0.16

CORE    - Temporarily reduce witness reward back to 20, due to unexpected complications with adjusting witness rewards during phase3. Reward will be restored to 30 at a future date after further discussion on how to proceed.




2.1.0.15

CORE    - Adjust minimum PoW limit; as with delta hashrate is much slower than regular PoW algorithms.





2.1.0.14

CORE    - Reduce mainnet proof of work limit to be lower as SIGMA works at a much lower difficulty, and is causing blocks to take very long to solve.




2.1.0.12

UI      - Introduce new basic user interface for mining
UI      - Fix a bug on windows where closing the debug dialog with main app hidden could cause the entire app to close
CORE    - Introduce new 'mining' account type
RPC     - New command 'createminingaccount'
RPC     - New command 'setminingrewardaddress'
RPC     - Modify 'setgenerate' behaviour to work with mining accounts when present, a regular account can still be used by explicitely passing an account name when calling 'setgenerate'
CMDFLAG - New flag '-genmemlimit' to go with existing '-gen' and '-genproclimit'




2.1.0.11

This release introduces the new SIGMA PoW algorithm, a 'CPU friendly' algorithm designed to better suit Guldens needs than the previous algorithm scrypt that was used before.
CORE    - Introduce new utility 'bench_sigma' for testing/benchmarking SIGMA outside of the Gulden app itself.
CORE    - Fix DOS vulnerability (crash) in witness bundle input checking
CORE    - Introduce SIGMA as the new PoW algorithm in testnet builds.
CORE    - Minor improve to Delta difficulty adjustment algorithm to work better with SIGMA
CORE    - Introduce new/modified reward schedule for development funding and slight increase in witness rewards (as per GAB decision)
RPC     - Modify 'setgenerate' command to take a memory paramater for SIGMA
RPC     - Improve output of 'getnetworkhashps' command
RPC     - Drop support for 'getblocktemplate' - it is not required for CPU mining and we can simplify the codebase without it.




2.1.0.7

RPC     - Fix a bug in InvalidateBlock behaviour when called on a block that isn't currently in the main chain.
CORE    - Minor improvement to mining behaviour when an absent witness is present.
UI      - Fix a windows only issue with non-ASCII wallet paths. (Introduced by bdb upgrade)




2.1.0.6

MISC    - Update checkpoints.
CORE    - Introduce an improvement to checkpoint server mechanism to temporarily help stabalise chain against mining instability. Mechanism will be removed once phase4 and/or SIGMA are active and is just a temporary measure.




2.1.0.5

CORE    - Fix a rare issue where witnessing devices would fail to witness due to not completing a proper rescan after importing a witness address.
CORE    - Improve transaction propagation speed by pushing mempool to new connections
CORE    - Introduce builds of the UI client for all architectures ("arm" and "aarch64" previously did not have)
CORE    - Introduce "riscv64" to the list of officially supported architectures.
CORE    - Introduce AppImage installers for "arm" and "aarch64"
RPC     - New command "getaccountaddress" to get current receiving address (as would be displayed in UI) for an account.
MISC    - Update to newer version of Qt which should improve various minor UI aspects.




2.1.0.4

MISC    - Minor maintenance release, update checkpoints and other minor changes
CORE    - Introduce some code to automatically detect and clear the failed verification status of blocks in certain situations where it is safe to do so. This will make it easier for users who fail to update before a fork to update after the fork without having to issue any manual commands.
CORE    - Add some additional logging of error conditions to the witness loop.
CORE    - Fix a potential race condition in networking code, that may have been the cause of very rare intermittent network related crashes. Detected on android as part of "unity" project.
UI      - Fix a display issue with "local currency" mouse-over tooltips.
UI      - Fix a small display update issue when switching between witness and normal accounts in some instances.
UI      - Clean up the language selection list in options dialog.
ZMQ     - Fix a bug in the NotifyStalledWitness ZMQ code.




2.1.0.3

UI      - Modify witness QR for better interoperability with external apps.
UI      - Remove embedded webkit for buy page in favour of simply launching buy page in an external browser.
RPC     - Minor RPC fixes.




2.1.0.1

UI      - Implement an address tab for witness accounts, for easier access of the current active witness account address and for better integration with third party monitoring apps.




2.1.0.0

CORE    - Implement a few consensus level changes for witnessing, these are minor improvements but are better to make now before phase 4 activation for the sake of future code cleanliness.
        These changes will, these changes will activate at block 881000 (Estimated around 17-18th January 2019) all 2.0.x users should attempt to update before then, all 1.6.x users can remain on 1.6.x - contact developers for assistance if in doubt.
UI      - Minor UI fixes




2.0.0.17
RPC     - Introduce new debug command verifywitnessaddress
UI      - Update styling and graphics




2.0.0.15
UI      - Fix font issues with macOS mojave




2.0.0.14
CORE    - Fix for upstream critical vulnerability CVE-2018-17144




2.0.0.12
UI      - Improve visual look of the "all" button in the send coins dialog.
UI      - Fix a problem with increasing memory consumption over time that was affecting some users.
UI      - Fix an issue where emptying an "unlocked" witness account first required restarting the wallet.
UI      - Fix an issue where an "unlocked" witness account would show incorrect statistical information.
CORE    - Reduce memory footprint and improve performance of witness validation.




2.0.0.11
UI      - Display full converted balance in upper left for forex (Euro or other currency) display instead of only available balance; Add a tooltip to break down the different amounts when hovered over.
UI      - Fix an issue where the transaction list would sometimes show confusing more recent timestamps when importing a witness-only key or recovering from phrase.
RPC     - New command "getaddress" as a way to easily get Gulden address(es) from a pubkey or script.
RPC     - New command "emptymempool" to temporarily empty the mempool of all transactions, useful for debugging as well as a last resort tool if mining pools ever find themselves in a situation where mempool is somehow misbehaving.
RPC     - Fix a crash when calling 'validateaddress' with no wallet.
CORE    - Fix a "CreateBlock" issue that was triggering in rare circumstances and affecting "getblocktemplate" RPC calls by miners when it did.
CORE    - Fix a crash that can occur during rescan when using zapwallettxes.
CORE    - Enable witness renewal and emptying of witness accounts whose lock period has expired - from block 797000 onwards.
CMDFLAG - New command line flag "-disablenet" to start with networking disabled, useful in some debugging scenarios.
CMDFLAG - New command line flag "-zmqpubstalledwitness=<address>" to turn on zmq monitoring for stalled witnesses.
ZMQ     - Add new message "stalledwitness" which can be used by services to monitor for slow and absent witnesses - enabled via CMDFLAG "zmqpubstalledwitness"




2.0.0.10
RPC     - Make "getrescanprogress" command more responsive.
UI      - Fix an issue with "orphaned" witness earnings incorrectly showing as part of account balance.
UI      - Add a user alert message if number of witnesses on the network drops below 100 as a precaution to help keep the number of witnesses high.
UI      - Fix a bug with wallet rescan progress display.
UI      - Another fix to prevent "Failed to calculate witness info for candidate block" dialog from showing in situations where it isn't really harmful.
UI      - Fix an issue some users were having with unlocking wallet.
UI      - Fix an issue where the receive coins dialog would, when creating a new account, in certain instances temporarily show the address for a different account.
UI      - Allow emptying of non-witness funds if normal funds are somehow sent to a witness account address.
UI      - Fix a small glitch where empty wallet balance would occasionally display as -0.00
UI      - Fix a transaction view issue where "locked from" transactions were occasionally displayed as "received from" instead.
RPC     - Fix a small issue with one of the weights being output incorrectly in `getwitnessinfo` command.
RPC     - Add some additional PoW² related output to 'getblock' and 'getheader' calls.
RPC     - Fix an occasional/intermittent issue where getblocktemplate would fail when called by mining pools
CMDFLAG - Default "minimallogging" flag to on for arm and aarch64 architectures.
CORE    - Fix a block relay issue that combined with other factors was occasionally leading to temporary chain stalls.




2.0.0.9
CORE    - Major witness validation performance improvement and memory usage reduction due to partial chain cloning
CORE    - Move some invalid block logic earlier in the block check process, this should help address some issues users have been experiencing as well as further stabalise the network.
CORE    - Simplify phase2/phase3 checks now that we know the final blocks where they activated; This will help performance in various ways and simplifies the code.
CORE    - Some minor performance improvements
UI      - Fix an underlying issue that was causing a "scary" looking message dialog to occasionally pop up and bother some users.
UI      - Fix an issue with witness earnings graph display for units other than "blocks"
UI      - Fix an occasional/random UI lockup when password dialog shows from backup page.
CMDFLAG - Add a new flag `limitdeltadiffdrop=n` for mining pools, larger mining pools should set this to 0. Medium pools 1-6, very small pools can leave it off.
CMDFLAG - Add new "minimallogging" flag for the benefit of users with limited disk space e.g. pi users




2.0.0.7
CORE    - Fix a crash for users who run with -disablewallet




2.0.0.6
CORE    - Stability fix for a minor crash issue some users might otherwise experience in phase 3.
UI      - Some very minor localisation and UI cleanups
UI      - Fix a balance display issue
WALLET  - Implement detection for an issue with incorrect HD index counter incrementing that may have affected some users in past versions of the software. Users who are affected are in no immediate danger but should be warned to rectify the issue regardless.
NET     - No longer advertise or establish outgoing connections to outdated (1.6.x) peers but allow incoming connections from them.





2.0.0.4
UI      - Fix a (phase 3 only) issue where the transaction list sometimes displaying unnecessary duplicate "rejected" earning messages for every valid earning message.
RPC     - Add two commands disablewitnessing/enablewitnessing - useful for various testing scenarios and some other fringe use cases.
NET     - Fix an annoying instability issue (crash) in the networking code that is triggered by the checkpoint system in some scenarios.




2.0.0.2
UI      - Implement an improved "new account" page; which makes witnessing more visible as well as better displays and advertizes various other capabilities of our wallets.
UI      - Resolve a minor issue where old Legacy accounts were incorrectly hidden by UI in some circumstances, due to an old already fixed issue that was in some older 1.6.x wallets.
CMDFLAG - Add a new command line flag "-resyncforblockindexupgrade" for the benefit of some devices that may be having trouble upgrading.
CMDFLAG - Add a new command line flag "-reverseheaders" to allow control over whether to use reverse headers or not.
CORE    - Various code quality improvements; travis now running with '-Werror -Wall -Wextra' for first time.



2.0.0.1
RPC     - Fix a small issue with rescan progress percentage
CORE    - Fix an issue with locked wallets and account indexes that was triggering assertions in some cases.
UI      - Fix a possible minor crash that some users may have been encountering during upgrade.
UI      - Fix an issue with GuldenD and repeated unlock requests, limit to a single unlock request.




2.0.0
This release incorporates three new major feature branches, which combined involve over a year of intense development effort:
* PoW² - See https://github.com/Gulden/gulden-official/raw/master/technical_documentation/Gulden_PoW2.pdf for technical information
Highlights include: Ability to lock funds for a period of time and earn rewards while securing the network. Drastically enhanced network security.

UI      - New "witness overview" dialog with info and statistics on witness accounts, complete with a graph showing current and predicted earnings.
UI      - New "witness fund" dialog, with estimate to help pick the right weight when funding an account.
CORE    - New blockchain consensus rules for a PoW² driven blockchain with determistic witnessing.
CORE    - New address type for two key witness accounts
CORE    - New account types for witnessing, including special behaviour (hardening) of the witness key chain so that witness keys can be shared without compromising wallet security.
CORE    - New witness-only account types for linked witnessing between main wallet and a backup witness device.
CORE    - Automatic witnessing of incoming blocks in exchange for rewards
RPC     - New commands:
        View a statistical/informational snapshot of the witness system for any block in the blockchain - getwitnessinfo "block_specifier" verbose mine_only
        Create a new witness account - createwitnessaccount "name"
        Lock funds into a witness account - fundwitnessaccount "funding_account" "witness_account" "amount" "time" "force_multiple"
        Add funds to a witness account and/or extend the lock period - extendwitnessaccount "funding_account" "witness_account" "amount" "time" 
        Add funds to a witness address and/or extend the lock period - extendwitnessaddress "funding_account" "witness_address" "amount" "time" 
        Export a URL for creation of a linked "witness-only" account - getwitnessaccountkeys "witness_account" 
        Import a "witness-only" account from a URL that has previously been exported - importwitnesskeys "account_name" "encoded_key_url" "create_account"
        Split a witness account into multiple witness addresses; Lock period is not changed this exists for the benefit of users whose weight is too large for the network - splitwitnessaccount "funding_account" "witness_account" "amounts"
        Merge multiple identical witness addresses into a single one; Only works on identical accounts i.e. ones that have previously been split - mergewitnessaccount "funding_account" "witness_account"
        Renew a witness account that has expired due to failiure to witness - renewwitnessaccount "witness_account" 
        Change the witness key on an account where the key may have been compromised or as a periodic precaution - rotatewitnessaccount "funding_account" "witness_account"
        Change the witness key on an account where the key may have been compromised or as a periodic precaution  - rotatewitnessaddress "funding_account" "witness_address"
        Set a witness account to compound all or part of the earnings it receives (phase 4 only) - setwitnesscompound "witness_account" "amount"
        Check the compounding settings for a witness account - getwitnesscompound "witness_account"
        Set an address or script other than the default for witness reward payout - setwitnessrewardscript "witness_account" "address_or_script" force_pubkey 
        Get the current address or script that has been set for witness reward payout - getwitnessrewardscript "witness_account" 
RPC     - GetBlockTemplate support for mining in conjunction with phase 3 witnessing.

* SegSig - A new transaction format. See https://github.com/Gulden/gulden-official/blob/master/technical_documentation/transaction_format.md for technical information.
Highlights include: Solving of malleability issues; More compact transactions (over 50% in some cases) leading to increased network capacity for peak transaction periods; New transaction types (for PoW²); Extensible transaction types for future development.

CORE    - Implement fixes for transaction malleability
CORE    - Implement new more compact transaction format
CORE    - Implement two new transaction types "StandardKeyHash" and "PoW2_Witness"
CORE    - Implement version scheme allowing easy future creation of additional compact special purpose transactions
CORE    - Witness based version bit activation, for better control of future updates. Feature activation can now be controlled by "miner voting", "witness voting" or a combination at developer discretion.

* Sonic - The sonic project involves multiple changes to the p2p networking stack within Gulden.
Highlights include: A switch to boost::asio for the networking stack to replace the old select() based networking code; Multiple improvements to the initial chain synchronisation process, including reverse header synchronisation, making it drastically faster; Removal of limitations to how many peers a server can handle, which helps solve scalability/congestion issues on the network in peak usage periods.

* Non exhaustive list of additional general changes.
UI      - Gulden desktop client gains an automatic update check to alert users of updates. Update check is cryptographically secured to ensure that it cannot be tampered with.
UI      - Improved handling of wallet alerts/warnings through a new warning dialog.
UI      - New "all" button on send coin screen to send all funds.
UI      - Major reworking of send coin screen including improved Nocks integration and many other bug fixes.
UI      - Improve handling of small window sizes; hide some window elements on smaller windows when necessary.
UI      - Add localisation for the loading/splash screen when wallet first opens.
CORE    - Improved handling of "private key" imports.
CORE    - Major performance improvements for wallets with lots of transactions.
CORE    - Major performance improvements for wallets with lots of accounts.
CORE    - Performance improvements when creating new accounts.
CORE    - Numerous other performance improvements throughout the wallet.
CORE    - Major reworking of application life cycle management (open/close); so that it is faster and more consistent across applications. This forms the first step of our future "Unity" project, and fixes various crash at exit bugs and possible sources of wallet corruption.
CMDFLAG - Add a -windowtitle command flag, primarily intended to be used to assist with testing so that multiple program instances can be easily distinguished.
CMDFLAG - Add a new -disableui flag to start with just a RPC console (and wallet); Useful for some types of debugging.
RPC     - New command 'getaccountbalances' return a list of individual balances for all accounts.
RPC     - New command 'listunspentforaccount' as account specific counterpart for listunspent.
RPC     - New command 'rescan' to trigger a wallet rescan (Same as Tools>rescan via UI).
RPC     - New command 'getrescanprogress' to view the progress percentageof an ongoing wallet rescan.
RPC     - New command 'getimmaturebalance' as conterpart to 'getunconfirmedbalance'
RPC     - Add account capability to 'sendmany' command.
RPC     - Modify 'listaccounts' command to take an optional second paramater to filter on account state. Add a new "state" field to the output and clarify better the difference between "type" and "HD_type"
And many more changes and bug fixes, for a comprehensive list view the commit history on our github repository.




1.6.4.8
Minor maintenence release.
UI      - Introduce a new informational widget and other minor UI improvements that make it move obvious to users that the wallet is not yet available during initial sync.
UI      - Add a new menu item for setting the currency.
UI      - Fix a crash in the send dialog on machines with no network connection.
UI      - Remove bitcoin payment option from send screen
CORE    - Update checkpoints, static difficulties, static seeds and other static information to help assist new users with better syncing experience.




1.6.4.7
Minor testnet related release.




1.6.4.6
RPC     - Fix an issue introduced in 1.6.4.3 which can cause users running with "-disablewallet" to experience RPC freezes when calling certain RPC commands.




1.6.4.5
UI      - Fix "run on boot" links that were broken by testnet changes and other minor "run on boot" corrections.




1.6.4.1
Minor bugfix release.
UI      - Some small translation changes
RPC     - Add an HDIndex flag to 'listaccounts' RPC output, useful for debugging HD wallet issues.
CORE    - Speed up address allocation when -keypool is set to a larger than default size.




1.6.4
CMDFLAG - Add new command line flag '-coinbasesignature' to make it easy to add coinbase signatures to generated blocks (predominantly meant for testnet)
CMDFLAG - Add new command line flag '-accountpool' to increase the default account look ahead size. (Needed in some cases to find accounts on rescan when large account gaps are present)
UI      - Add a special warning if the users wallet.dat is readonly (instead of displaying a generic/scary 'corrupted wallet' message)
UI      - Improvements to send dialog, improve handling when user tries to send amounts equal too or larger than available balance.
UI      - New menu item for importing private keys.
UI      - New menu item to allow users to easily rescan without having to use command line flags or mess around in RPC console.
UI      - Improve the way rescan (and other actions that require progress) display in the program.
UI      - Fix a bug where transaction screen would sometimes show transactions for all accounts instead of just the active one.
RPC     - Modify createaccount command so that it can also create legacy accounts.
RPC     - New commands for read only (watch) HD accounts. getreadonlyaccount, importreadonlyaccount.
RPC     - New command for read only (watch) HD seeds, getreadonlyseed.
RPC     - New 'deleteaccount' command
RPC     - Modify 'move' command so that it can handle `-1` as input for the amount field, passing '-1' will calculate the available balance in the account for the confirmation level passed and transfer all of it.
RPC     - Merge a bug fix from user 'mezrin' for 'dumpwallet' command.
RPC     - Fix a bug in command 'gettransaction' where transaction would not show if 'rpconlylistsecuredtransactions' flag was set to false.
CORE/RPC/UI - Support for read only (watch) HD accounts.
CORE/RPC/UI - Support for read only (watch) HD seeds.
CORE    - Assorted other minor bug fixes.




1.6.3
RPC     - Fix incorrect getaddressesbyaccount output.
CORE    - Fix a possible crash in the checkpoint system.




1.6.2
RPC     - Bring back command that was removed in 1.6.0, adapted to the new account system - getaccount "Guldenaddress"
RPC     - Bring back command that was removed in 1.6.0, adapted to the new account system - getaddressesbyaccount "account"




1.6.1
Minor bugfix release.




1.6.0
UI      - New user interface with drastic improvements over the old user interface.
UI      - Ticker/Exchange rate integration into app.
UI      - In wallet support for buying coins with euro via nocks.
UI/RPC/CORE - New 'account based' wallet internals.
UI      - New in wallet buy support for bitcoin and IBAN via nocks API.
UI/RPC/CORE - Full support for BIP33 and BIP44 HD wallet standards with mnemonics.
UI/CORE - Implement support for synchronised mobile accounts.
CORE    - Update to upstream bitcoin 0.13 codebase providing numerous bug fixes and improvements.
CORE    - Improve the checkpointing code, fix a checkpoint corruption issue that some users were experiencing.
RPC     - Change 'rpconlylistsecuredtransactions' to be on by default.




1.5.5
CORE    - Introduce a checkpoint system to protect against 50% attacks.
UI      - Update the UI so that only checkpointed transactions are marked as 'final'
RPC     - Update several commands so that exchanges can make use of the checkpoint system to be double spend proof.




1.5.4
Minor bugfix release.




1.5.3
Minor bugfix release.




1.5.2
Minor bugfix release.
CORE    - Updated to new seed nodes.
UI      - Fixed an issue with some external URIs not working on OSX machines.
CORE    - Add the KGW fix to all platforms.




1.5.1
UI      - Rebrand to Gulden, updated UI.
CORE    - Implement a fix for KGW difficulty algorithm on 32 bit systems - linux only.




1.5.0
CORE    - New updated codebase based on bitcoin 0.10/0.11
CORE    - Impement a new difficulty adjustment algorithm named DELTA.


================================================
FILE: configure.ac
================================================
AC_PREREQ([2.69])
define(_CLIENT_VERSION_MAJOR,       3)
define(_CLIENT_VERSION_MINOR,       0)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD,       7)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_COPYRIGHT_YEAR, 2022)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Centure]])
AC_INIT([Munt],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[info@munt.org],[Munt])
AC_CONFIG_SRCDIR([src/init.cpp])
AC_CONFIG_HEADERS([src/config/build-config.h])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([build-aux/m4])

m4_ifndef([PKG_PROG_PKG_CONFIG], [m4_fatal([PKG_PROG_PKG_CONFIG macro not found. Please install pkg-config and re-run autogen.sh])])
PKG_PROG_PKG_CONFIG
if test "$PKG_CONFIG" = ""; then
  AC_MSG_ERROR([pkg-config not found])
fi

m4_define([_DAEMON_NAME], [Munt-daemon])
m4_define([_CLI_NAME], [Munt-cli])
m4_define([_GUI_NAME], [Munt])
m4_define([_TX_NAME], [Munt-tx])
[_DAEMON_NAME]=_DAEMON_NAME
[_CLI_NAME]=_CLI_NAME
[_GUI_NAME]=_GUI_NAME
[_TX_NAME]=_TX_NAME
AC_DEFINE(DAEMON_NAME, "_DAEMON_NAME", [Command name of the deamon binary])
AC_DEFINE(CLI_NAME, "_CLI_NAME", [Command name of the cli binary])
AC_DEFINE(GUI_NAME, "_GUI_NAME", [Command name of the gui binary])
AC_DEFINE(TX_NAME, "_TX_NAME", [Command name of the tx binary])


dnl Unless the user specified ARFLAGS, force it to be cr
AC_ARG_VAR([ARFLAGS], [Flags for the archiver, defaults to <cr> if not set])
if test "${ARFLAGS+set}" != "set"; then
  ARFLAGS="cr"
fi

AC_CANONICAL_HOST

AH_TOP([#ifndef BUILD_CONFIG_H])
AH_TOP([#define BUILD_CONFIG_H])
AH_BOTTOM([#endif //BUILD_CONFIG_H])

dnl faketime breaks configure and is only needed for make. Disable it here.
unset FAKETIME

dnl Automake init set-up and checks
AM_INIT_AUTOMAKE([1.13 no-define subdir-objects foreign])

dnl faketime messes with timestamps and causes configure to be re-run.
dnl --disable-maintainer-mode can be used to bypass this.
AM_MAINTAINER_MODE([enable])

dnl make the compilation flags quiet unless V=1 is used
AM_SILENT_RULES([yes])

dnl Compiler checks (here before libtool).
if test "${CXXFLAGS+set}" = "set"; then
  CXXFLAGS_overridden=yes
else
  CXXFLAGS_overridden=no
fi
AC_PROG_CXX

dnl By default, libtool for mingw refuses to link static libs into a dll for
dnl fear of mixing pic/non-pic objects, and import/export complications. Since
dnl we have those under control, re-enable that functionality.
case $host in
  *mingw*)
     lt_cv_deplibs_check_method="pass_all"
  ;;
esac

AC_ARG_WITH([seccomp],
  [AS_HELP_STRING([--with-seccomp],
  [enable experimental syscall sandbox feature (-sandbox), default is yes if seccomp-bpf is detected under Linux x86_64])],
  [seccomp_found=$withval],
  [seccomp_found=auto])

dnl Require C++17 compiler (no GNU extensions)
AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory], [nodefault])
dnl Check if -latomic is required for <std::atomic>
CHECK_ATOMIC

dnl Check for compiler (not cpu/runtime) intrinsic support.
INTRINSIC_FLAG_CHECK

dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
dnl that we get the same -std flags for both.
m4_ifdef([AC_PROG_OBJCXX],[
if test "${OBJCXX+set}" = ""; then
  OBJCXX="${CXX}"
fi
AC_PROG_OBJCXX
])

dnl Since libtool 1.5.2 (released 2004-01-25), on Linux libtool no longer
dnl sets RPATH for any directories in the dynamic linker search path.
dnl See more: https://wiki.debian.org/RpathIssue
LT_PREREQ([1.5.2])
dnl Libtool init checks.
LT_INIT([pic-only win32-dll])
LIBTOOL="$LIBTOOL --preserve-dup-deps"

dnl Check/return PATH for base programs.
AC_PATH_TOOL([AR], [ar])
AC_PATH_TOOL([RANLIB], [ranlib])
AC_PATH_TOOL([STRIP], [strip])
AC_PATH_TOOL([GCOV], [gcov])
AC_PATH_PROG([LCOV], [lcov])
dnl Python 3.5 is specified in .python-version and should be used if available, see doc/dependencies.md
AC_PATH_PROGS([PYTHON], [python3.5 python3.6 python3.7 python3.8 python3 python])
AC_PATH_PROG([GENHTML], [genhtml])
AC_PATH_PROG([GIT], [git])
AC_PATH_PROG([CCACHE], [ccache])
AC_PATH_PROG([XGETTEXT], [xgettext])
AC_PATH_PROG([HEXDUMP], [hexdump])
AC_PATH_TOOL(READELF, readelf)
AC_PATH_TOOL(CPPFILT, c++filt)
AC_PATH_TOOL([OBJCOPY], [objcopy])
AC_PATH_PROG(DJINNI_RUN, djinni-run,, $prefix/bin)

AC_ARG_VAR([PYTHONPATH], [Augments the default search path for python module files])

# Enable wallet
AC_ARG_ENABLE([wallet],
  [AS_HELP_STRING([--disable-wallet],
  [disable wallet (enabled by default)])],
  [enable_wallet=$enableval],
  [enable_wallet=yes])

AC_ARG_WITH([bdb],
  [AS_HELP_STRING([--without-bdb],
  [disable bdb wallet support (default is enabled if wallet is enabled)])],
  [use_bdb=$withval],
  [use_bdb=auto])

AC_ARG_WITH([miniupnpc],
  [AS_HELP_STRING([--with-miniupnpc],
  [enable UPNP (default is yes if libminiupnpc is found)])],
  [use_upnp=$withval],
  [use_upnp=auto])

AC_ARG_ENABLE([upnp-default],
  [AS_HELP_STRING([--enable-upnp-default],
  [if UPNP is enabled, turn it on at startup (default is no)])],
  [use_upnp_default=$enableval],
  [use_upnp_default=no])

AC_ARG_ENABLE(tests,
    AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
    [use_tests=$enableval],
    [use_tests=yes])

AC_ARG_ENABLE(gui-tests,
    AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
    [use_gui_tests=$enableval],
    [use_gui_tests=$use_tests])

AC_ARG_WITH([rapidcheck],
  [AS_HELP_STRING([--with-rapidcheck],
  [enable RapidCheck property based tests (default is yes if librapidcheck is found)])],
  [use_rapidcheck=$withval],
  [use_rapidcheck=auto])

AC_ARG_ENABLE(bench,
    AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
    [use_bench=$enableval],
    [use_bench=yes])

AC_ARG_ENABLE([extended-functional-tests],
    AS_HELP_STRING([--enable-extended-functional-tests],[enable expensive functional tests when using lcov (default no)]),
    [use_extended_functional_tests=$enableval],
    [use_extended_functional_tests=no])

AC_ARG_WITH([qrencode],
  [AS_HELP_STRING([--with-qrencode],
  [enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
  [use_qr=$withval],
  [use_qr=auto])

AC_ARG_ENABLE([hardening],
  [AS_HELP_STRING([--disable-hardening],
  [do not attempt to harden the resulting executables (default is to harden when possible)])],
  [use_hardening=$enableval],
  [use_hardening=auto])

AC_ARG_ENABLE([reduce-exports],
  [AS_HELP_STRING([--enable-reduce-exports],
  [attempt to reduce exported symbols in the resulting executables (default is no)])],
  [use_reduce_exports=$enableval],
  [use_reduce_exports=no])

AC_ARG_ENABLE([ccache],
  [AS_HELP_STRING([--disable-ccache],
  [do not use ccache for building (default is to use if found)])],
  [use_ccache=$enableval],
  [use_ccache=auto])

dnl Suppress warnings from external headers (e.g. Boost, Qt).
dnl May be useful if warnings from external headers clutter the build output
dnl too much, so that it becomes difficult to spot Core warnings
dnl or if they cause a build failure with --enable-werror.
AC_ARG_ENABLE([suppress-external-warnings],
  [AS_HELP_STRING([--enable-suppress-external-warnings],
                  [Suppress warnings from external headers (default is no)])],
  [suppress_external_warnings=$enableval],
  [suppress_external_warnings=no])

AC_ARG_ENABLE([lcov],
  [AS_HELP_STRING([--enable-lcov],
  [enable lcov testing (default is no)])],
  [use_lcov=yes],
  [use_lcov=no])

AC_ARG_ENABLE([zmq],
  [AS_HELP_STRING([--disable-zmq],
  [disable ZMQ notifications])],
  [use_zmq=$enableval],
  [use_zmq=yes])

AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])

AC_ARG_ENABLE(man,
    [AS_HELP_STRING([--disable-man],
                    [do not install man pages (default is to install)])],,
    enable_man=yes)
AM_CONDITIONAL([ENABLE_MAN], [test "$enable_man" != "no"])

dnl Enable debug
AC_ARG_ENABLE([debug],
    [AS_HELP_STRING([--enable-debug],
                    [use compiler flags and macros suited for debugging (default is no)])],
    [enable_debug=$enableval],
    [enable_debug=no])

dnl Enable different -fsanitize options
AC_ARG_WITH([sanitizers],
    [AS_HELP_STRING([--with-sanitizers],
                    [comma separated list of extra sanitizers to build with (default is none enabled)])],
    [use_sanitizers=$withval])

dnl Enable gprof profiling
AC_ARG_ENABLE([gprof],
    [AS_HELP_STRING([--enable-gprof],
                    [use gprof profiling compiler flags (default is no)])],
    [enable_gprof=$enableval],
    [enable_gprof=no])

dnl Turn warnings into errors
AC_ARG_ENABLE([werror],
    [AS_HELP_STRING([--enable-werror],
                    [Treat compiler warnings as errors (default is no)])],
    [enable_werror=$enableval],
    [enable_werror=no])

# Strong warnings
AC_ARG_ENABLE([strong-warnings],
    [AS_HELP_STRING([--disable-strong-warnings],
                    [Use compiler flags to generate extra warnings (default is yes)])],
    [strong_warnings=$enableval],
    [strong_warnings=yes])

AC_LANG_PUSH([C++])
AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])

if test "x$enable_debug" = xyes; then
    CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
    if test "x$GCC" = xyes; then
        CFLAGS="$CFLAGS -g3 -O0"
    fi

    if test "x$GXX" = xyes; then
        CXXFLAGS="$CXXFLAGS -g3 -O0"
    fi
fi

ERROR_CXXFLAGS=
if test "x$enable_werror" = "xyes"; then
  if test "x$CXXFLAG_WERROR" = "x"; then
    AC_MSG_ERROR("enable-werror set but -Werror is not usable")
  fi
  AX_CHECK_COMPILE_FLAG([-Werror],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror"],,[[$CXXFLAG_WERROR]])
fi

if test "x$strong_warnings" = "xyes"; then
  AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])

  ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
  ## unknown options if any other warning is produced. Test the -Wfoo case, and
  ## set the -Wno-foo case if it works.
  AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
  AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough],[CXXFLAGS="$CXXFLAGS -Wno-implicit-fallthrough"],,[[$CXXFLAG_WERROR]])
fi
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"

AC_ARG_WITH([utils],
  [AS_HELP_STRING([--with-utils],
  [build ]_CLI_NAME[ ]_TX_NAME[ binaries (default=yes)])],
  [build_utils=$withval],
  [build_utils=yes])

AC_ARG_WITH([node-js-libs],
  [AS_HELP_STRING([--with-node-js-libs],
  [build node.js library (default=no)])],
  [build_libs_node_js=$withval],
  [build_libs_node_js=no])

AC_ARG_WITH([jni-libs],
  [AS_HELP_STRING([--with-jni-libs],
  [build jni library (default=no)])],
  [build_libs_jni=$withval],
  [build_libs_jni=no])

AC_ARG_WITH([objc-libs],
  [AS_HELP_STRING([--with-objc-libs],
  [build objc library (default=no)])],
  [build_libs_objc=$withval],
  [build_libs_objc=no])

AC_ARG_WITH([daemon],
  [AS_HELP_STRING([--with-daemon],
  [build ]_DAEMON_NAME[ daemon (default=yes)])],
  [build_daemon=$withval],
  [build_daemon=yes])


case $host in
  *mingw*)
     TARGET_OS=windows
     AC_CHECK_LIB([mingwthrd],[main],                    [], [AC_MSG_ERROR([libmingwthrd missing])])
     AC_CHECK_LIB([kernel32], [GetModuleFileNameA],      [], [AC_MSG_ERROR([libkernel32 missing])])
     AC_CHECK_LIB([user32],   [main],                    [], [AC_MSG_ERROR([libuser32 missing])])
     AC_CHECK_LIB([gdi32],    [main],                    [], [AC_MSG_ERROR([libgdi32 missing])])
     AC_CHECK_LIB([comdlg32], [main],                    [], [AC_MSG_ERROR([libcomdlg32 missing])])
     AC_CHECK_LIB([winspool], [main],                    [], [AC_MSG_ERROR([libwinspool missing])])
     AC_CHECK_LIB([winmm],    [main],                    [], [AC_MSG_ERROR([libwinmm missing])])
     AC_CHECK_LIB([shell32],  [SHGetSpecialFolderPathW], [], [AC_MSG_ERROR([libshell32 missing])])
     AC_CHECK_LIB([comctl32], [main],                    [], [AC_MSG_ERROR([libcomctl32 missing])])
     AC_CHECK_LIB([ole32],    [CoCreateInstance],        [], [AC_MSG_ERROR([libole32 missing])])
     AC_CHECK_LIB([oleaut32], [main],                    [], [AC_MSG_ERROR([liboleaut32 missing])])
     AC_CHECK_LIB([uuid],     [main],                    [], [AC_MSG_ERROR([libuuid missing])])
     AC_CHECK_LIB([rpcrt4],   [main],                    [], [AC_MSG_ERROR([librpcrt4 missing])])
     AC_CHECK_LIB([advapi32], [CryptAcquireContextW],    [], [AC_MSG_ERROR([libadvapi32 missing])])
     AC_CHECK_LIB([ws2_32],   [WSAStartup],              [], [AC_MSG_ERROR([libws2_32 missing])])
     AC_CHECK_LIB([mswsock],  [main],                    [], [AC_MSG_ERROR([libmswsock missing])])
     AC_CHECK_LIB([shlwapi],  [PathRemoveFileSpecW],     [], [AC_MSG_ERROR([libshlwapi missing])])
     AC_CHECK_LIB([iphlpapi], [GetAdaptersAddresses],    [], [AC_MSG_ERROR([libiphlpapi missing])])
     AC_CHECK_LIB([crypt32],  [main],                    [], [AC_MSG_ERROR([libcrypt32 missing])])

     dnl -static is interpreted by libtool, where it has a different meaning.
     dnl In libtool-speak, it's -all-static.
     AX_CHECK_LINK_FLAG([-static], [LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])

     AC_PATH_PROG([MAKENSIS], [makensis], [none])
     if test "$MAKENSIS" = "none"; then
       AC_MSG_WARN([makensis not found. Cannot create installer.])
     fi

     AC_PATH_TOOL([WINDRES], [windres], [none])
     if test "$WINDRES" = "none"; then
       AC_MSG_ERROR([windres not found])
     fi

     CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -D_WIN32_WINNT=0x0601"
     if test "x$CXXFLAGS_overridden" = "xno"; then
       CXXFLAGS="$CXXFLAGS -w"
     fi
     case $host in
       i?86-*) WINDOWS_BITS=32 ;;
       x86_64-*) WINDOWS_BITS=64 ;;
       *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
     esac
     AC_SUBST(WINDOWS_BITS)

     dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
     dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
     dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
     dnl also overridden to prevent their insertion later.
     dnl This should only affect dll's.
     archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
     postdeps_CXX=

     ;;
  *darwin*)
     TARGET_OS=darwin
     if  test x$cross_compiling != xyes; then
       BUILD_OS=darwin
       AC_CHECK_PROG([PORT],port, port)
       if test x$PORT = xport; then
         dnl add default macports paths
         CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
         LIBS="$LIBS -L/opt/local/lib"
         if test -d /opt/local/include/db48; then
           CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
           LIBS="$LIBS -L/opt/local/lib/db48"
         fi
       fi

       AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
       AC_CHECK_PROG([BREW],brew, brew)
       if test x$BREW = xbrew; then
         dnl These Homebrew packages may be keg-only, meaning that they won't be found
         dnl in expected paths because they may conflict with system files. Ask
         dnl Homebrew where each one is located, then adjust paths accordingly.
         dnl It's safe to add these paths even if the functionality is disabled by
         dnl the user (--without-wallet or --without-gui for example).

         openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
         bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
         if test x$openssl_prefix != x; then
           PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
           export PKG_CONFIG_PATH
         fi

         if test "$use_bdb" != "no" && $BREW list --versions berkeley-db@4 >/dev/null && test "$BDB_CFLAGS" = "" && test "$BDB_LIBS" = ""; then
           bdb_prefix=$($BREW --prefix berkeley-db@4 2>/dev/null)
           dnl This must precede the call to CENTURE_FIND_BDB48 below.
           BDB_CFLAGS="-I$bdb_prefix/include"
           BDB_LIBS="-L$bdb_prefix/lib -ldb_cxx-4.8"
         fi
       fi
     else
       case $build_os in
         *darwin*)
           BUILD_OS=darwin
           ;;
         *)
           AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
           AC_PATH_TOOL([OTOOL], [otool], otool)
           AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
           AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
           AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
           AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)

           dnl libtool will try to strip the static lib, which is a problem for
           dnl cross-builds because strip attempts to call a hard-coded ld,
           dnl which may not exist in the path. Stripping the .a is not
           dnl necessary, so just disable it.
           old_striplib=
           ;;
       esac
     fi

     AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
     CPPFLAGS="$CPPFLAGS -DMAC_OSX"
     OBJCXXFLAGS="$CXXFLAGS"
     ;;
   *android*)
     dnl make sure android stays above linux for hosts like *linux-android*
     dnl libtool insists on inserting -nostdlib and other things which break our build, the below works around this
     archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -o \$output_objdir/\$soname"
     postdeps_CXX=
     ;;
   *linux*)
     TARGET_OS=linux
     ;;
esac

if test x$use_extended_functional_tests != xno; then
  AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended)
fi

if test "$use_lcov" = "yes"; then
  if test "$LCOV" = ""; then
    AC_MSG_ERROR([lcov testing requested but lcov not found])
  fi
  if test "$GCOV" = ""; then
    AC_MSG_ERROR("[lcov testing requested but gcov not found])
  fi
  if test "$PYTHON" = ""; then
    AC_MSG_ERROR([lcov testing requested but python not found])
  fi
  if test "$GENHTML" = ""; then
    AC_MSG_ERROR([lcov testing requested but genhtml not found])
  fi
  LCOV="$LCOV --gcov-tool=$GCOV"
  AX_CHECK_LINK_FLAG([[--coverage]], [LDFLAGS="$LDFLAGS --coverage"],
    [AC_MSG_ERROR("lcov testing requested but --coverage linker flag does not work")])
  AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
    [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
fi

dnl Check for endianness
AC_C_BIGENDIAN

dnl Check for pthread compile/link requirements
AX_PTHREAD

dnl The following macro will add the necessary defines to build-config.h, but
dnl they also need to be passed down to any subprojects. Pull the results out of
dnl the cache and add them to CPPFLAGS.
AC_SYS_LARGEFILE
dnl detect POSIX or GNU variant of strerror_r
AC_FUNC_STRERROR_R

if test "$ac_cv_sys_file_offset_bits" != "" &&
   test "$ac_cv_sys_file_offset_bits" != "no" &&
   test "$ac_cv_sys_file_offset_bits" != "unknown"; then
  CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
fi

if test "$ac_cv_sys_large_files" != "" &&
   test "$ac_cv_sys_large_files" != "no" &&
   test "$ac_cv_sys_large_files" != "unknown"; then
  CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
fi

AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])

AX_GCC_FUNC_ATTRIBUTE([visibility])
AX_GCC_FUNC_ATTRIBUTE([dllexport])
AX_GCC_FUNC_ATTRIBUTE([dllimport])

if test "$enable_gprof" = "yes"; then
    dnl -pg is incompatible with -pie. Since hardening and profiling together doesn't make sense,
    dnl we simply make them mutually exclusive here. Additionally, hardened toolchains may force
    dnl -pie by default, in which case it needs to be turned off with -no-pie.

    if test "$use_hardening" = "yes"; then
        AC_MSG_ERROR([gprof profiling is not compatible with hardening. Reconfigure with --disable-hardening or --disable-gprof])
    fi
    use_hardening=no
    AX_CHECK_COMPILE_FLAG([-pg],[GPROF_CXXFLAGS="-pg"],
        [AC_MSG_ERROR([gprof profiling requested but not available])], [$CXXFLAG_WERROR])

    AX_CHECK_LINK_FLAG([-no-pie], [GPROF_LDFLAGS="-no-pie"])
    AX_CHECK_LINK_FLAG([-pg], [GPROF_LDFLAGS="$GPROF_LDFLAGS -pg"],
        [AC_MSG_ERROR([gprof profiling requested but not available])], [$GPROF_LDFLAGS])
fi

AC_SEARCH_LIBS([clock_gettime],[rt])

if test "$TARGET_OS" != "windows"; then
  dnl All windows code is PIC, forcing it on just adds useless compile warnings
  AX_CHECK_COMPILE_FLAG([-fPIC], [PIC_FLAGS="-fPIC"])
fi

if test "$use_hardening" != "no"; then
  use_hardening=yes
  AX_CHECK_COMPILE_FLAG([-Wstack-protector], [HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
  AX_CHECK_COMPILE_FLAG([-fstack-protector-all], [HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])

  AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
    AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
      HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
    ])
    HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
  ])

  AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
  AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
  AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"])
  AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
  AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])

  if test "$TARGET_OS" != "windows"; then
    AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
    AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-pie"], ["-Werror"])
  fi

  case $host in
    *mingw*)
       AC_CHECK_LIB([ssp], [main], [], [AC_MSG_ERROR([libssp missing])])
    ;;
  esac
fi

dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
if test x$TARGET_OS = xdarwin; then
  AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
fi

AC_CHECK_HEADERS([endian.h sys/endian.h byteswap.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/stat.h sys/select.h sys/prctl.h])

AC_CHECK_DECLS([getifaddrs, freeifaddrs],,,
    [#include <sys/types.h>
    #include <ifaddrs.h>]
)
AC_CHECK_DECLS([strnlen])

dnl These are used for daemonization in daemon binary
AC_CHECK_DECLS([fork])

AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
    [#if HAVE_ENDIAN_H
                 #include <endian.h>
                 #elif HAVE_SYS_ENDIAN_H
                 #include <sys/endian.h>
                 #endif])

AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
    [#if HAVE_BYTESWAP_H
                 #include <byteswap.h>
                 #endif])

AC_CHECK_DECLS([__builtin_clz, __builtin_clzl, __builtin_clzll])

dnl Check for MSG_NOSIGNAL
AC_MSG_CHECKING(for MSG_NOSIGNAL)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
 [[ int f = MSG_NOSIGNAL; ]])],
 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
 [ AC_MSG_RESULT(no)]
)

dnl Check for MSG_DONTWAIT
AC_MSG_CHECKING(for MSG_DONTWAIT)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
 [[ int f = MSG_DONTWAIT; ]])],
 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_DONTWAIT, 1,[Define this symbol if you have MSG_DONTWAIT]) ],
 [ AC_MSG_RESULT(no)]
)

dnl Check for malloc_info (for memory statistics information in getmemoryinfo)
AC_MSG_CHECKING([for getmemoryinfo])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
 [[ int f = malloc_info(0, NULL); ]])],
 [ AC_MSG_RESULT([yes]); AC_DEFINE([HAVE_MALLOC_INFO], [1], [Define this symbol if you have malloc_info]) ],
 [ AC_MSG_RESULT([no])]
)

dnl Check for mallopt(M_ARENA_MAX) (to set glibc arenas)
AC_MSG_CHECKING([for mallopt M_ARENA_MAX])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
 [[ mallopt(M_ARENA_MAX, 1); ]])],
 [ AC_MSG_RESULT([yes]); AC_DEFINE([HAVE_MALLOPT_ARENA_MAX], [1], [Define this symbol if you have mallopt with M_ARENA_MAX]) ],
 [ AC_MSG_RESULT([no])]
)

AC_MSG_CHECKING([for visibility attribute])
AC_LINK_IFELSE([AC_LANG_SOURCE([
  int foo_def( void ) __attribute__((visibility("default")));
  int main(){}
  ])],
  [
    AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
    AC_MSG_RESULT(yes)
  ],
  [
    AC_MSG_RESULT([no])
    if test "$use_reduce_exports" = "yes"; then
      AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
    fi
  ]
)

dnl check for gmtime_r(), fallback to gmtime_s() if that is unavailable
dnl fail if neither are available.
AC_MSG_CHECKING([for gmtime_r])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <ctime>]],
  [[ gmtime_r((const time_t *) nullptr, (struct tm *) nullptr); ]])],
  [ AC_MSG_RESULT([yes]); AC_DEFINE([HAVE_GMTIME_R], [1], [Define this symbol if gmtime_r is available]) ],
  [ AC_MSG_RESULT([no]);
    AC_MSG_CHECKING([for gmtime_s]);
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <ctime>]],
       [[ gmtime_s((struct tm *) nullptr, (const time_t *) nullptr); ]])],
       [ AC_MSG_RESULT([yes])],
       [ AC_MSG_RESULT([no]); AC_MSG_ERROR([Both gmtime_r and gmtime_s are unavailable]) ]
    )
  ]
)

dnl Check for different ways of gathering OS randomness
AC_MSG_CHECKING([for Linux getrandom syscall])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
  #include <sys/syscall.h>
  #include <linux/random.h>]],
 [[ syscall(SYS_getrandom, nullptr, 32, 0); ]])],
 [ AC_MSG_RESULT([yes]); AC_DEFINE([HAVE_SYS_GETRANDOM], [1], [Define this symbol if the Linux getrandom system call is available]) ],
 [ AC_MSG_RESULT([no])]
)

AC_MSG_CHECKING([for getentropy])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
 [[ getentropy(nullptr, 32) ]])],
 [ AC_MSG_RESULT([yes]); AC_DEFINE([HAVE_GETENTROPY], [1], [Define this symbol if the BSD getentropy system call is available]) ],
 [ AC_MSG_RESULT([no])]
)

AC_MSG_CHECKING(for sysctl KERN_ARND)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
  #include <sys/sysctl.h>]],
 [[ static const int name[2] = {CTL_KERN, KERN_ARND};
    sysctl(name, 2, nullptr, nullptr, nullptr, 0); ]])],
 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL_ARND, 1,[Define this symbol if the BSD sysctl(KERN_ARND) is available]) ],
 [ AC_MSG_RESULT(no)]
)

# Check for reduced exports
if test x$use_reduce_exports = xyes; then
  AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
  [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
fi

dnl Check for libminiupnpc (optional)
if test x$use_upnp != xno; then
  AC_CHECK_HEADERS(
    [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
    [AC_CHECK_LIB([miniupnpc], [upnpDiscover], [MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
    [have_miniupnpc=no]
  )
fi

AC_MSG_CHECKING([for fdatasync])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
 [[ fdatasync(0); ]])],
 [ AC_MSG_RESULT([yes]); HAVE_FDATASYNC=1 ],
 [ AC_MSG_RESULT([no]); HAVE_FDATASYNC=0 ]
)
AC_DEFINE_UNQUOTED([HAVE_FDATASYNC], [$HAVE_FDATASYNC], [Define to 1 if fdatasync is available.])

AC_MSG_CHECKING([for F_FULLFSYNC])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <fcntl.h>]],
 [[ fcntl(0, F_FULLFSYNC, 0); ]])],
 [ AC_MSG_RESULT([yes]); HAVE_FULLFSYNC=1 ],
 [ AC_MSG_RESULT([no]); HAVE_FULLFSYNC=0 ]
)

dnl crc32c platform checks
AC_MSG_CHECKING([for __builtin_prefetch])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[
  char data = 0;
  const char* address = &data;
  __builtin_prefetch(address, 0, 0);
  ]])],
 [ AC_MSG_RESULT([yes]); HAVE_BUILTIN_PREFETCH=1 ],
 [ AC_MSG_RESULT([no]); HAVE_BUILTIN_PREFETCH=0 ]
)

AC_MSG_CHECKING([for _mm_prefetch])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <xmmintrin.h>]], [[
  char data = 0;
  const char* address = &data;
  _mm_prefetch(address, _MM_HINT_NTA);
  ]])],
 [ AC_MSG_RESULT([yes]); HAVE_MM_PREFETCH=1 ],
 [ AC_MSG_RESULT([no]); HAVE_MM_PREFETCH=0 ]
)


dnl Check for Djinni
if test x$build_libs_objc != xno; then
  if test x$DJINNI_OBJCXXFLAGS = x; then
    DJINNI_OBJCXXFLAGS=-I$prefix/include/objc
  fi
  AC_SUBST(DJINNI_OBJCXXFLAGS)
fi

if test "$enable_wallet" != "no"; then
    dnl Check for libdb_cxx only if wallet enabled
    if test "$use_bdb" != "no"; then
      CENTURE_FIND_BDB48
    fi
    dnl Disable wallet if --without-bdb
    if test "$use_bdb" = "no"; then
        if test "$enable_wallet" = "yes"; then
            AC_MSG_ERROR([wallet functionality requested but no BDB or SQLite support available.])
        fi
        enable_wallet=no
    fi
fi

if test "$build_utils$build_libs_node_js$build_libs_jni$build_libs_objc$build_daemon$use_tests$use_bench" = "nononononono"; then
    use_boost=no
else
    use_boost=yes
fi

if test "$use_boost" = "yes"; then

dnl Minimum required Boost version
define(MINIMUM_REQUIRED_BOOST, 1.68.0)

dnl Check for boost libs
AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
AX_BOOST_SYSTEM
AX_BOOST_FILESYSTEM
AX_BOOST_PROGRAM_OPTIONS
AX_BOOST_THREAD
AX_BOOST_CHRONO

dnl Boost 1.56 through 1.62 allow using std::atomic instead of its own atomic
dnl counter implementations. In 1.63 and later the std::atomic approach is default.
m4_pattern_allow(DBOOST_AC_USE_STD_ATOMIC) dnl otherwise it's treated like a macro
BOOST_CPPFLAGS="-DBOOST_SP_USE_STD_ATOMIC -DBOOST_AC_USE_STD_ATOMIC $BOOST_CPPFLAGS"

if test x$use_reduce_exports = xyes; then
  AC_MSG_CHECKING([for working boost reduced exports])
  TEMP_CPPFLAGS="$CPPFLAGS"
  CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
  AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
      @%:@include <boost/version.hpp>
    ]], [[
      #if BOOST_VERSION >= 104900
      // Everything is okay
      #else
      #  error Boost version is too old
      #endif
    ]])],[
      AC_MSG_RESULT(yes)
    ],[
    AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
  ])
  CPPFLAGS="$TEMP_CPPFLAGS"
fi
fi

if test "$use_reduce_export" = "yes"; then
    CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
    AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
fi

if test "$use_tests" = "yes"; then

  if test "$HEXDUMP" = ""; then
    AC_MSG_ERROR(hexdump is required for tests)
  fi


  if test "$use_boost" = "yes"; then

  AX_BOOST_UNIT_TEST_FRAMEWORK

  dnl Determine if -DBOOST_TEST_DYN_LINK is needed
  AC_MSG_CHECKING([for dynamic linked boost test])
  TEMP_LIBS="$LIBS"
  LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
  TEMP_CPPFLAGS="$CPPFLAGS"
  CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
  AC_LINK_IFELSE([AC_LANG_SOURCE([
       #define BOOST_TEST_DYN_LINK
       #define BOOST_TEST_MAIN
        #include <boost/test/unit_test.hpp>

       ])],
    [AC_MSG_RESULT(yes)]
    [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
    [AC_MSG_RESULT(no)])
  LIBS="$TEMP_LIBS"
  CPPFLAGS="$TEMP_CPPFLAGS"

  fi
fi

if test "$use_boost" = "yes"; then

BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"


dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
dnl the abi. This was fixed in 1.57.

dnl When building against that installed version using c++11, the headers pick up
dnl on the native c++11 scoped enum support and enable it, however it will fail to
dnl link. This can be worked around by disabling c++11 scoped enums if linking will
dnl fail.
dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.

TEMP_LIBS="$LIBS"
LIBS="$BOOST_LIBS $LIBS"
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  #include <boost/config.hpp>
  #include <boost/version.hpp>
  #if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
  #define BOOST_NO_SCOPED_ENUMS
  #define BOOST_NO_CXX11_SCOPED_ENUMS
  #define CHECK
  #endif
  #include <boost/filesystem.hpp>
  ]],[[
  #if defined(CHECK)
    boost::filesystem::copy_file("foo", "bar");
  #else
    choke;
  #endif
  ]])],
  [AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
LIBS="$TEMP_LIBS"
CPPFLAGS="$TEMP_CPPFLAGS"

dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
dnl a working version is available, else fall back to sleep. sleep was removed
dnl after 1.56.
dnl If neither is available, abort.
TEMP_LIBS="$LIBS"
LIBS="$BOOST_LIBS $LIBS"
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  #include <boost/thread/thread.hpp>
  #include <boost/version.hpp>
  ]],[[
  #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
      boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
  #else
   choke me
  #endif
  ]])],
  [boost_sleep=yes;
     AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
  [boost_sleep=no])
LIBS="$TEMP_LIBS"
CPPFLAGS="$TEMP_CPPFLAGS"

if test x$boost_sleep != xyes; then
TEMP_LIBS="$LIBS"
LIBS="$BOOST_LIBS $LIBS"
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
  #include <boost/version.hpp>
  #include <boost/thread.hpp>
  #include <boost/date_time/posix_time/posix_time_types.hpp>
  ]],[[
  #if BOOST_VERSION <= 105600
      boost::this_thread::sleep(boost::posix_time::milliseconds(0));
  #else
   choke me
  #endif
  ]])],
  [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
  [boost_sleep=no])
LIBS="$TEMP_LIBS"
CPPFLAGS="$TEMP_CPPFLAGS"
fi

if test "$boost_sleep" != "yes"; then
  AC_MSG_ERROR(No working boost sleep implementation found.)
fi

fi

: dnl
m4_ifdef(
  [PKG_CHECK_MODULES],
  [
    PKG_CHECK_MODULES([CRYPTOPP], [libcryptopp],, PKG_CHECK_MODULES([CRYPTOPP], [libcrypto++],, [AC_MSG_ERROR(libcryptopp not found.)]))
    PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl  not found.)])
    PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto  not found.)])
    PKG_CHECK_MODULES([PROTOBUF], [protobuf],[have_protobuf=yes],[have_protobuf=no])
    if test x$build_utils$build_daemon$use_tests$build_libs_node_js != xnononono; then
      PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
      if test x$TARGET_OS != xwindows; then
        PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
      fi
    fi
  ]
)

dnl ZMQ check

if test "$use_zmq" = "yes"; then
  PKG_CHECK_MODULES([ZMQ], [libzmq >= 4],
    AC_DEFINE([ENABLE_ZMQ], [1], [Define to 1 to enable ZMQ functions]),
    [AC_DEFINE([ENABLE_ZMQ], [0], [Define to 1 to enable ZMQ functions])
    AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
    use_zmq=no])
else
  AC_DEFINE_UNQUOTED([ENABLE_ZMQ], [0], [Define to 1 to enable ZMQ functions])
fi

if test "$use_zmq" = "yes"; then
  dnl Assume libzmq was built for static linking
  case $host in
    *mingw*)
      ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
    ;;
  esac
fi

save_CXXFLAGS="${CXXFLAGS}"
CXXFLAGS="${CXXFLAGS} ${CRYPTO_CFLAGS} ${SSL_CFLAGS}"
AC_CHECK_DECLS([EVP_MD_CTX_new],,,[AC_INCLUDES_DEFAULT
#include <openssl/x509_vfy.h>
])
CXXFLAGS="${save_CXXFLAGS}"

dnl RapidCheck Property Based Testing

enable_property_tests=no
if test "$use_rapidcheck" = "auto"; then
    AC_CHECK_HEADERS([rapidcheck.h], [enable_property_tests=yes])
elif test "$use_rapidcheck" != "no"; then
    enable_property_tests=yes
fi

RAPIDCHECK_LIBS=
if test "$enable_property_tests" = "yes"; then
   RAPIDCHECK_LIBS=-lrapidcheck
fi
AC_SUBST(RAPIDCHECK_LIBS)
AM_CONDITIONAL([ENABLE_PROPERTY_TESTS], [test "$enable_property_tests" = "yes"])



AC_MSG_CHECKING([whether to build _DAEMON_NAME])
AM_CONDITIONAL([BUILD_DAEMON], [test "$build_daemon" = "yes"])
AC_MSG_RESULT($build_daemon)

AC_MSG_CHECKING([whether to build utils (_CLI_NAME _TX_NAME)])
AM_CONDITIONAL([BUILD_UTILS], [test "$build_utils" = "yes"])
AC_MSG_RESULT($build_utils)

AC_MSG_CHECKING([whether to build node.js libraries])
AM_CONDITIONAL([BUILD_LIBS_NODE_JS], [test "$build_libs_node_js" = "yes"])
AC_MSG_RESULT($build_libs_node_js)


AC_MSG_CHECKING([whether to build jni libraries])
AM_CONDITIONAL([BUILD_LIBS_JNI], [test "$build_libs_jni" = "yes"])
AC_MSG_RESULT($build_libs_jni)

AC_MSG_CHECKING([whether to build objc libraries])
AM_CONDITIONAL([BUILD_LIBS_OBJC], [test "$build_libs_objc" = "yes"])
AC_MSG_RESULT($build_libs_objc)

AC_LANG_POP

if test "$use_ccache" != "no"; then
  AC_MSG_CHECKING([if ccache should be used])
  if test "$CCACHE" = ""; then
    if test "$use_ccache" = "yes"; then
      AC_MSG_ERROR([ccache not found.]);
    else
      use_ccache=no
    fi
  else
    use_ccache=yes
    CC="$ac_cv_path_CCACHE $CC"
    CXX="$ac_cv_path_CCACHE $CXX"
  fi
  AC_MSG_RESULT($use_ccache)
  if test "$use_ccache" = "yes"; then
    AX_CHECK_COMPILE_FLAG([-fdebug-prefix-map=A=B], [DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -fdebug-prefix-map=\$(abs_top_srcdir)=."], [], [$CXXFLAG_WERROR])
    AX_CHECK_PREPROC_FLAG([-fmacro-prefix-map=A=B], [DEBUG_CPPFLAGS="$DEBUG_CPPFLAGS -fmacro-prefix-map=\$(abs_top_srcdir)=."], [], [$CXXFLAG_WERROR])
  fi
fi

dnl enable wallet
AC_MSG_CHECKING([if wallet should be enabled])
if test "$enable_wallet" != "no"; then
  AC_MSG_RESULT([yes])
  AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
  enable_wallet=yes

else
  AC_MSG_RESULT([no])
fi

dnl enable upnp support
AC_MSG_CHECKING([whether to build with support for UPnP])
if test "$have_miniupnpc" = "no"; then
  if test "$use_upnp" = "yes"; then
     AC_MSG_ERROR([UPnP requested but cannot be built. Use --without-miniupnpc])
  fi
  AC_MSG_RESULT([no])
else
  if test "$use_upnp" != "no"; then
    AC_MSG_RESULT([yes])
    AC_MSG_CHECKING([whether to build with UPnP enabled by default])
    use_upnp=yes
    upnp_setting=0
    if test "$use_upnp_default" != "no"; then
      use_upnp_default=yes
      upnp_setting=1
    fi
    AC_MSG_RESULT([$use_upnp_default])
    AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
    if test "$TARGET_OS" = "windows"; then
      MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
    fi
  else
    AC_MSG_RESULT([no])
  fi
fi

AM_CONDITIONAL([ENABLE_ZMQ], [test "$use_zmq" = "yes"])

AC_MSG_CHECKING([whether to build test_munt])
if test "$use_tests" = "yes"; then
  AC_MSG_RESULT([yes])
  BUILD_TEST="yes"
else
  AC_MSG_RESULT([no])
  BUILD_TEST=""
fi

AC_MSG_CHECKING([whether to reduce exports])
if test "$use_reduce_exports" = "yes"; then
  AC_MSG_RESULT([yes])
else
  AC_MSG_RESULT([no])
fi

if test "$build_utils$build_libs_node_js$build_libs_jni$build_libs_objc$build_daemon$use_bench$use_tests" = "nonononononono"; then
  AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-jni-libs --with-objc-libs --with-daemon --with-gui --enable-bench or --enable-tests])
fi

AM_CONDITIONAL([TARGET_DARWIN], [test "$TARGET_OS" = "darwin"])
AM_CONDITIONAL([BUILD_DARWIN], [test "$BUILD_OS" = "darwin"])
AM_CONDITIONAL([TARGET_WINDOWS], [test "$TARGET_OS" = "windows"])
AM_CONDITIONAL([ENABLE_WALLET], [test "$enable_wallet" = "yes"])
AM_CONDITIONAL([ENABLE_TESTS], [test "$BUILD_TEST" = "yes"])
AM_CONDITIONAL([ENABLE_BENCH], [test "$use_bench" = "yes"])
AM_CONDITIONAL([USE_QRCODE], [test "$use_qr" = "yes"])
AM_CONDITIONAL([USE_LCOV], [test "$use_lcov" = "yes"])
AM_CONDITIONAL([WORDS_BIGENDIAN], [test "$ac_cv_c_bigendian" = "yes"])
AM_CONDITIONAL([HARDEN], [test "$use_hardening" = "yes"])
AM_CONDITIONAL([TARGET_INTEL], [test x$host_cpu = xx86_64 -o x$host_cpu = xi686])

AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Copyright year])
AC_DEFINE(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS", [Copyright holder(s) before %s replacement])
AC_DEFINE(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION", [Replacement for %s in copyright holders string])
define(_COPYRIGHT_HOLDERS_FINAL, [patsubst(_COPYRIGHT_HOLDERS, [%s], [_COPYRIGHT_HOLDERS_SUBSTITUTION])])
AC_DEFINE(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL", [Copyright holder(s)])
AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
AC_SUBST(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS")
AC_SUBST(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION")
AC_SUBST(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL")
AC_SUBST([_DAEMON_NAME])
AC_SUBST([_GUI_NAME])
AC_SUBST([_CLI_NAME])
AC_SUBST([_TX_NAME])

AC_SUBST(RELDFLAGS)
AC_SUBST(DEBUG_CPPFLAGS)
AC_SUBST(WARN_CXXFLAGS)
AC_SUBST(NOWARN_CXXFLAGS)
AC_SUBST(DEBUG_CXXFLAGS)
AC_SUBST(COMPAT_LDFLAGS)
AC_SUBST(ERROR_CXXFLAGS)
AC_SUBST(HARDENED_CXXFLAGS)
AC_SUBST(HARDENED_CPPFLAGS)
AC_SUBST(HARDENED_LDFLAGS)
AC_SUBST(PIC_FLAGS)
AC_SUBST(PIE_FLAGS)
AC_SUBST(SANITIZER_CXXFLAGS)
AC_SUBST(SANITIZER_LDFLAGS)
AC_SUBST(LIBTOOL_APP_LDFLAGS)
AC_SUBST(USE_UPNP)
AC_SUBST(USE_QRCODE)
AC_SUBST(BOOST_LIBS)
AC_SUBST(TESTDEFS)
AC_SUBST(MINIUPNPC_CPPFLAGS)
AC_SUBST(MINIUPNPC_LIBS)
AC_SUBST(HAVE_FDATASYNC)
AC_SUBST(HAVE_FULLFSYNC)
AC_SUBST(HAVE_BUILTIN_PREFETCH)
AC_SUBST(HAVE_MM_PREFETCH)
AC_SUBST(CRYPTO_LIBS)
AC_SUBST(QWT_LIBS)
AC_SUBST(HAVE_WEBENGINE_VIEW)
AC_SUBST(SSL_LIBS)
AC_SUBST(EVENT_LIBS)
AC_SUBST(EVENT_PTHREADS_LIBS)
AC_SUBST(ZMQ_LIBS)
AC_SUBST(PROTOBUF_LIBS)
AC_SUBST(QR_LIBS)
AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi test/config.ini])
AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh])
AC_CONFIG_FILES([doc/Doxyfile])
AC_CONFIG_LINKS([test/functional/test_runner.py:test/functional/test_runner.py])
AC_CONFIG_LINKS([test/util/util-test.py:test/util/util-test.py])

dnl boost's m4 checks do something really nasty: they export these vars. As a
dnl result, they leak into secp256k1's configure and crazy things happen.
dnl Until this is fixed upstream and we've synced, we'll just un-export them.
CPPFLAGS_TEMP="$CPPFLAGS"
unset CPPFLAGS
CPPFLAGS="$CPPFLAGS_TEMP"

LDFLAGS_TEMP="$LDFLAGS"
unset LDFLAGS
LDFLAGS="$LDFLAGS_TEMP"

LIBS_TEMP="$LIBS"
unset LIBS
LIBS="$LIBS_TEMP"

PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
unset PKG_CONFIG_PATH
PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"

PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
unset PKG_CONFIG_LIBDIR
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"

ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
AC_CONFIG_SUBDIRS([src/secp256k1])

AC_OUTPUT

dnl Taken from https://wiki.debian.org/RpathIssue
case $host in
   *-*-linux-gnu)
     AC_MSG_RESULT([Fixing libtool for -rpath problems.])
     sed < libtool > libtool-2 \
     's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
     mv libtool-2 libtool
     chmod 755 libtool
   ;;
esac

dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
case ${OS} in
   *Windows*)
     sed  's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/'  test/config.ini > test/config-2.ini
     mv test/config-2.ini test/config.ini
   ;;
esac

echo
echo "Options used to compile and link:"
echo "  with wallet     = $enable_wallet"
if test "$enable_wallet" != "no"; then
    echo "    with bdb      = $use_bdb"
fi
echo "  with zmq        = $use_zmq"
echo "  with test       = $use_tests"
echo "  with bench      = $use_bench"
echo "  with upnp       = $use_upnp"
echo "  debug enabled   = $enable_debug"
echo "  werror          = $enable_werror"
echo
echo "  target os       = $TARGET_OS"
echo "  build os        = $BUILD_OS"
echo
echo "  CC              = $CC"
echo "  CFLAGS          = $CFLAGS"
echo "  CPPFLAGS        = $CPPFLAGS"
echo "  CXX             = $CXX"
echo "  CXXFLAGS        = $CXXFLAGS"
echo "  LDFLAGS         = $LDFLAGS"
echo "  ARFLAGS         = $ARFLAGS"
echo
echo " Binaries:"
echo "     daemon:  $build_daemon"
echo "     cli:     $build_utils"
echo "     tx:      $build_utils"
echo
echo " Libraries:"
echo "     jni:     $build_libs_jni"
echo "     objc:    $build_libs_objc"
echo "     node_js: $build_libs_node_js"


================================================
FILE: contrib/Munt-cli.bash-completion
================================================
# bash programmable completion for Munt-cli(1)
# Copyright (c) 2012-2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

# call $Munt-cli for RPC
_munt_rpc() {
    # determine already specified args necessary for RPC
    local rpcargs=()
    for i in ${COMP_LINE}; do
        case "$i" in
            -conf=*|-datadir=*|-regtest|-rpc*|-testnet)
                rpcargs=( "${rpcargs[@]}" "$i" )
                ;;
        esac
    done
    $munt_cli "${rpcargs[@]}" "$@"
}

# Add wallet accounts to COMPREPLY
_munt_accounts() {
    local accounts
    accounts=$(_munt_rpc listaccounts | awk -F '"' '{ print $2 }')
    COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) )
}

_munt_cli() {
    local cur prev words=() cword
    local munt_cli

    # save and use original argument to invoke Munt-cli for -help, help and RPC
    # as Munt-cli might not be in $PATH
    munt_cli="$1"

    COMPREPLY=()
    _get_comp_words_by_ref -n = cur prev words cword

    if ((cword > 5)); then
        case ${words[cword-5]} in
            sendtoaddress)
                COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
                return 0
                ;;
        esac
    fi

    if ((cword > 4)); then
        case ${words[cword-4]} in
            importaddress|listtransactions|setban)
                COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
                return 0
                ;;
            signrawtransaction)
                COMPREPLY=( $( compgen -W "ALL NONE SINGLE ALL|ANYONECANPAY NONE|ANYONECANPAY SINGLE|ANYONECANPAY" -- "$cur" ) )
                return 0
                ;;
        esac
    fi

    if ((cword > 3)); then
        case ${words[cword-3]} in
            addmultisigaddress)
                _munt_accounts
                return 0
                ;;
            getbalance|gettxout|importaddress|importpubkey|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock)
                COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
                return 0
                ;;
        esac
    fi

    if ((cword > 2)); then
        case ${words[cword-2]} in
            addnode)
                COMPREPLY=( $( compgen -W "add remove onetry" -- "$cur" ) )
                return 0
                ;;
            setban)
                COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) )
                return 0
                ;;
            fundrawtransaction|getblock|getblockheader|getmempoolancestors|getmempooldescendants|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction)
                COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
                return 0
                ;;
            move|setaccount)
                _munt_accounts
                return 0
                ;;
        esac
    fi

    case "$prev" in
        backupwallet|dumpwallet|importwallet)
            _filedir
            return 0
            ;;
        getaddednodeinfo|getrawmempool|lockunspent|setgenerate)
            COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
            return 0
            ;;
        getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany)
            _munt_accounts
            return 0
            ;;
    esac

    case "$cur" in
        -conf=*)
            cur="${cur#*=}"
            _filedir
            return 0
            ;;
        -datadir=*)
            cur="${cur#*=}"
            _filedir -d
            return 0
            ;;
        -*=*)	# prevent nonsense completions
            return 0
            ;;
        *)
            local helpopts commands

            # only parse -help if senseful
            if [[ -z "$cur" || "$cur" =~ ^- ]]; then
                helpopts=$($munt_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
            fi

            # only parse help if senseful
            if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then
                commands=$(_munt_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }')
            fi

            COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) )

            # Prevent space if an argument is desired
            if [[ $COMPREPLY == *= ]]; then
                compopt -o nospace
            fi
            return 0
            ;;
    esac
} &&
complete -F _munt_cli Munt-cli

# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh


================================================
FILE: contrib/Munt-daemon.bash-completion
================================================
# bash programmable completion for Munt-daemon(1) and Munt(1)
# Copyright (c) 2012-2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

_Munt_daemon() {
    local cur prev words=() cword
    local Munt_daemon

    # save and use original argument to invoke Munt-daemon for -help
    # it might not be in $PATH
    Munt_daemon="$1"

    COMPREPLY=()
    _get_comp_words_by_ref -n = cur prev words cword

    case "$cur" in
        -conf=*|-pid=*|-loadblock=*|-rootcertificates=*|-rpccookiefile=*|-wallet=*)
            cur="${cur#*=}"
            _filedir
            return 0
            ;;
        -datadir=*)
            cur="${cur#*=}"
            _filedir -d
            return 0
            ;;
        -*=*)	# prevent nonsense completions
            return 0
            ;;
        *)

            # only parse -help if senseful
            if [[ -z "$cur" || "$cur" =~ ^- ]]; then
                local helpopts
                helpopts=$($Munt_daemon -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' )
                COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
            fi

            # Prevent space if an argument is desired
            if [[ $COMPREPLY == *= ]]; then
                compopt -o nospace
            fi
            return 0
            ;;
    esac
} &&
complete -F _Munt_daemon Munt-daemon Munt

# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh


================================================
FILE: contrib/Munt-tx.bash-completion
================================================
# bash programmable completion for Munt-tx(1)
# Copyright (c) 2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

_munt_tx() {
    local cur prev words=() cword
    local munt_tx

    # save and use original argument to invoke Munt-tx for -help
    # it might not be in $PATH
    munt_tx="$1"

    COMPREPLY=()
    _get_comp_words_by_ref -n =: cur prev words cword

    case "$cur" in
        load=*:*)
            cur="${cur#load=*:}"
            _filedir
            return 0
            ;;
        *=*)	# prevent attempts to complete other arguments
            return 0
            ;;
    esac

    if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then
        # only options (or an uncompletable hex-string) allowed
        # parse Munt-tx -help for options
        local helpopts
        helpopts=$($munt_tx -help | sed -e '/^  -/ p' -e d )
        COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) )
    else
        # only commands are allowed
        # parse -help for commands
        local helpcmds
        helpcmds=$($munt_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^  [a-z]/ p' -e d )
        COMPREPLY=( $( compgen -W "$helpcmds" -- "$cur" ) )
    fi

    # Prevent space if an argument is desired
    if [[ $COMPREPLY == *= ]]; then
        compopt -o nospace
    fi

    return 0
} &&
complete -F _munt_tx Munt-tx

# Local variables:
# mode: shell-script
# sh-basic-offset: 4
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh


================================================
FILE: contrib/README.md
================================================
Repository Tools
---------------------

### [Qos](/contrib/qos) ###

A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Munt network. This means one can have an always-on Munt-daemon instance running, and another local Munt-daemon/Munt instance which connects to this node and receives blocks from it.

### [Seeds](/contrib/seeds) ###
Utility to generate the pnSeed[] array that is compiled into the client.

Build Tools and Keys
---------------------

### [guix(/contrib/guix) ###
Notes on getting guix builds up and running, scripts for running guix builds.

### [MacDeploy](/contrib/macdeploy) ###
Scripts and notes for Mac builds. 

Test and Verify Tools 
---------------------

### [TestGen](/contrib/testgen) ###
Utilities to generate test vectors for the data-driven Munt tests.



================================================
FILE: contrib/devtools/security-check.py
================================================
#!/usr/bin/env python
# Copyright (c) 2015-2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''
Perform basic ELF security checks on a series of executables.
Exit status will be 0 if successful, and the program will be silent.
Otherwise the exit status will be 1 and it will log which executables failed which checks.
Needs `readelf` (for ELF) and `objdump` (for PE).
'''
from __future__ import division,print_function,unicode_literals
import subprocess
import sys
import os

READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
OBJDUMP_CMD = os.getenv('OBJDUMP', '/usr/bin/objdump')
NONFATAL = {'HIGH_ENTROPY_VA'} # checks which are non-fatal for now but only generate a warning

def check_ELF_PIE(executable):
    '''
    Check for position independent executable (PIE), allowing for address space randomization.
    '''
    p = subprocess.Popen([READELF_CMD, '-h', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    if p.returncode:
        raise IOError('Error opening file')

    ok = False
    for line in stdout.split(b'\n'):
        line = line.split()
        if len(line)>=2 and line[0] == b'Type:' and line[1] == b'DYN':
            ok = True
    return ok

def get_ELF_program_headers(executable):
    '''Return type and flags for ELF program headers'''
    p = subprocess.Popen([READELF_CMD, '-l', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    if p.returncode:
        raise IOError('Error opening file')
    in_headers = False
    count = 0
    headers = []
    for line in stdout.split(b'\n'):
        if line.startswith(b'Program Headers:'):
            in_headers = True
        if line == b'':
            in_headers = False
        if in_headers:
            if count == 1: # header line
                ofs_typ = line.find(b'Type')
                ofs_offset = line.find(b'Offset')
                ofs_flags = line.find(b'Flg')
                ofs_align = line.find(b'Align')
                if ofs_typ == -1 or ofs_offset == -1 or ofs_flags == -1 or ofs_align  == -1:
                    raise ValueError('Cannot parse elfread -lW output')
            elif count > 1:
                typ = line[ofs_typ:ofs_offset].rstrip()
                flags = line[ofs_flags:ofs_align].rstrip()
                headers.append((typ, flags))
            count += 1
    return headers

def check_ELF_NX(executable):
    '''
    Check that no sections are writable and executable (including the stack)
    '''
    have_wx = False
    have_gnu_stack = False
    for (typ, flags) in get_ELF_program_headers(executable):
        if typ == b'GNU_STACK':
            have_gnu_stack = True
        if b'W' in flags and b'E' in flags: # section is both writable and executable
            have_wx = True
    return have_gnu_stack and not have_wx

def check_ELF_RELRO(executable):
    '''
    Check for read-only relocations.
    GNU_RELRO program header must exist
    Dynamic section must have BIND_NOW flag
    '''
    have_gnu_relro = False
    for (typ, flags) in get_ELF_program_headers(executable):
        # Note: not checking flags == 'R': here as linkers set the permission differently
        # This does not affect security: the permission flags of the GNU_RELRO program header are ignored, the PT_LOAD header determines the effective permissions.
        # However, the dynamic linker need to write to this area so these are RW.
        # Glibc itself takes care of mprotecting this area R after relocations are finished.
        # See also http://permalink.gmane.org/gmane.comp.gnu.binutils/71347
        if typ == b'GNU_RELRO':
            have_gnu_relro = True

    have_bindnow = False
    p = subprocess.Popen([READELF_CMD, '-d', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    if p.returncode:
        raise IOError('Error opening file')
    for line in stdout.split(b'\n'):
        tokens = line.split()
        if len(tokens)>1 and tokens[1] == b'(BIND_NOW)' or (len(tokens)>2 and tokens[1] == b'(FLAGS)' and b'BIND_NOW' in tokens[2]):
            have_bindnow = True
    return have_gnu_relro and have_bindnow

def check_ELF_Canary(executable):
    '''
    Check for use of stack canary
    '''
    p = subprocess.Popen([READELF_CMD, '--dyn-syms', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    if p.returncode:
        raise IOError('Error opening file')
    ok = False
    for line in stdout.split(b'\n'):
        if b'__stack_chk_fail' in line:
            ok = True
    return ok

def get_PE_dll_characteristics(executable):
    '''
    Get PE DllCharacteristics bits.
    Returns a tuple (arch,bits) where arch is 'i386:x86-64' or 'i386'
    and bits is the DllCharacteristics value.
    '''
    p = subprocess.Popen([OBJDUMP_CMD, '-x',  executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    if p.returncode:
        raise IOError('Error opening file')
    arch = ''
    bits = 0
    for line in stdout.split('\n'):
        tokens = line.split()
        if len(tokens)>=2 and tokens[0] == 'architecture:':
            arch = tokens[1].rstrip(',')
        if len(tokens)>=2 and tokens[0] == 'DllCharacteristics':
            bits = int(tokens[1],16)
    return (arch,bits)

IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020
IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE    = 0x0040
IMAGE_DLL_CHARACTERISTICS_NX_COMPAT       = 0x0100

def check_PE_DYNAMIC_BASE(executable):
    '''PIE: DllCharacteristics bit 0x40 signifies dynamicbase (ASLR)'''
    (arch,bits) = get_PE_dll_characteristics(executable)
    reqbits = IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE
    return (bits & reqbits) == reqbits

# On 64 bit, must support high-entropy 64-bit address space layout randomization in addition to DYNAMIC_BASE
# to have secure ASLR.
def check_PE_HIGH_ENTROPY_VA(executable):
    '''PIE: DllCharacteristics bit 0x20 signifies high-entropy ASLR'''
    (arch,bits) = get_PE_dll_characteristics(executable)
    if arch == 'i386:x86-64': 
        reqbits = IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
    else: # Unnecessary on 32-bit
        assert(arch == 'i386')
        reqbits = 0
    return (bits & reqbits) == reqbits

def check_PE_NX(executable):
    '''NX: DllCharacteristics bit 0x100 signifies nxcompat (DEP)'''
    (arch,bits) = get_PE_dll_characteristics(executable)
    return (bits & IMAGE_DLL_CHARACTERISTICS_NX_COMPAT) == IMAGE_DLL_CHARACTERISTICS_NX_COMPAT

CHECKS = {
'ELF': [
    ('PIE', check_ELF_PIE),
    ('NX', check_ELF_NX),
    ('RELRO', check_ELF_RELRO),
    ('Canary', check_ELF_Canary)
],
'PE': [
    ('DYNAMIC_BASE', check_PE_DYNAMIC_BASE),
    ('HIGH_ENTROPY_VA', check_PE_HIGH_ENTROPY_VA),
    ('NX', check_PE_NX)
]
}

def identify_executable(executable):
    with open(filename, 'rb') as f:
        magic = f.read(4)
    if magic.startswith(b'MZ'):
        return 'PE'
    elif magic.startswith(b'\x7fELF'):
        return 'ELF'
    return None

if __name__ == '__main__':
    retval = 0
    for filename in sys.argv[1:]:
        try:
            etype = identify_executable(filename)
            if etype is None:
                print('%s: unknown format' % filename)
                retval = 1
                continue

            failed = []
            warning = []
            for (name, func) in CHECKS[etype]:
                if not func(filename):
                    if name in NONFATAL:
                        warning.append(name)
                    else:
                        failed.append(name)
            if failed:
                print('%s: failed %s' % (filename, ' '.join(failed)))
                retval = 1
            if warning:
                print('%s: warning %s' % (filename, ' '.join(warning)))
        except IOError:
            print('%s: cannot open' % filename)
            retval = 1
    exit(retval)



================================================
FILE: contrib/devtools/split-debug.sh.in
================================================
#!/bin/sh

if [ $# -ne 3 ];
    then echo "usage: $0 <input> <stripped-binary> <debug-binary>"
fi

@OBJCOPY@ --enable-deterministic-archives -p --only-keep-debug $1 $3
@OBJCOPY@ --enable-deterministic-archives -p --strip-debug $1 $2
@STRIP@ --enable-deterministic-archives -p -s $2
@OBJCOPY@ --enable-deterministic-archives -p --add-gnu-debuglink=$3 $2


================================================
FILE: contrib/devtools/symbol-check.py
================================================
#!/usr/bin/env python3
# Copyright (c) 2014 Wladimir J. van der Laan
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''
A script to check that the (Linux) executables produced by guix only contain
allowed gcc, glibc and libstdc++ version symbols.  This makes sure they are
still compatible with the minimum supported Linux distribution versions.

Example usage:

    find ../build -type f -executable | xargs python contrib/devtools/symbol-check.py
'''
import subprocess
import re
import sys
import os

# Debian 6.0.9 (Squeeze) has:
#
# - g++ version 4.4.5 (https://packages.debian.org/search?suite=default&section=all&arch=any&searchon=names&keywords=g%2B%2B)
# - libc version 2.11.3 (https://packages.debian.org/search?suite=default&section=all&arch=any&searchon=names&keywords=libc6)
# - libstdc++ version 4.4.5 (https://packages.debian.org/search?suite=default&section=all&arch=any&searchon=names&keywords=libstdc%2B%2B6)
#
# Ubuntu 10.04.4 (Lucid Lynx) has:
#
# - g++ version 4.4.3 (http://packages.ubuntu.com/search?keywords=g%2B%2B&searchon=names&suite=lucid&section=all)
# - libc version 2.11.1 (http://packages.ubuntu.com/search?keywords=libc6&searchon=names&suite=lucid&section=all)
# - libstdc++ version 4.4.3 (http://packages.ubuntu.com/search?suite=lucid&section=all&arch=any&keywords=libstdc%2B%2B&searchon=names)
#
# Taking the minimum of these as our target.
#
# According to GNU ABI document (http://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html) this corresponds to:
#   GCC 4.4.0: GCC_4.4.0
#   GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3
#   (glibc)    GLIBC_2_11
#
MAX_VERSIONS = {
'GCC':     (4,4,0),
'CXXABI':  (1,3,3),
'GLIBCXX': (3,4,13),
'GLIBC':   (2,11)
}
# See here for a description of _IO_stdin_used:
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634261#109

# Ignore symbols that are exported as part of every executable
IGNORE_EXPORTS = {
'_edata', '_end', '_init', '__bss_start', '_fini', '_IO_stdin_used', 'stdin', 'stdout', 'stderr'
}
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
CPPFILT_CMD = os.getenv('CPPFILT', '/usr/bin/c++filt')
# Allowed NEEDED libraries
ALLOWED_LIBRARIES = {
# Munt-daemon and Munt (qt)
'libgcc_s.so.1', # GCC base support
'libc.so.6', # C library
'libpthread.so.0', # threading
'libanl.so.1', # DNS resolve
'libm.so.6', # math library
'librt.so.1', # real-time (clock)
'ld-linux-x86-64.so.2', # 64-bit dynamic linker
'ld-linux.so.2', # 32-bit dynamic linker
# Munt (qt) only
'libX11-xcb.so.1', # part of X11
'libX11.so.6', # part of X11
'libxcb.so.1', # part of X11
'libfontconfig.so.1', # font support
'libfreetype.so.6', # font parsing
'libdl.so.2' # programming interface to dynamic linker
}

class CPPFilt(object):
    '''
    Demangle C++ symbol names.

    Use a pipe to the 'c++filt' command.
    '''
    def __init__(self):
        self.proc = subprocess.Popen(CPPFILT_CMD, stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True)

    def __call__(self, mangled):
        self.proc.stdin.write(mangled + '\n')
        self.proc.stdin.flush()
        return self.proc.stdout.readline().rstrip()

    def close(self):
        self.proc.stdin.close()
        self.proc.stdout.close()
        self.proc.wait()

def read_symbols(executable, imports=True):
    '''
    Parse an ELF executable and return a list of (symbol,version) tuples
    for dynamic, imported symbols.
    '''
    p = subprocess.Popen([READELF_CMD, '--dyn-syms', '-W', executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, universal_newlines=True)
    (stdout, stderr) = p.communicate()
    if p.returncode:
        raise IOError('Could not read symbols for %s: %s' % (executable, stderr.strip()))
    syms = []
    for line in stdout.splitlines():
        line = line.split()
        if len(line)>7 and re.match('[0-9]+:$', line[0]):
            (sym, _, version) = line[7].partition('@')
            is_import = line[6] == 'UND'
            if version.startswith('@'):
                version = version[1:]
            if is_import == imports:
                syms.append((sym, version))
    return syms

def check_version(max_versions, version):
    if '_' in version:
        (lib, _, ver) = version.rpartition('_')
    else:
        lib = version
        ver = '0'
    ver = tuple([int(x) for x in ver.split('.')])
    if not lib in max_versions:
        return False
    return ver <= max_versions[lib]

def read_libraries(filename):
    p = subprocess.Popen([READELF_CMD, '-d', '-W', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, universal_newlines=True)
    (stdout, stderr) = p.communicate()
    if p.returncode:
        raise IOError('Error opening file')
    libraries = []
    for line in stdout.splitlines():
        tokens = line.split()
        if len(tokens)>2 and tokens[1] == '(NEEDED)':
            match = re.match('^Shared library: \[(.*)\]$', ' '.join(tokens[2:]))
            if match:
                libraries.append(match.group(1))
            else:
                raise ValueError('Unparseable (NEEDED) specification')
    return libraries

if __name__ == '__main__':
    cppfilt = CPPFilt()
    retval = 0
    for filename in sys.argv[1:]:
        # Check imported symbols
        for sym,version in read_symbols(filename, True):
            if version and not check_version(MAX_VERSIONS, version):
                print('%s: symbol %s from unsupported version %s' % (filename, cppfilt(sym), version))
                retval = 1
        # Check exported symbols
        for sym,version in read_symbols(filename, False):
            if sym in IGNORE_EXPORTS:
                continue
            print('%s: export of symbol %s not allowed' % (filename, cppfilt(sym)))
            retval = 1
        # Check dependency libraries
        for library_name in read_libraries(filename):
            if library_name not in ALLOWED_LIBRARIES:
                print('%s: NEEDED library %s is not allowed' % (filename, library_name))
                retval = 1

    sys.exit(retval)




================================================
FILE: contrib/devtools/test-security-check.py
================================================
#!/usr/bin/env python2
# Copyright (c) 2015-2016 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
'''
Test script for security-check.py
'''
from __future__ import division,print_function
import subprocess
import unittest

def write_testcode(filename):
    with open(filename, 'w') as f:
        f.write('''
    #include <stdio.h>
    int main()
    {
        printf("the quick brown fox jumps over the lazy god\\n");
        return 0;
    }
    ''')

def call_security_check(cc, source, executable, options):
    subprocess.check_call([cc,source,'-o',executable] + options)
    p = subprocess.Popen(['./security-check.py',executable], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    (stdout, stderr) = p.communicate()
    return (p.returncode, stdout.rstrip())

class TestSecurityChecks(unittest.TestCase):
    def test_ELF(self):
        source = 'test1.c'
        executable = 'test1'
        cc = 'gcc'
        write_testcode(source)

        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-fno-stack-protector','-Wl,-znorelro']), 
                (1, executable+': failed PIE NX RELRO Canary'))
        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fno-stack-protector','-Wl,-znorelro']), 
                (1, executable+': failed PIE RELRO Canary'))
        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro']), 
                (1, executable+': failed PIE RELRO'))
        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-znorelro','-pie','-fPIE']), 
                (1, executable+': failed RELRO'))
        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE']), 
                (0, ''))

    def test_PE(self):
        source = 'test1.c'
        executable = 'test1.exe'
        cc = 'i686-w64-mingw32-gcc'
        write_testcode(source)

        self.assertEqual(call_security_check(cc, source, executable, []), 
                (1, executable+': failed PIE NX'))
        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat']), 
                (1, executable+': failed PIE'))
        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--dynamicbase']), 
                (0, ''))

if __name__ == '__main__':
    unittest.main()



================================================
FILE: contrib/guix/INSTALL.md
================================================
# Guix Installation and Setup

This only needs to be done once per machine. If you have already completed the
installation and setup, please proceed to [perform a build](./README.md).

Otherwise, you may choose from one of the following options to install Guix:

1. Using the official **shell installer script** [⤓ skip to section][install-script]
   - Maintained by Guix developers
   - Easiest (automatically performs *most* setup)
   - Works on nearly all Linux distributions
   - Only installs latest release
   - Binary installation only, requires high level of trust
   - Note: The script needs to be run as root, so it should be inspected before it's run
2. Using the official **binary tarball** [⤓ skip to section][install-bin-tarball]
   - Maintained by Guix developers
   - Normal difficulty (full manual setup required)
   - Works on nearly all Linux distributions
   - Installs any release
   - Binary installation only, requires high level of trust
3. Using fanquake's **Docker image** [↗︎ external instructions][install-fanquake-docker]
   - Maintained by fanquake
   - Easy (automatically performs *some* setup)
   - Works wherever Docker images work
   - Installs any release
   - Binary installation only, requires high level of trust
4. Using a **distribution-maintained package** [⤓ skip to section][install-distro-pkg]
   - Maintained by distribution's Guix package maintainer
   - Normal difficulty (manual setup required)
   - Works only on distributions with Guix packaged, see: https://repology.org/project/guix/versions
   - Installs a release decided on by package maintainer
   - Source or binary installation depending on the distribution
5. Building **from source** [⤓ skip to section][install-source]
   - Maintained by you
   - Hard, but rewarding
   - Can be made to work on most Linux distributions
   - Installs any commit (more granular)
   - Source installation, requires lower level of trust

## Options 1 and 2: Using the official shell installer script or binary tarball

The installation instructions for both the official shell installer script and
the binary tarballs can be found in the GNU Guix Manual's [Binary Installation
section](https://guix.gnu.org/manual/en/html_node/Binary-Installation.html).

Note that running through the binary tarball installation steps is largely
equivalent to manually performing what the shell installer script does.

Note that at the time of writing (July 5th, 2021), the shell installer script
automatically creates an `/etc/profile.d` entry which the binary tarball
installation instructions do not ask you to create. However, you will likely
need this entry for better desktop integration. Please see [this
section](#add-an-etcprofiled-entry) for instructions on how to add a
`/etc/profile.d/guix.sh` entry.

Regardless of which installation option you chose, the changes to
`/etc/profile.d` will not take effect until the next shell or desktop session,
so you should log out and log back in.

## Option 3: Using fanquake's Docker image

Please refer to fanquake's instructions
[here](https://github.com/fanquake/core-review/tree/master/guix).

Note that the `Dockerfile` is largely equivalent to running through the binary
tarball installation steps.

## Option 4: Using a distribution-maintained package

Note that this section is based on the distro packaging situation at the time of
writing (July 2021). Guix is expected to be more widely packaged over time. For
an up-to-date view on Guix's package status/version across distros, please see:
https://repology.org/project/guix/versions

### Debian 11 (Bullseye)/Ubuntu 21.04 (Hirsute Hippo)

Guix v1.2.0 is available as a distribution package starting in [Debian
11](https://packages.debian.org/bullseye/guix) and [Ubuntu
21.04](https://packages.ubuntu.com/hirsute/guix).

Note that if you intend on using Guix without using any substitutes (more
details [here][security-model]), v1.2.0 has a known problem when building GnuTLS
from source. Solutions and workarounds are documented
[here](#gnutls-test-suite-fail-status-request-revoked).


To install:
```sh
sudo apt install guix
```

For up-to-date information on Debian and Ubuntu's release history:
- [Debian release history](https://www.debian.org/releases/)
- [Ubuntu release history](https://ubuntu.com/about/release-cycle)

### Arch Linux

Guix is available in the AUR as
[`guix`](https://aur.archlinux.org/packages/guix/), please follow the
installation instructions in the Arch Linux Wiki ([live
link](https://wiki.archlinux.org/index.php/Guix#AUR_Package_Installation),
[2021/03/30
permalink](https://wiki.archlinux.org/index.php?title=Guix&oldid=637559#AUR_Package_Installation))
to install Guix.

At the time of writing (2021/03/30), the `check` phase will fail if the path to
guix's build directory is longer than 36 characters due to an anachronistic
character limit on the shebang line. Since the `check` phase happens after the
`build` phase, which may take quite a long time, it is recommended that users
either:

1. Skip the `check` phase
    - For `makepkg`: `makepkg --nocheck ...`
    - For `yay`: `yay --mflags="--nocheck" ...`
    - For `paru`: `paru --nocheck ...`
2. Or, check their build directory's length beforehand
    - For those building with `makepkg`: `pwd | wc -c`

## Option 5: Building from source

Building Guix from source is a rather involved process but a rewarding one for
those looking to minimize trust and maximize customizability (e.g. building a
particular commit of Guix). Previous experience with using autotools-style build
systems to build packages from source will be helpful. *hic sunt dracones.*

I strongly urge you to at least skim through the entire section once before you
start issuing commands, as it will save you a lot of unnecessary pain and
anguish.

### Installing common build tools

There are a few basic build tools that are required for most things we'll build,
so let's install them now:

Text transformation/i18n:
- `autopoint` (sometimes packaged in `gettext`)
- `help2man`
- `po4a`
- `texinfo`

Build system tools:
- `g++` w/ C++11 support
- `libtool`
- `autoconf`
- `automake`
- `pkg-config` (sometimes packaged as `pkgconf`)
- `make`
- `cmake`

Miscellaneous:
- `git`
- `gnupg`
- `python3`

### Building and Installing Guix's dependencies

In order to build Guix itself from source, we need to first make sure that the
necessary dependencies are installed and discoverable. The most up-to-date list
of Guix's dependencies is kept in the ["Requirements"
section](https://guix.gnu.org/manual/en/html_node/Requirements.html) of the Guix
Reference Manual.

Depending on your distribution, most or all of these dependencies may already be
packaged and installable without manually building and installing.

For reference, the graphic below outlines Guix v1.3.0's dependency graph:

![bootstrap map](https://user-images.githubusercontent.com/6399679/125064185-a9a59880-e0b0-11eb-82c1-9b8e5dc9950d.png)

#### Guile

##### Choosing a Guile version and sticking to it

One of the first things you need to decide is which Guile version you want to
use: Guile v2.2 or Guile v3.0. Unlike the python2 to python3 transition, Guile
v2.2 and Guile v3.0 are largely compatible, as evidenced by the fact that most
Guile packages and even [Guix
itself](https://guix.gnu.org/en/blog/2020/guile-3-and-guix/) support running on
both.

What is important here is that you **choose one**, and you **remain consistent**
with your choice throughout **all Guile-related packages**, no matter if they
are installed via the distribution's package manager or installed from source.
This is because the files for Guile packages are installed to directories which
are separated based on the Guile version.

###### Example: Checking that Ubuntu's `guile-git` is compatible with your chosen Guile version

On Ubuntu Focal:

```sh
$ apt show guile-git
Package: guile-git
...
Depends: guile-2.2, guile-bytestructures, libgit2-dev
...
```

As you can see, the package `guile-git` depends on `guile-2.2`, meaning that it
was likely built for Guile v2.2. This means that if you decided to use Guile
v3.0 on Ubuntu Focal, you would need to build guile-git from source instead of
using the distribution package.

On Ubuntu Hirsute:

```sh
$ apt show guile-git
Package: guile-git
...
Depends: guile-3.0 | guile-2.2, guile-bytestructures (>= 1.0.7-3~), libgit2-dev (>= 1.0)
...
```

In this case, `guile-git` depends on either `guile-3.0` or `guile-2.2`, meaning
that it would work no matter what Guile version you decided to use.

###### Corner case: Multiple versions of Guile on one system

It is recommended to only install one version of Guile, so that build systems do
not get confused about which Guile to use.

However, if you insist on having both Guile v2.2 and Guile v3.0 installed on
your system, then you need to **consistently** specify one of
`GUILE_EFFECTIVE_VERSION=3.0` or `GUILE_EFFECTIVE_VERSION=2.2` to all
`./configure` invocations for Guix and its dependencies.

##### Installing Guile

Guile is most likely already packaged for your distribution, so after you have
[chosen a Guile version](#choosing-a-guile-version-and-sticking-to-it), install
it via your distribution's package manager.

If your distribution splits packages into `-dev`-suffixed and
non-`-dev`-suffixed sub-packages (as is the case for Debian-derived
distributions), please make sure to install both. For example, to install Guile
v2.2 on Debian/Ubuntu:

```sh
apt install guile-2.2 guile-2.2-dev
```

#### Mixing distribution packages and source-built packages

At the time of writing, most distributions have _some_ of Guix's dependencies
packaged, but not all. This means that you may want to install the distribution
package for some dependencies, and manually build-from-source for others.

Distribution packages usually install to `/usr`, which is different from the
default `./configure` prefix of source-built packages: `/usr/local`.

This means that if you mix-and-match distribution packages and source-built
packages and do not specify exactly `--prefix=/usr` to `./configure` for
source-built packages, you will need to augment the `GUILE_LOAD_PATH` and
`GUILE_LOAD_COMPILED_PATH` environment variables so that Guile will look
under the right prefix and find your source-built packages.

For example, if you are using Guile v2.2, and have Guile packages in the
`/usr/local` prefix, either add the following lines to your `.profile` or
`.bash_profile` so that the environment variable is properly set for all future
shell logins, or paste the lines into a POSIX-style shell to temporarily modify
the environment variables of your current shell session.

```sh
# Help Guile v2.2.x find packages in /usr/local
export GUILE_LOAD_PATH="/usr/local/share/guile/site/2.2${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
export GUILE_LOAD_COMPILED_PATH="/usr/local/lib/guile/2.2/site-ccache${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_COMPILED_LOAD_PATH"
```

Note that these environment variables are used to check for packages during
`./configure`, so they should be set as soon as possible should you want to use
a prefix other than `/usr`.

#### Building and installing source-built packages

***IMPORTANT**: A few dependencies have non-obvious quirks/errata which are
documented in the sub-sections immediately below. Please read these sections
before proceeding to build and install these packages.*

Although you should always refer to the README or INSTALL files for the most
accurate information, most of these dependencies use autoconf-style build
systems (check if there's a `configure.ac` file), and will likely do the right
thing with the following:

Clone the repository and check out the latest release:
```sh
git clone <git-repo-of-dependency>/<dependency>.git
cd <dependency>
git tag -l  # check for the latest release
git checkout <latest-release>
```

For autoconf-based build systems (if `./autogen.sh` or `configure.ac` exists at
the root of the repository):

```sh
./autogen.sh || autoreconf -vfi
./configure --prefix=<prefix>
make
sudo make install
```

For CMake-based build systems (if `CMakeLists.txt` exists at the root of the
repository):

```sh
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=<prefix>
sudo cmake --build . --target install
```

If you choose not to specify exactly `--prefix=/usr` to `./configure`, please
make sure you've carefully read the [previous section] on mixing distribution
packages and source-built packages.

##### Binding packages require `-dev`-suffixed packages

Relevant for:
- Everyone

When building bindings, the `-dev`-suffixed version of the original package
needs to be installed. For example, building `Guile-zlib` on Debian-derived
distributions requires that `zlib1g-dev` is installed.

When using bindings, the `-dev`-suffixed version of the original package still
needs to be installed. This is particularly problematic when distribution
packages are mispackaged like `guile-sqlite3` is in Ubuntu Focal such that
installing `guile-sqlite3` does not automatically install `libsqlite3-dev` as a
dependency.

Below is a list of relevant Guile bindings and their corresponding `-dev`
packages in Debian at the time of writing.

| Guile binding package | -dev Debian package |
|-----------------------|---------------------|
| guile-gcrypt          | libgcrypt-dev       |
| guile-git             | libgit2-dev         |
| guile-lzlib           | liblz-dev           |
| guile-ssh             | libssh-dev          |
| guile-sqlite3         | libsqlite3-dev      |
| guile-zlib            | zlib1g-dev          |

##### `guile-git` actually depends on `libgit2 >= 1.1`

Relevant for:
- Those building `guile-git` from source against `libgit2 < 1.1`
- Those installing `guile-git` from their distribution where `guile-git` is
  built against `libgit2 < 1.1`

As of v0.4.0, `guile-git` claims to only require `libgit2 >= 0.28.0`, however,
it actually requires `libgit2 >= 1.1`, otherwise, it will be confused by a
reference of `origin/keyring`: instead of interpreting the reference as "the
'keyring' branch of the 'origin' remote", the reference is interpreted as "the
branch literally named 'origin/keyring'"

This is especially notable because Ubuntu Focal packages `libgit2 v0.28.4`, and
`guile-git` is built against it.

Should you be in this situation, you need to build both `libgit2 v1.1.x` and
`guile-git` from source.

Source: https://logs.guix.gnu.org/guix/2020-11-12.log#232527

##### `{scheme,guile}-bytestructures` v1.0.8 and v1.0.9 are broken for Guile v2.2

Relevant for:
- Those building `{scheme,guile}-bytestructures` from source against Guile v2.2

Commit
[707eea3](https://github.com/TaylanUB/scheme-bytestructures/commit/707eea3a85e1e375e86702229ebf73d496377669)
introduced a regression for Guile v2.2 and was first included in v1.0.8, this
was later corrected in commit
[ec9a721](https://github.com/TaylanUB/scheme-bytestructures/commit/ec9a721957c17bcda13148f8faa5f06934431ff7)
and included in v1.1.0.

TL;DR If you decided to use Guile v2.2, do not use `{scheme,guile}-bytestructures` v1.0.8 or v1.0.9.

### Building and Installing Guix itself

Start by cloning Guix:

```
git clone https://git.savannah.gnu.org/git/guix.git
cd guix
```

You will likely want to build the latest release, however, if the latest release
when you're reading this is still 1.2.0 then you may want to use 95aca29 instead
to avoid a problem in the GnuTLS test suite.

```
git branch -a -l 'origin/version-*'  # check for the latest release
git checkout <latest-release>
```

Bootstrap the build system:
```
./bootstrap
```

Configure with the recommended `--localstatedir` flag:
```
./configure --localstatedir=/var
```

Note: If you intend to hack on Guix in the future, you will need to supply the
same `--localstatedir=` flag for all future Guix `./configure` invocations. See
the last paragraph of this
[section](https://guix.gnu.org/manual/en/html_node/Requirements.html) for more
details.

Build Guix (this will take a while):
```
make -j$(nproc)
```

Install Guix:

```
sudo make install
```

### Post-"build from source" Setup

#### Creating and starting a `guix-daemon-original` service with a fixed `argv[0]`

At this point, guix will be installed to `${bindir}`, which is likely
`/usr/local/bin` if you did not override directory variables at
`./configure`-time. More information on standard Automake directory variables
can be found
[here](https://www.gnu.org/software/automake/manual/html_node/Standard-Directory-Variables.html).

However, the Guix init scripts and service configurations for Upstart, systemd,
SysV, and OpenRC are installed (in `${libdir}`) to launch
`${localstatedir}/guix/profiles/per-user/root/current-guix/bin/guix-daemon`,
which does not yet exist, and will only exist after [`root` performs their first
`guix pull`](#guix-pull-as-root).

We need to create a `-original` version of these init scripts that's pointed to
the binaries we just built and `make install`'ed in `${bindir}` (normally,
`/usr/local/bin`).

Example for `systemd`, run as `root`:

```sh
# Create guix-daemon-original.service by modifying guix-daemon.service
libdir=# set according to your PREFIX (default is /usr/local/lib)
bindir="$(dirname $(command -v guix-daemon))"
sed -E -e "s|/\S*/guix/profiles/per-user/root/current-guix/bin/guix-daemon|${bindir}/guix-daemon|" "${libdir}"/systemd/system/guix-daemon.service > /etc/systemd/system/guix-daemon-original.service
chmod 664 /etc/systemd/system/guix-daemon-original.service

# Make systemd recognize the new service
systemctl daemon-reload

# Make sure that the non-working guix-daemon.service is stopped and disabled
systemctl stop guix-daemon
systemctl disable guix-daemon

# Make sure that the working guix-daemon-original.service is started and enabled
systemctl enable guix-daemon-original
systemctl start guix-daemon-original
```

#### Creating `guix-daemon` users / groups

Please see the [relevant
section](https://guix.gnu.org/manual/en/html_node/Build-Environment-Setup.html)
in the Guix Reference Manual for more details.

## Optional setup

At this point, you are set up to [use Guix to build Bitcoin
Core](./README.md#usage). However, if you want to polish your setup a bit and
make it "what Guix intended", then read the next few subsections.

### Add an `/etc/profile.d` entry

This section definitely does not apply to you if you installed Guix using:
1. The shell installer script
2. fanquake's Docker image
3. Debian's `guix` package

#### Background

Although Guix knows how to update itself and its packages, it does so in a
non-invasive way (it does not modify `/usr/local/bin/guix`).

Instead, it does the following:

- After a `guix pull`, it updates
  `/var/guix/profiles/per-user/$USER/current-guix`, and creates a symlink
  targeting this directory at `$HOME/.config/guix/current`

- After a `guix install`, it updates
  `/var/guix/profiles/per-user/$USER/guix-profile`, and creates a symlink
  targeting this directory at `$HOME/.guix-profile`

Therefore, in order for these operations to affect your shell/desktop sessions
(and for the principle of least astonishment to hold), their corresponding
directories have to be added to well-known environment variables like `$PATH`,
`$INFOPATH`, `$XDG_DATA_DIRS`, etc.

In other words, if `$HOME/.config/guix/current/bin` does not exist in your
`$PATH`, a `guix pull` will have no effect on what `guix` you are using. Same
goes for `$HOME/.guix-profile/bin`, `guix install`, and installed packages.

Helpfully, after a `guix pull` or `guix install`, a message will be printed like
so:

```
hint: Consider setting the necessary environment variables by running:

     GUIX_PROFILE="$HOME/.guix-profile"
     . "$GUIX_PROFILE/etc/profile"

Alternately, see `guix package --search-paths -p "$HOME/.guix-profile"'.
```

However, this is somewhat tedious to do for both `guix pull` and `guix install`
for each user on the system that wants to properly use `guix`. I recommend that
you instead add an entry to `/etc/profile.d` instead. This is done by default
when installing the Debian package later than 1.2.0-4 and when using the shell
script installer.

#### Instructions

Create `/etc/profile.d/guix.sh` with the following content:
```sh
# _GUIX_PROFILE: `guix pull` profile
_GUIX_PROFILE="$HOME/.config/guix/current"
if [ -L $_GUIX_PROFILE ]; then
  export PATH="$_GUIX_PROFILE/bin${PATH:+:}$PATH"
  # Export INFOPATH so that the updated info pages can be found
  # and read by both /usr/bin/info and/or $GUIX_PROFILE/bin/info
  # When INFOPATH is unset, add a trailing colon so that Emacs
  # searches 'Info-default-directory-list'.
  export INFOPATH="$_GUIX_PROFILE/share/info:$INFOPATH"
fi

# GUIX_PROFILE: User's default profile
GUIX_PROFILE="$HOME/.guix-profile"
[ -L $GUIX_PROFILE ] || return
GUIX_LOCPATH="$GUIX_PROFILE/lib/locale"
export GUIX_PROFILE GUIX_LOCPATH

[ -f "$GUIX_PROFILE/etc/profile" ] && . "$GUIX_PROFILE/etc/profile"

# set XDG_DATA_DIRS to include Guix installations
export XDG_DATA_DIRS="$GUIX_PROFILE/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}"
```

Please note that this will not take effect until the next shell or desktop
session (log out and log back in).

### `guix pull` as root

Before you do this, you need to read the section on [choosing your security
model][security-model] and adjust `guix` and `guix-daemon` flags according to
your choice, as invoking `guix pull` may pull substitutes from substitute
servers (which you may not want).

As mentioned in a previous section, Guix expects
`${localstatedir}/guix/profiles/per-user/root/current-guix` to be populated with
`root`'s Guix profile, `guix pull`-ed and built by some former version of Guix.
However, this is not the case when we build from source. Therefore, we need to
perform a `guix pull` as `root`:

```sh
sudo --login guix pull --branch=version-<latest-release-version>
# or
sudo --login guix pull --commit=<particular-commit>
```

`guix pull` is quite a long process (especially if you're using
`--no-substitute`). If you encounter build problems, please refer to the
[troubleshooting section](#troubleshooting).

Note that running a bare `guix pull` with no commit or branch specified will
pull the latest commit on Guix's master branch, which is likely fine, but not
recommended.

If you installed Guix from source, you may get an error like the following:
```sh
error: while creating symlink '/root/.config/guix/current' No such file or directory
```
To resolve this, simply:
```
sudo mkdir -p /root/.config/guix
```
Then try the `guix pull` command again.

After the `guix pull` finishes successfully,
`${localstatedir}/guix/profiles/per-user/root/current-guix` should be populated.

#### Using the newly-pulled `guix` by restarting the daemon

Depending on how you installed Guix, you should now make sure that your init
scripts and service configurations point to the newly-pulled `guix-daemon`.

##### If you built Guix from source

If you followed the instructions for [fixing argv\[0\]][fix-argv0], you can now
do the following:

```sh
systemctl stop guix-daemon-original
systemctl disable guix-daemon-original

systemctl enable guix-daemon
systemctl start guix-daemon
```

##### If you installed Guix via the Debian/Ubuntu distribution packages

You will need to create a `guix-daemon-latest` service which points to the new
`guix` rather than a pinned one.

```sh
# Create guix-daemon-latest.service by modifying guix-daemon.service
sed -E -e "s|/usr/bin/guix-daemon|/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon|" /etc/systemd/system/guix-daemon.service > /lib/systemd/system/guix-daemon-latest.service
chmod 664 /lib/systemd/system/guix-daemon-latest.service

# Make systemd recognize the new service
systemctl daemon-reload

# Make sure that the old guix-daemon.service is stopped an
Download .txt
gitextract_g53w6fs0/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE.md
├── .gitignore
├── .gitmodules
├── .mailmap
├── .travis.yml
├── CONTRIBUTING.md
├── COPYING
├── COPYING_munt
├── COPYING_upstream
├── INSTALL.md
├── Makefile.am
├── README.md
├── autogen.sh
├── changelog.txt
├── configure.ac
├── contrib/
│   ├── Munt-cli.bash-completion
│   ├── Munt-daemon.bash-completion
│   ├── Munt-tx.bash-completion
│   ├── README.md
│   ├── devtools/
│   │   ├── security-check.py
│   │   ├── split-debug.sh.in
│   │   ├── symbol-check.py
│   │   └── test-security-check.py
│   ├── guix/
│   │   ├── INSTALL.md
│   │   ├── README.md
│   │   ├── guix-attest
│   │   ├── guix-build
│   │   ├── guix-clean
│   │   ├── guix-codesign
│   │   ├── guix-verify
│   │   ├── libexec/
│   │   │   ├── build.sh
│   │   │   ├── codesign.sh
│   │   │   └── prelude.bash
│   │   └── manifest.scm
│   ├── init/
│   │   ├── README.md
│   │   ├── daemon.conf
│   │   ├── daemon.init
│   │   ├── daemon.openrc
│   │   ├── daemon.openrcconf
│   │   └── daemon.service
│   ├── macdeploy/
│   │   ├── DS_Store
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── background.tiff
│   │   ├── background@2x.tiff
│   │   ├── custom_dsstore.py
│   │   ├── detached-sig-apply.sh
│   │   ├── detached-sig-create.sh
│   │   ├── extract-osx-sdk.sh
│   │   └── fancy.plist
│   ├── qos/
│   │   ├── README.md
│   │   └── tc.sh
│   ├── shell/
│   │   ├── git-utils.bash
│   │   └── realpath.bash
│   ├── testgen/
│   │   ├── README.md
│   │   ├── base58.py
│   │   └── gen_base58_test_vectors.py
│   ├── tidy_datadir.sh
│   └── zmq/
│       ├── zmq_sub.py
│       └── zmq_sub3.4.py
├── dependabot.yml
├── depends/
│   ├── .gitignore
│   ├── README.md
│   ├── builders/
│   │   ├── darwin.mk
│   │   ├── default.mk
│   │   ├── linux.mk
│   │   ├── mingw32.mk
│   │   └── mingw64.mk
│   ├── config.guess
│   ├── config.site.in
│   ├── config.sub
│   ├── description.md
│   ├── funcs.mk
│   ├── gen_id
│   ├── hosts/
│   │   ├── android.mk
│   │   ├── darwin.mk
│   │   ├── default.mk
│   │   ├── ios.mk
│   │   ├── linux.mk
│   │   ├── mingw32.mk
│   │   └── mingw64.mk
│   ├── packages/
│   │   ├── bdb.mk
│   │   ├── boost.mk
│   │   ├── djinni.mk
│   │   ├── electron_node_headers.mk
│   │   ├── libcryptopp.mk
│   │   ├── libcryptoppunity.mk
│   │   ├── libevent.mk
│   │   ├── miniupnpc.mk
│   │   ├── native_biplist.mk
│   │   ├── native_cctools.mk
│   │   ├── native_cdrkit.mk
│   │   ├── native_clang.mk
│   │   ├── native_ds_store.mk
│   │   ├── native_libdmg-hfsplus.mk
│   │   ├── native_libtapi.mk
│   │   ├── native_mac_alias.mk
│   │   ├── node_addon_api.mk
│   │   ├── openssl.mk
│   │   ├── packages.mk
│   │   ├── protobufunity.mk
│   │   ├── qrencode.mk
│   │   ├── rapidcheck.mk
│   │   ├── zeromq.mk
│   │   └── zlib.mk
│   ├── packages.md
│   ├── patches/
│   │   └── electron_node_headers/
│   │       └── node.def
│   └── sdk.guess
├── developer-tools/
│   ├── README.md
│   ├── build_docker.sh
│   ├── build_node.sh
│   ├── djinni_generate_bindings.sh
│   ├── docker-build/
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   └── build.sh
│   ├── genbootstrap.sh
│   ├── gencheckpoints.sh
│   ├── genstaticdiffs.sh
│   ├── genstaticfilters.sh
│   ├── mobile/
│   │   ├── android/
│   │   │   ├── build_android_core.sh
│   │   │   ├── build_targets/
│   │   │   │   ├── aarch64-linux-android-clang
│   │   │   │   ├── arm-linux-androideabi-clang
│   │   │   │   ├── x86-clang
│   │   │   │   └── x86_64-clang
│   │   │   ├── fetch_android.sh
│   │   │   └── ndk_definitions.conf
│   │   ├── ios/
│   │   │   ├── build_ios_core.sh
│   │   │   └── build_targets/
│   │   │       ├── aarch64
│   │   │       └── x86_64
│   │   └── thirdparty.licenses.sh
│   ├── node/
│   │   └── node.def
│   ├── private.conf.example
│   └── python/
│       ├── genbootstrap.py
│       ├── gencheckpoints.py
│       ├── genstaticdiffs.py
│       └── genstaticfilters.py
├── doc/
│   ├── .gitignore
│   ├── Doxyfile.in
│   ├── REST-interface.md
│   ├── benchmarking.md
│   ├── building.md
│   ├── building_windows.md
│   ├── developer-notes.md
│   ├── developer_guidelines.md
│   ├── files.md
│   ├── fuzzing.md
│   ├── init.md
│   ├── reduce-traffic.md
│   ├── stack_trace_from_frozen_process.md
│   ├── translation_strings_policy.md
│   └── zmq.md
├── libscriptconsensus.pc.in
├── mining_documentation/
│   └── historical_list_of_mining_pools.md
├── share/
│   ├── genbuild.sh
│   ├── rpcauth/
│   │   ├── README.md
│   │   └── rpcauth.py
│   ├── rpcuser/
│   │   ├── README.md
│   │   └── rpcuser.py
│   ├── seeds/
│   │   ├── nodes_main.txt
│   │   └── nodes_test.txt
│   └── setup.nsi.in
├── src/
│   ├── LRUCache/
│   │   ├── COPYING
│   │   └── LRUCache11.hpp
│   ├── Makefile.am
│   ├── Makefile.bench.include
│   ├── Makefile.crc32c.include
│   ├── Makefile.leveldb.include
│   ├── Makefile.sigmabench.include
│   ├── Makefile.test.include
│   ├── Makefile.univalue.include
│   ├── addrdb.cpp
│   ├── addrdb.h
│   ├── addrman.cpp
│   ├── addrman.h
│   ├── alert.cpp
│   ├── alert.h
│   ├── amount.h
│   ├── appname.h
│   ├── arith_uint256.cpp
│   ├── arith_uint256.h
│   ├── attributes.h
│   ├── base58.cpp
│   ├── base58.h
│   ├── bench/
│   │   ├── .gitignore
│   │   ├── Examples.cpp
│   │   ├── base58.cpp
│   │   ├── bench.cpp
│   │   ├── bench.h
│   │   ├── bench_munt.cpp
│   │   ├── bench_sigma.cpp
│   │   ├── ccoins_caching.cpp
│   │   ├── checkblock.cpp
│   │   ├── checkqueue.cpp
│   │   ├── coin_selection.cpp
│   │   ├── crypto_hash.cpp
│   │   ├── data/
│   │   │   └── block413567.raw
│   │   ├── lockedpool.cpp
│   │   ├── mempool_eviction.cpp
│   │   ├── perf.cpp
│   │   ├── perf.h
│   │   ├── prevector_destructor.cpp
│   │   ├── rollingbloom.cpp
│   │   └── verify_script.cpp
│   ├── blockencodings.cpp
│   ├── blockencodings.h
│   ├── blockfilter.cpp
│   ├── blockfilter.h
│   ├── blockstore.cpp
│   ├── blockstore.h
│   ├── bloom.cpp
│   ├── bloom.h
│   ├── chain.cpp
│   ├── chain.h
│   ├── chainparams.cpp
│   ├── chainparams.h
│   ├── chainparamsbase.cpp
│   ├── chainparamsbase.h
│   ├── chainparamsseeds.h
│   ├── checkpoints.cpp
│   ├── checkpoints.h
│   ├── checkqueue.h
│   ├── cli-main.cpp
│   ├── cli-res.rc
│   ├── clientversion.cpp
│   ├── clientversion.h
│   ├── coins.cpp
│   ├── coins.h
│   ├── compat/
│   │   ├── arch.h
│   │   ├── assumptions.h
│   │   ├── byteswap.h
│   │   ├── cpuid.h
│   │   ├── endian.h
│   │   ├── glibc_sanity.cpp
│   │   ├── glibcxx_sanity.cpp
│   │   ├── sanity.h
│   │   ├── sse.h
│   │   ├── sse2neon.h
│   │   ├── strnlen.cpp
│   │   └── sys.h
│   ├── compat.h
│   ├── compressor.cpp
│   ├── compressor.h
│   ├── config/
│   │   └── .empty
│   ├── consensus/
│   │   ├── consensus.h
│   │   ├── merkle.cpp
│   │   ├── merkle.h
│   │   ├── params.h
│   │   ├── tx_verify.cpp
│   │   ├── tx_verify.h
│   │   └── validation.h
│   ├── controllers/
│   │   ├── rpccontroller.cpp
│   │   └── rpccontroller.h
│   ├── core_io.h
│   ├── core_memusage.h
│   ├── core_read.cpp
│   ├── core_write.cpp
│   ├── crc32c/
│   │   ├── .appveyor.yml
│   │   ├── .clang-format
│   │   ├── .clang_complete
│   │   ├── .gitignore
│   │   ├── .gitmodules
│   │   ├── .travis.yml
│   │   ├── .ycm_extra_conf.py
│   │   ├── AUTHORS
│   │   ├── CMakeLists.txt
│   │   ├── CONTRIBUTING.md
│   │   ├── Crc32cConfig.cmake.in
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── include/
│   │   │   └── crc32c/
│   │   │       └── crc32c.h
│   │   └── src/
│   │       ├── crc32c.cc
│   │       ├── crc32c_arm64.cc
│   │       ├── crc32c_arm64.h
│   │       ├── crc32c_arm64_check.h
│   │       ├── crc32c_arm64_unittest.cc
│   │       ├── crc32c_benchmark.cc
│   │       ├── crc32c_capi_unittest.c
│   │       ├── crc32c_config.h.in
│   │       ├── crc32c_extend_unittests.h
│   │       ├── crc32c_internal.h
│   │       ├── crc32c_portable.cc
│   │       ├── crc32c_portable_unittest.cc
│   │       ├── crc32c_prefetch.h
│   │       ├── crc32c_prefetch_unittest.cc
│   │       ├── crc32c_read_le.h
│   │       ├── crc32c_read_le_unittest.cc
│   │       ├── crc32c_round_up.h
│   │       ├── crc32c_round_up_unittest.cc
│   │       ├── crc32c_sse42.cc
│   │       ├── crc32c_sse42.h
│   │       ├── crc32c_sse42_check.h
│   │       ├── crc32c_sse42_unittest.cc
│   │       ├── crc32c_test_main.cc
│   │       └── crc32c_unittest.cc
│   ├── crypto/
│   │   ├── chacha20.cpp
│   │   ├── chacha20.h
│   │   ├── common.h
│   │   ├── hash/
│   │   │   ├── city.cpp
│   │   │   ├── city.h
│   │   │   ├── cityconfig.h
│   │   │   ├── hash.h
│   │   │   ├── scrypt-sse2.cpp
│   │   │   ├── scrypt.cpp
│   │   │   ├── scrypt.h
│   │   │   └── sigma/
│   │   │       ├── README.md
│   │   │       ├── argon_echo/
│   │   │       │   ├── argon2.cpp
│   │   │       │   ├── argon_echo.h
│   │   │       │   ├── blake2/
│   │   │       │   │   ├── blake2-impl.h
│   │   │       │   │   ├── blake2.h
│   │   │       │   │   ├── blake2b.cpp
│   │   │       │   │   ├── blamka-round-opt_avx2.h
│   │   │       │   │   ├── blamka-round-opt_avx512f.h
│   │   │       │   │   ├── blamka-round-opt_sse2.h
│   │   │       │   │   ├── blamka-round-opt_sse3.h
│   │   │       │   │   └── blamka-round-ref.h
│   │   │       │   ├── core.cpp
│   │   │       │   ├── core.h
│   │   │       │   ├── opt/
│   │   │       │   │   ├── core_opt_arm_cortex_a53.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a53.h
│   │   │       │   │   ├── core_opt_arm_cortex_a53_aes.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a53_aes.h
│   │   │       │   │   ├── core_opt_arm_cortex_a57.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a57.h
│   │   │       │   │   ├── core_opt_arm_cortex_a57_aes.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a57_aes.h
│   │   │       │   │   ├── core_opt_arm_cortex_a72.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a72.h
│   │   │       │   │   ├── core_opt_arm_cortex_a72_aes.cpp
│   │   │       │   │   ├── core_opt_arm_cortex_a72_aes.h
│   │   │       │   │   ├── core_opt_arm_thunderx_aes.cpp
│   │   │       │   │   ├── core_opt_arm_thunderx_aes.h
│   │   │       │   │   ├── core_opt_avx.cpp
│   │   │       │   │   ├── core_opt_avx.h
│   │   │       │   │   ├── core_opt_avx2.cpp
│   │   │       │   │   ├── core_opt_avx2.h
│   │   │       │   │   ├── core_opt_avx2_aes.cpp
│   │   │       │   │   ├── core_opt_avx2_aes.h
│   │   │       │   │   ├── core_opt_avx512f.cpp
│   │   │       │   │   ├── core_opt_avx512f.h
│   │   │       │   │   ├── core_opt_avx512f_aes.cpp
│   │   │       │   │   ├── core_opt_avx512f_aes.h
│   │   │       │   │   ├── core_opt_avx_aes.cpp
│   │   │       │   │   ├── core_opt_avx_aes.h
│   │   │       │   │   ├── core_opt_hybrid.cpp
│   │   │       │   │   ├── core_opt_hybrid.h
│   │   │       │   │   ├── core_opt_sse2.cpp
│   │   │       │   │   ├── core_opt_sse2.h
│   │   │       │   │   ├── core_opt_sse2_aes.cpp
│   │   │       │   │   ├── core_opt_sse2_aes.h
│   │   │       │   │   ├── core_opt_sse3.cpp
│   │   │       │   │   ├── core_opt_sse3.h
│   │   │       │   │   ├── core_opt_sse3_aes.cpp
│   │   │       │   │   ├── core_opt_sse3_aes.h
│   │   │       │   │   ├── core_opt_sse4.cpp
│   │   │       │   │   ├── core_opt_sse4.h
│   │   │       │   │   ├── core_opt_sse4_aes.cpp
│   │   │       │   │   └── core_opt_sse4_aes.h
│   │   │       │   └── ref.cpp
│   │   │       ├── echo256/
│   │   │       │   ├── COPYING
│   │   │       │   ├── echo256_opt.cpp
│   │   │       │   ├── echo256_opt.h
│   │   │       │   ├── opt/
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a53_aes.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a57_aes.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72.h
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_cortex_a72_aes.h
│   │   │       │   │   ├── echo256_opt_arm_thunderx_aes.cpp
│   │   │       │   │   ├── echo256_opt_arm_thunderx_aes.h
│   │   │       │   │   ├── echo256_opt_avx.cpp
│   │   │       │   │   ├── echo256_opt_avx.h
│   │   │       │   │   ├── echo256_opt_avx2.cpp
│   │   │       │   │   ├── echo256_opt_avx2.h
│   │   │       │   │   ├── echo256_opt_avx2_aes.cpp
│   │   │       │   │   ├── echo256_opt_avx2_aes.h
│   │   │       │   │   ├── echo256_opt_avx512f.cpp
│   │   │       │   │   ├── echo256_opt_avx512f.h
│   │   │       │   │   ├── echo256_opt_avx512f_aes.cpp
│   │   │       │   │   ├── echo256_opt_avx512f_aes.h
│   │   │       │   │   ├── echo256_opt_avx_aes.cpp
│   │   │       │   │   ├── echo256_opt_avx_aes.h
│   │   │       │   │   ├── echo256_opt_sse3.cpp
│   │   │       │   │   ├── echo256_opt_sse3.h
│   │   │       │   │   ├── echo256_opt_sse3_aes.cpp
│   │   │       │   │   ├── echo256_opt_sse3_aes.h
│   │   │       │   │   ├── echo256_opt_sse4.cpp
│   │   │       │   │   ├── echo256_opt_sse4.h
│   │   │       │   │   ├── echo256_opt_sse4_aes.cpp
│   │   │       │   │   └── echo256_opt_sse4_aes.h
│   │   │       │   └── sphlib/
│   │   │       │       ├── aes_helper.c
│   │   │       │       ├── echo.cpp
│   │   │       │       ├── sph_echo.h
│   │   │       │       └── sph_types.h
│   │   │       ├── shavite3_256/
│   │   │       │   ├── COPYING
│   │   │       │   ├── opt/
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a53_aes.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a57_aes.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72.h
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_cortex_a72_aes.h
│   │   │       │   │   ├── shavite3_256_opt_arm_thunderx_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_arm_thunderx_aes.h
│   │   │       │   │   ├── shavite3_256_opt_avx.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx.h
│   │   │       │   │   ├── shavite3_256_opt_avx2.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx2.h
│   │   │       │   │   ├── shavite3_256_opt_avx2_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx2_aes.h
│   │   │       │   │   ├── shavite3_256_opt_avx512f.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx512f.h
│   │   │       │   │   ├── shavite3_256_opt_avx512f_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx512f_aes.h
│   │   │       │   │   ├── shavite3_256_opt_avx_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_avx_aes.h
│   │   │       │   │   ├── shavite3_256_opt_sse3.cpp
│   │   │       │   │   ├── shavite3_256_opt_sse3.h
│   │   │       │   │   ├── shavite3_256_opt_sse3_aes.cpp
│   │   │       │   │   ├── shavite3_256_opt_sse3_aes.h
│   │   │       │   │   ├── shavite3_256_opt_sse4.cpp
│   │   │       │   │   ├── shavite3_256_opt_sse4.h
│   │   │       │   │   ├── shavite3_256_opt_sse4_aes.cpp
│   │   │       │   │   └── shavite3_256_opt_sse4_aes.h
│   │   │       │   ├── ref/
│   │   │       │   │   ├── AESround.h
│   │   │       │   │   ├── portable.h
│   │   │       │   │   ├── shavite3_256_ref_compress.h
│   │   │       │   │   ├── shavite3_ref.cpp
│   │   │       │   │   └── shavite3_ref.h
│   │   │       │   ├── shavite3_256_aesni.h
│   │   │       │   ├── shavite3_256_opt.cpp
│   │   │       │   └── shavite3_256_opt.h
│   │   │       ├── sigma.cpp
│   │   │       └── sigma.h
│   │   ├── hmac_sha256.cpp
│   │   ├── hmac_sha256.h
│   │   ├── hmac_sha512.cpp
│   │   ├── hmac_sha512.h
│   │   ├── ripemd160.cpp
│   │   ├── ripemd160.h
│   │   ├── scrypt/
│   │   │   ├── COPYING
│   │   │   ├── README.md
│   │   │   ├── crypto_scrypt.cpp
│   │   │   ├── crypto_scrypt.h
│   │   │   ├── crypto_scrypt_smix.cpp
│   │   │   ├── crypto_scrypt_smix.h
│   │   │   ├── crypto_scrypt_smix_sse2.cpp
│   │   │   ├── crypto_scrypt_smix_sse2.h
│   │   │   ├── sha256_scrypt.cpp
│   │   │   └── sha256_scrypt.h
│   │   ├── sha1.cpp
│   │   ├── sha1.h
│   │   ├── sha256.cpp
│   │   ├── sha256.h
│   │   ├── sha256_arm_shani.cpp
│   │   ├── sha256_sse4.cpp
│   │   ├── sha256_x86_shani.cpp
│   │   ├── sha512.cpp
│   │   └── sha512.h
│   ├── cuckoocache.h
│   ├── daemon-main.cpp
│   ├── daemon-res.rc
│   ├── data/
│   │   ├── chainparams_mainnet_static_checkpoint_data.cpp
│   │   ├── core-packages.licenses
│   │   ├── static_diff_data.cpp
│   │   ├── staticfiltercp
│   │   └── staticfiltercptestnet
│   ├── dbwrapper.cpp
│   ├── dbwrapper.h
│   ├── frontend/
│   │   ├── android/
│   │   │   └── unity_wallet/
│   │   │       ├── .gitignore
│   │   │       ├── app/
│   │   │       │   ├── build.gradle
│   │   │       │   ├── proguard-rules.pro
│   │   │       │   └── src/
│   │   │       │       ├── androidTest/
│   │   │       │       │   └── java/
│   │   │       │       │       └── unity_wallet/
│   │   │       │       │           └── ExampleInstrumentedTest.kt
│   │   │       │       ├── main/
│   │   │       │       │   ├── AndroidManifest.xml
│   │   │       │       │   ├── assets/
│   │   │       │       │   │   ├── font_awesome_free.license.txt
│   │   │       │       │   │   ├── font_awesome_pro.license.txt
│   │   │       │       │   │   └── glyphicons_license.txt
│   │   │       │       │   ├── java/
│   │   │       │       │   │   ├── barcodereader/
│   │   │       │       │   │   │   ├── BarcodeCaptureActivity.kt
│   │   │       │       │   │   │   ├── BarcodeTracker.kt
│   │   │       │       │   │   │   ├── CameraSource.kt
│   │   │       │       │   │   │   └── CameraSourcePreview.kt
│   │   │       │       │   │   └── unity_wallet/
│   │   │       │       │   │       ├── ActivityManager.kt
│   │   │       │       │   │       ├── AppContext.kt
│   │   │       │       │   │       ├── Authentication.kt
│   │   │       │       │   │       ├── BackgroundSync.kt
│   │   │       │       │   │       ├── Common.kt
│   │   │       │       │   │       ├── Config.kt
│   │   │       │       │   │       ├── Constants.kt
│   │   │       │       │   │       ├── Currency.kt
│   │   │       │       │   │       ├── LicenseActivity.kt
│   │   │       │       │   │       ├── SendCoinsFragment.kt
│   │   │       │       │   │       ├── TransactionInfoActivity.kt
│   │   │       │       │   │       ├── URIHandlerActivity.kt
│   │   │       │       │   │       ├── UnityCore.kt
│   │   │       │       │   │       ├── UpgradeActivity.kt
│   │   │       │       │   │       ├── WalletActivity.kt
│   │   │       │       │   │       ├── WelcomeActivity.kt
│   │   │       │       │   │       ├── jniunifiedbackend/
│   │   │       │       │   │       │   ├── AccountLinkRecord.java
│   │   │       │       │   │       │   ├── AccountRecord.java
│   │   │       │       │   │       │   ├── AddressRecord.java
│   │   │       │       │   │       │   ├── BalanceRecord.java
│   │   │       │       │   │       │   ├── BannedPeerRecord.java
│   │   │       │       │   │       │   ├── BlockInfoRecord.java
│   │   │       │       │   │       │   ├── IAccountsController.java
│   │   │       │       │   │       │   ├── IAccountsListener.java
│   │   │       │       │   │       │   ├── IGenerationController.java
│   │   │       │       │   │       │   ├── IGenerationListener.java
│   │   │       │       │   │       │   ├── ILibraryController.java
│   │   │       │       │   │       │   ├── ILibraryListener.java
│   │   │       │       │   │       │   ├── IP2pNetworkController.java
│   │   │       │       │   │       │   ├── IP2pNetworkListener.java
│   │   │       │       │   │       │   ├── IRpcController.java
│   │   │       │       │   │       │   ├── IRpcListener.java
│   │   │       │       │   │       │   ├── IWalletController.java
│   │   │       │       │   │       │   ├── IWalletListener.java
│   │   │       │       │   │       │   ├── IWitnessController.java
│   │   │       │       │   │       │   ├── InputRecord.java
│   │   │       │       │   │       │   ├── LegacyWalletResult.java
│   │   │       │       │   │       │   ├── MnemonicRecord.java
│   │   │       │       │   │       │   ├── MonitorListener.java
│   │   │       │       │   │       │   ├── MonitorRecord.java
│   │   │       │       │   │       │   ├── MutationRecord.java
│   │   │       │       │   │       │   ├── OutputRecord.java
│   │   │       │       │   │       │   ├── PaymentResultStatus.java
│   │   │       │       │   │       │   ├── PeerRecord.java
│   │   │       │       │   │       │   ├── QrCodeRecord.java
│   │   │       │       │   │       │   ├── ResultRecord.java
│   │   │       │       │   │       │   ├── TransactionRecord.java
│   │   │       │       │   │       │   ├── TransactionStatus.java
│   │   │       │       │   │       │   ├── UriRecipient.java
│   │   │       │       │   │       │   ├── UriRecord.java
│   │   │       │       │   │       │   ├── WalletLockStatus.java
│   │   │       │       │   │       │   ├── WitnessAccountStatisticsRecord.java
│   │   │       │       │   │       │   ├── WitnessEstimateInfoRecord.java
│   │   │       │       │   │       │   └── WitnessFundingResultRecord.java
│   │   │       │       │   │       ├── main_activity_fragments/
│   │   │       │       │   │       │   ├── LocalCurrencyFragment.kt
│   │   │       │       │   │       │   ├── MutationFragment.kt
│   │   │       │       │   │       │   ├── ReceiveFragment.kt
│   │   │       │       │   │       │   ├── SendFragment.kt
│   │   │       │       │   │       │   ├── SettingsFragment.kt
│   │   │       │       │   │       │   └── WalletSettingsFragment.kt
│   │   │       │       │   │       ├── ui/
│   │   │       │       │   │       │   ├── AddressBookAdapter.kt
│   │   │       │       │   │       │   ├── DisplayHelpers.kt
│   │   │       │       │   │       │   ├── EnterRecoveryPhraseActivity.kt
│   │   │       │       │   │       │   ├── LocalCurrenciesAdapter.kt
│   │   │       │       │   │       │   ├── MutationAdapter.kt
│   │   │       │       │   │       │   ├── ShowRecoveryPhraseActivity.kt
│   │   │       │       │   │       │   ├── monitor/
│   │   │       │       │   │       │   │   ├── BlockListAdapter.kt
│   │   │       │       │   │       │   │   ├── BlockListFragment.kt
│   │   │       │       │   │       │   │   ├── BlockListViewModel.kt
│   │   │       │       │   │       │   │   ├── NetworkMonitorActivity.kt
│   │   │       │       │   │       │   │   ├── PeerListAdapter.kt
│   │   │       │       │   │       │   │   ├── PeerListFragment.kt
│   │   │       │       │   │       │   │   ├── PeerListViewModel.kt
│   │   │       │       │   │       │   │   └── ProcessingFragment.kt
│   │   │       │       │   │       │   └── widgets/
│   │   │       │       │   │       │       ├── ActionMultiAutoCompleteTextView.kt
│   │   │       │       │   │       │       ├── AuthenticatedRecoveryView.kt
│   │   │       │       │   │       │       ├── HideBalanceView.kt
│   │   │       │       │   │       │       ├── LockView.kt
│   │   │       │       │   │       │       └── UnityBuildInfoView.kt
│   │   │       │       │   │       └── util/
│   │   │       │       │   │           ├── ActivityHelpers.kt
│   │   │       │       │   │           ├── AppBaseActivity.kt
│   │   │       │       │   │           ├── AppBaseFragment.kt
│   │   │       │       │   │           ├── Button.kt
│   │   │       │       │   │           ├── CoroutineHelpers.kt
│   │   │       │       │   │           ├── DeviceInfo.kt
│   │   │       │       │   │           ├── SwipeToDeleteCallback.kt
│   │   │       │       │   │           └── ViewPagerTabs.java
│   │   │       │       │   └── res/
│   │   │       │       │       ├── anim/
│   │   │       │       │       │   └── shake.xml
│   │   │       │       │       ├── color/
│   │   │       │       │       │   └── bottom_nav_color_selector.xml
│   │   │       │       │       ├── drawable/
│   │   │       │       │       │   ├── ic_fontawesome_arrow_up_right_from_square.xml
│   │   │       │       │       │   ├── ic_fontawesome_arrow_up_right_from_square_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_arrow_up_right_from_square_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_bolt_lightning.xml
│   │   │       │       │       │   ├── ic_fontawesome_bolt_lightning_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_bolt_lightning_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_chart_network.xml
│   │   │       │       │       │   ├── ic_fontawesome_chart_network_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_chart_network_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_down.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_down_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_down_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_up.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_up_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_circle_arrow_up_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_copy.xml
│   │   │       │       │       │   ├── ic_fontawesome_copy_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_copy_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_cube.xml
│   │   │       │       │       │   ├── ic_fontawesome_cube_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_cube_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_gear.xml
│   │   │       │       │       │   ├── ic_fontawesome_gear_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_gear_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_lock.xml
│   │   │       │       │       │   ├── ic_fontawesome_lock_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_lock_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_share_nodes.xml
│   │   │       │       │       │   ├── ic_fontawesome_share_nodes_light.xml
│   │   │       │       │       │   ├── ic_fontawesome_share_nodes_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_list.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_list_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_list_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_x.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_x_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_square_x_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_trash.xml
│   │   │       │       │       │   ├── ic_fontawesome_trash_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_trash_solid.xml
│   │   │       │       │       │   ├── ic_fontawesome_wave_pulse.xml
│   │   │       │       │       │   ├── ic_fontawesome_wave_pulse_regular.xml
│   │   │       │       │       │   ├── ic_fontawesome_wave_pulse_solid.xml
│   │   │       │       │       │   ├── ic_launcher_foreground.xml
│   │   │       │       │       │   ├── ic_logo.xml
│   │   │       │       │       │   ├── ic_logo_white.xml
│   │   │       │       │       │   ├── ic_scan_target.xml
│   │   │       │       │       │   ├── shape_square_button.xml
│   │   │       │       │       │   ├── shape_square_button_disabled.xml
│   │   │       │       │       │   ├── shape_square_button_enabled.xml
│   │   │       │       │       │   └── shape_square_button_with_border.xml
│   │   │       │       │       ├── drawable-v24/
│   │   │       │       │       │   └── shape_square_button.xml
│   │   │       │       │       ├── layout/
│   │   │       │       │       │   ├── access_code_entry.xml
│   │   │       │       │       │   ├── access_code_recovery.xml
│   │   │       │       │       │   ├── activity_enter_recovery_phrase.xml
│   │   │       │       │       │   ├── activity_license.xml
│   │   │       │       │       │   ├── activity_main.xml
│   │   │       │       │       │   ├── activity_network_monitor.xml
│   │   │       │       │       │   ├── activity_show_recovery_phrase.xml
│   │   │       │       │       │   ├── activity_transaction_info.xml
│   │   │       │       │       │   ├── activity_upgrade.xml
│   │   │       │       │       │   ├── activity_welcome.xml
│   │   │       │       │       │   ├── add_address_entry.xml
│   │   │       │       │       │   ├── address_book_list_item.xml
│   │   │       │       │       │   ├── barcode_capture.xml
│   │   │       │       │       │   ├── block_list_fragment.xml
│   │   │       │       │       │   ├── block_row.xml
│   │   │       │       │       │   ├── content_transaction_info.xml
│   │   │       │       │       │   ├── fragment_local_currencies.xml
│   │   │       │       │       │   ├── fragment_mutation.xml
│   │   │       │       │       │   ├── fragment_receive.xml
│   │   │       │       │       │   ├── fragment_send.xml
│   │   │       │       │       │   ├── fragment_send_coins.xml
│   │   │       │       │       │   ├── local_currency_list_item.xml
│   │   │       │       │       │   ├── mutation_list_item.xml
│   │   │       │       │       │   ├── mutation_list_item_with_header.xml
│   │   │       │       │       │   ├── numeric_keypad.xml
│   │   │       │       │       │   ├── peer_list_fragment.xml
│   │   │       │       │       │   ├── peer_list_row.xml
│   │   │       │       │       │   ├── pref_about_app.xml
│   │   │       │       │       │   ├── pref_view_recovery.xml
│   │   │       │       │       │   ├── preference_fragment_layout.xml
│   │   │       │       │       │   ├── processing_fragment.xml
│   │   │       │       │       │   ├── text_input_address_label.xml
│   │   │       │       │       │   ├── transaction_info_item.xml
│   │   │       │       │       │   └── upgrade_password.xml
│   │   │       │       │       ├── layout-land/
│   │   │       │       │       │   └── barcode_capture.xml
│   │   │       │       │       ├── menu/
│   │   │       │       │       │   ├── blocks_context.xml
│   │   │       │       │       │   ├── navigation.xml
│   │   │       │       │       │   ├── network_monitor_navigation.xml
│   │   │       │       │       │   └── share_menu.xml
│   │   │       │       │       ├── mipmap-anydpi-v26/
│   │   │       │       │       │   ├── ic_launcher.xml
│   │   │       │       │       │   └── ic_launcher_round.xml
│   │   │       │       │       ├── raw/
│   │   │       │       │       │   └── license.txt
│   │   │       │       │       ├── values/
│   │   │       │       │       │   ├── colors.xml
│   │   │       │       │       │   ├── dimens.xml
│   │   │       │       │       │   ├── ic_launcher_background.xml
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   ├── styles.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ca/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-de/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rAU/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rCA/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rGB/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rUS/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-en-rZA/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-es/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-fi/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-fr/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-it/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ja/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ko/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-nl/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-no/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-pl/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-pt/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-pt-rBR/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-ru/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-v23/
│   │   │       │       │       │   └── styles.xml
│   │   │       │       │       ├── values-vi/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-zh-rCN/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       ├── values-zh-rTW/
│   │   │       │       │       │   ├── strings.xml
│   │   │       │       │       │   └── values.xml
│   │   │       │       │       └── xml/
│   │   │       │       │           ├── fragment_settings.xml
│   │   │       │       │           └── fragment_wallet_settings.xml
│   │   │       │       └── test/
│   │   │       │           └── java/
│   │   │       │               └── unity_wallet/
│   │   │       │                   └── ExampleUnitTest.kt
│   │   │       ├── build.gradle
│   │   │       ├── gradle/
│   │   │       │   └── wrapper/
│   │   │       │       ├── gradle-wrapper.jar
│   │   │       │       └── gradle-wrapper.properties
│   │   │       ├── gradle.properties
│   │   │       ├── gradlew
│   │   │       ├── gradlew.bat
│   │   │       └── settings.gradle
│   │   ├── electron_sample/
│   │   │   ├── .gitignore
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── package.json
│   │   │   ├── renderer.js
│   │   │   └── run.sh
│   │   ├── electron_vue/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── babel.config.js
│   │   │   ├── holdinAPI.js.in
│   │   │   ├── libunity/
│   │   │   │   ├── copy.js
│   │   │   │   └── generate.js
│   │   │   ├── notarize.js
│   │   │   ├── package.json
│   │   │   ├── public/
│   │   │   │   └── index.html
│   │   │   ├── setup.js
│   │   │   ├── sign.js
│   │   │   ├── src/
│   │   │   │   ├── App.vue
│   │   │   │   ├── AppStatus.js
│   │   │   │   ├── AppWallet.vue
│   │   │   │   ├── EventBus.js
│   │   │   │   ├── background.js
│   │   │   │   ├── components/
│   │   │   │   │   ├── AccountHeader.vue
│   │   │   │   │   ├── AccountTooltip.vue
│   │   │   │   │   ├── ActivityIndicator.vue
│   │   │   │   │   ├── AppLoader.vue
│   │   │   │   │   ├── ClipboardField.vue
│   │   │   │   │   ├── ConfirmDialog.vue
│   │   │   │   │   ├── CurrencyInput.vue
│   │   │   │   │   ├── ModalDialog.vue
│   │   │   │   │   ├── PhraseInput.vue
│   │   │   │   │   ├── SelectList.vue
│   │   │   │   │   ├── TransactionDetailsDialog.vue
│   │   │   │   │   ├── UnlockWalletDialog.vue
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── layout/
│   │   │   │   │       ├── AppButtonSection.vue
│   │   │   │   │       ├── AppFormField.vue
│   │   │   │   │       ├── AppSection.vue
│   │   │   │   │       ├── ContentWrapper.vue
│   │   │   │   │       ├── FooterButton.vue
│   │   │   │   │       └── MainHeader.vue
│   │   │   │   ├── css/
│   │   │   │   │   ├── app.less
│   │   │   │   │   ├── app_styles.less
│   │   │   │   │   ├── css-reset.css
│   │   │   │   │   ├── fonts.less
│   │   │   │   │   └── variables.less
│   │   │   │   ├── i18n.js
│   │   │   │   ├── layouts/
│   │   │   │   │   ├── AccountsSection.vue
│   │   │   │   │   ├── SetupLayout.vue
│   │   │   │   │   └── WalletLayout.vue
│   │   │   │   ├── locales/
│   │   │   │   │   ├── en.json
│   │   │   │   │   └── nl.json
│   │   │   │   ├── main.js
│   │   │   │   ├── router/
│   │   │   │   │   └── index.js
│   │   │   │   ├── store/
│   │   │   │   │   ├── index.js
│   │   │   │   │   ├── modules/
│   │   │   │   │   │   ├── app.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── mining.js
│   │   │   │   │   │   └── wallet.js
│   │   │   │   │   └── syncState.js
│   │   │   │   ├── unity/
│   │   │   │   │   ├── Controllers.js
│   │   │   │   │   └── LibUnity.js
│   │   │   │   ├── util.js
│   │   │   │   ├── views/
│   │   │   │   │   ├── AboutDialog/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── Account/
│   │   │   │   │   │   ├── AccountSettings.vue
│   │   │   │   │   │   ├── MiningAccount/
│   │   │   │   │   │   │   ├── Send.vue
│   │   │   │   │   │   │   ├── SetupMining.vue
│   │   │   │   │   │   │   └── index.vue
│   │   │   │   │   │   ├── SavingAccount/
│   │   │   │   │   │   │   ├── AddSavingAccount.vue
│   │   │   │   │   │   │   ├── LinkSavingAccount.vue
│   │   │   │   │   │   │   ├── OptimiseAccount.vue
│   │   │   │   │   │   │   ├── RenewAccount.vue
│   │   │   │   │   │   │   └── index.vue
│   │   │   │   │   │   ├── SpendingAccount/
│   │   │   │   │   │   │   ├── AddSpendingAccount.vue
│   │   │   │   │   │   │   ├── ConfirmTransactionDialog.vue
│   │   │   │   │   │   │   ├── Receive.vue
│   │   │   │   │   │   │   ├── Send.vue
│   │   │   │   │   │   │   ├── TransactionDetails.vue
│   │   │   │   │   │   │   ├── Transactions.vue
│   │   │   │   │   │   │   └── index.vue
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── DebugDialog/
│   │   │   │   │   │   ├── DebugConsole.vue
│   │   │   │   │   │   ├── InformationPage.vue
│   │   │   │   │   │   ├── PeerDetailsDialog.vue
│   │   │   │   │   │   ├── PeersPage.vue
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── Settings/
│   │   │   │   │   │   ├── ChangePassword.vue
│   │   │   │   │   │   ├── SettingsList.vue
│   │   │   │   │   │   ├── ViewRecoveryPhrase.vue
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   └── Setup.vue
│   │   │   │   └── walletPath.js
│   │   │   ├── ui-config.json
│   │   │   └── vue.config.js
│   │   └── lite/
│   │       ├── .gitignore
│   │       ├── README.md
│   │       ├── babel.config.js
│   │       ├── holdinAPI.js.in
│   │       ├── libunity/
│   │       │   ├── copy.js
│   │       │   └── generate.js
│   │       ├── notarize.js
│   │       ├── package.json
│   │       ├── public/
│   │       │   └── index.html
│   │       ├── setup.js
│   │       ├── sign.js
│   │       ├── src/
│   │       │   ├── App.vue
│   │       │   ├── AppStatus.js
│   │       │   ├── AppWallet.vue
│   │       │   ├── EventBus.js
│   │       │   ├── background.js
│   │       │   ├── components/
│   │       │   │   ├── AccountHeader.vue
│   │       │   │   ├── AccountTooltip.vue
│   │       │   │   ├── ActivityIndicator.vue
│   │       │   │   ├── AppLoader.vue
│   │       │   │   ├── ClipboardField.vue
│   │       │   │   ├── ConfirmDialog.vue
│   │       │   │   ├── CurrencyInput.vue
│   │       │   │   ├── ModalDialog.vue
│   │       │   │   ├── PhraseInput.vue
│   │       │   │   ├── SelectList.vue
│   │       │   │   ├── TransactionDetailsDialog.vue
│   │       │   │   ├── UnlockWalletDialog.vue
│   │       │   │   ├── WalletPasswordDialog.vue
│   │       │   │   ├── index.js
│   │       │   │   └── layout/
│   │       │   │       ├── AppButtonSection.vue
│   │       │   │       ├── AppFormField.vue
│   │       │   │       ├── AppSection.vue
│   │       │   │       ├── ContentWrapper.vue
│   │       │   │       ├── FooterButton.vue
│   │       │   │       └── MainHeader.vue
│   │       │   ├── css/
│   │       │   │   ├── app.less
│   │       │   │   ├── app_styles.less
│   │       │   │   ├── css-reset.css
│   │       │   │   ├── fonts.less
│   │       │   │   └── variables.less
│   │       │   ├── i18n.js
│   │       │   ├── layouts/
│   │       │   │   ├── AccountsSection.vue
│   │       │   │   ├── SetupLayout.vue
│   │       │   │   └── WalletLayout.vue
│   │       │   ├── locales/
│   │       │   │   ├── en.json
│   │       │   │   └── nl.json
│   │       │   ├── main.js
│   │       │   ├── router/
│   │       │   │   └── index.js
│   │       │   ├── store/
│   │       │   │   ├── index.js
│   │       │   │   ├── modules/
│   │       │   │   │   ├── app.js
│   │       │   │   │   ├── index.js
│   │       │   │   │   ├── mining.js
│   │       │   │   │   └── wallet.js
│   │       │   │   └── syncState.js
│   │       │   ├── unity/
│   │       │   │   ├── Controllers.js
│   │       │   │   └── LibUnity.js
│   │       │   ├── util.js
│   │       │   ├── views/
│   │       │   │   ├── Account/
│   │       │   │   │   ├── AccountSettings.vue
│   │       │   │   │   ├── SpendingAccount/
│   │       │   │   │   │   ├── ConfirmTransactionDialog.vue
│   │       │   │   │   │   ├── Receive.vue
│   │       │   │   │   │   ├── Send.vue
│   │       │   │   │   │   ├── TransactionDetails.vue
│   │       │   │   │   │   ├── Transactions.vue
│   │       │   │   │   │   └── index.vue
│   │       │   │   │   └── index.vue
│   │       │   │   ├── DebugDialog/
│   │       │   │   │   ├── DebugConsole.vue
│   │       │   │   │   ├── InformationPage.vue
│   │       │   │   │   ├── PeerDetailsDialog.vue
│   │       │   │   │   ├── PeersPage.vue
│   │       │   │   │   └── index.vue
│   │       │   │   ├── Settings/
│   │       │   │   │   ├── ChangePassword.vue
│   │       │   │   │   ├── SettingsList.vue
│   │       │   │   │   ├── ViewRecoveryPhrase.vue
│   │       │   │   │   └── index.vue
│   │       │   │   └── Setup.vue
│   │       │   └── walletPath.js
│   │       ├── ui-config.json
│   │       └── vue.config.js
│   ├── fs.cpp
│   ├── fs.h
│   ├── generation/
│   │   ├── generation.h
│   │   ├── miner.cpp
│   │   ├── miner.h
│   │   ├── witness.cpp
│   │   ├── witness.h
│   │   ├── witnessrewardtemplate.cpp
│   │   └── witnessrewardtemplate.h
│   ├── hash.cpp
│   ├── hash.h
│   ├── httprpc.cpp
│   ├── httprpc.h
│   ├── httpserver.cpp
│   ├── httpserver.h
│   ├── indirectmap.h
│   ├── init.cpp
│   ├── init.h
│   ├── key.cpp
│   ├── key.h
│   ├── keystore.cpp
│   ├── keystore.h
│   ├── leveldb/
│   │   ├── .appveyor.yml
│   │   ├── .clang-format
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── AUTHORS
│   │   ├── CMakeLists.txt
│   │   ├── CONTRIBUTING.md
│   │   ├── LICENSE
│   │   ├── NEWS
│   │   ├── README.md
│   │   ├── TODO
│   │   ├── benchmarks/
│   │   │   ├── db_bench.cc
│   │   │   ├── db_bench_sqlite3.cc
│   │   │   └── db_bench_tree_db.cc
│   │   ├── cmake/
│   │   │   └── leveldbConfig.cmake
│   │   ├── db/
│   │   │   ├── autocompact_test.cc
│   │   │   ├── builder.cc
│   │   │   ├── builder.h
│   │   │   ├── c.cc
│   │   │   ├── c_test.c
│   │   │   ├── corruption_test.cc
│   │   │   ├── db_impl.cc
│   │   │   ├── db_impl.h
│   │   │   ├── db_iter.cc
│   │   │   ├── db_iter.h
│   │   │   ├── db_test.cc
│   │   │   ├── dbformat.cc
│   │   │   ├── dbformat.h
│   │   │   ├── dbformat_test.cc
│   │   │   ├── dumpfile.cc
│   │   │   ├── fault_injection_test.cc
│   │   │   ├── filename.cc
│   │   │   ├── filename.h
│   │   │   ├── filename_test.cc
│   │   │   ├── leveldbutil.cc
│   │   │   ├── log_format.h
│   │   │   ├── log_reader.cc
│   │   │   ├── log_reader.h
│   │   │   ├── log_test.cc
│   │   │   ├── log_writer.cc
│   │   │   ├── log_writer.h
│   │   │   ├── memtable.cc
│   │   │   ├── memtable.h
│   │   │   ├── recovery_test.cc
│   │   │   ├── repair.cc
│   │   │   ├── skiplist.h
│   │   │   ├── skiplist_test.cc
│   │   │   ├── snapshot.h
│   │   │   ├── table_cache.cc
│   │   │   ├── table_cache.h
│   │   │   ├── version_edit.cc
│   │   │   ├── version_edit.h
│   │   │   ├── version_edit_test.cc
│   │   │   ├── version_set.cc
│   │   │   ├── version_set.h
│   │   │   ├── version_set_test.cc
│   │   │   ├── write_batch.cc
│   │   │   ├── write_batch_internal.h
│   │   │   └── write_batch_test.cc
│   │   ├── doc/
│   │   │   ├── benchmark.html
│   │   │   ├── impl.md
│   │   │   ├── index.md
│   │   │   ├── log_format.md
│   │   │   └── table_format.md
│   │   ├── helpers/
│   │   │   └── memenv/
│   │   │       ├── memenv.cc
│   │   │       ├── memenv.h
│   │   │       └── memenv_test.cc
│   │   ├── include/
│   │   │   └── leveldb/
│   │   │       ├── c.h
│   │   │       ├── cache.h
│   │   │       ├── comparator.h
│   │   │       ├── db.h
│   │   │       ├── dumpfile.h
│   │   │       ├── env.h
│   │   │       ├── export.h
│   │   │       ├── filter_policy.h
│   │   │       ├── iterator.h
│   │   │       ├── options.h
│   │   │       ├── slice.h
│   │   │       ├── status.h
│   │   │       ├── table.h
│   │   │       ├── table_builder.h
│   │   │       └── write_batch.h
│   │   ├── issues/
│   │   │   ├── issue178_test.cc
│   │   │   ├── issue200_test.cc
│   │   │   └── issue320_test.cc
│   │   ├── port/
│   │   │   ├── README.md
│   │   │   ├── port.h
│   │   │   ├── port_config.h.in
│   │   │   ├── port_example.h
│   │   │   ├── port_stdcxx.h
│   │   │   └── thread_annotations.h
│   │   ├── table/
│   │   │   ├── block.cc
│   │   │   ├── block.h
│   │   │   ├── block_builder.cc
│   │   │   ├── block_builder.h
│   │   │   ├── filter_block.cc
│   │   │   ├── filter_block.h
│   │   │   ├── filter_block_test.cc
│   │   │   ├── format.cc
│   │   │   ├── format.h
│   │   │   ├── iterator.cc
│   │   │   ├── iterator_wrapper.h
│   │   │   ├── merger.cc
│   │   │   ├── merger.h
│   │   │   ├── table.cc
│   │   │   ├── table_builder.cc
│   │   │   ├── table_test.cc
│   │   │   ├── two_level_iterator.cc
│   │   │   └── two_level_iterator.h
│   │   └── util/
│   │       ├── arena.cc
│   │       ├── arena.h
│   │       ├── arena_test.cc
│   │       ├── bloom.cc
│   │       ├── bloom_test.cc
│   │       ├── cache.cc
│   │       ├── cache_test.cc
│   │       ├── coding.cc
│   │       ├── coding.h
│   │       ├── coding_test.cc
│   │       ├── comparator.cc
│   │       ├── crc32c.cc
│   │       ├── crc32c.h
│   │       ├── crc32c_test.cc
│   │       ├── env.cc
│   │       ├── env_posix.cc
│   │       ├── env_posix_test.cc
│   │       ├── env_posix_test_helper.h
│   │       ├── env_test.cc
│   │       ├── env_windows.cc
│   │       ├── env_windows_test.cc
│   │       ├── env_windows_test_helper.h
│   │       ├── filter_policy.cc
│   │       ├── hash.cc
│   │       ├── hash.h
│   │       ├── hash_test.cc
│   │       ├── histogram.cc
│   │       ├── histogram.h
│   │       ├── logging.cc
│   │       ├── logging.h
│   │       ├── logging_test.cc
│   │       ├── mutexlock.h
│   │       ├── no_destructor.h
│   │       ├── no_destructor_test.cc
│   │       ├── options.cc
│   │       ├── posix_logger.h
│   │       ├── random.h
│   │       ├── status.cc
│   │       ├── status_test.cc
│   │       ├── testharness.cc
│   │       ├── testharness.h
│   │       ├── testutil.cc
│   │       ├── testutil.h
│   │       └── windows_logger.h
│   ├── limitedmap.h
│   ├── llvm-cpumodel-hack.cpp
│   ├── logging.cpp
│   ├── logging.h
│   ├── memusage.h
│   ├── merkleblock.cpp
│   ├── merkleblock.h
│   ├── net.cpp
│   ├── net.h
│   ├── net_processing.cpp
│   ├── net_processing.h
│   ├── netaddress.cpp
│   ├── netaddress.h
│   ├── netbase.cpp
│   ├── netbase.h
│   ├── netmessagemaker.h
│   ├── node/
│   │   ├── context.cpp
│   │   └── context.h
│   ├── noui.cpp
│   ├── noui.h
│   ├── obj/
│   │   └── .gitignore
│   ├── obj-test/
│   │   └── .gitignore
│   ├── policy/
│   │   ├── feerate.cpp
│   │   ├── feerate.h
│   │   ├── fees.cpp
│   │   ├── fees.h
│   │   ├── policy.cpp
│   │   ├── policy.h
│   │   ├── rbf.cpp
│   │   └── rbf.h
│   ├── pow/
│   │   ├── diff.h
│   │   ├── diff_common.cpp
│   │   ├── diff_common.h
│   │   ├── diff_delta.cpp
│   │   ├── diff_delta.h
│   │   ├── diff_old.cpp
│   │   ├── diff_old.h
│   │   ├── pow.cpp
│   │   └── pow.h
│   ├── prevector.h
│   ├── primitives/
│   │   ├── block.cpp
│   │   ├── block.h
│   │   ├── transaction.cpp
│   │   └── transaction.h
│   ├── protocol.cpp
│   ├── protocol.h
│   ├── pubkey.cpp
│   ├── pubkey.h
│   ├── random.cpp
│   ├── random.h
│   ├── randomenv.cpp
│   ├── randomenv.h
│   ├── rest.cpp
│   ├── reverse_iterator.h
│   ├── reverselock.h
│   ├── rpc/
│   │   ├── accounts.cpp
│   │   ├── accounts.h
│   │   ├── blockchain.cpp
│   │   ├── blockchain.h
│   │   ├── client.cpp
│   │   ├── client.h
│   │   ├── mining.cpp
│   │   ├── misc.cpp
│   │   ├── netrpc.cpp
│   │   ├── protocol.cpp
│   │   ├── protocol.h
│   │   ├── rawtransaction.cpp
│   │   ├── register.h
│   │   ├── server.cpp
│   │   └── server.h
│   ├── scheduler.cpp
│   ├── scheduler.h
│   ├── script/
│   │   ├── consensus.cpp
│   │   ├── consensus.h
│   │   ├── interpreter.cpp
│   │   ├── interpreter.h
│   │   ├── ismine.cpp
│   │   ├── ismine.h
│   │   ├── script.cpp
│   │   ├── script.h
│   │   ├── script_error.cpp
│   │   ├── script_error.h
│   │   ├── sigcache.cpp
│   │   ├── sigcache.h
│   │   ├── sign.cpp
│   │   ├── sign.h
│   │   ├── standard.cpp
│   │   └── standard.h
│   ├── secp256k1/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── COPYING
│   │   ├── Makefile.am
│   │   ├── README.md
│   │   ├── TODO
│   │   ├── autogen.sh
│   │   ├── build-aux/
│   │   │   └── m4/
│   │   │       ├── ax_jni_include_dir.m4
│   │   │       ├── ax_prog_cc_for_build.m4
│   │   │       └── bitcoin_secp.m4
│   │   ├── configure.ac
│   │   ├── contrib/
│   │   │   ├── lax_der_parsing.c
│   │   │   ├── lax_der_parsing.h
│   │   │   ├── lax_der_privatekey_parsing.c
│   │   │   └── lax_der_privatekey_parsing.h
│   │   ├── include/
│   │   │   ├── secp256k1.h
│   │   │   ├── secp256k1_ecdh.h
│   │   │   └── secp256k1_recovery.h
│   │   ├── libsecp256k1.pc.in
│   │   ├── obj/
│   │   │   └── .gitignore
│   │   ├── sage/
│   │   │   ├── group_prover.sage
│   │   │   ├── secp256k1.sage
│   │   │   └── weierstrass_prover.sage
│   │   └── src/
│   │       ├── asm/
│   │       │   └── field_10x26_arm.s
│   │       ├── basic-config.h
│   │       ├── bench.h
│   │       ├── bench_ecdh.c
│   │       ├── bench_internal.c
│   │       ├── bench_recover.c
│   │       ├── bench_sign.c
│   │       ├── bench_verify.c
│   │       ├── ecdsa.h
│   │       ├── ecdsa_impl.h
│   │       ├── eckey.h
│   │       ├── eckey_impl.h
│   │       ├── ecmult.h
│   │       ├── ecmult_const.h
│   │       ├── ecmult_const_impl.h
│   │       ├── ecmult_gen.h
│   │       ├── ecmult_gen_impl.h
│   │       ├── ecmult_impl.h
│   │       ├── field.h
│   │       ├── field_10x26.h
│   │       ├── field_10x26_impl.h
│   │       ├── field_5x52.h
│   │       ├── field_5x52_asm_impl.h
│   │       ├── field_5x52_impl.h
│   │       ├── field_5x52_int128_impl.h
│   │       ├── field_impl.h
│   │       ├── gen_context.c
│   │       ├── group.h
│   │       ├── group_impl.h
│   │       ├── hash.h
│   │       ├── hash_impl.h
│   │       ├── java/
│   │       │   ├── org/
│   │       │   │   └── bitcoin/
│   │       │   │       ├── NativeSecp256k1.java
│   │       │   │       ├── NativeSecp256k1Test.java
│   │       │   │       ├── NativeSecp256k1Util.java
│   │       │   │       └── Secp256k1Context.java
│   │       │   ├── org_bitcoin_NativeSecp256k1.c
│   │       │   ├── org_bitcoin_NativeSecp256k1.h
│   │       │   ├── org_bitcoin_Secp256k1Context.c
│   │       │   └── org_bitcoin_Secp256k1Context.h
│   │       ├── modules/
│   │       │   ├── ecdh/
│   │       │   │   ├── Makefile.am.include
│   │       │   │   ├── main_impl.h
│   │       │   │   └── tests_impl.h
│   │       │   └── recovery/
│   │       │       ├── Makefile.am.include
│   │       │       ├── main_impl.h
│   │       │       └── tests_impl.h
│   │       ├── num.h
│   │       ├── num_gmp.h
│   │       ├── num_gmp_impl.h
│   │       ├── num_impl.h
│   │       ├── scalar.h
│   │       ├── scalar_4x64.h
│   │       ├── scalar_4x64_impl.h
│   │       ├── scalar_8x32.h
│   │       ├── scalar_8x32_impl.h
│   │       ├── scalar_impl.h
│   │       ├── scalar_low.h
│   │       ├── scalar_low_impl.h
│   │       ├── secp256k1.c
│   │       ├── testrand.h
│   │       ├── testrand_impl.h
│   │       ├── tests.c
│   │       ├── tests_exhaustive.c
│   │       └── util.h
│   ├── serialize.h
│   ├── span.h
│   ├── streams.h
│   ├── support/
│   │   ├── allocators/
│   │   │   ├── secure.h
│   │   │   └── zeroafterfree.h
│   │   ├── cleanse.cpp
│   │   ├── cleanse.h
│   │   ├── events.h
│   │   ├── lockedpool.cpp
│   │   └── lockedpool.h
│   ├── sync.cpp
│   ├── sync.h
│   ├── test/
│   │   ├── DoS_tests.cpp
│   │   ├── README.md
│   │   ├── addrman_tests.cpp
│   │   ├── allocator_tests.cpp
│   │   ├── amount_tests.cpp
│   │   ├── arith_uint256_tests.cpp
│   │   ├── base32_tests.cpp
│   │   ├── base58_tests.cpp
│   │   ├── base64_tests.cpp
│   │   ├── bip32_tests.cpp
│   │   ├── bip39_tests.cpp
│   │   ├── blockencodings_tests.cpp
│   │   ├── bloom_tests.cpp
│   │   ├── bswap_tests.cpp
│   │   ├── checkqueue_tests.cpp
│   │   ├── coins_tests.cpp
│   │   ├── compress_tests.cpp
│   │   ├── crypto_tests.cpp
│   │   ├── cuckoocache_tests.cpp
│   │   ├── data/
│   │   │   ├── README.md
│   │   │   ├── base58_encode_decode.json
│   │   │   ├── base58_keys_invalid.json
│   │   │   ├── base58_keys_valid.json
│   │   │   ├── script_tests.json
│   │   │   ├── sighash.json
│   │   │   ├── tx_invalid.json
│   │   │   ├── tx_valid.json
│   │   │   ├── wallet-linked-no-password-protobuf
│   │   │   ├── wallet-linked-password-5281-protobuf
│   │   │   ├── wallet-seed-no-password-protobuf
│   │   │   └── wallet-seed-password-1234-protobuf
│   │   ├── dbwrapper_tests.cpp
│   │   ├── getarg_tests.cpp
│   │   ├── hash_tests.cpp
│   │   ├── key_tests.cpp
│   │   ├── limitedmap_tests.cpp
│   │   ├── main_tests.cpp
│   │   ├── mempool_tests.cpp
│   │   ├── merkle_tests.cpp
│   │   ├── miner_tests.cpp
│   │   ├── multisig_tests.cpp
│   │   ├── net_tests.cpp
│   │   ├── netbase_tests.cpp
│   │   ├── pmt_tests.cpp
│   │   ├── policyestimator_tests.cpp
│   │   ├── pow_tests.cpp
│   │   ├── prevector_tests.cpp
│   │   ├── raii_event_tests.cpp
│   │   ├── random_tests.cpp
│   │   ├── reverselock_tests.cpp
│   │   ├── rpc_tests.cpp
│   │   ├── sanity_tests.cpp
│   │   ├── scheduler_tests.cpp
│   │   ├── script_P2SH_tests.cpp
│   │   ├── script_tests.cpp
│   │   ├── scriptnum10.h
│   │   ├── scriptnum_tests.cpp
│   │   ├── serialize_tests.cpp
│   │   ├── sighash_tests.cpp
│   │   ├── sigopcount_tests.cpp
│   │   ├── skiplist_tests.cpp
│   │   ├── streams_tests.cpp
│   │   ├── test.cpp
│   │   ├── test.h
│   │   ├── test_fuzzy.cpp
│   │   ├── test_main.cpp
│   │   ├── testutil.cpp
│   │   ├── testutil.h
│   │   ├── timedata_tests.cpp
│   │   ├── torcontrol_tests.cpp
│   │   ├── transaction_tests.cpp
│   │   ├── txvalidationcache_tests.cpp
│   │   ├── uint256_tests.cpp
│   │   ├── unity_tests.cpp
│   │   ├── univalue_tests.cpp
│   │   ├── util_tests.cpp
│   │   └── versionbits_tests.cpp
│   ├── threadinterrupt.cpp
│   ├── threadinterrupt.h
│   ├── threadsafety.h
│   ├── timedata.cpp
│   ├── timedata.h
│   ├── tinyformat.h
│   ├── torcontrol.cpp
│   ├── torcontrol.h
│   ├── tx-main.cpp
│   ├── tx-res.rc
│   ├── txdb.cpp
│   ├── txdb.h
│   ├── txmempool.cpp
│   ├── txmempool.h
│   ├── ui_interface.cpp
│   ├── ui_interface.h
│   ├── uint256.cpp
│   ├── uint256.h
│   ├── undo.h
│   ├── unity/
│   │   ├── android/
│   │   │   ├── init_android.cpp
│   │   │   └── logging_android.cpp
│   │   ├── appmanager.cpp
│   │   ├── appmanager.h
│   │   ├── compat/
│   │   │   ├── android_wallet.cpp
│   │   │   └── android_wallet.h
│   │   ├── controllers/
│   │   │   ├── iaccountscontroller.cpp
│   │   │   ├── igenerationcontroller.cpp
│   │   │   ├── ip2pnetworkcontroller.cpp
│   │   │   ├── irpccontroller.cpp
│   │   │   ├── iwalletcontroller.cpp
│   │   │   └── iwitnesscontroller.cpp
│   │   ├── djinni/
│   │   │   ├── cpp/
│   │   │   │   ├── account_link_record.hpp
│   │   │   │   ├── account_record.hpp
│   │   │   │   ├── address_record.hpp
│   │   │   │   ├── balance_record.hpp
│   │   │   │   ├── banned_peer_record.hpp
│   │   │   │   ├── block_info_record.hpp
│   │   │   │   ├── i_accounts_controller.hpp
│   │   │   │   ├── i_accounts_listener.hpp
│   │   │   │   ├── i_generation_controller.hpp
│   │   │   │   ├── i_generation_listener.hpp
│   │   │   │   ├── i_library_controller.cpp
│   │   │   │   ├── i_library_controller.hpp
│   │   │   │   ├── i_library_listener.hpp
│   │   │   │   ├── i_p2p_network_controller.hpp
│   │   │   │   ├── i_p2p_network_listener.hpp
│   │   │   │   ├── i_rpc_controller.hpp
│   │   │   │   ├── i_rpc_listener.hpp
│   │   │   │   ├── i_wallet_controller.hpp
│   │   │   │   ├── i_wallet_listener.hpp
│   │   │   │   ├── i_witness_controller.hpp
│   │   │   │   ├── input_record.hpp
│   │   │   │   ├── legacy_wallet_result.hpp
│   │   │   │   ├── mnemonic_record.hpp
│   │   │   │   ├── monitor_listener.hpp
│   │   │   │   ├── monitor_record.hpp
│   │   │   │   ├── mutation_record.hpp
│   │   │   │   ├── output_record.hpp
│   │   │   │   ├── payment_result_status.hpp
│   │   │   │   ├── peer_record.cpp
│   │   │   │   ├── peer_record.hpp
│   │   │   │   ├── qr_code_record.hpp
│   │   │   │   ├── result_record.hpp
│   │   │   │   ├── transaction_record.hpp
│   │   │   │   ├── transaction_status.hpp
│   │   │   │   ├── uri_recipient.hpp
│   │   │   │   ├── uri_record.hpp
│   │   │   │   ├── wallet_lock_status.hpp
│   │   │   │   ├── witness_account_statistics_record.hpp
│   │   │   │   ├── witness_estimate_info_record.hpp
│   │   │   │   └── witness_funding_result_record.hpp
│   │   │   ├── jni/
│   │   │   │   ├── NativeAccountLinkRecord.cpp
│   │   │   │   ├── NativeAccountLinkRecord.hpp
│   │   │   │   ├── NativeAccountRecord.cpp
│   │   │   │   ├── NativeAccountRecord.hpp
│   │   │   │   ├── NativeAddressRecord.cpp
│   │   │   │   ├── NativeAddressRecord.hpp
│   │   │   │   ├── NativeBalanceRecord.cpp
│   │   │   │   ├── NativeBalanceRecord.hpp
│   │   │   │   ├── NativeBannedPeerRecord.cpp
│   │   │   │   ├── NativeBannedPeerRecord.hpp
│   │   │   │   ├── NativeBlockInfoRecord.cpp
│   │   │   │   ├── NativeBlockInfoRecord.hpp
│   │   │   │   ├── NativeIAccountsController.cpp
│   │   │   │   ├── NativeIAccountsController.hpp
│   │   │   │   ├── NativeIAccountsListener.cpp
│   │   │   │   ├── NativeIAccountsListener.hpp
│   │   │   │   ├── NativeIGenerationController.cpp
│   │   │   │   ├── NativeIGenerationController.hpp
│   │   │   │   ├── NativeIGenerationListener.cpp
│   │   │   │   ├── NativeIGenerationListener.hpp
│   │   │   │   ├── NativeILibraryController.cpp
│   │   │   │   ├── NativeILibraryController.hpp
│   │   │   │   ├── NativeILibraryListener.cpp
│   │   │   │   ├── NativeILibraryListener.hpp
│   │   │   │   ├── NativeIP2pNetworkController.cpp
│   │   │   │   ├── NativeIP2pNetworkController.hpp
│   │   │   │   ├── NativeIP2pNetworkListener.cpp
│   │   │   │   ├── NativeIP2pNetworkListener.hpp
│   │   │   │   ├── NativeIRpcController.cpp
│   │   │   │   ├── NativeIRpcController.hpp
│   │   │   │   ├── NativeIRpcListener.cpp
│   │   │   │   ├── NativeIRpcListener.hpp
│   │   │   │   ├── NativeIWalletController.cpp
│   │   │   │   ├── NativeIWalletController.hpp
│   │   │   │   ├── NativeIWalletListener.cpp
│   │   │   │   ├── NativeIWalletListener.hpp
│   │   │   │   ├── NativeIWitnessController.cpp
│   │   │   │   ├── NativeIWitnessController.hpp
│   │   │   │   ├── NativeInputRecord.cpp
│   │   │   │   ├── NativeInputRecord.hpp
│   │   │   │   ├── NativeLegacyWalletResult.hpp
│   │   │   │   ├── NativeMnemonicRecord.cpp
│   │   │   │   ├── NativeMnemonicRecord.hpp
│   │   │   │   ├── NativeMonitorListener.cpp
│   │   │   │   ├── NativeMonitorListener.hpp
│   │   │   │   ├── NativeMonitorRecord.cpp
│   │   │   │   ├── NativeMonitorRecord.hpp
│   │   │   │   ├── NativeMutationRecord.cpp
│   │   │   │   ├── NativeMutationRecord.hpp
│   │   │   │   ├── NativeOutputRecord.cpp
│   │   │   │   ├── NativeOutputRecord.hpp
│   │   │   │   ├── NativePaymentResultStatus.hpp
│   │   │   │   ├── NativePeerRecord.cpp
│   │   │   │   ├── NativePeerRecord.hpp
│   │   │   │   ├── NativeQrCodeRecord.cpp
│   │   │   │   ├── NativeQrCodeRecord.hpp
│   │   │   │   ├── NativeResultRecord.cpp
│   │   │   │   ├── NativeResultRecord.hpp
│   │   │   │   ├── NativeTransactionRecord.cpp
│   │   │   │   ├── NativeTransactionRecord.hpp
│   │   │   │   ├── NativeTransactionStatus.hpp
│   │   │   │   ├── NativeUriRecipient.cpp
│   │   │   │   ├── NativeUriRecipient.hpp
│   │   │   │   ├── NativeUriRecord.cpp
│   │   │   │   ├── NativeUriRecord.hpp
│   │   │   │   ├── NativeWalletLockStatus.cpp
│   │   │   │   ├── NativeWalletLockStatus.hpp
│   │   │   │   ├── NativeWitnessAccountStatisticsRecord.cpp
│   │   │   │   ├── NativeWitnessAccountStatisticsRecord.hpp
│   │   │   │   ├── NativeWitnessEstimateInfoRecord.cpp
│   │   │   │   ├── NativeWitnessEstimateInfoRecord.hpp
│   │   │   │   ├── NativeWitnessFundingResultRecord.cpp
│   │   │   │   └── NativeWitnessFundingResultRecord.hpp
│   │   │   ├── node_js/
│   │   │   │   ├── NJSIAccountsController.cpp
│   │   │   │   ├── NJSIAccountsController.hpp
│   │   │   │   ├── NJSIAccountsListener.cpp
│   │   │   │   ├── NJSIAccountsListener.hpp
│   │   │   │   ├── NJSIGenerationController.cpp
│   │   │   │   ├── NJSIGenerationController.hpp
│   │   │   │   ├── NJSIGenerationListener.cpp
│   │   │   │   ├── NJSIGenerationListener.hpp
│   │   │   │   ├── NJSILibraryController.cpp
│   │   │   │   ├── NJSILibraryController.hpp
│   │   │   │   ├── NJSILibraryListener.cpp
│   │   │   │   ├── NJSILibraryListener.hpp
│   │   │   │   ├── NJSIP2pNetworkController.cpp
│   │   │   │   ├── NJSIP2pNetworkController.hpp
│   │   │   │   ├── NJSIP2pNetworkListener.cpp
│   │   │   │   ├── NJSIP2pNetworkListener.hpp
│   │   │   │   ├── NJSIRpcController.cpp
│   │   │   │   ├── NJSIRpcController.hpp
│   │   │   │   ├── NJSIRpcListener.cpp
│   │   │   │   ├── NJSIRpcListener.hpp
│   │   │   │   ├── NJSIWalletController.cpp
│   │   │   │   ├── NJSIWalletController.hpp
│   │   │   │   ├── NJSIWalletListener.cpp
│   │   │   │   ├── NJSIWalletListener.hpp
│   │   │   │   ├── NJSIWitnessController.cpp
│   │   │   │   ├── NJSIWitnessController.hpp
│   │   │   │   ├── NJSMonitorListener.cpp
│   │   │   │   ├── NJSMonitorListener.hpp
│   │   │   │   ├── unifiedbackend.cpp
│   │   │   │   └── unifiedbackend_doc.js
│   │   │   ├── objc/
│   │   │   │   ├── DBAccountLinkRecord+Private.h
│   │   │   │   ├── DBAccountLinkRecord+Private.mm
│   │   │   │   ├── DBAccountLinkRecord.h
│   │   │   │   ├── DBAccountLinkRecord.mm
│   │   │   │   ├── DBAccountRecord+Private.h
│   │   │   │   ├── DBAccountRecord+Private.mm
│   │   │   │   ├── DBAccountRecord.h
│   │   │   │   ├── DBAccountRecord.mm
│   │   │   │   ├── DBAddressRecord+Private.h
│   │   │   │   ├── DBAddressRecord+Private.mm
│   │   │   │   ├── DBAddressRecord.h
│   │   │   │   ├── DBAddressRecord.mm
│   │   │   │   ├── DBBalanceRecord+Private.h
│   │   │   │   ├── DBBalanceRecord+Private.mm
│   │   │   │   ├── DBBalanceRecord.h
│   │   │   │   ├── DBBalanceRecord.mm
│   │   │   │   ├── DBBannedPeerRecord+Private.h
│   │   │   │   ├── DBBannedPeerRecord+Private.mm
│   │   │   │   ├── DBBannedPeerRecord.h
│   │   │   │   ├── DBBannedPeerRecord.mm
│   │   │   │   ├── DBBlockInfoRecord+Private.h
│   │   │   │   ├── DBBlockInfoRecord+Private.mm
│   │   │   │   ├── DBBlockInfoRecord.h
│   │   │   │   ├── DBBlockInfoRecord.mm
│   │   │   │   ├── DBIAccountsController+Private.h
│   │   │   │   ├── DBIAccountsController+Private.mm
│   │   │   │   ├── DBIAccountsController.h
│   │   │   │   ├── DBIAccountsListener+Private.h
│   │   │   │   ├── DBIAccountsListener+Private.mm
│   │   │   │   ├── DBIAccountsListener.h
│   │   │   │   ├── DBIGenerationController+Private.h
│   │   │   │   ├── DBIGenerationController+Private.mm
│   │   │   │   ├── DBIGenerationController.h
│   │   │   │   ├── DBIGenerationListener+Private.h
│   │   │   │   ├── DBIGenerationListener+Private.mm
│   │   │   │   ├── DBIGenerationListener.h
│   │   │   │   ├── DBILibraryController+Private.h
│   │   │   │   ├── DBILibraryController+Private.mm
│   │   │   │   ├── DBILibraryController.h
│   │   │   │   ├── DBILibraryController.mm
│   │   │   │   ├── DBILibraryListener+Private.h
│   │   │   │   ├── DBILibraryListener+Private.mm
│   │   │   │   ├── DBILibraryListener.h
│   │   │   │   ├── DBIP2pNetworkController+Private.h
│   │   │   │   ├── DBIP2pNetworkController+Private.mm
│   │   │   │   ├── DBIP2pNetworkController.h
│   │   │   │   ├── DBIP2pNetworkListener+Private.h
│   │   │   │   ├── DBIP2pNetworkListener+Private.mm
│   │   │   │   ├── DBIP2pNetworkListener.h
│   │   │   │   ├── DBIRpcController+Private.h
│   │   │   │   ├── DBIRpcController+Private.mm
│   │   │   │   ├── DBIRpcController.h
│   │   │   │   ├── DBIRpcListener+Private.h
│   │   │   │   ├── DBIRpcListener+Private.mm
│   │   │   │   ├── DBIRpcListener.h
│   │   │   │   ├── DBIWalletController+Private.h
│   │   │   │   ├── DBIWalletController+Private.mm
│   │   │   │   ├── DBIWalletController.h
│   │   │   │   ├── DBIWalletListener+Private.h
│   │   │   │   ├── DBIWalletListener+Private.mm
│   │   │   │   ├── DBIWalletListener.h
│   │   │   │   ├── DBIWitnessController+Private.h
│   │   │   │   ├── DBIWitnessController+Private.mm
│   │   │   │   ├── DBIWitnessController.h
│   │   │   │   ├── DBInputRecord+Private.h
│   │   │   │   ├── DBInputRecord+Private.mm
│   │   │   │   ├── DBInputRecord.h
│   │   │   │   ├── DBInputRecord.mm
│   │   │   │   ├── DBLegacyWalletResult+Private.h
│   │   │   │   ├── DBLegacyWalletResult.h
│   │   │   │   ├── DBMnemonicRecord+Private.h
│   │   │   │   ├── DBMnemonicRecord+Private.mm
│   │   │   │   ├── DBMnemonicRecord.h
│   │   │   │   ├── DBMnemonicRecord.mm
│   │   │   │   ├── DBMonitorListener+Private.h
│   │   │   │   ├── DBMonitorListener+Private.mm
│   │   │   │   ├── DBMonitorListener.h
│   │   │   │   ├── DBMonitorRecord+Private.h
│   │   │   │   ├── DBMonitorRecord+Private.mm
│   │   │   │   ├── DBMonitorRecord.h
│   │   │   │   ├── DBMonitorRecord.mm
│   │   │   │   ├── DBMutationRecord+Private.h
│   │   │   │   ├── DBMutationRecord+Private.mm
│   │   │   │   ├── DBMutationRecord.h
│   │   │   │   ├── DBMutationRecord.mm
│   │   │   │   ├── DBOutputRecord+Private.h
│   │   │   │   ├── DBOutputRecord+Private.mm
│   │   │   │   ├── DBOutputRecord.h
│   │   │   │   ├── DBOutputRecord.mm
│   │   │   │   ├── DBPaymentResultStatus+Private.h
│   │   │   │   ├── DBPaymentResultStatus.h
│   │   │   │   ├── DBPeerRecord+Private.h
│   │   │   │   ├── DBPeerRecord+Private.mm
│   │   │   │   ├── DBPeerRecord.h
│   │   │   │   ├── DBPeerRecord.mm
│   │   │   │   ├── DBQrCodeRecord+Private.h
│   │   │   │   ├── DBQrCodeRecord+Private.mm
│   │   │   │   ├── DBQrCodeRecord.h
│   │   │   │   ├── DBQrCodeRecord.mm
│   │   │   │   ├── DBResultRecord+Private.h
│   │   │   │   ├── DBResultRecord+Private.mm
│   │   │   │   ├── DBResultRecord.h
│   │   │   │   ├── DBResultRecord.mm
│   │   │   │   ├── DBTransactionRecord+Private.h
│   │   │   │   ├── DBTransactionRecord+Private.mm
│   │   │   │   ├── DBTransactionRecord.h
│   │   │   │   ├── DBTransactionRecord.mm
│   │   │   │   ├── DBTransactionStatus+Private.h
│   │   │   │   ├── DBTransactionStatus.h
│   │   │   │   ├── DBUriRecipient+Private.h
│   │   │   │   ├── DBUriRecipient+Private.mm
│   │   │   │   ├── DBUriRecipient.h
│   │   │   │   ├── DBUriRecipient.mm
│   │   │   │   ├── DBUriRecord+Private.h
│   │   │   │   ├── DBUriRecord+Private.mm
│   │   │   │   ├── DBUriRecord.h
│   │   │   │   ├── DBUriRecord.mm
│   │   │   │   ├── DBWalletLockStatus+Private.h
│   │   │   │   ├── DBWalletLockStatus+Private.mm
│   │   │   │   ├── DBWalletLockStatus.h
│   │   │   │   ├── DBWalletLockStatus.mm
│   │   │   │   ├── DBWitnessAccountStatisticsRecord+Private.h
│   │   │   │   ├── DBWitnessAccountStatisticsRecord+Private.mm
│   │   │   │   ├── DBWitnessAccountStatisticsRecord.h
│   │   │   │   ├── DBWitnessAccountStatisticsRecord.mm
│   │   │   │   ├── DBWitnessEstimateInfoRecord+Private.h
│   │   │   │   ├── DBWitnessEstimateInfoRecord+Private.mm
│   │   │   │   ├── DBWitnessEstimateInfoRecord.h
│   │   │   │   ├── DBWitnessEstimateInfoRecord.mm
│   │   │   │   ├── DBWitnessFundingResultRecord+Private.h
│   │   │   │   ├── DBWitnessFundingResultRecord+Private.mm
│   │   │   │   ├── DBWitnessFundingResultRecord.h
│   │   │   │   └── DBWitnessFundingResultRecord.mm
│   │   │   └── support-lib/
│   │   │       ├── djinni_common.hpp
│   │   │       ├── ios-build-support-lib.sh
│   │   │       ├── java/
│   │   │       │   └── com/
│   │   │       │       └── dropbox/
│   │   │       │           └── djinni/
│   │   │       │               └── NativeLibLoader.java
│   │   │       ├── jni/
│   │   │       │   ├── Marshal.hpp
│   │   │       │   ├── djinni_main.cpp
│   │   │       │   ├── djinni_support.cpp
│   │   │       │   └── djinni_support.hpp
│   │   │       ├── nodejs/
│   │   │       │   └── win_delay_load_hook.cpp
│   │   │       ├── objc/
│   │   │       │   ├── DJICppWrapperCache+Private.h
│   │   │       │   ├── DJIError.h
│   │   │       │   ├── DJIError.mm
│   │   │       │   ├── DJIMarshal+Private.h
│   │   │       │   ├── DJIObjcWrapperCache+Private.h
│   │   │       │   └── DJIProxyCaches.mm
│   │   │       ├── proxy_cache_impl.hpp
│   │   │       ├── proxy_cache_interface.hpp
│   │   │       ├── support-lib.iml
│   │   │       └── support_lib.gyp
│   │   ├── generic/
│   │   │   ├── init_generic.cpp
│   │   │   ├── init_generic_node.cpp
│   │   │   └── logging.cpp
│   │   ├── glob.py
│   │   ├── ios/
│   │   │   ├── init_ios.cpp
│   │   │   ├── logging_ios.cpp
│   │   │   └── munt_static/
│   │   │       └── MuntCore/
│   │   │           └── Info.plist
│   │   ├── libinit.cpp
│   │   ├── libinit.h
│   │   ├── libmunt_unity.gyp
│   │   ├── libunity.djinni
│   │   ├── node_js/
│   │   │   ├── init_node_js.cpp
│   │   │   └── logging_node_js.cpp
│   │   ├── signals.h
│   │   ├── unity_impl.cpp
│   │   └── unity_impl.h
│   ├── univalue/
│   │   ├── .gitignore
│   │   ├── COPYING
│   │   ├── Makefile.am
│   │   ├── README.md
│   │   ├── TODO
│   │   ├── autogen.sh
│   │   ├── build-aux/
│   │   │   └── m4/
│   │   │       ├── .gitignore
│   │   │       └── ax_cxx_compile_stdcxx.m4
│   │   ├── configure.ac
│   │   ├── include/
│   │   │   └── univalue.h
│   │   ├── lib/
│   │   │   ├── .gitignore
│   │   │   ├── univalue.cpp
│   │   │   ├── univalue_escapes.h
│   │   │   ├── univalue_get.cpp
│   │   │   ├── univalue_read.cpp
│   │   │   ├── univalue_utffilter.h
│   │   │   └── univalue_write.cpp
│   │   ├── pc/
│   │   │   ├── libunivalue-uninstalled.pc.in
│   │   │   └── libunivalue.pc.in
│   │   ├── sources.mk
│   │   └── test/
│   │       ├── .gitignore
│   │       ├── fail1.json
│   │       ├── fail10.json
│   │       ├── fail11.json
│   │       ├── fail12.json
│   │       ├── fail13.json
│   │       ├── fail14.json
│   │       ├── fail15.json
│   │       ├── fail16.json
│   │       ├── fail17.json
│   │       ├── fail18.json
│   │       ├── fail19.json
│   │       ├── fail2.json
│   │       ├── fail20.json
│   │       ├── fail21.json
│   │       ├── fail22.json
│   │       ├── fail23.json
│   │       ├── fail24.json
│   │       ├── fail25.json
│   │       ├── fail26.json
│   │       ├── fail27.json
│   │       ├── fail28.json
│   │       ├── fail29.json
│   │       ├── fail3.json
│   │       ├── fail30.json
│   │       ├── fail31.json
│   │       ├── fail32.json
│   │       ├── fail33.json
│   │       ├── fail34.json
│   │       ├── fail35.json
│   │       ├── fail36.json
│   │       ├── fail37.json
│   │       ├── fail38.json
│   │       ├── fail39.json
│   │       ├── fail4.json
│   │       ├── fail40.json
│   │       ├── fail41.json
│   │       ├── fail42.json
│   │       ├── fail44.json
│   │       ├── fail45.json
│   │       ├── fail5.json
│   │       ├── fail6.json
│   │       ├── fail7.json
│   │       ├── fail8.json
│   │       ├── fail9.json
│   │       ├── no_nul.cpp
│   │       ├── object.cpp
│   │       ├── pass1.json
│   │       ├── pass2.json
│   │       ├── pass3.json
│   │       ├── pass4.json
│   │       ├── round1.json
│   │       ├── round2.json
│   │       ├── round3.json
│   │       ├── round4.json
│   │       ├── round5.json
│   │       ├── round6.json
│   │       ├── round7.json
│   │       ├── test_json.cpp
│   │       └── unitester.cpp
│   ├── util/
│   │   ├── bytevectorhash.cpp
│   │   ├── bytevectorhash.h
│   │   ├── check.h
│   │   ├── getuniquepath.cpp
│   │   ├── getuniquepath.h
│   │   ├── macros.h
│   │   ├── moneystr.cpp
│   │   ├── moneystr.h
│   │   ├── overloaded.h
│   │   ├── strencodings.cpp
│   │   ├── strencodings.h
│   │   ├── syscall_sandbox.cpp
│   │   ├── syscall_sandbox.h
│   │   ├── thread.cpp
│   │   ├── thread.h
│   │   ├── threadnames.cpp
│   │   ├── threadnames.h
│   │   ├── time.cpp
│   │   └── time.h
│   ├── util.cpp
│   ├── util.h
│   ├── validation/
│   │   ├── validation.cpp
│   │   ├── validation.h
│   │   ├── validation_mempool.cpp
│   │   ├── validation_misc.cpp
│   │   ├── validationinterface.cpp
│   │   ├── validationinterface.h
│   │   ├── versionbitsvalidation.cpp
│   │   ├── versionbitsvalidation.h
│   │   ├── witnessvalidation.cpp
│   │   └── witnessvalidation.h
│   ├── version.h
│   ├── versionbits.cpp
│   ├── versionbits.h
│   ├── wallet/
│   │   ├── account.cpp
│   │   ├── account.h
│   │   ├── coincontrol.h
│   │   ├── crypter.cpp
│   │   ├── crypter.h
│   │   ├── db.cpp
│   │   ├── db.h
│   │   ├── extwallet.cpp
│   │   ├── extwallet.h
│   │   ├── feebumper.cpp
│   │   ├── feebumper.h
│   │   ├── merkletx.cpp
│   │   ├── merkletx.h
│   │   ├── mnemonic.cpp
│   │   ├── mnemonic.h
│   │   ├── rpcdump.cpp
│   │   ├── rpcwallet.cpp
│   │   ├── rpcwallet.h
│   │   ├── spvscanner.cpp
│   │   ├── spvscanner.h
│   │   ├── test/
│   │   │   ├── accounting_tests.cpp
│   │   │   ├── crypto_tests.cpp
│   │   │   ├── wallet_test_fixture.cpp
│   │   │   ├── wallet_test_fixture.h
│   │   │   └── wallet_tests.cpp
│   │   ├── wallet.cpp
│   │   ├── wallet.h
│   │   ├── wallet_init.cpp
│   │   ├── wallet_ismine.cpp
│   │   ├── wallet_keypool.cpp
│   │   ├── wallet_transaction.cpp
│   │   ├── walletbalance.cpp
│   │   ├── walletdb.cpp
│   │   ├── walletdb.h
│   │   ├── walletdberrors.h
│   │   ├── wallettx.cpp
│   │   ├── wallettx.h
│   │   ├── witness_operations.cpp
│   │   └── witness_operations.h
│   ├── warnings.cpp
│   ├── warnings.h
│   ├── witnessutil.cpp
│   ├── witnessutil.h
│   └── zmq/
│       ├── zmqabstractnotifier.cpp
│       ├── zmqabstractnotifier.h
│       ├── zmqconfig.h
│       ├── zmqnotificationinterface.cpp
│       ├── zmqnotificationinterface.h
│       ├── zmqpublishnotifier.cpp
│       └── zmqpublishnotifier.h
├── technical_documentation/
│   ├── accelerated_testnet.md
│   ├── account_system.md
│   ├── gui_development.md
│   └── transaction_format.md
└── test/
    ├── README.md
    ├── config.ini.in
    ├── functional/
    │   ├── .gitignore
    │   ├── README.md
    │   ├── combine_logs.py
    │   ├── combined_log_template.html
    │   ├── create_cache.py
    │   ├── data/
    │   │   ├── invalid_txs.py
    │   │   ├── rpc_getblockstats.json
    │   │   └── rpc_psbt.json
    │   ├── example_test.py
    │   ├── feature_assumevalid.py
    │   ├── feature_bip68_sequence.py
    │   ├── feature_block.py
    │   ├── feature_blocksdir.py
    │   ├── feature_cltv.py
    │   ├── feature_config_args.py
    │   ├── feature_csv_activation.py
    │   ├── feature_dbcrash.py
    │   ├── feature_dersig.py
    │   ├── feature_fee_estimation.py
    │   ├── feature_filelock.py
    │   ├── feature_help.py
    │   ├── feature_includeconf.py
    │   ├── feature_logging.py
    │   ├── feature_maxuploadtarget.py
    │   ├── feature_minchainwork.py
    │   ├── feature_notifications.py
    │   ├── feature_nulldummy.py
    │   ├── feature_proxy.py
    │   ├── feature_pruning.py
    │   ├── feature_rbf.py
    │   ├── feature_reindex.py
    │   ├── feature_segwit.py
    │   ├── feature_shutdown.py
    │   ├── feature_uacomment.py
    │   ├── feature_versionbits_warning.py
    │   ├── interface_cli.py
    │   ├── interface_http.py
    │   ├── interface_rest.py
    │   ├── interface_rpc.py
    │   ├── interface_zmq.py
    │   ├── mempool_accept.py
    │   ├── mempool_limit.py
    │   ├── mempool_packages.py
    │   ├── mempool_persist.py
    │   ├── mempool_reorg.py
    │   ├── mempool_resurrect.py
    │   ├── mempool_spend_coinbase.py
    │   ├── mining_basic.py
    │   ├── mining_getblocktemplate_longpoll.py
    │   ├── mining_prioritisetransaction.py
    │   ├── p2p_compactblocks.py
    │   ├── p2p_disconnect_ban.py
    │   ├── p2p_feefilter.py
    │   ├── p2p_fingerprint.py
    │   ├── p2p_invalid_block.py
    │   ├── p2p_invalid_locator.py
    │   ├── p2p_invalid_messages.py
    │   ├── p2p_invalid_tx.py
    │   ├── p2p_leak.py
    │   ├── p2p_leak_tx.py
    │   ├── p2p_mempool.py
    │   ├── p2p_node_network_limited.py
    │   ├── p2p_segwit.py
    │   ├── p2p_sendheaders.py
    │   ├── p2p_timeouts.py
    │   ├── p2p_unrequested_blocks.py
    │   ├── rpc_bind.py
    │   ├── rpc_blockchain.py
    │   ├── rpc_createmultisig.py
    │   ├── rpc_decodescript.py
    │   ├── rpc_deprecated.py
    │   ├── rpc_deriveaddresses.py
    │   ├── rpc_fundrawtransaction.py
    │   ├── rpc_getblockstats.py
    │   ├── rpc_getchaintips.py
    │   ├── rpc_help.py
    │   ├── rpc_invalidateblock.py
    │   ├── rpc_misc.py
    │   ├── rpc_named_arguments.py
    │   ├── rpc_net.py
    │   ├── rpc_preciousblock.py
    │   ├── rpc_psbt.py
    │   ├── rpc_rawtransaction.py
    │   ├── rpc_scantxoutset.py
    │   ├── rpc_signmessage.py
    │   ├── rpc_signrawtransaction.py
    │   ├── rpc_txoutproof.py
    │   ├── rpc_uptime.py
    │   ├── rpc_users.py
    │   ├── test_framework/
    │   │   ├── __init__.py
    │   │   ├── address.py
    │   │   ├── authproxy.py
    │   │   ├── bignum.py
    │   │   ├── blocktools.py
    │   │   ├── coverage.py
    │   │   ├── descriptors.py
    │   │   ├── key.py
    │   │   ├── messages.py
    │   │   ├── mininode.py
    │   │   ├── netutil.py
    │   │   ├── script.py
    │   │   ├── segwit_addr.py
    │   │   ├── siphash.py
    │   │   ├── socks5.py
    │   │   ├── test_framework.py
    │   │   ├── test_node.py
    │   │   ├── util.py
    │   │   └── wallet_util.py
    │   ├── test_runner.py
    │   ├── tool_wallet.py
    │   ├── wallet_abandonconflict.py
    │   ├── wallet_address_types.py
    │   ├── wallet_backup.py
    │   ├── wallet_balance.py
    │   ├── wallet_basic.py
    │   ├── wallet_bumpfee.py
    │   ├── wallet_coinbase_category.py
    │   ├── wallet_create_tx.py
    │   ├── wallet_createwallet.py
    │   ├── wallet_disable.py
    │   ├── wallet_dump.py
    │   ├── wallet_encryption.py
    │   ├── wallet_fallbackfee.py
    │   ├── wallet_groups.py
    │   ├── wallet_hd.py
    │   ├── wallet_import_rescan.py
    │   ├── wallet_import_with_label.py
    │   ├── wallet_importmulti.py
    │   ├── wallet_importprunedfunds.py
    │   ├── wallet_keypool.py
    │   ├── wallet_keypool_topup.py
    │   ├── wallet_listreceivedby.py
    │   ├── wallet_listsinceblock.py
    │   ├── wallet_listtransactions.py
    │   ├── wallet_multiwallet.py
    │   ├── wallet_resendwallettransactions.py
    │   ├── wallet_txn_clone.py
    │   ├── wallet_txn_doublespend.py
    │   └── wallet_zapwallettxes.py
    ├── fuzz/
    │   └── test_runner.py
    ├── lint/
    │   ├── README.md
    │   ├── check-doc.py
    │   ├── check-rpc-mappings.py
    │   ├── commit-script-check.sh
    │   ├── git-subtree-check.sh
    │   ├── lint-all.sh
    │   ├── lint-assertions.sh
    │   ├── lint-circular-dependencies.sh
    │   ├── lint-filenames.sh
    │   ├── lint-format-strings.py
    │   ├── lint-format-strings.sh
    │   ├── lint-include-guards.sh
    │   ├── lint-includes.sh
    │   ├── lint-locale-dependence.sh
    │   ├── lint-logs.sh
    │   ├── lint-python-dead-code.sh
    │   ├── lint-python-utf8-encoding.sh
    │   ├── lint-python.sh
    │   ├── lint-rpc-help.sh
    │   ├── lint-shebang.sh
    │   ├── lint-shell-locale.sh
    │   ├── lint-shell.sh
    │   ├── lint-spelling.ignore-words.txt
    │   ├── lint-spelling.sh
    │   ├── lint-tests.sh
    │   └── lint-whitespace.sh
    ├── sanitizer_suppressions/
    │   ├── lsan
    │   ├── tsan
    │   └── ubsan
    └── util/
        ├── data/
        │   ├── blanktxv1.hex
        │   ├── blanktxv1.json
        │   ├── blanktxv2.hex
        │   ├── blanktxv2.json
        │   ├── tt-delin1-out.hex
        │   ├── tt-delin1-out.json
        │   ├── tt-delout1-out.hex
        │   ├── tt-delout1-out.json
        │   ├── tt-locktime317000-out.hex
        │   ├── tt-locktime317000-out.json
        │   ├── tx394b54bb.hex
        │   ├── txcreate1.hex
        │   ├── txcreate1.json
        │   ├── txcreate2.hex
        │   ├── txcreate2.json
        │   ├── txcreatedata1.hex
        │   ├── txcreatedata1.json
        │   ├── txcreatedata2.hex
        │   ├── txcreatedata2.json
        │   ├── txcreatedata_seq0.hex
        │   ├── txcreatedata_seq0.json
        │   ├── txcreatedata_seq1.hex
        │   ├── txcreatedata_seq1.json
        │   ├── txcreatemultisig1.hex
        │   ├── txcreatemultisig1.json
        │   ├── txcreatemultisig2.hex
        │   ├── txcreatemultisig2.json
        │   ├── txcreatemultisig3.hex
        │   ├── txcreatemultisig3.json
        │   ├── txcreatemultisig4.hex
        │   ├── txcreatemultisig4.json
        │   ├── txcreatemultisig5.json
        │   ├── txcreateoutpubkey1.hex
        │   ├── txcreateoutpubkey1.json
        │   ├── txcreateoutpubkey2.hex
        │   ├── txcreateoutpubkey2.json
        │   ├── txcreateoutpubkey3.hex
        │   ├── txcreateoutpubkey3.json
        │   ├── txcreatescript1.hex
        │   ├── txcreatescript1.json
        │   ├── txcreatescript2.hex
        │   ├── txcreatescript2.json
        │   ├── txcreatescript3.hex
        │   ├── txcreatescript3.json
        │   ├── txcreatescript4.hex
        │   ├── txcreatescript4.json
        │   ├── txcreatesignv1.hex
        │   ├── txcreatesignv1.json
        │   ├── txcreatesignv2.hex
        │   └── util-test.json
        ├── rpcauth-test.py
        └── util-test.py
Download .txt
Showing preview only (781K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8844 symbols across 1012 files)

FILE: contrib/devtools/security-check.py
  function check_ELF_PIE (line 20) | def check_ELF_PIE(executable):
  function get_ELF_program_headers (line 36) | def get_ELF_program_headers(executable):
  function check_ELF_NX (line 65) | def check_ELF_NX(executable):
  function check_ELF_RELRO (line 78) | def check_ELF_RELRO(executable):
  function check_ELF_Canary (line 105) | def check_ELF_Canary(executable):
  function get_PE_dll_characteristics (line 119) | def get_PE_dll_characteristics(executable):
  function check_PE_DYNAMIC_BASE (line 143) | def check_PE_DYNAMIC_BASE(executable):
  function check_PE_HIGH_ENTROPY_VA (line 151) | def check_PE_HIGH_ENTROPY_VA(executable):
  function check_PE_NX (line 161) | def check_PE_NX(executable):
  function identify_executable (line 180) | def identify_executable(executable):

FILE: contrib/devtools/symbol-check.py
  class CPPFilt (line 73) | class CPPFilt(object):
    method __init__ (line 79) | def __init__(self):
    method __call__ (line 82) | def __call__(self, mangled):
    method close (line 87) | def close(self):
  function read_symbols (line 92) | def read_symbols(executable, imports=True):
  function check_version (line 113) | def check_version(max_versions, version):
  function read_libraries (line 124) | def read_libraries(filename):

FILE: contrib/devtools/test-security-check.py
  function write_testcode (line 12) | def write_testcode(filename):
  function call_security_check (line 23) | def call_security_check(cc, source, executable, options):
  class TestSecurityChecks (line 29) | class TestSecurityChecks(unittest.TestCase):
    method test_ELF (line 30) | def test_ELF(self):
    method test_PE (line 47) | def test_PE(self):

FILE: contrib/testgen/base58.py
  class SHA256 (line 12) | class SHA256:
  function ord (line 17) | def ord(c):
  function chr (line 19) | def chr(n):
  function b58encode (line 26) | def b58encode(v):
  function b58decode (line 49) | def b58decode(v, length = None):
  function checksum (line 74) | def checksum(v):
  function b58encode_chk (line 78) | def b58encode_chk(v):
  function b58decode_chk (line 82) | def b58decode_chk(v):
  function get_bcaddress_version (line 92) | def get_bcaddress_version(strAddress):

FILE: contrib/testgen/gen_base58_test_vectors.py
  function is_valid (line 43) | def is_valid(v):
  function gen_valid_vectors (line 56) | def gen_valid_vectors():
  function gen_invalid_vector (line 68) | def gen_invalid_vector(template, corrupt_prefix, randomize_payload_size,...
  function randbool (line 87) | def randbool(p = 0.5):
  function gen_invalid_vectors (line 91) | def gen_invalid_vectors():

FILE: contrib/zmq/zmq_sub.py
  class ZMQHandler (line 39) | class ZMQHandler():
    method __init__ (line 40) | def __init__(self):
    method handle (line 51) | async def handle(self) :
    method start (line 74) | def start(self):
    method stop (line 79) | def stop(self):

FILE: contrib/zmq/zmq_sub3.4.py
  class ZMQHandler (line 43) | class ZMQHandler():
    method __init__ (line 44) | def __init__(self):
    method handle (line 56) | def handle(self) :
    method start (line 79) | def start(self):
    method stop (line 84) | def stop(self):

FILE: developer-tools/python/genbootstrap.py
  function print_bootstrap (line 46) | def print_bootstrap(height):

FILE: developer-tools/python/gencheckpoints.py
  function print_checkpoint (line 33) | def print_checkpoint(height):

FILE: share/rpcauth/rpcauth.py
  function generate_salt (line 13) | def generate_salt(size):
  function generate_password (line 17) | def generate_password():
  function password_to_hmac (line 21) | def password_to_hmac(salt, password):
  function main (line 25) | def main():

FILE: src/LRUCache/LRUCache11.hpp
  type lru11 (line 40) | namespace lru11 {
    class NullLock (line 44) | class NullLock {
      method lock (line 46) | void lock() {}
      method unlock (line 47) | void unlock() {}
      method try_lock (line 48) | bool try_lock() { return true; }
    class KeyNotFound (line 54) | class KeyNotFound : public std::invalid_argument {
      method KeyNotFound (line 56) | KeyNotFound() : std::invalid_argument("key_not_found") {}
    type KeyValuePair (line 60) | struct KeyValuePair {
      method KeyValuePair (line 65) | KeyValuePair(const K& k, const V& v) : key(k), value(v) {}
    class Cache (line 83) | class Cache {
      method Cache (line 99) | explicit Cache(size_t maxSize = 64, size_t elasticity = 10)
      method size (line 102) | size_t size() const {
      method empty (line 106) | bool empty() const {
      method clear (line 110) | void clear() {
      method insert (line 115) | void insert(const Key& k, const Value& v) {
      method tryGet (line 128) | bool tryGet(const Key& kIn, Value& vOut) {
      method Value (line 142) | const Value& get(const Key& k) {
      method Value (line 154) | Value getCopy(const Key& k) {
      method remove (line 157) | bool remove(const Key& k) {
      method contains (line 167) | bool contains(const Key& k) const {
      method getMaxSize (line 172) | size_t getMaxSize() const { return maxSize_; }
      method getElasticity (line 173) | size_t getElasticity() const { return elasticity_; }
      method getMaxAllowedSize (line 174) | size_t getMaxAllowedSize() const { return maxSize_ + elasticity_; }
      method cwalk (line 176) | void cwalk(F& f) const {
      method prune (line 182) | size_t prune() {
      method Cache (line 198) | Cache(const Cache&) = delete;
      method Cache (line 199) | Cache& operator=(const Cache&) = delete;

FILE: src/addrdb.h
  type BanReason (line 19) | typedef enum BanReason
  function class (line 26) | class CBanEntry
  function SetNull (line 56) | void SetNull()
  type std (line 77) | typedef std::map<CSubNet, CBanEntry> banmap_t;
  function class (line 80) | class CAddrDB
  function class (line 92) | class CBanDB

FILE: src/addrman.cpp
  function CAddrInfo (line 75) | CAddrInfo* CAddrMan::Find(const CNetAddr& addr, int* pnId)
  function CAddrInfo (line 88) | CAddrInfo* CAddrMan::Create(const CAddress& addr, const CNetAddr& addrSo...
  function CAddrInfo (line 344) | CAddrInfo CAddrMan::Select_(bool newOnly)

FILE: src/addrman.h
  function class (line 24) | class CAddrInfo : public CAddress
  function Init (line 68) | void Init()
  function GetNewBucket (line 96) | int GetNewBucket(const uint256 &nKey) const
  function class (line 182) | class CAddrMan
  function Clear (line 456) | void Clear()
  function size (line 488) | size_t size() const
  function Good (line 537) | void Good(const CService &addr, int64_t nTime = GetAdjustedTime())
  function Attempt (line 546) | void Attempt(const CService &addr, bool fCountFailure, int64_t nTime = G...
  function Connected (line 583) | void Connected(const CService &addr, int64_t nTime = GetAdjustedTime())
  function SetServices (line 591) | void SetServices(const CService &addr, ServiceFlags nServices)

FILE: src/alert.cpp
  function uint256 (line 104) | uint256 CAlert::GetHash() const
  function CAlert (line 167) | CAlert CAlert::getAlertByHash(const uint256 &hash)

FILE: src/alert.h
  function class (line 37) | class CUnsignedAlert
  function class (line 83) | class CAlert : public CUnsignedAlert

FILE: src/amount.h
  type CAmount (line 19) | typedef int64_t CAmount;
  function MoneyRange (line 40) | inline bool MoneyRange(const CAmount& nValue) { return (nValue >= 0 && n...

FILE: src/arith_uint256.cpp
  function arith_uint256 (line 204) | arith_uint256& arith_uint256::SetCompact(uint32_t nCompact, bool* pfNega...
  function uint256 (line 247) | uint256 ArithToUint256(const arith_uint256 &a)
  function arith_uint256 (line 254) | arith_uint256 UintToArith256(const uint256 &a)

FILE: src/arith_uint256.h
  function class (line 18) | class uint_error : public std::runtime_error {
  function bits (line 243) | unsigned int bits() const;

FILE: src/base58.cpp
  function DecodeBase58 (line 28) | bool DecodeBase58(const char* psz, std::vector<unsigned char>& vch)
  function EncodeBase58 (line 78) | std::string EncodeBase58(const unsigned char* pbegin, const unsigned cha...
  function EncodeBase58 (line 118) | std::string EncodeBase58(const std::vector<unsigned char>& vch)
  function DecodeBase58 (line 123) | bool DecodeBase58(const std::string& str, std::vector<unsigned char>& vc...
  function EncodeBase58Check (line 128) | std::string EncodeBase58Check(const std::vector<unsigned char>& vchIn)
  function DecodeBase58Check (line 137) | bool DecodeBase58Check(const char* psz, std::vector<unsigned char>& vchRet)
  function DecodeBase58Check (line 154) | bool DecodeBase58Check(const std::string& str, std::vector<unsigned char...
  class CNativeAddressVisitor (line 222) | class CNativeAddressVisitor : public boost::static_visitor<bool>
    method CNativeAddressVisitor (line 228) | CNativeAddressVisitor(CNativeAddress* addrIn) : addr(addrIn) {}
  function CTxDestination (line 301) | CTxDestination CNativeAddress::Get() const
  function CKey (line 361) | CKey CEncodedSecretKey::GetKey()

FILE: src/base58.h
  function class (line 83) | class CBase58Data
  function class (line 116) | class CNativeAddress : public CBase58Data {
  function CTxDestination (line 139) | CTxDestination Get() const;
  function class (line 163) | class CEncodedSecretKey : public CBase58Data
  function KeyType (line 183) | KeyType GetKeyFromString()
  function SetString (line 210) | bool SetString(const char* pszSecret)
  function SetString (line 217) | bool SetString(const std::string& strSecret)
  function fromURIString (line 252) | bool fromURIString(std::string uri)
  function KeyType (line 310) | KeyType getKeyRaw() { return key; }
  function K (line 332) | K GetKey() {
  type CEncodedSecretExtKeyBase (line 352) | typedef CEncodedSecretExtKeyBase<CExtKey, BIP32_EXTKEY_SIZE, CChainParam...
  type CEncodedSecretExtKeyBase (line 353) | typedef CEncodedSecretExtKeyBase<CExtPubKey, BIP32_EXTKEY_SIZE, CChainPa...

FILE: src/bench/Examples.cpp
  function Sleep100ms (line 11) | static void Sleep100ms(benchmark::State& state)
  function Trig (line 25) | static void Trig(benchmark::State& state)

FILE: src/bench/base58.cpp
  function Base58Encode (line 14) | static void Base58Encode(benchmark::State& state)
  function Base58CheckEncode (line 28) | static void Base58CheckEncode(benchmark::State& state)
  function Base58Decode (line 44) | static void Base58Decode(benchmark::State& state)

FILE: src/bench/bench.cpp
  function gettimedouble (line 18) | static double gettimedouble(void) {

FILE: src/bench/bench.h
  function namespace (line 38) | namespace benchmark {

FILE: src/bench/bench_munt.cpp
  function main (line 11) | int

FILE: src/bench/bench_sigma.cpp
  function LogPrintStr (line 17) | int LogPrintStr(const std::string &str)
  function testShaviteReference (line 98) | void testShaviteReference(uint64_t& nTestFailCount)
  function testShaviteOptimised (line 124) | void testShaviteOptimised(uint64_t& nTestFailCount)
  function testEchoReference (line 152) | void testEchoReference(uint64_t& nTestFailCount)
  function testEchoOptimised (line 178) | void testEchoOptimised(uint64_t& nTestFailCount)
  function testArgonReference (line 206) | void testArgonReference(uint64_t& nTestFailCount)
  function testArgonOptimised (line 240) | void testArgonOptimised(uint64_t& nTestFailCount)
  function testPRNG (line 274) | void testPRNG(uint64_t& nTestFailCount)
  function testValidateValidHeaders (line 321) | void testValidateValidHeaders(sigma_settings settings, uint64_t& nTestFa...
  function testValidateInvalidHeaders (line 351) | void testValidateInvalidHeaders(sigma_settings settings, uint64_t& nTest...
  function calculateSustainedHashrateForTimePeriod (line 372) | double calculateSustainedHashrateForTimePeriod(uint64_t maxHashesPre, ui...
  function main (line 389) | int main(int argc, char** argv)

FILE: src/bench/ccoins_caching.cpp
  function SetupDummyInputs (line 19) | static std::vector<CMutableTransaction>
  function CCoinsCaching (line 56) | static void CCoinsCaching(benchmark::State& state)

FILE: src/bench/checkblock.cpp
  type block_bench (line 12) | namespace block_bench {
  function DeserializeBlockTest (line 20) | static void DeserializeBlockTest(benchmark::State& state)
  function DeserializeAndCheckBlockTest (line 35) | static void DeserializeAndCheckBlockTest(benchmark::State& state)

FILE: src/bench/checkqueue.cpp
  function CCheckQueueSpeed (line 23) | static void CCheckQueueSpeed(benchmark::State& state)
  function CCheckQueueSpeedPrevectorJob (line 61) | static void CCheckQueueSpeedPrevectorJob(benchmark::State& state)

FILE: src/bench/coin_selection.cpp
  function addCoin (line 10) | static void addCoin(const CAmount& nValue, const CWallet& wallet, std::v...
  function CoinSelection (line 33) | static void CoinSelection(benchmark::State& state)

FILE: src/bench/crypto_hash.cpp
  function RIPEMD160 (line 21) | static void RIPEMD160(benchmark::State& state)
  function SHA1 (line 29) | static void SHA1(benchmark::State& state)
  function SHA256 (line 37) | static void SHA256(benchmark::State& state)
  function SHA256_32b (line 45) | static void SHA256_32b(benchmark::State& state)
  function SHA512 (line 55) | static void SHA512(benchmark::State& state)
  function SipHash_32b (line 63) | static void SipHash_32b(benchmark::State& state)
  function FastRandom_32bit (line 73) | static void FastRandom_32bit(benchmark::State& state)
  function FastRandom_1bit (line 84) | static void FastRandom_1bit(benchmark::State& state)

FILE: src/bench/lockedpool.cpp
  function BenchLockedPool (line 16) | static void BenchLockedPool(benchmark::State& state)

FILE: src/bench/mempool_eviction.cpp
  function AddTx (line 12) | static void AddTx(const CTransaction& tx, const CAmount& nFee, CTxMemPoo...
  function MempoolEviction (line 27) | static void MempoolEviction(benchmark::State& state)

FILE: src/bench/perf.cpp
  function perf_init (line 12) | void perf_init(void) { }
  function perf_fini (line 13) | void perf_fini(void) { }
  type perf_event_attr (line 22) | struct perf_event_attr
  function perf_init (line 24) | void perf_init(void)
  function perf_fini (line 31) | void perf_fini(void)
  function perf_cpucycles (line 38) | uint64_t perf_cpucycles(void)
  function perf_init (line 49) | void perf_init(void) { }
  function perf_fini (line 50) | void perf_fini(void) { }
  function perf_cpucycles (line 51) | uint64_t perf_cpucycles(void) { return 0; }

FILE: src/bench/perf.h
  function perf_cpucycles (line 13) | static inline uint64_t perf_cpucycles(void)
  function perf_cpucycles (line 22) | static inline uint64_t perf_cpucycles(void)

FILE: src/bench/prevector_destructor.cpp
  function PrevectorDestructor (line 8) | static void PrevectorDestructor(benchmark::State& state)
  function PrevectorClear (line 20) | static void PrevectorClear(benchmark::State& state)

FILE: src/bench/rollingbloom.cpp
  function RollingBloom (line 11) | static void RollingBloom(benchmark::State& state)

FILE: src/bench/verify_script.cpp
  function CMutableTransaction (line 15) | static CMutableTransaction BuildCreditingTransaction(const CScript& scri...
  function CMutableTransaction (line 33) | static CMutableTransaction BuildSpendingTransaction(const CScript& scrip...
  function VerifyScriptBench (line 53) | static void VerifyScriptBench(benchmark::State& state)

FILE: src/blockencodings.cpp
  function ReadStatus (line 58) | ReadStatus PartiallyDownloadedBlock::InitData(const CBlockHeaderAndShort...
  function ReadStatus (line 186) | ReadStatus PartiallyDownloadedBlock::FillBlock(CBlock& block, const std:...

FILE: src/blockencodings.h
  type TransactionCompressor (line 22) | struct TransactionCompressor {
  function class (line 36) | class BlockTransactionsRequest {
  function class (line 78) | class BlockTransactions {
  type PrefilledTransaction (line 110) | struct PrefilledTransaction {
  type ReadStatus (line 129) | typedef enum ReadStatus_t
  function class (line 138) | class CBlockHeaderAndShortTxIDs {
  function class (line 201) | class PartiallyDownloadedBlock {

FILE: src/blockfilter.cpp
  function GolombRiceEncode (line 37) | static void GolombRiceEncode(BitStreamWriter<OStream>& bitwriter, uint8_...
  function GolombRiceDecode (line 54) | static uint64_t GolombRiceDecode(BitStreamReader<IStream>& bitreader, ui...
  function MapIntoRange (line 72) | static uint64_t MapIntoRange(uint64_t x, uint64_t n)
  function BlockFilterTypeByName (line 230) | bool BlockFilterTypeByName(const std::string& name, BlockFilterType& fil...
  function ListBlockFilterTypes (line 248) | std::string ListBlockFilterTypes()
  function BasicFilterElements (line 260) | static void BasicFilterElements(GCSFilter::ElementSet& elements, const C...
  function BasicFilterElements (line 290) | static void BasicFilterElements(GCSFilter::ElementSet& elements, const C...
  function BasicFilterElements (line 308) | static GCSFilter::ElementSet BasicFilterElements(const CBlock& block, co...
  function uint256 (line 349) | uint256 BlockFilter::GetHash() const
  function uint256 (line 358) | uint256 BlockFilter::ComputeHeader(const uint256& prev_header) const
  function getBlockFilterBirthAndRanges (line 447) | void getBlockFilterBirthAndRanges(uint64_t nHardBirthDate, uint64_t& nSo...

FILE: src/blockfilter.h
  type std (line 35) | typedef std::unordered_set<Element, ByteVectorHash> ElementSet;
  function GetParams (line 37) | struct Params
  function class (line 180) | class RangedCPBlockFilter : public BlockFilter

FILE: src/blockstore.cpp
  function FILE (line 33) | FILE* CBlockStore::GetDiskFile(const CDiskBlockPos &pos, BlockFileType f...
  function FILE (line 69) | FILE* CBlockStore::GetBlockFile(const CDiskBlockPos &pos, bool fNoCreate) {
  function FILE (line 73) | FILE* CBlockStore::GetUndoFile(const CDiskBlockPos &pos, bool fNoCreate) {

FILE: src/blockstore.h
  function class (line 25) | class CBlockStore

FILE: src/bloom.cpp
  function RollingBloomHash (line 166) | static inline uint32_t RollingBloomHash(unsigned int nHashNum, uint32_t ...

FILE: src/bloom.h
  type bloomflags (line 31) | enum bloomflags
  function class (line 51) | class CBloomFilter
  function class (line 121) | class CRollingBloomFilter

FILE: src/chain.cpp
  function CBlockLocator (line 31) | CBlockLocator CChain::GetLocatorLegacy(const CBlockIndex *pindex) const {
  function CBlockLocator (line 59) | CBlockLocator CChain::GetLocatorPoW2(const CBlockIndex *pindex) const {
  function CBlockIndex (line 87) | const CBlockIndex *CChain::FindFork(const CBlockIndex *pindex) const {
  function CBlockIndex (line 179) | CBlockIndex *CCloneChain::operator[](int nHeight) const
  function CBlockIndex (line 207) | CBlockIndex* CChain::FindEarliestAtLeast(int64_t nTime) const
  function InvertLowestOne (line 215) | int static inline InvertLowestOne(int n) { return n & (n - 1); }
  function GetSkipHeight (line 218) | int static inline GetSkipHeight(int height) {
  function CBlockIndex (line 228) | CBlockIndex* CBlockIndex::GetAncestor(int height)
  function CBlockIndex (line 257) | const CBlockIndex* CBlockIndex::GetAncestor(int height) const
  function arith_uint256 (line 268) | arith_uint256 GetBlockProof(const CBlockIndex& block)
  function CBlockIndex (line 283) | const CBlockIndex* LastCommonAncestor(const CBlockIndex* pa, const CBloc...
  function GetBlockProofEquivalentTime (line 305) | int64_t GetBlockProofEquivalentTime(const CBlockIndex& to, const CBlockI...
  function CBlockIndex (line 346) | CBlockIndex *CPartialChain::operator[](int nHeight) const
  function CBlockLocator (line 377) | CBlockLocator CPartialChain::GetLocatorPoW2(const CBlockIndex *pindex) c...

FILE: src/chain.h
  function class (line 40) | class CBlockFileInfo
  function SetNull (line 64) | void SetNull() {
  function AddBlock (line 81) | void AddBlock(unsigned int nHeightIn, uint64_t nTimeIn) {
  function CDiskBlockPos (line 94) | struct CDiskBlockPos
  function SetNull (line 137) | void SetNull() { nFile = -1; nPos = 0; }
  type BlockStatus (line 147) | enum BlockStatus: uint32_t {
  function class (line 200) | class CBlockIndex
  function CDiskBlockPos (line 322) | CDiskBlockPos GetBlockPos() const {
  function CBlockHeader (line 340) | CBlockHeader GetBlockHeader() const
  function GetMedianTimePast (line 391) | int64_t GetMedianTimePast() const
  function GetMedianTimePastWitness (line 460) | int64_t GetMedianTimePastWitness() const
  function IsValid (line 491) | bool IsValid(enum BlockStatus nUpTo = BLOCK_VALID_TRANSACTIONS) const
  function RaiseValidity (line 501) | bool RaiseValidity(enum BlockStatus nUpTo)
  function IsPartialValid (line 514) | bool IsPartialValid(enum BlockStatus nUpTo = BLOCK_PARTIAL_TREE) const
  function RaisePartialValidity (line 524) | bool RaisePartialValidity(enum BlockStatus nUpTo)
  function class (line 552) | class CDiskBlockIndex : public CBlockIndex
  function uint256 (line 616) | uint256 GetBlockHashLegacy() const
  function class (line 665) | class CChain {
  function HeightOffset (line 762) | int HeightOffset() const;

FILE: src/chainparams.cpp
  function CBlock (line 28) | static CBlock CreateGenesisBlock(const std::vector<unsigned char>& times...
  function CBlock (line 60) | static CBlock CreateGenesisBlock(uint32_t nTime, uint32_t nNonce, uint32...
  class CMainParams (line 85) | class CMainParams : public CChainParams {
    method CMainParams (line 87) | CMainParams() {
  function GenerateGenesisBlock (line 177) | void GenerateGenesisBlock(CBlock& genesis, std::string seedKey, CKey& ge...
  class CTestNetParams (line 250) | class CTestNetParams : public CChainParams {
    method CTestNetParams (line 252) | CTestNetParams() {
  class CRegTestLegacyParams (line 396) | class CRegTestLegacyParams : public CChainParams {
    method CRegTestLegacyParams (line 398) | CRegTestLegacyParams() {
  class CRegTestParams (line 481) | class CRegTestParams : public CChainParams {
    method CRegTestParams (line 483) | CRegTestParams() {
  function CChainParams (line 573) | const CChainParams &Params() {
  function CreateChainParams (line 578) | std::unique_ptr<CChainParams> CreateChainParams(const std::string& chain)
  function SelectParams (line 591) | void SelectParams(const std::string& network)
  function FreeParams (line 597) | void FreeParams()
  function UpdateVersionBitsParameters (line 602) | void UpdateVersionBitsParameters(Consensus::DeploymentPos d, int64_t nSt...

FILE: src/chainparams.h
  function GenesisBlock (line 25) | struct CDNSSeedData {
  function std (line 83) | const std::vector<unsigned char>& Base58Prefix(Base58Type type) const { ...

FILE: src/chainparamsbase.cpp
  function AppendParamsHelpMessages (line 25) | void AppendParamsHelpMessages(std::string& strUsage, bool debugHelp)
  class CBaseMainParams (line 38) | class CBaseMainParams : public CBaseChainParams
    method CBaseMainParams (line 41) | CBaseMainParams()
  class CBaseTestNetParams (line 50) | class CBaseTestNetParams : public CBaseChainParams
    method CBaseTestNetParams (line 53) | CBaseTestNetParams()
  class CBaseRegTestParams (line 65) | class CBaseRegTestParams : public CBaseChainParams
    method CBaseRegTestParams (line 68) | CBaseRegTestParams()
  class CBaseRegTestLegacyParams (line 78) | class CBaseRegTestLegacyParams : public CBaseChainParams
    method CBaseRegTestLegacyParams (line 81) | CBaseRegTestLegacyParams()
  function CBaseChainParams (line 90) | const CBaseChainParams& BaseParams()
  function CreateBaseChainParams (line 96) | std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::strin...
  function SelectBaseParams (line 110) | void SelectBaseParams(const std::string& chain)
  function ChainNameFromCommandLine (line 115) | std::string ChainNameFromCommandLine()

FILE: src/chainparamsbase.h
  function class (line 16) | class CBaseChainParams

FILE: src/checkpoints.cpp
  type Checkpoints (line 23) | namespace Checkpoints {
    function CBlockIndex (line 29) | CBlockIndex* GetLastCheckpointIndex()
    function LastCheckPointHeight (line 42) | int LastCheckPointHeight()
    function LastCheckpointBeforeBlock (line 55) | int LastCheckpointBeforeBlock(uint64_t blockHeight)
    function LastCheckpointBeforeTime (line 67) | int LastCheckpointBeforeTime(uint64_t atTime)

FILE: src/checkpoints.h
  function namespace (line 23) | namespace Checkpoints

FILE: src/checkqueue.h
  function GUARDED_BY (line 47) | int nIdle GUARDED_BY(m_mutex){0}
  function GUARDED_BY (line 50) | int nTotal GUARDED_BY(m_mutex){0}
  function GUARDED_BY (line 60) | unsigned int nTodo GUARDED_BY(m_mutex){0}
  function Loop (line 69) | bool Loop(bool fMaster)
  function explicit (line 137) | explicit CCheckQueue(unsigned int nBatchSizeIn)
  function StartWorkerThreads (line 143) | void StartWorkerThreads(const int threads_num)
  function Wait (line 162) | bool Wait()
  function Add (line 168) | void Add(std::vector<T>& vChecks)
  function explicit (line 224) | explicit CCheckQueueControl(CCheckQueue<T> * const pqueueIn) : pqueue(pq...
  function Wait (line 232) | bool Wait()
  function Add (line 241) | void Add(std::vector<T>& vChecks)

FILE: src/cli-main.cpp
  function HelpMessageCli (line 42) | static std::string HelpMessageCli()
  class CConnectionFailed (line 73) | class CConnectionFailed : public std::runtime_error
    method CConnectionFailed (line 77) | explicit inline CConnectionFailed(const std::string& msg) :
  function AppInitRPC (line 87) | static int AppInitRPC(int argc, char* argv[])
  type HTTPReply (line 139) | struct HTTPReply
    method HTTPReply (line 141) | HTTPReply(): status(0), error(-1) {}
  function http_request_done (line 170) | static void http_request_done(struct evhttp_request *req, void *ctx)
  function http_error_cb (line 196) | static void http_error_cb(enum evhttp_request_error err, void *ctx)
  function UniValue (line 203) | UniValue CallRPC(const std::string& strMethod, const UniValue& params)
  function CommandLineRPC (line 277) | int CommandLineRPC(int argc, char *argv[])
  function main (line 370) | int main(int argc, char* argv[])

FILE: src/clientversion.cpp
  function FormatVersion (line 93) | static std::string FormatVersion(int nVersion)
  function FormatFullVersion (line 101) | std::string FormatFullVersion()
  function FormatThreeDigitVersion (line 106) | std::string FormatThreeDigitVersion()
  function FormatSubVersion (line 114) | std::string FormatSubVersion(const std::string& name, int nClientVersion...
  function UserAgent (line 131) | std::string UserAgent()
  function Version (line 136) | std::string Version()

FILE: src/coins.cpp
  function uint256 (line 29) | uint256 CCoinsView::GetBestBlock() const { return uint256(); }
  function CCoinsViewCursor (line 31) | CCoinsViewCursor *CCoinsView::Cursor() const { return 0; }
  function uint256 (line 37) | uint256 CCoinsViewBacked::GetBestBlock() const { return base->GetBestBlo...
  function CCoinsViewCursor (line 40) | CCoinsViewCursor *CCoinsViewBacked::Cursor() const { return base->Cursor...
  function AddCoins (line 299) | void AddCoins(CCoinsViewCache& cache, const CTransaction &tx, uint32_t n...
  function Coin (line 355) | const Coin& CCoinsViewCache::AccessCoin(const COutPoint &outpoint) const
  function uint256 (line 380) | uint256 CCoinsViewCache::GetBestBlock() const
  function CAmount (line 590) | CAmount CCoinsViewCache::GetValueIn(const CTransaction& tx) const
  function Coin (line 630) | const Coin& AccessByTxid(const CCoinsViewCache& view, const uint256& txid)

FILE: src/coins.h
  function class (line 39) | class Coin
  function Spend (line 117) | void Spend() {
  function class (line 126) | class CoinUndo : public Coin
  function class (line 164) | class SaltedOutpointHasher
  type CCoinsCacheEntry (line 183) | struct CCoinsCacheEntry
  function class (line 226) | class CCoinsView
  function class (line 259) | class CCoinsViewBacked : public CCoinsView
  function class (line 289) | class CCoinsViewCache : public CCoinsViewBacked
  function GetAllCoinsIndexBasedDirect (line 415) | void GetAllCoinsIndexBasedDirect(std::map<COutPoint, Coin>& allCoinsInde...

FILE: src/compat.h
  type SOCKET (line 51) | typedef unsigned int SOCKET;

FILE: src/compat/byteswap.h
  function bswap_16 (line 36) | inline uint16_t bswap_16(uint16_t x)
  function bswap_32 (line 43) | inline uint32_t bswap_32(uint32_t x)
  function bswap_64 (line 51) | inline uint64_t bswap_64(uint64_t x)

FILE: src/compat/cpuid.h
  function GetCPUID (line 14) | void static inline GetCPUID(uint32_t leaf, uint32_t subleaf, uint32_t& a...

FILE: src/compat/endian.h
  function le32dec (line 23) | static inline uint32_t le32dec(const void *pp)
  function le32enc (line 30) | static inline void le32enc(void *pp, uint32_t x)
  function be32dec (line 39) | static inline uint32_t be32dec(const void *pp)
  function be32enc (line 46) | static inline void be32enc(void *pp, uint32_t x)
  function be64dec (line 56) | static inline uint64_t be64dec(const void * pp)
  function be64enc (line 66) | static inline void be64enc(void * pp, uint64_t x)
  function le64dec (line 80) | static inline uint64_t le64dec(const void * pp)
  function le64enc (line 90) | static inline void le64enc(void * pp, uint64_t x)
  function htobe16 (line 108) | inline uint16_t htobe16(uint16_t host_16bits)
  function htole16 (line 115) | inline uint16_t htole16(uint16_t host_16bits)
  function be16toh (line 122) | inline uint16_t be16toh(uint16_t big_endian_16bits)
  function le16toh (line 129) | inline uint16_t le16toh(uint16_t little_endian_16bits)
  function htobe32 (line 136) | inline uint32_t htobe32(uint32_t host_32bits)
  function htole32 (line 143) | inline uint32_t htole32(uint32_t host_32bits)
  function be32toh (line 150) | inline uint32_t be32toh(uint32_t big_endian_32bits)
  function le32toh (line 157) | inline uint32_t le32toh(uint32_t little_endian_32bits)
  function htobe64 (line 164) | inline uint64_t htobe64(uint64_t host_64bits)
  function htole64 (line 171) | inline uint64_t htole64(uint64_t host_64bits)
  function be64toh (line 178) | inline uint64_t be64toh(uint64_t big_endian_64bits)
  function le64toh (line 185) | inline uint64_t le64toh(uint64_t little_endian_64bits)
  function htobe16 (line 194) | inline uint16_t htobe16(uint16_t host_16bits)
  function htole16 (line 201) | inline uint16_t htole16(uint16_t host_16bits)
  function be16toh (line 208) | inline uint16_t be16toh(uint16_t big_endian_16bits)
  function le16toh (line 215) | inline uint16_t le16toh(uint16_t little_endian_16bits)
  function htobe32 (line 222) | inline uint32_t htobe32(uint32_t host_32bits)
  function htole32 (line 229) | inline uint32_t htole32(uint32_t host_32bits)
  function be32toh (line 236) | inline uint32_t be32toh(uint32_t big_endian_32bits)
  function le32toh (line 243) | inline uint32_t le32toh(uint32_t little_endian_32bits)
  function htobe64 (line 250) | inline uint64_t htobe64(uint64_t host_64bits)
  function htole64 (line 257) | inline uint64_t htole64(uint64_t host_64bits)
  function be64toh (line 264) | inline uint64_t be64toh(uint64_t big_endian_64bits)
  function le64toh (line 271) | inline uint64_t le64toh(uint64_t little_endian_64bits)

FILE: src/compat/glibc_sanity.cpp
  function sanity_test_memcpy (line 29) | bool sanity_test_memcpy()
  function sanity_test_fdelt (line 50) | bool sanity_test_fdelt()
  function glibc_sanity_test (line 61) | bool glibc_sanity_test()

FILE: src/compat/glibcxx_sanity.cpp
  function sanity_test_widen (line 14) | bool sanity_test_widen(char testchar)
  function sanity_test_list (line 24) | bool sanity_test_list(unsigned int size)
  function sanity_test_range_fmt (line 46) | static bool sanity_test_range_fmt()
  function glibcxx_sanity_test (line 58) | bool glibcxx_sanity_test()

FILE: src/compat/sse.h
  function __m128i (line 36) | inline __m128i _mm_aesenc_si128(__m128i a, __m128i b)
  type std (line 53) | typedef std::array<uint8_t, 16> __m128i;
  function __m128i (line 61) | inline __m128i _mm_aesenc_si128_sw(__m128i EncBlock, __m128i RoundKey)
  function __m128i (line 89) | inline __m128i _mm_aesenc_si128_sw (__m128i a, __m128i b)

FILE: src/compat/sse2neon.h
  type float32x2_t (line 101) | typedef float32x2_t __m64;
  type float32x4_t (line 102) | typedef float32x4_t __m128;
  type int32x4_t (line 103) | typedef int32x4_t __m128i;
  type sint32_t (line 170) | typedef int32_t sint32_t __attribute__((vector_size(16)));
  function FORCE_INLINE (line 199) | FORCE_INLINE uint8x16x4_t vld1q_u8_x4(const uint8_t *p)
  function FORCE_INLINE (line 218) | FORCE_INLINE void _mm_prefetch(const void *p, int i)
  function FORCE_INLINE (line 225) | FORCE_INLINE float _mm_cvtss_f32(__m128 a)
  function FORCE_INLINE (line 232) | FORCE_INLINE __m128i _mm_setzero_si128(void)
  function FORCE_INLINE (line 239) | FORCE_INLINE __m128 _mm_setzero_ps(void)
  function FORCE_INLINE (line 249) | FORCE_INLINE __m128 _mm_set1_ps(float _w)
  function FORCE_INLINE (line 256) | FORCE_INLINE __m128 _mm_set_ps1(float _w)
  function FORCE_INLINE (line 263) | FORCE_INLINE __m128 _mm_set_ps(float w, float z, float y, float x)
  function FORCE_INLINE (line 272) | FORCE_INLINE __m128 _mm_setr_ps(float w, float z, float y, float x)
  function FORCE_INLINE (line 285) | FORCE_INLINE __m128i _mm_setr_epi16(short w0,
  function FORCE_INLINE (line 301) | FORCE_INLINE __m128i _mm_setr_epi32(int i3, int i2, int i1, int i0)
  function FORCE_INLINE (line 315) | FORCE_INLINE __m128i _mm_set1_epi8(char w)
  function FORCE_INLINE (line 328) | FORCE_INLINE __m128i _mm_set1_epi16(short w)
  function FORCE_INLINE (line 335) | FORCE_INLINE __m128i _mm_set_epi8(char b15,
  function FORCE_INLINE (line 362) | FORCE_INLINE __m128i _mm_set_epi16(short i7,
  function FORCE_INLINE (line 378) | FORCE_INLINE __m128i _mm_setr_epi8(char b0,
  function FORCE_INLINE (line 411) | FORCE_INLINE __m128i _mm_set1_epi32(int _i)
  function FORCE_INLINE (line 418) | FORCE_INLINE __m128i _mm_set1_epi64(int64_t _i)
  function FORCE_INLINE (line 425) | FORCE_INLINE __m128i _mm_set_epi32(int i3, int i2, int i1, int i0)
  function FORCE_INLINE (line 434) | FORCE_INLINE __m128i _mm_set_epi64x(int64_t i1, int64_t i2)
  function FORCE_INLINE (line 442) | FORCE_INLINE void _mm_store_ps(float *p, __m128 a)
  function FORCE_INLINE (line 449) | FORCE_INLINE void _mm_storeu_ps(float *p, __m128 a)
  function FORCE_INLINE (line 456) | FORCE_INLINE void _mm_store_si128(__m128i *p, __m128i a)
  function FORCE_INLINE (line 463) | FORCE_INLINE void _mm_storeu_si128(__m128i *p, __m128i a)
  function FORCE_INLINE (line 470) | FORCE_INLINE void _mm_store_ss(float *p, __m128 a)
  function FORCE_INLINE (line 477) | FORCE_INLINE void _mm_storel_epi64(__m128i *a, __m128i b)
  function FORCE_INLINE (line 491) | FORCE_INLINE void _mm_storel_pi(__m64 *p, __m128 a)
  function FORCE_INLINE (line 499) | FORCE_INLINE __m128 _mm_load1_ps(const float *p)
  function FORCE_INLINE (line 516) | FORCE_INLINE __m128 _mm_loadl_pi(__m128 a, __m64 const *b)
  function FORCE_INLINE (line 524) | FORCE_INLINE __m128 _mm_load_ps(const float *p)
  function FORCE_INLINE (line 531) | FORCE_INLINE __m128 _mm_loadu_ps(const float *p)
  function FORCE_INLINE (line 541) | FORCE_INLINE __m128 _mm_load_ss(const float *p)
  function FORCE_INLINE (line 546) | FORCE_INLINE __m128i _mm_loadl_epi64(__m128i const *p)
  function FORCE_INLINE (line 560) | FORCE_INLINE __m128 _mm_cmpneq_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 575) | FORCE_INLINE __m128 _mm_andnot_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 588) | FORCE_INLINE __m128i _mm_andnot_si128(__m128i a, __m128i b)
  function FORCE_INLINE (line 601) | FORCE_INLINE __m128i _mm_and_si128(__m128i a, __m128i b)
  function FORCE_INLINE (line 616) | FORCE_INLINE __m128 _mm_and_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 625) | FORCE_INLINE __m128 _mm_or_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 634) | FORCE_INLINE __m128 _mm_xor_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 645) | FORCE_INLINE __m128i _mm_or_si128(__m128i a, __m128i b)
  function FORCE_INLINE (line 653) | FORCE_INLINE __m128i _mm_xor_si128(__m128i a, __m128i b)
  function FORCE_INLINE (line 665) | FORCE_INLINE __m128 _mm_movehl_ps(__m128 __A, __m128 __B)
  function FORCE_INLINE (line 678) | FORCE_INLINE __m128 _mm_movelh_ps(__m128 __A, __m128 __B)
  function FORCE_INLINE (line 689) | FORCE_INLINE int _mm_movemask_ps(__m128 a)
  function FORCE_INLINE (line 706) | FORCE_INLINE __m128i _mm_abs_epi32(__m128i a)
  function FORCE_INLINE (line 711) | FORCE_INLINE __m128i _mm_abs_epi16(__m128i a)
  function FORCE_INLINE (line 718) | FORCE_INLINE __m128 _mm_shuffle_ps_1032(__m128 a, __m128 b)
  function FORCE_INLINE (line 728) | FORCE_INLINE __m128 _mm_shuffle_ps_2301(__m128 a, __m128 b)
  function FORCE_INLINE (line 735) | FORCE_INLINE __m128 _mm_shuffle_ps_0321(__m128 a, __m128 b)
  function FORCE_INLINE (line 744) | FORCE_INLINE __m128 _mm_shuffle_ps_2103(__m128 a, __m128 b)
  function FORCE_INLINE (line 753) | FORCE_INLINE __m128 _mm_shuffle_ps_1010(__m128 a, __m128 b)
  function FORCE_INLINE (line 760) | FORCE_INLINE __m128 _mm_shuffle_ps_1001(__m128 a, __m128 b)
  function FORCE_INLINE (line 767) | FORCE_INLINE __m128 _mm_shuffle_ps_0101(__m128 a, __m128 b)
  function FORCE_INLINE (line 776) | FORCE_INLINE __m128 _mm_shuffle_ps_3210(__m128 a, __m128 b)
  function FORCE_INLINE (line 783) | FORCE_INLINE __m128 _mm_shuffle_ps_0011(__m128 a, __m128 b)
  function FORCE_INLINE (line 790) | FORCE_INLINE __m128 _mm_shuffle_ps_0022(__m128 a, __m128 b)
  function FORCE_INLINE (line 798) | FORCE_INLINE __m128 _mm_shuffle_ps_2200(__m128 a, __m128 b)
  function FORCE_INLINE (line 806) | FORCE_INLINE __m128 _mm_shuffle_ps_3202(__m128 a, __m128 b)
  function FORCE_INLINE (line 816) | FORCE_INLINE __m128 _mm_shuffle_ps_1133(__m128 a, __m128 b)
  function FORCE_INLINE (line 824) | FORCE_INLINE __m128 _mm_shuffle_ps_2010(__m128 a, __m128 b)
  function FORCE_INLINE (line 833) | FORCE_INLINE __m128 _mm_shuffle_ps_2001(__m128 a, __m128 b)
  function FORCE_INLINE (line 842) | FORCE_INLINE __m128 _mm_shuffle_ps_2032(__m128 a, __m128 b)
  function FORCE_INLINE (line 856) | FORCE_INLINE __m128 _mm_shuffle_ps_default(__m128 a,
  function __m128i (line 954) | inline __attribute__((__always_inline__)) __attribute__((__artificial__)...
  function FORCE_INLINE (line 964) | FORCE_INLINE __m128i _mm_shuffle_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1009) | FORCE_INLINE __m128i _mm_shuffle_epi32(__m128i a, int imm)
  function FORCE_INLINE (line 1218) | FORCE_INLINE __m128i _mm_srai_epi32(__m128i a, int count)
  function FORCE_INLINE (line 1230) | FORCE_INLINE __m128i _mm_srai_epi16(__m128i a, int count)
  function FORCE_INLINE (line 1418) | FORCE_INLINE int _mm_movemask_epi8(__m128i _a)
  function FORCE_INLINE (line 1449) | FORCE_INLINE int _mm_test_all_zeros(__m128i a, __m128i mask)
  function FORCE_INLINE (line 1469) | FORCE_INLINE __m128 _mm_sub_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 1479) | FORCE_INLINE __m128i _mm_sub_epi64(__m128i a, __m128i b)
  function FORCE_INLINE (line 1494) | FORCE_INLINE __m128i _mm_sub_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1500) | FORCE_INLINE __m128i _mm_sub_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1506) | FORCE_INLINE __m128i _mm_sub_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1515) | FORCE_INLINE __m128i _mm_subs_epu16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1530) | FORCE_INLINE __m128i _mm_subs_epu8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1543) | FORCE_INLINE __m128i _mm_subs_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1549) | FORCE_INLINE __m128i _mm_adds_epu16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1555) | FORCE_INLINE __m128i _mm_sign_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1565) | FORCE_INLINE __m128i _mm_sign_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1585) | FORCE_INLINE __m128 _mm_add_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 1593) | FORCE_INLINE __m128 _mm_add_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 1604) | FORCE_INLINE __m128i _mm_add_epi64(__m128i a, __m128i b)
  function FORCE_INLINE (line 1619) | FORCE_INLINE __m128i _mm_add_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1628) | FORCE_INLINE __m128i _mm_add_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1637) | FORCE_INLINE __m128i _mm_add_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1652) | FORCE_INLINE __m128i _mm_adds_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1661) | FORCE_INLINE __m128i _mm_adds_epu8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1676) | FORCE_INLINE __m128i _mm_mullo_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1685) | FORCE_INLINE __m128i _mm_mullo_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1699) | FORCE_INLINE __m128 _mm_mul_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 1711) | FORCE_INLINE __m128i _mm_mul_epu32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1726) | FORCE_INLINE __m128i _mm_mul_epu32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1746) | FORCE_INLINE __m128i _mm_madd_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1775) | FORCE_INLINE __m128i _mm_sad_epu8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1792) | FORCE_INLINE __m128 _mm_div_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 1802) | FORCE_INLINE __m128 _mm_div_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 1814) | FORCE_INLINE __m128 recipq_newton(__m128 in, int n)
  function FORCE_INLINE (line 1828) | FORCE_INLINE __m128 _mm_rcp_ps(__m128 in)
  function FORCE_INLINE (line 1845) | FORCE_INLINE __m128 _mm_sqrt_ps(__m128 in)
  function FORCE_INLINE (line 1856) | FORCE_INLINE __m128 _mm_sqrt_ss(__m128 in)
  function FORCE_INLINE (line 1867) | FORCE_INLINE __m128 _mm_rsqrt_ps(__m128 in)
  function FORCE_INLINE (line 1875) | FORCE_INLINE __m128 _mm_max_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 1884) | FORCE_INLINE __m128 _mm_min_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 1893) | FORCE_INLINE __m128 _mm_max_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 1904) | FORCE_INLINE __m128 _mm_min_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 1915) | FORCE_INLINE __m128i _mm_max_epu8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1924) | FORCE_INLINE __m128i _mm_min_epu8(__m128i a, __m128i b)
  function FORCE_INLINE (line 1933) | FORCE_INLINE __m128i _mm_min_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1942) | FORCE_INLINE __m128i _mm_max_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 1959) | FORCE_INLINE __m128i _mm_max_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1975) | FORCE_INLINE __m128i _mm_min_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 1990) | FORCE_INLINE __m128i _mm_mulhi_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 2010) | FORCE_INLINE __m128 _mm_hadd_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2031) | FORCE_INLINE __m128 _mm_cmplt_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2045) | FORCE_INLINE __m128 _mm_cmpgt_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2053) | FORCE_INLINE __m128 _mm_cmpge_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2067) | FORCE_INLINE __m128 _mm_cmple_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2075) | FORCE_INLINE __m128 _mm_cmpeq_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2084) | FORCE_INLINE __m128i _mm_cmpeq_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 2093) | FORCE_INLINE __m128i _mm_cmpeq_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 2101) | FORCE_INLINE __m128i _mm_cmpeq_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 2110) | FORCE_INLINE __m128i _mm_cmplt_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 2125) | FORCE_INLINE __m128i _mm_cmpgt_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 2140) | FORCE_INLINE __m128i _mm_cmpgt_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 2150) | FORCE_INLINE __m128i _mm_cmplt_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 2159) | FORCE_INLINE __m128i _mm_cmpgt_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 2172) | FORCE_INLINE __m128 _mm_cmpord_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2189) | FORCE_INLINE int _mm_comilt_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 2204) | FORCE_INLINE int _mm_comigt_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 2221) | FORCE_INLINE int _mm_comile_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 2238) | FORCE_INLINE int _mm_comige_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 2255) | FORCE_INLINE int _mm_comieq_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 2272) | FORCE_INLINE int _mm_comineq_ss(__m128 a, __m128 b)
  function FORCE_INLINE (line 2303) | FORCE_INLINE __m128i _mm_cvttps_epi32(__m128 a)
  function FORCE_INLINE (line 2311) | FORCE_INLINE __m128 _mm_cvtepi32_ps(__m128i a)
  function FORCE_INLINE (line 2319) | FORCE_INLINE __m128i _mm_cvtepu8_epi32(__m128i a)
  function FORCE_INLINE (line 2330) | FORCE_INLINE __m128i _mm_cvtepi16_epi32(__m128i a)
  function FORCE_INLINE (line 2347) | FORCE_INLINE __m128i _mm_cvtps_epi32(__m128 a)
  function FORCE_INLINE (line 2373) | FORCE_INLINE int _mm_cvtsi128_si32(__m128i a)
  function FORCE_INLINE (line 2380) | FORCE_INLINE uint64_t _mm_cvtsi128_si64(__m128i a)
  function FORCE_INLINE (line 2394) | FORCE_INLINE __m128i _mm_cvtsi32_si128(int a)
  function FORCE_INLINE (line 2402) | FORCE_INLINE __m128i _mm_castps_si128(__m128 a)
  function FORCE_INLINE (line 2410) | FORCE_INLINE __m128 _mm_castsi128_ps(__m128i a)
  function FORCE_INLINE (line 2417) | FORCE_INLINE __m128i _mm_load_si128(const __m128i *p)
  function FORCE_INLINE (line 2424) | FORCE_INLINE __m128i _mm_loadu_si128(const __m128i *p)
  function FORCE_INLINE (line 2436) | FORCE_INLINE __m128i _mm_packs_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 2456) | FORCE_INLINE __m128i _mm_packus_epi16(const __m128i a, const __m128i b)
  function FORCE_INLINE (line 2476) | FORCE_INLINE __m128i _mm_packs_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 2495) | FORCE_INLINE __m128i _mm_unpacklo_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 2516) | FORCE_INLINE __m128i _mm_unpacklo_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 2533) | FORCE_INLINE __m128i _mm_unpacklo_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 2541) | FORCE_INLINE __m128i _mm_unpacklo_epi64(__m128i a, __m128i b)
  function FORCE_INLINE (line 2557) | FORCE_INLINE __m128 _mm_unpacklo_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2574) | FORCE_INLINE __m128 _mm_unpackhi_ps(__m128 a, __m128 b)
  function FORCE_INLINE (line 2594) | FORCE_INLINE __m128i _mm_unpackhi_epi8(__m128i a, __m128i b)
  function FORCE_INLINE (line 2617) | FORCE_INLINE __m128i _mm_unpackhi_epi16(__m128i a, __m128i b)
  function FORCE_INLINE (line 2628) | FORCE_INLINE __m128i _mm_unpackhi_epi32(__m128i a, __m128i b)
  function FORCE_INLINE (line 2641) | FORCE_INLINE __m128i _mm_unpackhi_epi64(__m128i a, __m128i b)
  function FORCE_INLINE (line 2683) | FORCE_INLINE void _mm_sfence(void)
  function FORCE_INLINE (line 2692) | FORCE_INLINE void _mm_stream_si128(__m128i *p, __m128i a)
  function FORCE_INLINE (line 2700) | FORCE_INLINE void _mm_clflush(void const *p)

FILE: src/compat/strnlen.cpp
  function strnlen (line 12) | size_t strnlen( const char *start, size_t max_len)

FILE: src/compat/sys.h
  function systemPhysicalMemoryInBytes (line 28) | inline uint64_t systemPhysicalMemoryInBytes()
  function systemPhysicalMemoryInBytes (line 34) | inline uint64_t systemPhysicalMemoryInBytes()
  function systemPhysicalMemoryInBytes (line 44) | inline uint64_t systemPhysicalMemoryInBytes()
  function systemPhysicalMemoryInBytes (line 57) | inline uint64_t systemPhysicalMemoryInBytes()

FILE: src/compressor.cpp
  function CompressAmount (line 141) | uint64_t CompressAmount(uint64_t n)
  function DecompressAmount (line 160) | uint64_t DecompressAmount(uint64_t x)

FILE: src/compressor.h
  function class (line 28) | class CScriptCompressor
  function class (line 99) | class CTxOutCompressorLegacy
  function class (line 125) | class CAmountCompressor

FILE: src/consensus/merkle.cpp
  function MerkleComputation (line 53) | static void MerkleComputation(const std::vector<uint256>& leaves, uint25...
  function uint256 (line 140) | uint256 ComputeMerkleRoot(const std::vector<uint256>& leaves, bool* muta...
  function ComputeMerkleBranch (line 146) | std::vector<uint256> ComputeMerkleBranch(const std::vector<uint256>& lea...
  function uint256 (line 152) | uint256 ComputeMerkleRootFromBranch(const uint256& leaf, const std::vect...
  function uint256 (line 165) | uint256 BlockMerkleRoot(const std::vector<CTransactionRef>::const_iterat...
  function uint256 (line 173) | uint256 BlockMerkleRoot(const CBlock& block, bool* mutated)
  function BlockMerkleBranch (line 178) | std::vector<uint256> BlockMerkleBranch(const CBlock& block, uint32_t pos...

FILE: src/consensus/params.h
  function namespace (line 20) | namespace Consensus {
  type Params (line 62) | struct Params {

FILE: src/consensus/tx_verify.cpp
  function IsFinalTx (line 31) | bool IsFinalTx(const CTransaction &tx, int nBlockHeight, int64_t nBlockT...
  function CalculateSequenceLocks (line 54) | std::pair<int, int64_t> CalculateSequenceLocks(const CTransaction &tx, i...
  function EvaluateSequenceLocks (line 139) | bool EvaluateSequenceLocks(const CBlockIndex& block, std::pair<int, int6...
  function SequenceLocks (line 149) | bool SequenceLocks(const CTransaction &tx, int flags, std::vector<int>* ...
  function GetLegacySigOpCount (line 154) | unsigned int GetLegacySigOpCount(const CTransaction& tx)
  function GetP2SHSigOpCount (line 173) | unsigned int GetP2SHSigOpCount(const CTransaction& tx, const CCoinsViewC...
  function GetTransactionSigOpCost (line 188) | int64_t GetTransactionSigOpCost(const CTransaction& tx, const CCoinsView...
  function CheckTransaction (line 213) | bool CheckTransaction(const CTransaction& tx, CValidationState &state, b...
  function CheckTransactionContextual (line 275) | bool CheckTransactionContextual(const CTransaction& tx, CValidationState...
  function IsLockFromConsistent (line 315) | inline bool IsLockFromConsistent(const CTxOutPoW2Witness& inputDetails, ...
  function CAmount (line 343) | CAmount CalculateWitnessPenaltyFee(const CTxOut& output)
  function IncrementWitnessFailCount (line 356) | void IncrementWitnessFailCount(uint64_t& failCount)
  function HasSpendKey (line 366) | inline bool HasSpendKey(const CTxIn& input, uint64_t nSpendHeight)
  function IsWitnessBundle (line 387) | inline bool IsWitnessBundle(const CTxIn& input, const CTxOutPoW2Witness&...
  function IsRenewalBundle (line 454) | inline bool IsRenewalBundle(const CTxIn& input, const CTxOutPoW2Witness&...
  function CheckTxInputAgainstWitnessBundles (line 745) | bool CheckTxInputAgainstWitnessBundles(CValidationState& state, std::vec...
  function BuildWitnessBundles (line 918) | bool BuildWitnessBundles(const CTransaction& tx, CValidationState& state...

FILE: src/consensus/tx_verify.h
  function CWitnessTxBundle (line 43) | struct CWitnessTxBundle
  function namespace (line 164) | namespace Consensus {

FILE: src/consensus/validation.h
  function class (line 48) | class CValidationState {
  function Error (line 81) | bool Error(const std::string& strRejectReasonIn) {
  function IsInvalid (line 96) | bool IsInvalid(int &nDoSOut) const {
  function SetCorruptionPossible (line 106) | void SetCorruptionPossible() {

FILE: src/controllers/rpccontroller.cpp
  type CmdParseState (line 114) | enum CmdParseState

FILE: src/controllers/rpccontroller.h
  function class (line 27) | class RPCController

FILE: src/core_io.h
  type CMutableTransaction (line 15) | struct CMutableTransaction

FILE: src/core_memusage.h
  function RecursiveDynamicUsage (line 19) | static inline size_t RecursiveDynamicUsage(const CScript& script) {
  function RecursiveDynamicUsage (line 23) | static inline size_t RecursiveDynamicUsage([[maybe_unused]] const COutPo...
  function RecursiveDynamicUsage (line 27) | static inline size_t RecursiveDynamicUsage(const CTxIn& in) {
  function RecursiveDynamicUsage (line 35) | static inline size_t RecursiveDynamicUsage(const CTxOut& out) {
  function RecursiveDynamicUsage (line 49) | static inline size_t RecursiveDynamicUsage(const CTransaction& tx) {
  function RecursiveDynamicUsage (line 60) | static inline size_t RecursiveDynamicUsage(const CMutableTransaction& tx) {
  function RecursiveDynamicUsage (line 71) | static inline size_t RecursiveDynamicUsage(const CBlock& block) {

FILE: src/core_read.cpp
  function CScript (line 29) | CScript ParseScript(const std::string& s)
  function CheckTxScriptsSanity (line 98) | bool CheckTxScriptsSanity(const CMutableTransaction& tx)
  function DecodeHexTx (line 123) | bool DecodeHexTx(CMutableTransaction& tx, const std::string& strHexTx, b...
  function DecodeHexBlk (line 158) | bool DecodeHexBlk(CBlock& block, const std::string& strHexBlk)
  function uint256 (line 179) | uint256 ParseHashUV(const UniValue& v, const std::string& strName)
  function uint256 (line 187) | uint256 ParseHashStr(const std::string& strHex, const std::string& strName)
  function ParseHexUV (line 197) | std::vector<unsigned char> ParseHexUV(const UniValue& v, const std::stri...

FILE: src/core_write.cpp
  function FormatScript (line 26) | std::string FormatScript(const CScript& script)
  function ScriptToAsmStr (line 77) | std::string ScriptToAsmStr(const CScript& script, const bool fAttemptSig...
  function EncodeHexTx (line 121) | std::string EncodeHexTx(const CTransaction& tx, const int serializeFlags)
  function ScriptPubKeyToUniv (line 128) | void ScriptPubKeyToUniv(const CScript& scriptPubKey,
  function StandardKeyHashToUniv (line 153) | void StandardKeyHashToUniv(const CTxOut& txout, UniValue& out, bool fInc...
  function PoW2WitnessToUniv (line 161) | void PoW2WitnessToUniv(const CTxOut& txout, UniValue& out, bool fInclude...
  function TxToUniv (line 178) | void TxToUniv(const CTransaction& tx, const uint256& hashBlock, UniValue...

FILE: src/crc32c/.ycm_extra_conf.py
  function DirectoryOfThisScript (line 32) | def DirectoryOfThisScript():
  function MakeRelativePathsInFlagsAbsolute (line 37) | def MakeRelativePathsInFlagsAbsolute(flags, build_root):
  function FindNearest (line 73) | def FindNearest(target, path, build_root):
  function FlagsForClangComplete (line 106) | def FlagsForClangComplete(file_path, build_root):
  function FlagsForFile (line 125) | def FlagsForFile(filename, **kwargs):

FILE: src/crc32c/include/crc32c/crc32c.h
  function namespace (line 46) | namespace crc32c {
  function namespace (line 74) | namespace crc32c {

FILE: src/crc32c/src/crc32c.cc
  type crc32c (line 16) | namespace crc32c {
    function Extend (line 18) | uint32_t Extend(uint32_t crc, const uint8_t* data, size_t count) {
    function crc32c_extend (line 30) | uint32_t crc32c_extend(uint32_t crc, const uint8_t* data,
    function crc32c_value (line 35) | uint32_t crc32c_value(const uint8_t* data, size_t count) {

FILE: src/crc32c/src/crc32c_arm64.cc
  type crc32c (line 65) | namespace crc32c {
    function ExtendArm64 (line 67) | uint32_t ExtendArm64(uint32_t crc, const uint8_t *data, size_t size) {

FILE: src/crc32c/src/crc32c_arm64.h
  function namespace (line 19) | namespace crc32c {

FILE: src/crc32c/src/crc32c_arm64_check.h
  function namespace (line 36) | namespace crc32c {

FILE: src/crc32c/src/crc32c_arm64_unittest.cc
  type crc32c (line 10) | namespace crc32c {
    type Arm64TestTraits (line 14) | struct Arm64TestTraits {
      method Extend (line 15) | static uint32_t Extend(uint32_t crc, const uint8_t* data, size_t cou...

FILE: src/crc32c/src/crc32c_benchmark.cc
  class CRC32CBenchmark (line 25) | class CRC32CBenchmark : public benchmark::Fixture {
    method SetUp (line 27) | void SetUp(const benchmark::State& state) override {
  function main (line 97) | int main(int argc, char** argv) {

FILE: src/crc32c/src/crc32c_capi_unittest.c
  function main (line 13) | int main() {

FILE: src/crc32c/src/crc32c_extend_unittests.h
  function namespace (line 16) | namespace crc32c {

FILE: src/crc32c/src/crc32c_internal.h
  function namespace (line 13) | namespace crc32c {

FILE: src/crc32c/src/crc32c_portable.cc
  type crc32c (line 245) | namespace crc32c {
    function ExtendPortable (line 247) | uint32_t ExtendPortable(uint32_t crc, const uint8_t* data, size_t size) {

FILE: src/crc32c/src/crc32c_portable_unittest.cc
  type crc32c (line 10) | namespace crc32c {
    type PortableTestTraits (line 12) | struct PortableTestTraits {
      method Extend (line 13) | static uint32_t Extend(uint32_t crc, const uint8_t* data, size_t cou...

FILE: src/crc32c/src/crc32c_prefetch.h
  function namespace (line 25) | namespace crc32c {

FILE: src/crc32c/src/crc32c_read_le.h
  function namespace (line 15) | namespace crc32c {

FILE: src/crc32c/src/crc32c_read_le_unittest.cc
  type crc32c (line 14) | namespace crc32c {
    function TEST (line 16) | TEST(Crc32CReadLETest, ReadUint32LE) {
    function TEST (line 24) | TEST(Crc32CReadLETest, ReadUint64LE) {

FILE: src/crc32c/src/crc32c_round_up.h
  function namespace (line 11) | namespace crc32c {

FILE: src/crc32c/src/crc32c_round_up_unittest.cc
  type crc32c (line 12) | namespace crc32c {
    function TEST (line 14) | TEST(CRC32CRoundUpTest, RoundUpUintptr) {
    function TEST (line 58) | TEST(CRC32CRoundUpTest, RoundUpPointer) {

FILE: src/crc32c/src/crc32c_sse42.cc
  type crc32c (line 32) | namespace crc32c {
    function ExtendSse42 (line 124) | uint32_t ExtendSse42(uint32_t crc, const uint8_t* data, size_t size) {

FILE: src/crc32c/src/crc32c_sse42.h
  function namespace (line 24) | namespace crc32c {

FILE: src/crc32c/src/crc32c_sse42_check.h
  function namespace (line 24) | namespace crc32c {
  function namespace (line 37) | namespace crc32c {

FILE: src/crc32c/src/crc32c_sse42_unittest.cc
  type crc32c (line 10) | namespace crc32c {
    type Sse42TestTraits (line 14) | struct Sse42TestTraits {
      method Extend (line 15) | static uint32_t Extend(uint32_t crc, const uint8_t* data, size_t cou...

FILE: src/crc32c/src/crc32c_test_main.cc
  function main (line 15) | int main(int argc, char** argv) {

FILE: src/crc32c/src/crc32c_unittest.cc
  function TEST (line 15) | TEST(Crc32CTest, Crc32c) {
  type crc32c (line 47) | namespace crc32c {
    type ApiTestTraits (line 49) | struct ApiTestTraits {
      method Extend (line 50) | static uint32_t Extend(uint32_t crc, const uint8_t* data, size_t cou...
  function TEST (line 59) | TEST(CRC32CTest, Crc32cCharPointer) {
  function TEST (line 81) | TEST(CRC32CTest, Crc32cStdString) {

FILE: src/crypto/chacha20.cpp
  function rotl32 (line 13) | constexpr static inline uint32_t rotl32(uint32_t v, int c) { return (v <...

FILE: src/crypto/chacha20.h
  function class (line 13) | class ChaCha20

FILE: src/crypto/common.h
  function ReadLE16 (line 17) | uint16_t static inline ReadLE16(const unsigned char* ptr)
  function ReadLE32 (line 24) | uint32_t static inline ReadLE32(const unsigned char* ptr)
  function ReadLE64 (line 31) | uint64_t static inline ReadLE64(const unsigned char* ptr)
  function WriteLE16 (line 38) | void static inline WriteLE16(unsigned char* ptr, uint16_t x)
  function WriteLE32 (line 44) | void static inline WriteLE32(unsigned char* ptr, uint32_t x)
  function WriteLE64 (line 50) | void static inline WriteLE64(unsigned char* ptr, uint64_t x)
  function ReadBE16 (line 56) | uint16_t static inline ReadBE16(const unsigned char* ptr)
  function ReadBE32 (line 63) | uint32_t static inline ReadBE32(const unsigned char* ptr)
  function ReadBE64 (line 70) | uint64_t static inline ReadBE64(const unsigned char* ptr)
  function WriteBE32 (line 77) | void static inline WriteBE32(unsigned char* ptr, uint32_t x)
  function WriteBE64 (line 83) | void static inline WriteBE64(unsigned char* ptr, uint64_t x)
  function CountBits (line 90) | uint64_t static inline CountBits(uint64_t x)

FILE: src/crypto/hash/city.cpp
  function uint64 (line 37) | static uint64 UNALIGNED_LOAD64(const char *p) {
  function uint32 (line 43) | static uint32 UNALIGNED_LOAD32(const char *p) {
  function uint64 (line 97) | static uint64 Fetch64(const char *p) {
  function uint32 (line 101) | static uint32 Fetch32(const char *p) {
  function uint32 (line 115) | static uint32 fmix(uint32 h)
  function uint32 (line 125) | static uint32 Rotate32(uint32 val, int shift) {
  function uint32 (line 133) | static uint32 Mur(uint32 a, uint32 h) {
  function uint32 (line 143) | static uint32 Hash32Len13to24(const char *s, size_t len) {
  function uint32 (line 155) | static uint32 Hash32Len0to4(const char *s, size_t len) {
  function uint32 (line 166) | static uint32 Hash32Len5to12(const char *s, size_t len) {
  function uint32 (line 174) | uint32 CityHash32(const char *s, size_t len) {
  function uint64 (line 245) | static uint64 Rotate(uint64 val, int shift) {
  function uint64 (line 250) | static uint64 ShiftMix(uint64 val) {
  function uint64 (line 254) | static uint64 HashLen16(uint64 u, uint64 v) {
  function uint64 (line 258) | static uint64 HashLen16(uint64 u, uint64 v, uint64 mul) {
  function uint64 (line 268) | static uint64 HashLen0to16(const char *s, size_t len) {
  function uint64 (line 295) | static uint64 HashLen17to32(const char *s, size_t len) {
  function WeakHashLen32WithSeeds (line 307) | static pair<uint64, uint64> WeakHashLen32WithSeeds(
  function WeakHashLen32WithSeeds (line 319) | static pair<uint64, uint64> WeakHashLen32WithSeeds(
  function uint64 (line 330) | static uint64 HashLen33to64(const char *s, size_t len) {
  function uint64 (line 351) | uint64 CityHash64(const char *s, size_t len) {
  function uint64 (line 389) | uint64 CityHash64WithSeed(const char *s, size_t len, uint64 seed) {
  function uint64 (line 393) | uint64 CityHash64WithSeeds(const char *s, size_t len,
  function uint128 (line 400) | static uint128 CityMurmur(const char *s, size_t len, uint128 seed) {
  function uint128 (line 430) | uint128 CityHash128WithSeed(const char *s, size_t len, uint128 seed) {
  function uint128 (line 493) | uint128 CityHash128(const char *s, size_t len) {

FILE: src/crypto/hash/city.h
  type uint8 (line 69) | typedef uint8_t uint8;
  type uint32 (line 70) | typedef uint32_t uint32;
  type uint64 (line 71) | typedef uint64_t uint64;
  type std (line 72) | typedef std::pair<uint64, uint64> uint128;
  function uint64 (line 74) | inline uint64 Uint128Low64(const uint128& x) { return x.first; }
  function uint64 (line 75) | inline uint64 Uint128High64(const uint128& x) { return x.second; }
  function uint64 (line 100) | inline uint64 Hash128to64(const uint128& x) {

FILE: src/crypto/hash/hash.h
  function hash_sha256 (line 14) | inline void hash_sha256(const void* pData, unsigned int size, unsigned c...
  function hash_sha256 (line 21) | inline void hash_sha256(const void* pData, unsigned int size, arith_uint...
  function hash_city (line 28) | inline void hash_city(const void* pData, arith_uint256& thash)

FILE: src/crypto/hash/scrypt-sse2.cpp
  function xor_salsa8_sse2 (line 39) | static inline void xor_salsa8_sse2(__m128i B[4], const __m128i Bx[4])
  function scrypt_1024_1_1_256_sp_sse2 (line 96) | void scrypt_1024_1_1_256_sp_sse2(const char *input, char *output, char *...

FILE: src/crypto/hash/scrypt.cpp
  function xor_salsa8 (line 50) | static inline void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
  function scrypt_1024_1_1_256_sp_generic (line 116) | void scrypt_1024_1_1_256_sp_generic(const char *input, char *output, cha...
  function scrypt_detect_sse2 (line 153) | void scrypt_detect_sse2()
  function scrypt_1024_1_1_256 (line 185) | void scrypt_1024_1_1_256(const char *input, char *output)
  function PBKDF2_SHA512 (line 195) | void PBKDF2_SHA512(const char* pass, size_t passwdlen, const unsigned ch...

FILE: src/crypto/hash/sigma/argon_echo/argon2.cpp
  function argon2_echo_ctx (line 32) | int argon2_echo_ctx(argon2_echo_context *context, bool doHash)

FILE: src/crypto/hash/sigma/argon_echo/argon_echo.h
  type argon2_error_codes (line 74) | enum argon2_error_codes
  type argon2_echo_context (line 105) | struct argon2_echo_context

FILE: src/crypto/hash/sigma/argon_echo/blake2/blake2-impl.h
  function BLAKE2_INLINE (line 54) | static BLAKE2_INLINE uint32_t load32(const void *src)
  function BLAKE2_INLINE (line 70) | static BLAKE2_INLINE uint64_t load64(const void *src)
  function BLAKE2_INLINE (line 90) | static BLAKE2_INLINE void store32(void *dst, uint32_t w)
  function BLAKE2_INLINE (line 106) | static BLAKE2_INLINE void store64(void *dst, uint64_t w)
  function BLAKE2_INLINE (line 130) | static BLAKE2_INLINE uint64_t load48(const void *src)
  function BLAKE2_INLINE (line 142) | static BLAKE2_INLINE void store48(void *dst, uint64_t w)
  function BLAKE2_INLINE (line 158) | static BLAKE2_INLINE uint32_t rotr32(const uint32_t w, const unsigned c)
  function BLAKE2_INLINE (line 163) | static BLAKE2_INLINE uint64_t rotr64(const uint64_t w, const unsigned c)

FILE: src/crypto/hash/sigma/argon_echo/blake2/blake2.h
  type blake2b_constant (line 33) | enum blake2b_constant
  type blake2b_param (line 43) | typedef struct __blake2b_param
  type blake2b_state (line 59) | typedef struct __blake2b_state

FILE: src/crypto/hash/sigma/argon_echo/blake2/blake2b.cpp
  function BLAKE2_INLINE (line 52) | static BLAKE2_INLINE void blake2b_set_lastnode(blake2b_state *S)
  function BLAKE2_INLINE (line 57) | static BLAKE2_INLINE void blake2b_set_lastblock(blake2b_state *S)
  function BLAKE2_INLINE (line 66) | static BLAKE2_INLINE void blake2b_increment_counter(blake2b_state *S, ui...
  function BLAKE2_INLINE (line 72) | static BLAKE2_INLINE void blake2b_invalidate_state(blake2b_state *S)
  function BLAKE2_INLINE (line 78) | static BLAKE2_INLINE void blake2b_init0(blake2b_state *S)
  function blake2b_init_param (line 84) | int blake2b_init_param(blake2b_state *S, const blake2b_param *P)
  function blake2b_init (line 105) | int blake2b_init(blake2b_state *S, size_t outlen)
  function blake2b_init_key (line 135) | int blake2b_init_key(blake2b_state *S, size_t outlen, const void *key, s...
  function blake2b_compress (line 185) | static void blake2b_compress(blake2b_state *S, const uint8_t *block)
  function blake2b_update (line 246) | int blake2b_update(blake2b_state *S, const void *in, size_t inlen)
  function blake2b_final (line 292) | int blake2b_final(blake2b_state *S, void *out, size_t outlen)
  function blake2b (line 327) | int blake2b(void *out, size_t outlen, const void *in, size_t inlen, cons...
  function blake2b_long (line 376) | int blake2b_long(void *pout, size_t outlen, const void *in, size_t inlen)

FILE: src/crypto/hash/sigma/argon_echo/blake2/blamka-round-opt_avx512f.h
  function __m512i (line 38) | static __m512i muladd(__m512i x, __m512i y)

FILE: src/crypto/hash/sigma/argon_echo/blake2/blamka-round-opt_sse2.h
  function BLAKE2_INLINE (line 38) | static BLAKE2_INLINE __m128i fBlaMka_SSE2(__m128i x, __m128i y)

FILE: src/crypto/hash/sigma/argon_echo/blake2/blamka-round-opt_sse3.h
  function BLAKE2_INLINE (line 53) | static BLAKE2_INLINE __m128i fBlaMka_SSE3(__m128i x, __m128i y)

FILE: src/crypto/hash/sigma/argon_echo/blake2/blamka-round-ref.h
  function BLAKE2_INLINE (line 31) | static BLAKE2_INLINE uint64_t fBlaMka(uint64_t x, uint64_t y)

FILE: src/crypto/hash/sigma/argon_echo/core.cpp
  function init_block_value (line 40) | void init_block_value(argon2_echo_block* b, uint8_t in)
  function copy_block (line 45) | void copy_block(argon2_echo_block* dst, const argon2_echo_block* src)
  function xor_block (line 50) | void xor_block(argon2_echo_block* dst, const argon2_echo_block* src)
  function load_block (line 59) | static void load_block(argon2_echo_block* dst, const void* input)
  function store_block (line 68) | static void store_block(void *output, const argon2_echo_block *src) {
  function finalize (line 76) | void finalize(const argon2_echo_context* context, argon2_echo_instance_t...
  function index_alpha (line 120) | uint32_t index_alpha(const argon2_echo_instance_t* instance, const argon...
  function fill_memory_blocks_st (line 175) | static int fill_memory_blocks_st(argon2_echo_instance_t* instance)
  function fill_memory_blocks_mt (line 202) | static int fill_memory_blocks_mt(argon2_echo_instance_t* instance)
  function fill_memory_blocks (line 291) | int fill_memory_blocks(argon2_echo_instance_t* instance)
  function fill_first_blocks (line 300) | void fill_first_blocks(uint8_t* blockhash, const argon2_echo_instance_t*...
  function initial_hash (line 320) | void initial_hash(uint8_t* blockhash, argon2_echo_context* context)
  function next_addresses (line 335) | static void next_addresses(argon2_echo_block* address_block, argon2_echo...
  function fill_segment (line 354) | void fill_segment(const argon2_echo_instance_t *instance, argon2_echo_po...
  function initialize (line 468) | int initialize(argon2_echo_instance_t* instance, argon2_echo_context* co...
  function validate_inputs (line 499) | int validate_inputs(const argon2_echo_context* context)

FILE: src/crypto/hash/sigma/argon_echo/core.h
  type argon2_echo_core_constants (line 32) | enum argon2_echo_core_constants
  type argon2_echo_block (line 56) | struct argon2_echo_block
  type argon2_echo_instance_t (line 67) | struct argon2_echo_instance_t
  type argon2_echo_position_t (line 84) | struct argon2_echo_position_t
  type argon2_echo_thread_data (line 93) | struct argon2_echo_thread_data

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_arm_cortex_a53.cpp
  function arm_cortex_a53_fill_block (line 47) | static void arm_cortex_a53_fill_block(__m128i *state, const argon2_echo_...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_arm_cortex_a53_aes.cpp
  function arm_cortex_a53_aes_fill_block (line 47) | static void arm_cortex_a53_aes_fill_block(__m128i *state, const argon2_e...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_arm_cortex_a57.cpp
  function arm_cortex_a57_fill_block (line 47) | static void arm_cortex_a57_fill_block(__m128i *state, const argon2_echo_...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_arm_cortex_a57_aes.cpp
  function arm_cortex_a57_aes_fill_block (line 47) | static void arm_cortex_a57_aes_fill_block(__m128i *state, const argon2_e...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_arm_cortex_a72.cpp
  function arm_cortex_a72_fill_block (line 47) | static void arm_cortex_a72_fill_block(__m128i *state, const argon2_echo_...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_arm_cortex_a72_aes.cpp
  function arm_cortex_a72_aes_fill_block (line 47) | static void arm_cortex_a72_aes_fill_block(__m128i *state, const argon2_e...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_arm_thunderx_aes.cpp
  function arm_thunderx_aes_fill_block (line 47) | static void arm_thunderx_aes_fill_block(__m128i *state, const argon2_ech...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_avx.cpp
  function avx_fill_block (line 47) | static void avx_fill_block(__m128i *state, const argon2_echo_block *ref_...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_avx2.cpp
  function avx2_fill_block (line 46) | static void avx2_fill_block(__m256i* state, const argon2_echo_block* ref...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_avx2_aes.cpp
  function avx2_aes_fill_block (line 46) | static void avx2_aes_fill_block(__m256i* state, const argon2_echo_block*...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_avx512f.cpp
  function avx512f_fill_block (line 46) | static void avx512f_fill_block(__m512i* state, const argon2_echo_block* ...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_avx512f_aes.cpp
  function avx512f_aes_fill_block (line 46) | static void avx512f_aes_fill_block(__m512i* state, const argon2_echo_blo...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_avx_aes.cpp
  function avx_aes_fill_block (line 47) | static void avx_aes_fill_block(__m128i *state, const argon2_echo_block *...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_hybrid.cpp
  function fill_block_hybrid (line 60) | static void fill_block_hybrid(const argon2_echo_block *prev_block, const...
  function next_addresses_hybrid (line 104) | static void next_addresses_hybrid(argon2_echo_block *address_block, argo...
  function fill_segment_hybrid (line 111) | void fill_segment_hybrid(const argon2_echo_instance_t *instance, argon2_...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_sse2.cpp
  function sse2_fill_block (line 46) | static void sse2_fill_block(__m128i *state, const argon2_echo_block *ref...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_sse2_aes.cpp
  function sse2_aes_fill_block (line 46) | static void sse2_aes_fill_block(__m128i *state, const argon2_echo_block ...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_sse3.cpp
  function sse3_fill_block (line 46) | static void sse3_fill_block(__m128i *state, const argon2_echo_block *ref...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_sse3_aes.cpp
  function sse3_aes_fill_block (line 46) | static void sse3_aes_fill_block(__m128i *state, const argon2_echo_block ...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_sse4.cpp
  function sse4_fill_block (line 47) | static void sse4_fill_block(__m128i *state, const argon2_echo_block *ref...

FILE: src/crypto/hash/sigma/argon_echo/opt/core_opt_sse4_aes.cpp
  function sse4_aes_fill_block (line 47) | static void sse4_aes_fill_block(__m128i *state, const argon2_echo_block ...

FILE: src/crypto/hash/sigma/argon_echo/ref.cpp
  function fill_block_ref (line 62) | static void fill_block_ref(const argon2_echo_block *prev_block, const ar...
  function next_addresses_ref (line 106) | static void next_addresses_ref(argon2_echo_block *address_block, argon2_...
  function fill_segment_ref (line 113) | void fill_segment_ref(const argon2_echo_instance_t *instance, argon2_ech...

FILE: src/crypto/hash/sigma/echo256/echo256_opt.cpp
  function Compress (line 150) | void Compress(echo256_opt_hashState* ctx, const unsigned char* pmsg, uns...
  function HashReturn (line 204) | HashReturn echo256_opt_Init(echo256_opt_hashState *ctx)
  function HashReturn (line 233) | HashReturn echo256_opt_Update(echo256_opt_hashState* state, const unsign...
  function HashReturn (line 281) | HashReturn echo256_opt_Final(echo256_opt_hashState* state, unsigned char...
  function HashReturn (line 353) | HashReturn echo256_opt_UpdateFinal( echo256_opt_hashState* state, unsign...

FILE: src/crypto/hash/sigma/echo256/echo256_opt.h
  type HashReturn (line 22) | enum HashReturn
  type echo256_opt_hashState (line 32) | typedef struct

FILE: src/crypto/hash/sigma/echo256/sphlib/echo.cpp
  function aes_2rounds_all (line 87) | static void aes_2rounds_all(sph_u64 W[16][2], sph_u32 *pK0, sph_u32 *pK1...
  function mix_column (line 209) | static void mix_column(sph_u64 W[16][2], int ia, int ib, int ic, int id)
  function aes_2rounds_all (line 320) | static void aes_2rounds_all(sph_u32 W[16][4], sph_u32 *pK0, sph_u32 *pK1...
  function mix_column (line 451) | static void mix_column(sph_u32 W[16][4], int ia, int ib, int ic, int id)
  function echo_small_init (line 550) | static void echo_small_init(sph_echo256_context *sc, unsigned out_len)
  function echo_small_compress (line 575) | static void echo_small_compress(sph_echo256_context *sc)
  function echo_small_core (line 582) | static void echo_small_core(sph_echo256_context *sc, const unsigned char...
  function echo_small_close (line 618) | static void echo_small_close(sph_echo256_context *sc, unsigned ub, unsig...
  function sph_echo256_init (line 683) | void sph_echo256_init(void *cc)
  function sph_echo256 (line 689) | void sph_echo256(void *cc, const void *data, size_t len)
  function sph_echo256_close (line 695) | void sph_echo256_close(void *cc, void *dst)

FILE: src/crypto/hash/sigma/echo256/sphlib/sph_echo.h
  type sph_echo256_context (line 60) | typedef struct {

FILE: src/crypto/hash/sigma/echo256/sphlib/sph_types.h
  type __arch_dependant__ (line 384) | typedef __arch_dependant__ sph_u32;
  type __arch_dependant__ (line 390) | typedef __arch_dependant__ sph_s32;
  type __arch_dependant__ (line 402) | typedef __arch_dependant__ sph_u64;
  type __arch_dependant__ (line 408) | typedef __arch_dependant__ sph_s64;
  type sph_u32 (line 830) | typedef uint32_t sph_u32;
  type sph_s32 (line 831) | typedef int32_t sph_s32;
  type uint_fast32_t (line 833) | typedef uint_fast32_t sph_u32;
  type int_fast32_t (line 834) | typedef int_fast32_t sph_s32;
  type sph_u64 (line 838) | typedef uint64_t sph_u64;
  type sph_s64 (line 839) | typedef int64_t sph_s64;
  type uint_fast64_t (line 841) | typedef uint_fast64_t sph_u64;
  type int_fast64_t (line 842) | typedef int_fast64_t sph_s64;
  type sph_u32 (line 863) | typedef unsigned int sph_u32;
  type sph_s32 (line 864) | typedef int sph_s32;
  type sph_u32 (line 870) | typedef unsigned long sph_u32;
  type sph_s32 (line 871) | typedef long sph_s32;
  type sph_u64 (line 889) | typedef unsigned long sph_u64;
  type sph_s64 (line 890) | typedef long sph_s64;
  type sph_u64 (line 898) | typedef unsigned long long sph_u64;
  type sph_s64 (line 899) | typedef long long sph_s64;
  function SPH_INLINE (line 1187) | static SPH_INLINE sph_u32
  function SPH_INLINE (line 1196) | static SPH_INLINE sph_u64
  function SPH_INLINE (line 1212) | static SPH_INLINE sph_u32
  function SPH_INLINE (line 1221) | static SPH_INLINE sph_u64
  function SPH_INLINE (line 1265) | static SPH_INLINE sph_u32
  function SPH_INLINE (line 1282) | static SPH_INLINE sph_u64
  function SPH_INLINE (line 1332) | static SPH_INLINE void
  function sph_dec16be (line 1339) | static SPH_INLINE unsigned
  function SPH_INLINE (line 1346) | static SPH_INLINE void
  function sph_dec16le (line 1353) | static SPH_INLINE unsigned
  function SPH_INLINE (line 1366) | static SPH_INLINE void
  function SPH_INLINE (line 1403) | static SPH_INLINE void
  function SPH_INLINE (line 1424) | static SPH_INLINE sph_u32
  function SPH_INLINE (line 1463) | static SPH_INLINE sph_u32
  function SPH_INLINE (line 1484) | static SPH_INLINE void
  function SPH_INLINE (line 1521) | static SPH_INLINE void
  function SPH_INLINE (line 1542) | static SPH_INLINE sph_u32
  function SPH_INLINE (line 1614) | static SPH_INLINE sph_u32
  function SPH_INLINE (line 1653) | static SPH_INLINE void
  function SPH_INLINE (line 1698) | static SPH_INLINE void
  function SPH_INLINE (line 1723) | static SPH_INLINE sph_u64
  function SPH_INLINE (line 1770) | static SPH_INLINE sph_u64
  function SPH_INLINE (line 1795) | static SPH_INLINE void
  function SPH_INLINE (line 1840) | static SPH_INLINE void
  function SPH_INLINE (line 1865) | static SPH_INLINE sph_u64
  function SPH_INLINE (line 1934) | static SPH_INLINE sph_u64

FILE: src/crypto/hash/sigma/shavite3_256/ref/shavite3_256_ref_compress.h
  function E256_ref (line 222) | inline void E256_ref(uint32_t pt[8], uint32_t ct[8], uint32_t message[16...
  function Compress256_ref (line 267) | inline void Compress256_ref(const uint8_t* message_block, uint8_t* chain...

FILE: src/crypto/hash/sigma/shavite3_256/ref/shavite3_ref.cpp
  function shavite3_ref_Init (line 19) | bool shavite3_ref_Init(shavite3_ref_hashState* state)
  function shavite3_ref_Update (line 50) | bool shavite3_ref_Update(shavite3_ref_hashState* state, const uint8_t* d...
  function shavite3_ref_Final (line 124) | bool shavite3_ref_Final(shavite3_ref_hashState* state, uint8_t* hashval)

FILE: src/crypto/hash/sigma/shavite3_256/ref/shavite3_ref.h
  type shavite3_ref_hashState (line 18) | struct shavite3_ref_hashState

FILE: src/crypto/hash/sigma/shavite3_256/shavite3_256_opt.cpp
  function shavite3_256_opt_Compress256 (line 64) | void shavite3_256_opt_Compress256(const unsigned char* message_block, un...
  function shavite3_256_opt_Init (line 374) | bool shavite3_256_opt_Init ( shavite3_256_opt_hashState* state)
  function shavite3_256_opt_Update (line 408) | bool shavite3_256_opt_Update ( shavite3_256_opt_hashState* state, const ...
  function shavite3_256_opt_Final (line 481) | bool shavite3_256_opt_Final ( shavite3_256_opt_hashState *state, unsigne...

FILE: src/crypto/hash/sigma/shavite3_256/shavite3_256_opt.h
  type shavite3_256_opt_hashState (line 15) | struct shavite3_256_opt_hashState

FILE: src/crypto/hash/sigma/sigma.cpp
  function sigmaRandomFastHash (line 31) | inline void sigmaRandomFastHash(uint64_t nPseudoRandomAlg, uint8_t* data...
  function sigmaRandomFastHashRef (line 86) | inline void sigmaRandomFastHashRef(uint64_t nPseudoRandomAlg, uint8_t* d...
  function selectedAlgorithmName (line 209) | std::string selectedAlgorithmName(uint64_t nSel)
  function selectedAlgorithmName (line 245) | std::string selectedAlgorithmName(uint64_t nSel)
  function selectedAlgorithmName (line 274) | std::string selectedAlgorithmName(uint64_t nSel)
  function LogSelection (line 281) | void LogSelection(uint64_t nSel, std::string sAlgoName)
  function selectOptimisedImplementations (line 287) | void selectOptimisedImplementations()
  function normaliseBufferSize (line 547) | void normaliseBufferSize(uint64_t& nBufferSizeBytes)
  function BOOST_SCOPE_EXIT (line 644) | BOOST_SCOPE_EXIT(&hashMem) { delete[] hashMem; }
  function BOOST_SCOPE_EXIT (line 720) | BOOST_SCOPE_EXIT(&workerPool) { for (auto& thread : workerPool) { thread...
  function BOOST_SCOPE_EXIT (line 860) | BOOST_SCOPE_EXIT(&workerPool) { for (auto& thread : workerPool) { thread...

FILE: src/crypto/hash/sigma/sigma.h
  function class (line 76) | class sigma_settings
  function class (line 121) | class sigma_context
  function class (line 146) | class sigma_verify_context

FILE: src/crypto/hmac_sha256.h
  function class (line 14) | class CHMAC_SHA256

FILE: src/crypto/hmac_sha512.h
  function class (line 14) | class CHMAC_SHA512

FILE: src/crypto/ripemd160.cpp
  type ripemd160 (line 15) | namespace ripemd160
    function f1 (line 17) | uint32_t inline f1(uint32_t x, uint32_t y, uint32_t z) { return x ^ y ...
    function f2 (line 18) | uint32_t inline f2(uint32_t x, uint32_t y, uint32_t z) { return (x & y...
    function f3 (line 19) | uint32_t inline f3(uint32_t x, uint32_t y, uint32_t z) { return (x | ~...
    function f4 (line 20) | uint32_t inline f4(uint32_t x, uint32_t y, uint32_t z) { return (x & z...
    function f5 (line 21) | uint32_t inline f5(uint32_t x, uint32_t y, uint32_t z) { return x ^ (y...
    function Initialize (line 24) | void inline Initialize(uint32_t* s)
    function rol (line 33) | uint32_t inline rol(uint32_t x, int i) { return (x << i) | (x >> (32 -...
    function Round (line 35) | void inline Round(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, ui...
    function R11 (line 41) | void inline R11(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R21 (line 42) | void inline R21(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R31 (line 43) | void inline R31(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R41 (line 44) | void inline R41(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R51 (line 45) | void inline R51(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R12 (line 47) | void inline R12(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R22 (line 48) | void inline R22(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R32 (line 49) | void inline R32(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R42 (line 50) | void inline R42(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function R52 (line 51) | void inline R52(uint32_t& a, uint32_t b, uint32_t& c, uint32_t d, uint...
    function Transform (line 54) | void Transform(uint32_t* s, const unsigned char* chunk)
  function CRIPEMD160 (line 247) | CRIPEMD160& CRIPEMD160::Write(const unsigned char* data, size_t len)
  function CRIPEMD160 (line 287) | CRIPEMD160& CRIPEMD160::Reset()

FILE: src/crypto/ripemd160.h
  function class (line 12) | class CRIPEMD160

FILE: src/crypto/scrypt/crypto_scrypt.cpp
  function _crypto_scrypt (line 58) | static int _crypto_scrypt(const uint8_t* passwd, size_t passwdlen, const...
  type scrypt_test (line 169) | struct scrypt_test {
  function testsmix (line 185) | static bool testsmix(void (*smix)(uint8_t*, size_t, uint64_t, void*, voi...
  function selectsmix (line 200) | static void selectsmix(void)
  function crypto_scrypt (line 228) | int crypto_scrypt(const uint8_t* passwd, size_t passwdlen, const uint8_t...

FILE: src/crypto/scrypt/crypto_scrypt_smix.cpp
  function blkcpy (line 48) | static void blkcpy(void* dest, const void* src, size_t len)
  function blkxor (line 61) | static void blkxor(void* dest, const void* src, size_t len)
  function salsa20_8 (line 77) | static void salsa20_8(uint32_t B[16])
  function blockmix_salsa8 (line 124) | static void blockmix_salsa8(const uint32_t* Bin, uint32_t* Bout, uint32_...
  function integerify (line 156) | static uint64_t integerify(const void* B, size_t r)
  function crypto_scrypt_smix (line 163) | void crypto_scrypt_smix(uint8_t* B, size_t r, uint64_t N, void* _V, void...

FILE: src/crypto/scrypt/crypto_scrypt_smix_sse2.cpp
  function blkcpy (line 52) | static void blkcpy(void* dest, const void* src, size_t len)
  function blkxor (line 65) | static void blkxor(void* dest, const void* src, size_t len)
  function salsa20_8 (line 81) | static void salsa20_8(__m128i B[4])
  function blockmix_salsa8 (line 144) | static void blockmix_salsa8(const __m128i* Bin, __m128i* Bout, __m128i* ...
  function integerify (line 175) | static uint64_t integerify(const void* B, size_t r)
  function crypto_scrypt_smix_sse2 (line 182) | void crypto_scrypt_smix_sse2(uint8_t * B, size_t r, uint64_t N, void * V...

FILE: src/crypto/scrypt/sha256_scrypt.cpp
  function HMAC_SHA256_Init (line 44) | void HMAC_SHA256_Init(HMAC_SHA256_CTX* ctx, const void* _K, size_t Klen)
  function HMAC_SHA256_Update (line 83) | void HMAC_SHA256_Update(HMAC_SHA256_CTX* ctx, const void* in, size_t len)
  function HMAC_SHA256_Final (line 89) | void HMAC_SHA256_Final(unsigned char digest[32], HMAC_SHA256_CTX* ctx)
  function PBKDF2_SHA256 (line 106) | void PBKDF2_SHA256(const uint8_t* passwd, size_t passwdlen, const uint8_...

FILE: src/crypto/scrypt/sha256_scrypt.h
  type HMAC_SHA256_CTX (line 43) | typedef struct {

FILE: src/crypto/sha1.cpp
  type sha1 (line 15) | namespace sha1
    function Round (line 18) | void inline Round(uint32_t a, uint32_t& b, uint32_t c, uint32_t d, uin...
    function f1 (line 24) | uint32_t inline f1(uint32_t b, uint32_t c, uint32_t d) { return d ^ (b...
    function f2 (line 25) | uint32_t inline f2(uint32_t b, uint32_t c, uint32_t d) { return b ^ c ...
    function f3 (line 26) | uint32_t inline f3(uint32_t b, uint32_t c, uint32_t d) { return (b & c...
    function left (line 28) | uint32_t inline left(uint32_t x) { return (x << 1) | (x >> 31); }
    function Initialize (line 31) | void inline Initialize(uint32_t* s)
    function Transform (line 46) | void Transform(uint32_t* s, const unsigned char* chunk)
  function CSHA1 (line 154) | CSHA1& CSHA1::Write(const unsigned char* data, size_t len)
  function CSHA1 (line 194) | CSHA1& CSHA1::Reset()

FILE: src/crypto/sha1.h
  function class (line 12) | class CSHA1

FILE: src/crypto/sha256.cpp
  type sha256_sse4 (line 30) | namespace sha256_sse4
  type sha256_x86_shani (line 37) | namespace sha256_x86_shani
  type sha256_arm_shani (line 44) | namespace sha256_arm_shani
  type sha256 (line 54) | namespace sha256
    function Ch (line 56) | uint32_t inline Ch(uint32_t x, uint32_t y, uint32_t z) { return z ^ (x...
    function Maj (line 57) | uint32_t inline Maj(uint32_t x, uint32_t y, uint32_t z) { return (x & ...
    function Sigma0 (line 58) | uint32_t inline Sigma0(uint32_t x) { return (x >> 2 | x << 30) ^ (x >>...
    function Sigma1 (line 59) | uint32_t inline Sigma1(uint32_t x) { return (x >> 6 | x << 26) ^ (x >>...
    function sigma0 (line 60) | uint32_t inline sigma0(uint32_t x) { return (x >> 7 | x << 25) ^ (x >>...
    function sigma1 (line 61) | uint32_t inline sigma1(uint32_t x) { return (x >> 17 | x << 15) ^ (x >...
    function Round (line 64) | void inline Round(uint32_t a, uint32_t b, uint32_t c, uint32_t& d, uin...
    function Initialize (line 73) | void inline Initialize(uint32_t* s)
    function Transform (line 86) | void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
  function SelfTest (line 178) | bool SelfTest() {
  function AVXEnabled (line 219) | bool AVXEnabled()
  function SHA256AutoDetect (line 229) | std::string SHA256AutoDetect()
  function CSHA256 (line 339) | CSHA256& CSHA256::Write(const unsigned char* data, size_t len)
  function CSHA256 (line 385) | CSHA256& CSHA256::Reset()

FILE: src/crypto/sha256.h
  function class (line 13) | class CSHA256

FILE: src/crypto/sha256_arm_shani.cpp
  type sha256_arm_shani (line 41) | namespace sha256_arm_shani {
    function Transform (line 42) | void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
  type sha256d64_arm_shani (line 200) | namespace sha256d64_arm_shani {
    function Transform_2way (line 201) | void Transform_2way(unsigned char* output, const unsigned char* input)

FILE: src/crypto/sha256_x86_shani.cpp
  function QuadRound (line 20) | void inline  __attribute__((always_inline)) QuadRound(__m128i& state0, _...
  function QuadRound (line 27) | void inline  __attribute__((always_inline)) QuadRound(__m128i& state0, _...
  function ShiftMessageA (line 34) | void inline  __attribute__((always_inline)) ShiftMessageA(__m128i& m0, _...
  function ShiftMessageC (line 39) | void inline  __attribute__((always_inline)) ShiftMessageC(__m128i& m0, _...
  function ShiftMessageB (line 44) | void inline __attribute__((always_inline)) ShiftMessageB(__m128i& m0, __...
  function Shuffle (line 50) | void inline __attribute__((always_inline)) Shuffle(__m128i& s0, __m128i&...
  function Unshuffle (line 58) | void inline __attribute__((always_inline)) Unshuffle(__m128i& s0, __m128...
  function __m128i (line 66) | __m128i inline  __attribute__((always_inline)) Load(const unsigned char*...
  function Save (line 71) | void inline  __attribute__((always_inline)) Save(unsigned char* out, __m...
  type sha256_x86_shani (line 77) | namespace sha256_x86_shani {
    function Transform (line 78) | void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)

FILE: src/crypto/sha512.cpp
  type sha512 (line 16) | namespace sha512
    function Ch (line 18) | uint64_t inline Ch(uint64_t x, uint64_t y, uint64_t z) { return z ^ (x...
    function Maj (line 19) | uint64_t inline Maj(uint64_t x, uint64_t y, uint64_t z) { return (x & ...
    function Sigma0 (line 20) | uint64_t inline Sigma0(uint64_t x) { return (x >> 28 | x << 36) ^ (x >...
    function Sigma1 (line 21) | uint64_t inline Sigma1(uint64_t x) { return (x >> 14 | x << 50) ^ (x >...
    function sigma0 (line 22) | uint64_t inline sigma0(uint64_t x) { return (x >> 1 | x << 63) ^ (x >>...
    function sigma1 (line 23) | uint64_t inline sigma1(uint64_t x) { return (x >> 19 | x << 45) ^ (x >...
    function Round (line 26) | void inline Round(uint64_t a, uint64_t b, uint64_t c, uint64_t& d, uin...
    function Initialize (line 35) | void inline Initialize(uint64_t* s)
    function Transform (line 48) | void Transform(uint64_t* s, const unsigned char* chunk)
  function CSHA512 (line 160) | CSHA512& CSHA512::Write(const unsigned char* data, size_t len)
  function CSHA512 (line 206) | CSHA512& CSHA512::Reset()

FILE: src/crypto/sha512.h
  function class (line 12) | class CSHA512

FILE: src/cuckoocache.h
  function namespace (line 27) | namespace CuckooCache
  function allow_erase (line 235) | inline void allow_erase(uint32_t n) const
  function please_keep (line 244) | inline void please_keep(uint32_t n) const
  function epoch_check (line 258) | void epoch_check()
  function setup (line 309) | uint32_t setup(uint32_t new_size)
  function setup_bytes (line 336) | uint32_t setup_bytes(size_t bytes)
  function insert (line 361) | inline void insert(Element e)
  function contains (line 436) | inline bool contains(const Element& e, const bool erase) const

FILE: src/daemon-main.cpp
  function handleFinalShutdown (line 63) | static void handleFinalShutdown()
  function WaitForShutdown (line 68) | static void WaitForShutdown()
  function handlePostInitMain (line 76) | void handlePostInitMain()
  function handleAppInitResult (line 80) | static void handleAppInitResult(bool bResult)
  function handlePreInitMain (line 92) | static bool handlePreInitMain()
  function AppInit (line 101) | static void AppInit(int argc, char* argv[])
  function main (line 240) | int main(int argc, char* argv[])

FILE: src/dbwrapper.cpp
  class CLevelDBLogger (line 25) | class CLevelDBLogger : public leveldb::Logger {
    method Logv (line 29) | virtual void Logv(const char * format, va_list ap) override {
  function GetOptions (line 83) | static leveldb::Options GetOptions(size_t nCacheSize)
  type dbwrapper_private (line 198) | namespace dbwrapper_private {
    function HandleError (line 200) | void HandleError(const leveldb::Status& status)

FILE: src/dbwrapper.h
  function class (line 29) | class dbwrapper_error : public std::runtime_error
  function namespace (line 39) | namespace dbwrapper_private {
  function class (line 54) | class CDBBatch
  function class (line 124) | class CDBIterator
  function class (line 196) | class CDBWrapper

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/AccountLinkRecord.java
  class AccountLinkRecord (line 7) | public final class AccountLinkRecord {
    method AccountLinkRecord (line 14) | public AccountLinkRecord(
    method getServiceName (line 22) | public String getServiceName() {
    method getServiceData (line 27) | public String getServiceData() {
    method toString (line 31) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/AccountRecord.java
  class AccountRecord (line 8) | public final class AccountRecord {
    method AccountRecord (line 23) | public AccountRecord(
    method getUUID (line 38) | public String getUUID() {
    method getLabel (line 42) | public String getLabel() {
    method getState (line 46) | public String getState() {
    method getType (line 50) | public String getType() {
    method getIsHD (line 55) | public boolean getIsHD() {
    method getAccountLinks (line 60) | public ArrayList<AccountLinkRecord> getAccountLinks() {
    method toString (line 64) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/AddressRecord.java
  class AddressRecord (line 6) | public final class AddressRecord implements android.os.Parcelable {
    method AddressRecord (line 17) | public AddressRecord(
    method getAddress (line 28) | public String getAddress() {
    method getName (line 32) | public String getName() {
    method getDesc (line 36) | public String getDesc() {
    method getPurpose (line 40) | public String getPurpose() {
    method toString (line 44) | @Override
    method createFromParcel (line 57) | @Override
    method newArray (line 62) | @Override
    method AddressRecord (line 68) | public AddressRecord(android.os.Parcel in) {
    method describeContents (line 75) | @Override
    method writeToParcel (line 80) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/BalanceRecord.java
  class BalanceRecord (line 6) | public final class BalanceRecord {
    method BalanceRecord (line 29) | public BalanceRecord(
    method getAvailableIncludingLocked (line 52) | public long getAvailableIncludingLocked() {
    method getAvailableExcludingLocked (line 56) | public long getAvailableExcludingLocked() {
    method getAvailableLocked (line 60) | public long getAvailableLocked() {
    method getUnconfirmedIncludingLocked (line 64) | public long getUnconfirmedIncludingLocked() {
    method getUnconfirmedExcludingLocked (line 68) | public long getUnconfirmedExcludingLocked() {
    method getUnconfirmedLocked (line 72) | public long getUnconfirmedLocked() {
    method getImmatureIncludingLocked (line 76) | public long getImmatureIncludingLocked() {
    method getImmatureExcludingLocked (line 80) | public long getImmatureExcludingLocked() {
    method getImmatureLocked (line 84) | public long getImmatureLocked() {
    method getTotalLocked (line 88) | public long getTotalLocked() {
    method toString (line 92) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/BannedPeerRecord.java
  class BannedPeerRecord (line 6) | public final class BannedPeerRecord {
    method BannedPeerRecord (line 17) | public BannedPeerRecord(
    method getAddress (line 28) | public String getAddress() {
    method getBannedUntil (line 32) | public long getBannedUntil() {
    method getBannedFrom (line 36) | public long getBannedFrom() {
    method getReason (line 40) | public String getReason() {
    method toString (line 44) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/BlockInfoRecord.java
  class BlockInfoRecord (line 6) | public final class BlockInfoRecord {
    method BlockInfoRecord (line 15) | public BlockInfoRecord(
    method getHeight (line 24) | public int getHeight() {
    method getTimeStamp (line 28) | public long getTimeStamp() {
    method getBlockHash (line 32) | public String getBlockHash() {
    method toString (line 36) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IAccountsController.java
  class IAccountsController (line 11) | public abstract class IAccountsController {
    method setListener (line 13) | public static void setListener(IAccountsListener accountslistener)
    method listAccounts (line 19) | public static ArrayList<AccountRecord> listAccounts()
    method setActiveAccount (line 25) | public static boolean setActiveAccount(String accountUUID)
    method getActiveAccount (line 31) | public static String getActiveAccount()
    method createAccount (line 37) | public static String createAccount(String accountName, String accountT...
    method getAccountName (line 44) | public static String getAccountName(String accountUUID)
    method renameAccount (line 50) | public static boolean renameAccount(String accountUUID, String newAcco...
    method deleteAccount (line 57) | public static boolean deleteAccount(String accountUUID)
    method purgeAccount (line 67) | public static boolean purgeAccount(String accountUUID)
    method getAccountLinkURI (line 73) | public static String getAccountLinkURI(String accountUUID)
    method getWitnessKeyURI (line 79) | public static String getWitnessKeyURI(String accountUUID)
    method createAccountFromWitnessKeyURI (line 88) | public static String createAccountFromWitnessKeyURI(String witnessKeyU...
    method getReceiveAddress (line 95) | public static String getReceiveAddress(String accountUUID)
    method getTransactionHistory (line 101) | public static ArrayList<TransactionRecord> getTransactionHistory(Strin...
    method getMutationHistory (line 107) | public static ArrayList<MutationRecord> getMutationHistory(String acco...
    method getActiveAccountBalance (line 113) | public static BalanceRecord getActiveAccountBalance()
    method getAccountBalance (line 119) | public static BalanceRecord getAccountBalance(String accountUUID)
    method getAllAccountBalances (line 125) | public static HashMap<String, BalanceRecord> getAllAccountBalances()
    method addAccountLink (line 131) | public static boolean addAccountLink(String accountUUID, String servic...
    method removeAccountLink (line 139) | public static boolean removeAccountLink(String accountUUID, String ser...
    method listAccountLinks (line 146) | public static ArrayList<AccountLinkRecord> listAccountLinks(String acc...
    class CppProxy (line 151) | private static final class CppProxy extends IAccountsController
      method CppProxy (line 156) | private CppProxy(long nativeRef)
      method nativeDestroy (line 162) | private native void nativeDestroy(long nativeRef);
      method _djinni_private_destroy (line 163) | public void _djinni_private_destroy()
      method finalize (line 168) | protected void finalize() throws java.lang.Throwable
      method setListener (line 174) | public static native void setListener(IAccountsListener accountslist...
      method listAccounts (line 176) | public static native ArrayList<AccountRecord> listAccounts();
      method setActiveAccount (line 178) | public static native boolean setActiveAccount(String accountUUID);
      method getActiveAccount (line 180) | public static native String getActiveAccount();
      method createAccount (line 182) | public static native String createAccount(String accountName, String...
      method getAccountName (line 184) | public static native String getAccountName(String accountUUID);
      method renameAccount (line 186) | public static native boolean renameAccount(String accountUUID, Strin...
      method deleteAccount (line 188) | public static native boolean deleteAccount(String accountUUID);
      method purgeAccount (line 190) | public static native boolean purgeAccount(String accountUUID);
      method getAccountLinkURI (line 192) | public static native String getAccountLinkURI(String accountUUID);
      method getWitnessKeyURI (line 194) | public static native String getWitnessKeyURI(String accountUUID);
      method createAccountFromWitnessKeyURI (line 196) | public static native String createAccountFromWitnessKeyURI(String wi...
      method getReceiveAddress (line 198) | public static native String getReceiveAddress(String accountUUID);
      method getTransactionHistory (line 200) | public static native ArrayList<TransactionRecord> getTransactionHist...
      method getMutationHistory (line 202) | public static native ArrayList<MutationRecord> getMutationHistory(St...
      method getActiveAccountBalance (line 204) | public static native BalanceRecord getActiveAccountBalance();
      method getAccountBalance (line 206) | public static native BalanceRecord getAccountBalance(String accountU...
      method getAllAccountBalances (line 208) | public static native HashMap<String, BalanceRecord> getAllAccountBal...
      method addAccountLink (line 210) | public static native boolean addAccountLink(String accountUUID, Stri...
      method removeAccountLink (line 212) | public static native boolean removeAccountLink(String accountUUID, S...
      method listAccountLinks (line 214) | public static native ArrayList<AccountLinkRecord> listAccountLinks(S...

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IAccountsListener.java
  class IAccountsListener (line 7) | public abstract class IAccountsListener {
    method onActiveAccountChanged (line 9) | public abstract void onActiveAccountChanged(String accountUUID);
    method onActiveAccountNameChanged (line 12) | public abstract void onActiveAccountNameChanged(String newAccountName);
    method onAccountNameChanged (line 15) | public abstract void onAccountNameChanged(String accountUUID, String n...
    method onAccountAdded (line 18) | public abstract void onAccountAdded(String accountUUID, String account...
    method onAccountDeleted (line 21) | public abstract void onAccountDeleted(String accountUUID);
    method onAccountModified (line 24) | public abstract void onAccountModified(String accountUUID, AccountReco...

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IGenerationController.java
  class IGenerationController (line 9) | public abstract class IGenerationController {
    method setListener (line 11) | public static void setListener(IGenerationListener generationListener)
    method startGeneration (line 20) | public static boolean startGeneration(int numThreads, int numArenaThre...
    method stopGeneration (line 28) | public static boolean stopGeneration()
    method getGenerationAddress (line 38) | public static String getGenerationAddress()
    method getGenerationOverrideAddress (line 47) | public static String getGenerationOverrideAddress()
    method setGenerationOverrideAddress (line 53) | public static boolean setGenerationOverrideAddress(String overrideAddr...
    method getAvailableCores (line 58) | public static long getAvailableCores()
    method getMinimumMemory (line 63) | public static long getMinimumMemory()
    method getMaximumMemory (line 68) | public static long getMaximumMemory()
    class CppProxy (line 73) | private static final class CppProxy extends IGenerationController
      method CppProxy (line 78) | private CppProxy(long nativeRef)
      method nativeDestroy (line 84) | private native void nativeDestroy(long nativeRef);
      method _djinni_private_destroy (line 85) | public void _djinni_private_destroy()
      method finalize (line 90) | protected void finalize() throws java.lang.Throwable
      method setListener (line 96) | public static native void setListener(IGenerationListener generation...
      method startGeneration (line 98) | public static native boolean startGeneration(int numThreads, int num...
      method stopGeneration (line 100) | public static native boolean stopGeneration();
      method getGenerationAddress (line 102) | public static native String getGenerationAddress();
      method getGenerationOverrideAddress (line 104) | public static native String getGenerationOverrideAddress();
      method setGenerationOverrideAddress (line 106) | public static native boolean setGenerationOverrideAddress(String ove...
      method getAvailableCores (line 108) | public static native long getAvailableCores();
      method getMinimumMemory (line 110) | public static native long getMinimumMemory();
      method getMaximumMemory (line 112) | public static native long getMaximumMemory();

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IGenerationListener.java
  class IGenerationListener (line 7) | public abstract class IGenerationListener {
    method onGenerationStarted (line 9) | public abstract void onGenerationStarted();
    method onGenerationStopped (line 12) | public abstract void onGenerationStopped();
    method onStatsUpdated (line 15) | public abstract void onStatsUpdated(double hashesPerSecond, String has...

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/ILibraryController.java
  class ILibraryController (line 15) | public abstract class ILibraryController {
    method BuildInfo (line 20) | public static String BuildInfo()
    method InitUnityLib (line 31) | public static int InitUnityLib(String dataDir, String staticFilterPath...
    method InitUnityLibThreaded (line 44) | public static void InitUnityLibThreaded(String dataDir, String staticF...
    method InitWalletFromRecoveryPhrase (line 57) | public static boolean InitWalletFromRecoveryPhrase(String phrase, Stri...
    method ContinueWalletFromRecoveryPhrase (line 64) | public static boolean ContinueWalletFromRecoveryPhrase(String phrase, ...
    method InitWalletLinkedFromURI (line 71) | public static boolean InitWalletLinkedFromURI(String linkedUri, String...
    method ContinueWalletLinkedFromURI (line 78) | public static boolean ContinueWalletLinkedFromURI(String linkedUri, St...
    method InitWalletFromAndroidLegacyProtoWallet (line 85) | public static boolean InitWalletFromAndroidLegacyProtoWallet(String wa...
    method isValidAndroidLegacyProtoWallet (line 93) | public static LegacyWalletResult isValidAndroidLegacyProtoWallet(Strin...
    method IsValidLinkURI (line 100) | public static boolean IsValidLinkURI(String phrase)
    method ReplaceWalletLinkedFromURI (line 106) | public static boolean ReplaceWalletLinkedFromURI(String linkedUri, Str...
    method EraseWalletSeedsAndAccounts (line 117) | public static boolean EraseWalletSeedsAndAccounts()
    method IsValidRecoveryPhrase (line 126) | public static boolean IsValidRecoveryPhrase(String phrase)
    method GenerateRecoveryMnemonic (line 132) | public static MnemonicRecord GenerateRecoveryMnemonic()
    method GenerateGenesisKeys (line 137) | public static String GenerateGenesisKeys()
    method ComposeRecoveryPhrase (line 143) | public static MnemonicRecord ComposeRecoveryPhrase(String mnemonic, lo...
    method TerminateUnityLib (line 150) | public static void TerminateUnityLib()
    method QRImageFromString (line 156) | public static QrCodeRecord QRImageFromString(String qrString, int widt...
    method GetReceiveAddress (line 163) | public static String GetReceiveAddress()
    method GetRecoveryPhrase (line 169) | public static MnemonicRecord GetRecoveryPhrase()
    method IsMnemonicWallet (line 175) | public static boolean IsMnemonicWallet()
    method IsMnemonicCorrect (line 181) | public static boolean IsMnemonicCorrect(String phrase)
    method GetMnemonicDictionary (line 192) | public static ArrayList<String> GetMnemonicDictionary()
    method UnlockWallet (line 198) | public static boolean UnlockWallet(String password, long timeoutInSeco...
    method LockWallet (line 205) | public static boolean LockWallet()
    method GetWalletLockStatus (line 210) | public static WalletLockStatus GetWalletLockStatus()
    method ChangePassword (line 216) | public static boolean ChangePassword(String oldPassword, String newPas...
    method DoRescan (line 223) | public static void DoRescan()
    method IsValidRecipient (line 229) | public static UriRecipient IsValidRecipient(UriRecord request)
    method IsValidNativeAddress (line 235) | public static boolean IsValidNativeAddress(String address)
    method IsValidBitcoinAddress (line 241) | public static boolean IsValidBitcoinAddress(String address)
    method feeForRecipient (line 247) | public static long feeForRecipient(UriRecipient request)
    method performPaymentToRecipient (line 253) | public static PaymentResultStatus performPaymentToRecipient(UriRecipie...
    method getTransaction (line 263) | public static TransactionRecord getTransaction(String txHash)
    method resendTransaction (line 269) | public static String resendTransaction(String txHash)
    method getAddressBookRecords (line 275) | public static ArrayList<AddressRecord> getAddressBookRecords()
    method addAddressBookRecord (line 281) | public static void addAddressBookRecord(AddressRecord address)
    method deleteAddressBookRecord (line 287) | public static void deleteAddressBookRecord(AddressRecord address)
    method PersistAndPruneForSPV (line 293) | public static void PersistAndPruneForSPV()
    method ResetUnifiedProgress (line 304) | public static void ResetUnifiedProgress()
    method getLastSPVBlockInfos (line 310) | public static ArrayList<BlockInfoRecord> getLastSPVBlockInfos()
    method getUnifiedProgress (line 315) | public static float getUnifiedProgress()
    method getMonitoringStats (line 320) | public static MonitorRecord getMonitoringStats()
    method RegisterMonitorListener (line 325) | public static void RegisterMonitorListener(MonitorListener listener)
    method UnregisterMonitorListener (line 330) | public static void UnregisterMonitorListener(MonitorListener listener)
    method getClientInfo (line 335) | public static HashMap<String, String> getClientInfo()
    method getMutationHistory (line 344) | public static ArrayList<MutationRecord> getMutationHistory()
    method getTransactionHistory (line 353) | public static ArrayList<TransactionRecord> getTransactionHistory()
    method HaveUnconfirmedFunds (line 362) | public static boolean HaveUnconfirmedFunds()
    method GetBalance (line 371) | public static long GetBalance()
    class CppProxy (line 376) | private static final class CppProxy extends ILibraryController
      method CppProxy (line 381) | private CppProxy(long nativeRef)
      method nativeDestroy (line 387) | private native void nativeDestroy(long nativeRef);
      method _djinni_private_destroy (line 388) | public void _djinni_private_destroy()
      method finalize (line 393) | protected void finalize() throws java.lang.Throwable
      method BuildInfo (line 399) | public static native String BuildInfo();
      method InitUnityLib (line 401) | public static native int InitUnityLib(String dataDir, String staticF...
      method InitUnityLibThreaded (line 403) | public static native void InitUnityLibThreaded(String dataDir, Strin...
      method InitWalletFromRecoveryPhrase (line 405) | public static native boolean InitWalletFromRecoveryPhrase(String phr...
      method ContinueWalletFromRecoveryPhrase (line 407) | public static native boolean ContinueWalletFromRecoveryPhrase(String...
      method InitWalletLinkedFromURI (line 409) | public static native boolean InitWalletLinkedFromURI(String linkedUr...
      method ContinueWalletLinkedFromURI (line 411) | public static native boolean ContinueWalletLinkedFromURI(String link...
      method InitWalletFromAndroidLegacyProtoWallet (line 413) | public static native boolean InitWalletFromAndroidLegacyProtoWallet(...
      method isValidAndroidLegacyProtoWallet (line 415) | public static native LegacyWalletResult isValidAndroidLegacyProtoWal...
      method IsValidLinkURI (line 417) | public static native boolean IsValidLinkURI(String phrase);
      method ReplaceWalletLinkedFromURI (line 419) | public static native boolean ReplaceWalletLinkedFromURI(String linke...
      method EraseWalletSeedsAndAccounts (line 421) | public static native boolean EraseWalletSeedsAndAccounts();
      method IsValidRecoveryPhrase (line 423) | public static native boolean IsValidRecoveryPhrase(String phrase);
      method GenerateRecoveryMnemonic (line 425) | public static native MnemonicRecord GenerateRecoveryMnemonic();
      method GenerateGenesisKeys (line 427) | public static native String GenerateGenesisKeys();
      method ComposeRecoveryPhrase (line 429) | public static native MnemonicRecord ComposeRecoveryPhrase(String mne...
      method TerminateUnityLib (line 431) | public static native void TerminateUnityLib();
      method QRImageFromString (line 433) | public static native QrCodeRecord QRImageFromString(String qrString,...
      method GetReceiveAddress (line 435) | public static native String GetReceiveAddress();
      method GetRecoveryPhrase (line 437) | public static native MnemonicRecord GetRecoveryPhrase();
      method IsMnemonicWallet (line 439) | public static native boolean IsMnemonicWallet();
      method IsMnemonicCorrect (line 441) | public static native boolean IsMnemonicCorrect(String phrase);
      method GetMnemonicDictionary (line 443) | public static native ArrayList<String> GetMnemonicDictionary();
      method UnlockWallet (line 445) | public static native boolean UnlockWallet(String password, long time...
      method LockWallet (line 447) | public static native boolean LockWallet();
      method GetWalletLockStatus (line 449) | public static native WalletLockStatus GetWalletLockStatus();
      method ChangePassword (line 451) | public static native boolean ChangePassword(String oldPassword, Stri...
      method DoRescan (line 453) | public static native void DoRescan();
      method IsValidRecipient (line 455) | public static native UriRecipient IsValidRecipient(UriRecord request);
      method IsValidNativeAddress (line 457) | public static native boolean IsValidNativeAddress(String address);
      method IsValidBitcoinAddress (line 459) | public static native boolean IsValidBitcoinAddress(String address);
      method feeForRecipient (line 461) | public static native long feeForRecipient(UriRecipient request);
      method performPaymentToRecipient (line 463) | public static native PaymentResultStatus performPaymentToRecipient(U...
      method getTransaction (line 465) | public static native TransactionRecord getTransaction(String txHash);
      method resendTransaction (line 467) | public static native String resendTransaction(String txHash);
      method getAddressBookRecords (line 469) | public static native ArrayList<AddressRecord> getAddressBookRecords();
      method addAddressBookRecord (line 471) | public static native void addAddressBookRecord(AddressRecord address);
      method deleteAddressBookRecord (line 473) | public static native void deleteAddressBookRecord(AddressRecord addr...
      method PersistAndPruneForSPV (line 475) | public static native void PersistAndPruneForSPV();
      method ResetUnifiedProgress (line 477) | public static native void ResetUnifiedProgress();
      method getLastSPVBlockInfos (line 479) | public static native ArrayList<BlockInfoRecord> getLastSPVBlockInfos();
      method getUnifiedProgress (line 481) | public static native float getUnifiedProgress();
      method getMonitoringStats (line 483) | public static native MonitorRecord getMonitoringStats();
      method RegisterMonitorListener (line 485) | public static native void RegisterMonitorListener(MonitorListener li...
      method UnregisterMonitorListener (line 487) | public static native void UnregisterMonitorListener(MonitorListener ...
      method getClientInfo (line 489) | public static native HashMap<String, String> getClientInfo();
      method getMutationHistory (line 491) | public static native ArrayList<MutationRecord> getMutationHistory();
      method getTransactionHistory (line 493) | public static native ArrayList<TransactionRecord> getTransactionHist...
      method HaveUnconfirmedFunds (line 495) | public static native boolean HaveUnconfirmedFunds();
      method GetBalance (line 497) | public static native long GetBalance();

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/ILibraryListener.java
  class ILibraryListener (line 7) | public abstract class ILibraryListener {
    method notifyUnifiedProgress (line 12) | public abstract void notifyUnifiedProgress(float progress);
    method notifySyncDone (line 15) | public abstract void notifySyncDone();
    method notifyBalanceChange (line 17) | public abstract void notifyBalanceChange(BalanceRecord newBalance);
    method notifyNewMutation (line 29) | public abstract void notifyNewMutation(MutationRecord mutation, boolea...
    method notifyUpdatedTransaction (line 37) | public abstract void notifyUpdatedTransaction(TransactionRecord transa...
    method notifyInitWithExistingWallet (line 39) | public abstract void notifyInitWithExistingWallet();
    method notifyInitWithoutExistingWallet (line 41) | public abstract void notifyInitWithoutExistingWallet();
    method notifyShutdown (line 43) | public abstract void notifyShutdown();
    method notifyCoreReady (line 45) | public abstract void notifyCoreReady();
    method notifyError (line 47) | public abstract void notifyError(String error);
    method logPrint (line 49) | public abstract void logPrint(String str);

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IP2pNetworkController.java
  class IP2pNetworkController (line 10) | public abstract class IP2pNetworkController {
    method setListener (line 12) | public static void setListener(IP2pNetworkListener networklistener)
    method disableNetwork (line 18) | public static void disableNetwork()
    method enableNetwork (line 24) | public static void enableNetwork()
    method getPeerInfo (line 30) | public static ArrayList<PeerRecord> getPeerInfo()
    method listBannedPeers (line 36) | public static ArrayList<BannedPeerRecord> listBannedPeers()
    method banPeer (line 41) | public static boolean banPeer(String address, long banTimeInSeconds)
    method unbanPeer (line 48) | public static boolean unbanPeer(String address)
    method disconnectPeer (line 54) | public static boolean disconnectPeer(long nodeid)
    method ClearBanned (line 60) | public static boolean ClearBanned()
    class CppProxy (line 65) | private static final class CppProxy extends IP2pNetworkController
      method CppProxy (line 70) | private CppProxy(long nativeRef)
      method nativeDestroy (line 76) | private native void nativeDestroy(long nativeRef);
      method _djinni_private_destroy (line 77) | public void _djinni_private_destroy()
      method finalize (line 82) | protected void finalize() throws java.lang.Throwable
      method setListener (line 88) | public static native void setListener(IP2pNetworkListener networklis...
      method disableNetwork (line 90) | public static native void disableNetwork();
      method enableNetwork (line 92) | public static native void enableNetwork();
      method getPeerInfo (line 94) | public static native ArrayList<PeerRecord> getPeerInfo();
      method listBannedPeers (line 96) | public static native ArrayList<BannedPeerRecord> listBannedPeers();
      method banPeer (line 98) | public static native boolean banPeer(String address, long banTimeInS...
      method unbanPeer (line 100) | public static native boolean unbanPeer(String address);
      method disconnectPeer (line 102) | public static native boolean disconnectPeer(long nodeid);
      method ClearBanned (line 104) | public static native boolean ClearBanned();

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IP2pNetworkListener.java
  class IP2pNetworkListener (line 7) | public abstract class IP2pNetworkListener {
    method onNetworkEnabled (line 9) | public abstract void onNetworkEnabled();
    method onNetworkDisabled (line 12) | public abstract void onNetworkDisabled();
    method onConnectionCountChanged (line 15) | public abstract void onConnectionCountChanged(int numConnections);
    method onBytesChanged (line 18) | public abstract void onBytesChanged(int totalRecv, int totalSent);

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IRpcController.java
  class IRpcController (line 10) | public abstract class IRpcController {
    method execute (line 11) | public static void execute(String rpcCommandLine, IRpcListener resultL...
    method getAutocompleteList (line 17) | public static ArrayList<String> getAutocompleteList()
    class CppProxy (line 22) | private static final class CppProxy extends IRpcController
      method CppProxy (line 27) | private CppProxy(long nativeRef)
      method nativeDestroy (line 33) | private native void nativeDestroy(long nativeRef);
      method _djinni_private_destroy (line 34) | public void _djinni_private_destroy()
      method finalize (line 39) | protected void finalize() throws java.lang.Throwable
      method execute (line 45) | public static native void execute(String rpcCommandLine, IRpcListene...
      method getAutocompleteList (line 47) | public static native ArrayList<String> getAutocompleteList();

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IRpcListener.java
  class IRpcListener (line 10) | public abstract class IRpcListener {
    method onFilteredCommand (line 15) | public abstract void onFilteredCommand(String filteredCommand);
    method onSuccess (line 21) | public abstract void onSuccess(String filteredCommand, String result);
    method onError (line 28) | public abstract void onError(String filteredCommand, String errorMessa...

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IWalletController.java
  class IWalletController (line 12) | public abstract class IWalletController {
    method setListener (line 14) | public static void setListener(IWalletListener networklistener)
    method HaveUnconfirmedFunds (line 20) | public static boolean HaveUnconfirmedFunds()
    method GetBalanceSimple (line 26) | public static long GetBalanceSimple()
    method GetBalance (line 32) | public static BalanceRecord GetBalance()
    method AbandonTransaction (line 38) | public static boolean AbandonTransaction(String txHash)
    method GetUUID (line 44) | public static String GetUUID()
    class CppProxy (line 49) | private static final class CppProxy extends IWalletController
      method CppProxy (line 54) | private CppProxy(long nativeRef)
      method nativeDestroy (line 60) | private native void nativeDestroy(long nativeRef);
      method _djinni_private_destroy (line 61) | public void _djinni_private_destroy()
      method finalize (line 66) | protected void finalize() throws java.lang.Throwable
      method setListener (line 72) | public static native void setListener(IWalletListener networklistener);
      method HaveUnconfirmedFunds (line 74) | public static native boolean HaveUnconfirmedFunds();
      method GetBalanceSimple (line 76) | public static native long GetBalanceSimple();
      method GetBalance (line 78) | public static native BalanceRecord GetBalance();
      method AbandonTransaction (line 80) | public static native boolean AbandonTransaction(String txHash);
      method GetUUID (line 82) | public static native String GetUUID();

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IWalletListener.java
  class IWalletListener (line 7) | public abstract class IWalletListener {
    method notifyBalanceChange (line 9) | public abstract void notifyBalanceChange(BalanceRecord newBalance);
    method notifyNewMutation (line 21) | public abstract void notifyNewMutation(MutationRecord mutation, boolea...
    method notifyUpdatedTransaction (line 29) | public abstract void notifyUpdatedTransaction(TransactionRecord transa...
    method notifyWalletUnlocked (line 32) | public abstract void notifyWalletUnlocked();
    method notifyWalletLocked (line 35) | public abstract void notifyWalletLocked();
    method notifyCoreWantsUnlock (line 38) | public abstract void notifyCoreWantsUnlock(String reason);
    method notifyCoreInfo (line 41) | public abstract void notifyCoreInfo(String type, String caption, Strin...

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/IWitnessController.java
  class IWitnessController (line 11) | public abstract class IWitnessController {
    method getNetworkLimits (line 13) | public static HashMap<String, String> getNetworkLimits()
    method getEstimatedWeight (line 19) | public static WitnessEstimateInfoRecord getEstimatedWeight(long amount...
    method fundWitnessAccount (line 26) | public static WitnessFundingResultRecord fundWitnessAccount(String fun...
    method renewWitnessAccount (line 35) | public static WitnessFundingResultRecord renewWitnessAccount(String fu...
    method getAccountWitnessStatistics (line 42) | public static WitnessAccountStatisticsRecord getAccountWitnessStatisti...
    method setAccountCompounding (line 48) | public static void setAccountCompounding(String witnessAccountUUID, in...
    method isAccountCompounding (line 55) | public static int isAccountCompounding(String witnessAccountUUID)
    method getWitnessAddress (line 61) | public static String getWitnessAddress(String witnessAccountUUID)
    method getOptimalWitnessDistribution (line 67) | public static ArrayList<Long> getOptimalWitnessDistribution(long amoun...
    method getOptimalWitnessDistributionForAccount (line 75) | public static ArrayList<Long> getOptimalWitnessDistributionForAccount(...
    method optimiseWitnessAccount (line 81) | public static ResultRecord optimiseWitnessAccount(String witnessAccoun...
    class CppProxy (line 88) | private static final class CppProxy extends IWitnessController
      method CppProxy (line 93) | private CppProxy(long nativeRef)
      method nativeDestroy (line 99) | private native void nativeDestroy(long nativeRef);
      method _djinni_private_destroy (line 100) | public void _djinni_private_destroy()
      method finalize (line 105) | protected void finalize() throws java.lang.Throwable
      method getNetworkLimits (line 111) | public static native HashMap<String, String> getNetworkLimits();
      method getEstimatedWeight (line 113) | public static native WitnessEstimateInfoRecord getEstimatedWeight(lo...
      method fundWitnessAccount (line 115) | public static native WitnessFundingResultRecord fundWitnessAccount(S...
      method renewWitnessAccount (line 117) | public static native WitnessFundingResultRecord renewWitnessAccount(...
      method getAccountWitnessStatistics (line 119) | public static native WitnessAccountStatisticsRecord getAccountWitnes...
      method setAccountCompounding (line 121) | public static native void setAccountCompounding(String witnessAccoun...
      method isAccountCompounding (line 123) | public static native int isAccountCompounding(String witnessAccountU...
      method getWitnessAddress (line 125) | public static native String getWitnessAddress(String witnessAccountU...
      method getOptimalWitnessDistribution (line 127) | public static native ArrayList<Long> getOptimalWitnessDistribution(l...
      method getOptimalWitnessDistributionForAccount (line 129) | public static native ArrayList<Long> getOptimalWitnessDistributionFo...
      method optimiseWitnessAccount (line 131) | public static native ResultRecord optimiseWitnessAccount(String witn...

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/InputRecord.java
  class InputRecord (line 6) | public final class InputRecord implements android.os.Parcelable {
    method InputRecord (line 17) | public InputRecord(
    method getAddress (line 28) | public String getAddress() {
    method getLabel (line 32) | public String getLabel() {
    method getDesc (line 36) | public String getDesc() {
    method getIsMine (line 40) | public boolean getIsMine() {
    method toString (line 44) | @Override
    method createFromParcel (line 57) | @Override
    method newArray (line 62) | @Override
    method InputRecord (line 68) | public InputRecord(android.os.Parcel in) {
    method describeContents (line 75) | @Override
    method writeToParcel (line 80) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/LegacyWalletResult.java
  type LegacyWalletResult (line 6) | public enum LegacyWalletResult {

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/MnemonicRecord.java
  class MnemonicRecord (line 6) | public final class MnemonicRecord {
    method MnemonicRecord (line 15) | public MnemonicRecord(
    method getPhraseWithBirthNumber (line 24) | public String getPhraseWithBirthNumber() {
    method getPhrase (line 28) | public String getPhrase() {
    method getBirthNumber (line 32) | public long getBirthNumber() {
    method toString (line 36) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/MonitorListener.java
  class MonitorListener (line 7) | public abstract class MonitorListener {
    method onPartialChain (line 8) | public abstract void onPartialChain(int height, int probableHeight, in...
    method onPruned (line 10) | public abstract void onPruned(int height);
    method onProcessedSPVBlocks (line 12) | public abstract void onProcessedSPVBlocks(int height);

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/MonitorRecord.java
  class MonitorRecord (line 7) | public final class MonitorRecord {
    method MonitorRecord (line 20) | public MonitorRecord(
    method getPartialHeight (line 33) | public int getPartialHeight() {
    method getPartialOffset (line 37) | public int getPartialOffset() {
    method getPrunedHeight (line 41) | public int getPrunedHeight() {
    method getProcessedSPVHeight (line 45) | public int getProcessedSPVHeight() {
    method getProbableHeight (line 49) | public int getProbableHeight() {
    method toString (line 53) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/MutationRecord.java
  class MutationRecord (line 6) | public final class MutationRecord {
    method MutationRecord (line 21) | public MutationRecord(
    method getChange (line 36) | public long getChange() {
    method getTimestamp (line 40) | public long getTimestamp() {
    method getTxHash (line 44) | public String getTxHash() {
    method getRecipientAddresses (line 49) | public String getRecipientAddresses() {
    method getStatus (line 53) | public TransactionStatus getStatus() {
    method getDepth (line 57) | public int getDepth() {
    method toString (line 61) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/OutputRecord.java
  class OutputRecord (line 6) | public final class OutputRecord implements android.os.Parcelable {
    method OutputRecord (line 19) | public OutputRecord(
    method getAmount (line 32) | public long getAmount() {
    method getAddress (line 36) | public String getAddress() {
    method getLabel (line 40) | public String getLabel() {
    method getDesc (line 44) | public String getDesc() {
    method getIsMine (line 48) | public boolean getIsMine() {
    method toString (line 52) | @Override
    method createFromParcel (line 66) | @Override
    method newArray (line 71) | @Override
    method OutputRecord (line 77) | public OutputRecord(android.os.Parcel in) {
    method describeContents (line 85) | @Override
    method writeToParcel (line 90) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/PaymentResultStatus.java
  type PaymentResultStatus (line 6) | public enum PaymentResultStatus {

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/PeerRecord.java
  class PeerRecord (line 6) | public final class PeerRecord {
    method PeerRecord (line 55) | public PeerRecord(
    method getId (line 104) | public long getId() {
    method getIp (line 108) | public String getIp() {
    method getHostname (line 112) | public String getHostname() {
    method getAddrLocal (line 116) | public String getAddrLocal() {
    method getAddrBind (line 120) | public String getAddrBind() {
    method getStartHeight (line 124) | public long getStartHeight() {
    method getSyncedHeight (line 128) | public long getSyncedHeight() {
    method getCommonHeight (line 132) | public long getCommonHeight() {
    method getTimeConnected (line 136) | public long getTimeConnected() {
    method getTimeOffset (line 140) | public long getTimeOffset() {
    method getLatency (line 144) | public long getLatency() {
    method getLastSend (line 148) | public long getLastSend() {
    method getLastReceive (line 152) | public long getLastReceive() {
    method getSendBytes (line 156) | public long getSendBytes() {
    method getReceiveBytes (line 160) | public long getReceiveBytes() {
    method getUserAgent (line 164) | public String getUserAgent() {
    method getProtocol (line 168) | public long getProtocol() {
    method getServices (line 172) | public long getServices() {
    method getInbound (line 176) | public boolean getInbound() {
    method getWhitelisted (line 180) | public boolean getWhitelisted() {
    method getAddnode (line 184) | public boolean getAddnode() {
    method getRelayTxes (line 188) | public boolean getRelayTxes() {
    method getBanscore (line 192) | public long getBanscore() {
    method equals (line 196) | @Override
    method hashCode (line 227) | @Override
    method toString (line 257) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/QrCodeRecord.java
  class QrCodeRecord (line 6) | public final class QrCodeRecord {
    method QrCodeRecord (line 13) | public QrCodeRecord(
    method getWidth (line 20) | public int getWidth() {
    method getPixelData (line 24) | public byte[] getPixelData() {
    method toString (line 28) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/ResultRecord.java
  class ResultRecord (line 12) | public final class ResultRecord {
    method ResultRecord (line 19) | public ResultRecord(
    method getResult (line 26) | public boolean getResult() {
    method getInfo (line 30) | public String getInfo() {
    method toString (line 34) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/TransactionRecord.java
  class TransactionRecord (line 8) | public final class TransactionRecord implements android.os.Parcelable {
    method TransactionRecord (line 31) | public TransactionRecord(
    method getTxHash (line 54) | public String getTxHash() {
    method getTimeStamp (line 58) | public long getTimeStamp() {
    method getAmount (line 62) | public long getAmount() {
    method getFee (line 66) | public long getFee() {
    method getStatus (line 70) | public TransactionStatus getStatus() {
    method getHeight (line 74) | public int getHeight() {
    method getBlockTime (line 78) | public long getBlockTime() {
    method getDepth (line 82) | public int getDepth() {
    method getInputs (line 86) | public ArrayList<InputRecord> getInputs() {
    method getOutputs (line 90) | public ArrayList<OutputRecord> getOutputs() {
    method toString (line 94) | @Override
    method createFromParcel (line 113) | @Override
    method newArray (line 118) | @Override
    method TransactionRecord (line 124) | public TransactionRecord(android.os.Parcel in) {
    method describeContents (line 139) | @Override
    method writeToParcel (line 144) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/TransactionStatus.java
  type TransactionStatus (line 6) | public enum TransactionStatus {

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/UriRecipient.java
  class UriRecipient (line 6) | public final class UriRecipient implements android.os.Parcelable {
    method UriRecipient (line 19) | public UriRecipient(
    method getValid (line 32) | public boolean getValid() {
    method getAddress (line 36) | public String getAddress() {
    method getLabel (line 40) | public String getLabel() {
    method getDesc (line 44) | public String getDesc() {
    method getAmount (line 48) | public long getAmount() {
    method toString (line 52) | @Override
    method createFromParcel (line 66) | @Override
    method newArray (line 71) | @Override
    method UriRecipient (line 77) | public UriRecipient(android.os.Parcel in) {
    method describeContents (line 85) | @Override
    method writeToParcel (line 90) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/UriRecord.java
  class UriRecord (line 8) | public final class UriRecord {
    method UriRecord (line 17) | public UriRecord(
    method getScheme (line 26) | public String getScheme() {
    method getPath (line 30) | public String getPath() {
    method getItems (line 34) | public HashMap<String, String> getItems() {
    method toString (line 38) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/WalletLockStatus.java
  class WalletLockStatus (line 6) | public final class WalletLockStatus {
    method WalletLockStatus (line 13) | public WalletLockStatus(
    method getLocked (line 20) | public boolean getLocked() {
    method getLockTimeout (line 24) | public long getLockTimeout() {
    method toString (line 28) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/WitnessAccountStatisticsRecord.java
  class WitnessAccountStatisticsRecord (line 6) | public final class WitnessAccountStatisticsRecord implements android.os....
    method WitnessAccountStatisticsRecord (line 43) | public WitnessAccountStatisticsRecord(
    method getRequestStatus (line 81) | public String getRequestStatus() {
    method getAccountStatus (line 86) | public String getAccountStatus() {
    method getBlocksSinceLastActivity (line 91) | public long getBlocksSinceLastActivity() {
    method getAccountWeight (line 96) | public long getAccountWeight() {
    method getAccountWeightAtCreation (line 101) | public long getAccountWeightAtCreation() {
    method getAccountParts (line 106) | public long getAccountParts() {
    method getAccountAmountLocked (line 111) | public long getAccountAmountLocked() {
    method getAccountAmountLockedAtCreation (line 116) | public long getAccountAmountLockedAtCreation() {
    method getNetworkTipTotalWeight (line 121) | public long getNetworkTipTotalWeight() {
    method getNetworkTotalWeightAtCreation (line 126) | public long getNetworkTotalWeightAtCreation() {
    method getAccountInitialLockPeriodInBlocks (line 131) | public long getAccountInitialLockPeriodInBlocks() {
    method getAccountRemainingLockPeriodInBlocks (line 136) | public long getAccountRemainingLockPeriodInBlocks() {
    method getAccountExpectedWitnessPeriodInBlocks (line 141) | public long getAccountExpectedWitnessPeriodInBlocks() {
    method getAccountEstimatedWitnessPeriodInBlocks (line 146) | public long getAccountEstimatedWitnessPeriodInBlocks() {
    method getAccountInitialLockCreationBlockHeight (line 151) | public long getAccountInitialLockCreationBlockHeight() {
    method getCompoundingPercent (line 156) | public int getCompoundingPercent() {
    method getIsOptimal (line 161) | public boolean getIsOptimal() {
    method toString (line 165) | @Override
    method createFromParcel (line 191) | @Override
    method newArray (line 196) | @Override
    method WitnessAccountStatisticsRecord (line 202) | public WitnessAccountStatisticsRecord(android.os.Parcel in) {
    method describeContents (line 222) | @Override
    method writeToParcel (line 227) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/WitnessEstimateInfoRecord.java
  class WitnessEstimateInfoRecord (line 6) | public final class WitnessEstimateInfoRecord implements android.os.Parce...
    method WitnessEstimateInfoRecord (line 23) | public WitnessEstimateInfoRecord(
    method getNetworkWeight (line 41) | public long getNetworkWeight() {
    method getWeight (line 46) | public long getWeight() {
    method getParts (line 51) | public long getParts() {
    method getEstimatedWitnessProbability (line 56) | public double getEstimatedWitnessProbability() {
    method getEstimatedBlocksPerDay (line 61) | public double getEstimatedBlocksPerDay() {
    method getEstimatedDailyEarnings (line 66) | public long getEstimatedDailyEarnings() {
    method getEstimatedLifetimeEarnings (line 71) | public long getEstimatedLifetimeEarnings() {
    method toString (line 75) | @Override
    method createFromParcel (line 91) | @Override
    method newArray (line 96) | @Override
    method WitnessEstimateInfoRecord (line 102) | public WitnessEstimateInfoRecord(android.os.Parcel in) {
    method describeContents (line 112) | @Override
    method writeToParcel (line 117) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/jniunifiedbackend/WitnessFundingResultRecord.java
  class WitnessFundingResultRecord (line 6) | public final class WitnessFundingResultRecord implements android.os.Parc...
    method WitnessFundingResultRecord (line 15) | public WitnessFundingResultRecord(
    method getStatus (line 25) | public String getStatus() {
    method getTxid (line 30) | public String getTxid() {
    method getFee (line 35) | public long getFee() {
    method toString (line 39) | @Override
    method createFromParcel (line 51) | @Override
    method newArray (line 56) | @Override
    method WitnessFundingResultRecord (line 62) | public WitnessFundingResultRecord(android.os.Parcel in) {
    method describeContents (line 68) | @Override
    method writeToParcel (line 73) | @Override

FILE: src/frontend/android/unity_wallet/app/src/main/java/unity_wallet/util/ViewPagerTabs.java
  class ViewPagerTabs (line 39) | public class ViewPagerTabs extends View implements OnPageChangeListener {
    method ViewPagerTabs (line 48) | public ViewPagerTabs(final Context context, final AttributeSet attrs) {
    method addTabLabels (line 59) | public void addTabLabels(final int... labelResId) {
    method onDraw (line 78) | @Override
    method onMeasure (line 125) | @Override
    method getSuggestedMinimumHeight (line 163) | @Override
    method onPageScrolled (line 170) | @Override
    method onPageSelected (line 176) | @Override
    method onPageScrollStateChanged (line 182) | @Override
    method onSaveInstanceState (line 186) | @Override
    method onRestoreInstanceState (line 195) | @Override

FILE: src/frontend/electron_sample/main.js
  function createWindow (line 17) | function createWindow () {
  function unitySetup (line 63) | function unitySetup() {

FILE: src/frontend/electron_vue/libunity/generate.js
  function getFunctionsFor (line 65) | function getFunctionsFor(controller) {
  function getControllerCode (line 118) | function getControllerCode() {
  function getLibUnityCode (line 173) | function getLibUnityCode() {
  function PascalCase (line 266) | function PascalCase(line) {

FILE: src/frontend/electron_vue/src/background.js
  function createMainWindow (line 75) | function createMainWindow() {
  function createDebugWindow (line 173) | function createDebugWindow() {
  function createAboutWindow (line 231) | function createAboutWindow() {
  function updateRate (line 341) | async function updateRate(seconds) {
  function EnsureUnityLibTerminated (line 359) | function EnsureUnityLibTerminated(event) {
  function focusMainWindow (line 381) | function focusMainWindow() {

FILE: src/frontend/electron_vue/src/i18n.js
  function loadLocaleMessages (line 6) | function loadLocaleMessages() {

FILE: src/frontend/electron_vue/src/store/modules/app.js
  function EnableDebugWindowOnCoreReady (line 4) | function EnableDebugWindowOnCoreReady() {
  method SET_CORE_READY (line 32) | SET_CORE_READY(state) {
  method SET_SYNC_DONE (line 35) | SET_SYNC_DONE(state) {
  method SET_SPLASH_READY (line 38) | SET_SPLASH_READY(state) {
  method SET_STATUS (line 41) | SET_STATUS(state, status) {
  method SET_THEME (line 45) | SET_THEME(state, theme) {
  method SET_UNITY_VERSION (line 48) | SET_UNITY_VERSION(state, version) {
  method SET_RATE (line 51) | SET_RATE(state, rate) {
  method SET_CURRENCIES (line 54) | SET_CURRENCIES(state, currencies) {
  method SET_WALLET_EXISTS (line 57) | SET_WALLET_EXISTS(state, walletExists) {
  method SET_WALLET_VERSION (line 60) | SET_WALLET_VERSION(state, version) {
  method SET_ACTIVITY_INDICATOR (line 63) | SET_ACTIVITY_INDICATOR(state, activityIndicator) {
  method SET_LANGUAGE (line 66) | SET_LANGUAGE(state, language) {
  method SET_CURRENCY (line 69) | SET_CURRENCY(state, currency) {
  method SET_DECIMALS (line 72) | SET_DECIMALS(state, decimal) {
  method SET_CORE_READY (line 77) | SET_CORE_READY({ commit, state }) {
  method SET_SYNC_DONE (line 82) | SET_SYNC_DONE({ commit }) {
  method SET_SPLASH_READY (line 85) | SET_SPLASH_READY({ commit }) {
  method SET_STATUS (line 88) | SET_STATUS({ commit }, status) {
  method SET_THEME (line 91) | SET_THEME({ commit }, theme) {
  method SET_UNITY_VERSION (line 94) | SET_UNITY_VERSION({ commit }, version) {
  method SET_RATE (line 97) | SET_RATE({ commit }, rate) {
  method SET_CURRENCIES (line 100) | SET_CURRENCIES({ commit }, currencies) {
  method SET_ACTIVITY_INDICATOR (line 103) | SET_ACTIVITY_INDICATOR({ commit }, activityIndicator) {
  method SET_LANGUAGE (line 106) | SET_LANGUAGE({ commit }, language) {
  method SET_CURRENCY (line 109) | SET_CURRENCY({ commit }, currency) {
  method SET_DECIMALS (line 112) | SET_DECIMALS({ commit }, decimal) {
  method SET_WALLET_EXISTS (line 115) | SET_WALLET_EXISTS({ commit }, walletExists) {
  method SET_WALLET_VERSION (line 120) | SET_WALLET_VERSION({ commit }, version) {

FILE: src/frontend/electron_vue/src/store/modules/mining.js
  method SET_ACTIVE (line 13) | SET_ACTIVE(state, active) {
  method SET_MEMORY_SIZE (line 16) | SET_MEMORY_SIZE(state, memorySize) {
  method SET_STATS (line 19) | SET_STATS(state, stats) {
  method SET_THREAD_COUNT (line 22) | SET_THREAD_COUNT(state, threadCount) {
  method SET_ARENA_THREAD_COUNT (line 25) | SET_ARENA_THREAD_COUNT(state, arenaThreadCount) {
  method SET_ACTIVE (line 30) | SET_ACTIVE({ commit }, active) {
  method SET_MEMORY_SIZE (line 33) | SET_MEMORY_SIZE({ commit }, memorySize) {
  method SET_STATS (line 36) | SET_STATS({ commit }, stats) {
  method SET_THREAD_COUNT (line 39) | SET_THREAD_COUNT({ commit }, threadCount) {
  method SET_ARENA_THREAD_COUNT (line 42) | SET_ARENA_THREAD_COUNT({ commit }, arenaThreadCount) {

FILE: src/frontend/electron_vue/src/store/modules/wallet.js
  method SET_ACCOUNTS (line 14) | SET_ACCOUNTS(state, accounts) {
  method SET_ACTIVE_ACCOUNT (line 17) | SET_ACTIVE_ACCOUNT(state, accountUUID) {
  method SET_BALANCE (line 20) | SET_BALANCE(state, balance) {
  method SET_MUTATIONS (line 23) | SET_MUTATIONS(state, mutations) {
  method SET_RECEIVE_ADDRESS (line 26) | SET_RECEIVE_ADDRESS(state, receiveAddress) {
  method SET_WALLET_BALANCE (line 29) | SET_WALLET_BALANCE(state, walletBalance) {
  method SET_WALLET_PASSWORD (line 32) | SET_WALLET_PASSWORD(state, password) {
  method SET_UNLOCKED (line 35) | SET_UNLOCKED(state, unlocked) {
  method SET_WALLET (line 38) | SET_WALLET(state, payload) {
  method SET_ACCOUNT_NAME (line 46) | SET_ACCOUNT_NAME({ state, commit }, payload) {
  method SET_ACCOUNTS (line 52) | SET_ACCOUNTS({ commit }, accounts) {
  method SET_ACTIVE_ACCOUNT (line 55) | SET_ACTIVE_ACCOUNT({ commit }, accountUUID) {
  method SET_BALANCE (line 61) | SET_BALANCE({ commit }, new_balance) {
  method SET_MUTATIONS (line 64) | SET_MUTATIONS({ commit }, mutations) {
  method SET_RECEIVE_ADDRESS (line 67) | SET_RECEIVE_ADDRESS({ commit }, receiveAddress) {
  method SET_WALLET_BALANCE (line 70) | SET_WALLET_BALANCE({ commit }, walletBalance) {
  method SET_WALLET_PASSWORD (line 73) | SET_WALLET_PASSWORD({ commit }, password) {
  method SET_UNLOCKED (line 76) | SET_UNLOCKED({ commit }, unlocked) {
  method SET_WALLET (line 79) | SET_WALLET({ commit }, payload) {

FILE: src/frontend/electron_vue/src/unity/Controllers.js
  class LibraryController (line 4) | class LibraryController {
    method BuildInfoAsync (line 5) | static async BuildInfoAsync() {
    method BuildInfo (line 9) | static BuildInfo() {
    method InitWalletFromRecoveryPhraseAsync (line 13) | static async InitWalletFromRecoveryPhraseAsync(phrase, password) {
    method InitWalletFromRecoveryPhrase (line 17) | static InitWalletFromRecoveryPhrase(phrase, password) {
    method IsValidLinkURIAsync (line 21) | static async IsValidLinkURIAsync(phrase) {
    method IsValidLinkURI (line 25) | static IsValidLinkURI(phrase) {
    method ReplaceWalletLinkedFromURIAsync (line 29) | static async ReplaceWalletLinkedFromURIAsync(linked_uri, password) {
    method ReplaceWalletLinkedFromURI (line 33) | static ReplaceWalletLinkedFromURI(linked_uri, password) {
    method EraseWalletSeedsAndAccountsAsync (line 37) | static async EraseWalletSeedsAndAccountsAsync() {
    method EraseWalletSeedsAndAccounts (line 41) | static EraseWalletSeedsAndAccounts() {
    method IsValidRecoveryPhraseAsync (line 45) | static async IsValidRecoveryPhraseAsync(phrase) {
    method IsValidRecoveryPhrase (line 49) | static IsValidRecoveryPhrase(phrase) {
    method GenerateRecoveryMnemonicAsync (line 53) | static async GenerateRecoveryMnemonicAsync() {
    method GenerateRecoveryMnemonic (line 57) | static GenerateRecoveryMnemonic() {
    method GenerateGenesisKeysAsync (line 61) | static async GenerateGenesisKeysAsync() {
    method GenerateGenesisKeys (line 65) | static GenerateGenesisKeys() {
    method ComposeRecoveryPhraseAsync (line 69) | static async ComposeRecoveryPhraseAsync(mnemonic, birthTime) {
    method ComposeRecoveryPhrase (line 73) | static ComposeRecoveryPhrase(mnemonic, birthTime) {
    method TerminateUnityLibAsync (line 77) | static async TerminateUnityLibAsync() {
    method TerminateUnityLib (line 81) | static TerminateUnityLib() {
    method QRImageFromStringAsync (line 85) | static async QRImageFromStringAsync(qr_string, width_hint) {
    method QRImageFromString (line 89) | static QRImageFromString(qr_string, width_hint) {
    method GetReceiveAddressAsync (line 93) | static async GetReceiveAddressAsync() {
    method GetReceiveAddress (line 97) | static GetReceiveAddress() {
    method GetRecoveryPhraseAsync (line 101) | static async GetRecoveryPhraseAsync() {
    method GetRecoveryPhrase (line 105) | static GetRecoveryPhrase() {
    method IsMnemonicWalletAsync (line 109) | static async IsMnemonicWalletAsync() {
    method IsMnemonicWallet (line 113) | static IsMnemonicWallet() {
    method IsMnemonicCorrectAsync (line 117) | static async IsMnemonicCorrectAsync(phrase) {
    method IsMnemonicCorrect (line 121) | static IsMnemonicCorrect(phrase) {
    method GetMnemonicDictionaryAsync (line 125) | static async GetMnemonicDictionaryAsync() {
    method GetMnemonicDictionary (line 129) | static GetMnemonicDictionary() {
    method UnlockWalletAsync (line 133) | static async UnlockWalletAsync(password, timeout_in_seconds) {
    method UnlockWallet (line 137) | static UnlockWallet(password, timeout_in_seconds) {
    method LockWalletAsync (line 141) | static async LockWalletAsync() {
    method LockWallet (line 145) | static LockWallet() {
    method GetWalletLockStatusAsync (line 149) | static async GetWalletLockStatusAsync() {
    method GetWalletLockStatus (line 153) | static GetWalletLockStatus() {
    method ChangePasswordAsync (line 157) | static async ChangePasswordAsync(oldPassword, newPassword) {
    method ChangePassword (line 161) | static ChangePassword(oldPassword, newPassword) {
    method DoRescanAsync (line 165) | static async DoRescanAsync() {
    method DoRescan (line 169) | static DoRescan() {
    method IsValidRecipientAsync (line 173) | static async IsValidRecipientAsync(request) {
    method IsValidRecipient (line 177) | static IsValidRecipient(request) {
    method IsValidNativeAddressAsync (line 181) | static async IsValidNativeAddressAsync(address) {
    method IsValidNativeAddress (line 185) | static IsValidNativeAddress(address) {
    method IsValidBitcoinAddressAsync (line 189) | static async IsValidBitcoinAddressAsync(address) {
    method IsValidBitcoinAddress (line 193) | static IsValidBitcoinAddress(address) {
    method FeeForRecipientAsync (line 197) | static async FeeForRecipientAsync(request) {
    method FeeForRecipient (line 201) | static FeeForRecipient(request) {
    method PerformPaymentToRecipientAsync (line 205) | static async PerformPaymentToRecipientAsync(request, substract_fee) {
    method PerformPaymentToRecipient (line 209) | static PerformPaymentToRecipient(request, substract_fee) {
    method GetTransactionAsync (line 213) | static async GetTransactionAsync(txHash) {
    method GetTransaction (line 217) | static GetTransaction(txHash) {
    method ResendTransactionAsync (line 221) | static async ResendTransactionAsync(txHash) {
    method ResendTransaction (line 225) | static ResendTransaction(txHash) {
    method GetAddressBookRecordsAsync (line 229) | static async GetAddressBookRecordsAsync() {
    method GetAddressBookRecords (line 233) | static GetAddressBookRecords() {
    method AddAddressBookRecordAsync (line 237) | static async AddAddressBookRecordAsync(address) {
    method AddAddressBookRecord (line 241) | static AddAddressBookRecord(address) {
    method DeleteAddressBookRecordAsync (line 245) | static async DeleteAddressBookRecordAsync(address) {
    method DeleteAddressBookRecord (line 249) | static DeleteAddressBookRecord(address) {
    method ResetUnifiedProgressAsync (line 253) | static async ResetUnifiedProgressAsync() {
    method ResetUnifiedProgress (line 257) | static ResetUnifiedProgress() {
    method GetLastSPVBlockInfosAsync (line 261) | static async GetLastSPVBlockInfosAsync() {
    method GetLastSPVBlockInfos (line 265) | static GetLastSPVBlockInfos() {
    method GetUnifiedProgressAsync (line 269) | static async GetUnifiedProgressAsync() {
    method GetUnifiedProgress (line 273) | static GetUnifiedProgress() {
    method GetMonitoringStatsAsync (line 277) | static async GetMonitoringStatsAsync() {
    method GetMonitoringStats (line 281) | static GetMonitoringStats() {
    method RegisterMonitorListenerAsync (line 285) | static async RegisterMonitorListenerAsync(listener) {
    method RegisterMonitorListener (line 289) | static RegisterMonitorListener(listener) {
    method UnregisterMonitorListenerAsync (line 293) | static async UnregisterMonitorListenerAsync(listener) {
    method UnregisterMonitorListener (line 297) | static UnregisterMonitorListener(listener) {
    method GetClientInfoAsync (line 301) | static async GetClientInfoAsync() {
    method GetClientInfo (line 305) | static GetClientInfo() {
  class WalletController (line 310) | class WalletController {
    method HaveUnconfirmedFundsAsync (line 311) | static async HaveUnconfirmedFundsAsync() {
    method HaveUnconfirmedFunds (line 315) | static HaveUnconfirmedFunds() {
    method GetBalanceSimpleAsync (line 319) | static async GetBalanceSimpleAsync() {
    method GetBalanceSimple (line 323) | static GetBalanceSimple() {
    method GetBalanceAsync (line 327) | static async GetBalanceAsync() {
    method GetBalance (line 331) | static GetBalance() {
    method AbandonTransactionAsync (line 335) | static async AbandonTransactionAsync(txHash) {
    method AbandonTransaction (line 339) | static AbandonTransaction(txHash) {
    method GetUUIDAsync (line 343) | static async GetUUIDAsync() {
    method GetUUID (line 347) | static GetUUID() {
  class RpcController (line 352) | class RpcController {
    method ExecuteAsync (line 353) | static async ExecuteAsync(command) {
    method Execute (line 357) | static Execute(command) {
    method GetAutocompleteListAsync (line 360) | static async GetAutocompleteListAsync() {
    method GetAutocompleteList (line 364) | static GetAutocompleteList() {
  class P2pNetworkController (line 369) | class P2pNetworkController {
    method DisableNetworkAsync (line 370) | static async DisableNetworkAsync() {
    method DisableNetwork (line 374) | static DisableNetwork() {
    method EnableNetworkAsync (line 378) | static async EnableNetworkAsync() {
    method EnableNetwork (line 382) | static EnableNetwork() {
    method GetPeerInfoAsync (line 386) | static async GetPeerInfoAsync() {
    method GetPeerInfo (line 390) | static GetPeerInfo() {
    method ListBannedPeersAsync (line 394) | static async ListBannedPeersAsync() {
    method ListBannedPeers (line 398) | static ListBannedPeers() {
    method BanPeerAsync (line 402) | static async BanPeerAsync(address, banTimeInSeconds) {
    method BanPeer (line 406) | static BanPeer(address, banTimeInSeconds) {
    method UnbanPeerAsync (line 410) | static async UnbanPeerAsync(address) {
    method UnbanPeer (line 414) | static UnbanPeer(address) {
    method DisconnectPeerAsync (line 418) | static async DisconnectPeerAsync(nodeid) {
    method DisconnectPeer (line 422) | static DisconnectPeer(nodeid) {
    method ClearBannedAsync (line 426) | static async ClearBannedAsync() {
    method ClearBanned (line 430) | static ClearBanned() {
  class AccountsController (line 435) | class AccountsController {
    method ListAccountsAsync (line 436) | static async ListAccountsAsync() {
    method ListAccounts (line 440) | static ListAccounts() {
    method SetActiveAccountAsync (line 444) | static async SetActiveAccountAsync(accountUUID) {
    method SetActiveAccount (line 448) | static SetActiveAccount(accountUUID) {
    method GetActiveAccountAsync (line 452) | static async GetActiveAccountAsync() {
    method GetActiveAccount (line 456) | static GetActiveAccount() {
    method CreateAccountAsync (line 460) | static async CreateAccountAsync(accountName, accountType) {
    method CreateAccount (line 464) | static CreateAccount(accountName, accountType) {
    method GetAccountNameAsync (line 468) | static async GetAccountNameAsync(accountUUID) {
    method GetAccountName (line 472) | static GetAccountName(accountUUID) {
    method RenameAccountAsync (line 476) | static async RenameAccountAsync(accountUUID, newAccountName) {
    method RenameAccount (line 480) | static RenameAccount(accountUUID, newAccountName) {
    method DeleteAccountAsync (line 484) | static async DeleteAccountAsync(accountUUID) {
    method DeleteAccount (line 488) | static DeleteAccount(accountUUID) {
    method PurgeAccountAsync (line 492) | static async PurgeAccountAsync(accountUUID) {
    method PurgeAccount (line 496) | static PurgeAccount(accountUUID) {
    method GetAccountLinkURIAsync (line 500) | static async GetAccountLinkURIAsync(accountUUID) {
    method GetAccountLinkURI (line 504) | static GetAccountLinkURI(accountUUID) {
    method GetWitnessKeyURIAsync (line 508) | static async GetWitnessKeyURIAsync(accountUUID) {
    method GetWitnessKeyURI (line 512) | static GetWitnessKeyURI(accountUUID) {
    method CreateAccountFromWitnessKeyURIAsync (line 516) | static async CreateAccountFromWitnessKeyURIAsync(witnessKeyURI, newAcc...
    method CreateAccountFromWitnessKeyURI (line 520) | static CreateAccountFromWitnessKeyURI(witnessKeyURI, newAccountName) {
    method GetReceiveAddressAsync (line 524) | static async GetReceiveAddressAsync(accountUUID) {
    method GetReceiveAddress (line 528) | static GetReceiveAddress(accountUUID) {
    method GetTransactionHistoryAsync (line 532) | static async GetTransactionHistoryAsync(accountUUID) {
    method GetTransactionHistory (line 536) | static GetTransactionHistory(accountUUID) {
    method GetMutationHistoryAsync (line 540) | static async GetMutationHistoryAsync(accountUUID) {
    method GetMutationHistory (line 544) | static GetMutationHistory(accountUUID) {
    method GetActiveAccountBalanceAsync (line 548) | static async GetActiveAccountBalanceAsync() {
    method GetActiveAccountBalance (line 552) | static GetActiveAccountBalance() {
    method GetAccountBalanceAsync (line 556) | static async GetAccountBalanceAsync(accountUUID) {
    method GetAccountBalance (line 560) | static GetAccountBalance(accountUUID) {
    method GetAllAccountBalancesAsync (line 564) | static async GetAllAccountBalancesAsync() {
    method GetAllAccountBalances (line 568) | static GetAllAccountBalances() {
    method AddAccountLinkAsync (line 572) | static async AddAccountLinkAsync(accountUUID, serviceName, data) {
    method AddAccountLink (line 576) | static AddAccountLink(accountUUID, serviceName, data) {
    method RemoveAccountLinkAsync (line 580) | static async RemoveAccountLinkAsync(accountUUID, serviceName) {
    method RemoveAccountLink (line 584) | static RemoveAccountLink(accountUUID, serviceName) {
    method ListAccountLinksAsync (line 588) | static async ListAccountLinksAsync(accountUUID) {
    method ListAccountLinks (line 592) | static ListAccountLinks(accountUUID) {
  class WitnessController (line 597) | class WitnessController {
    method GetNetworkLimitsAsync (line 598) | static async GetNetworkLimitsAsync() {
    method GetNetworkLimits (line 602) | static GetNetworkLimits() {
    method GetEstimatedWeightAsync (line 606) | static async GetEstimatedWeightAsync(amount_to_lock, lock_period_in_bl...
    method GetEstimatedWeight (line 610) | static GetEstimatedWeight(amount_to_lock, lock_period_in_blocks) {
    method FundWitnessAccountAsync (line 614) | static async FundWitnessAccountAsync(funding_account_UUID, witness_acc...
    method FundWitnessAccount (line 625) | static FundWitnessAccount(funding_account_UUID, witness_account_UUID, ...
    method RenewWitnessAccountAsync (line 631) | static async RenewWitnessAccountAsync(funding_account_UUID, witness_ac...
    method RenewWitnessAccount (line 635) | static RenewWitnessAccount(funding_account_UUID, witness_account_UUID) {
    method GetAccountWitnessStatisticsAsync (line 639) | static async GetAccountWitnessStatisticsAsync(witnessAccountUUID) {
    method GetAccountWitnessStatistics (line 643) | static GetAccountWitnessStatistics(witnessAccountUUID) {
    method SetAccountCompoundingAsync (line 647) | static async SetAccountCompoundingAsync(witnessAccountUUID, percent_to...
    method SetAccountCompounding (line 651) | static SetAccountCompounding(witnessAccountUUID, percent_to_compount) {
    method IsAccountCompoundingAsync (line 655) | static async IsAccountCompoundingAsync(witnessAccountUUID) {
    method IsAccountCompounding (line 659) | static IsAccountCompounding(witnessAccountUUID) {
    method GetWitnessAddressAsync (line 663) | static async GetWitnessAddressAsync(witnessAccountUUID) {
    method GetWitnessAddress (line 667) | static GetWitnessAddress(witnessAccountUUID) {
    method GetOptimalWitnessDistributionAsync (line 671) | static async GetOptimalWitnessDistributionAsync(amount, durationInBloc...
    method GetOptimalWitnessDistribution (line 675) | static GetOptimalWitnessDistribution(amount, durationInBlocks, totalNe...
    method GetOptimalWitnessDistributionForAccountAsync (line 679) | static async GetOptimalWitnessDistributionForAccountAsync(witnessAccou...
    method GetOptimalWitnessDistributionForAccount (line 683) | static GetOptimalWitnessDistributionForAccount(witnessAccountUUID) {
    method OptimiseWitnessAccountAsync (line 687) | static async OptimiseWitnessAccountAsync(witnessAccountUUID, fundingAc...
    method OptimiseWitnessAccount (line 693) | static OptimiseWitnessAccount(witnessAccountUUID, fundingAccountUUID, ...
  class GenerationController (line 698) | class GenerationController {
    method StartGenerationAsync (line 699) | static async StartGenerationAsync(numThreads, numArenaThreads, memoryL...
    method StartGeneration (line 703) | static StartGeneration(numThreads, numArenaThreads, memoryLimit) {
    method StopGenerationAsync (line 707) | static async StopGenerationAsync() {
    method StopGeneration (line 711) | static StopGeneration() {
    method GetGenerationAddressAsync (line 715) | static async GetGenerationAddressAsync() {
    method GetGenerationAddress (line 719) | static GetGenerationAddress() {
    method GetGenerationOverrideAddressAsync (line 723) | static async GetGenerationOverrideAddressAsync() {
    method GetGenerationOverrideAddress (line 727) | static GetGenerationOverrideAddress() {
    method SetGenerationOverrideAddressAsync (line 731) | static async SetGenerationOverrideAddressAsync(overrideAddress) {
    method SetGenerationOverrideAddress (line 735) | static SetGenerationOverrideAddress(overrideAddress) {
    method GetAvailableCoresAsync (line 739) | static async GetAvailableCoresAsync() {
    method GetAvailableCores (line 743) | static GetAvailableCores() {
    method GetMinimumMemoryAsync (line 747) | static async GetMinimumMemoryAsync() {
    method GetMinimumMemory (line 751) | static GetMinimumMemory() {
    method GetMaximumMemoryAsync (line 755) | static async GetMaximumMemoryAsync() {
    method GetMaximumMemory (line 759) | static GetMaximumMemory() {
  class BackendUtilities (line 767) | class BackendUtilities {
    method GetBuySessionUrl (line 768) | static GetBuySessionUrl() {
    method GetSellSessionUrl (line 771) | static GetSellSessionUrl() {
    method holdinAPIActions (line 774) | static holdinAPIActions(witnessKey, action, data) {
  function handleError (line 781) | function handleError(response) {

FILE: src/frontend/electron_vue/src/unity/LibUnity.js
  class LibUnity (line 10) | class LibUnity {
    method constructor (line 11) | constructor(options) {
    method SetMainWindowReady (line 46) | SetMainWindowReady() {
    method Initialize (line 52) | Initialize() {
    method TerminateUnityLib (line 62) | TerminateUnityLib() {
    method _initializeWalletController (line 71) | _initializeWalletController() {
    method _updateAccounts (line 104) | _updateAccounts(dispatch = true) {
    method _initializeAccountsController (line 125) | _initializeAccountsController() {
    method _initializeGenerationController (line 163) | _initializeGenerationController() {
    method _startUnityLib (line 198) | _startUnityLib() {
    method _setStateWhenCoreAndMainWindowReady (line 225) | _setStateWhenCoreAndMainWindowReady() {
    method _registerSignalHandlers (line 237) | _registerSignalHandlers() {
    method _registerIpcHandlers (line 334) | _registerIpcHandlers() {
  function handleError (line 2846) | function handleError(error) {

FILE: src/frontend/electron_vue/src/util.js
  function formatMoneyForDisplay (line 4) | function formatMoneyForDisplay(monetaryAmount, isFiat = false, minimumAm...
  function displayToMonetary (line 22) | function displayToMonetary(displayAmount) {
  function formatTime (line 45) | function formatTime(timestamp) {
  function downloadTransactionList (line 50) | function downloadTransactionList(transactions, fileName) {

FILE: src/frontend/lite/libunity/generate.js
  function getFunctionsFor (line 65) | function getFunctionsFor(controller) {
  function getControllerCode (line 118) | function getControllerCode() {
  function getLibUnityCode (line 173) | function getLibUnityCode() {
  function PascalCase (line 266) | function PascalCase(line) {

FILE: src/frontend/lite/src/background.js
  function createMainWindow (line 74) | function createMainWindow() {
  function createDebugWindow (line 166) | function createDebugWindow() {
  function updateRate (line 276) | async function updateRate(seconds) {
  function EnsureUnityLibTerminated (line 291) | function EnsureUnityLibTerminated(event) {
  function focusMainWindow (line 313) | function focusMainWindow() {

FILE: src/frontend/lite/src/i18n.js
  function loadLocaleMessages (line 6) | function loadLocaleMessages() {

FILE: src/frontend/lite/src/store/modules/app.js
  function EnableDebugWindowOnCoreReady (line 4) | function EnableDebugWindowOnCoreReady() {
  method SET_CORE_READY (line 31) | SET_CORE_READY(state) {
  method SET_SYNC_DONE (line 34) | SET_SYNC_DONE(state) {
  method SET_SPLASH_READY (line 37) | SET_SPLASH_READY(state) {
  method SET_STATUS (line 40) | SET_STATUS(state, status) {
  method SET_THEME (line 44) | SET_THEME(state, theme) {
  method SET_UNITY_VERSION (line 47) | SET_UNITY_VERSION(state, version) {
  method SET_RATE (line 50) | SET_RATE(state, rate) {
  method SET_WALLET_EXISTS (line 53) | SET_WALLET_EXISTS(state, walletExists) {
  method SET_WALLET_VERSION (line 56) | SET_WALLET_VERSION(state, version) {
  method SET_ACTIVITY_INDICATOR (line 59) | SET_ACTIVITY_INDICATOR(state, activityIndicator) {
  method SET_LANGUAGE (line 62) | SET_LANGUAGE(state, language) {
  method SET_DECIMALS (line 65) | SET_DECIMALS(state, decimal) {
  method SET_CORE_READY (line 70) | SET_CORE_READY({ commit, state }) {
  method SET_SYNC_DONE (line 75) | SET_SYNC_DONE({ commit }) {
  method SET_SPLASH_READY (line 78) | SET_SPLASH_READY({ commit }) {
  method SET_STATUS (line 81) | SET_STATUS({ commit }, status) {
  method SET_THEME (line 84) | SET_THEME({ commit }, theme) {
  method SET_UNITY_VERSION (line 87) | SET_UNITY_VERSION({ commit }, version) {
  method SET_RATE (line 90) | SET_RATE({ commit }, rate) {
  method SET_ACTIVITY_INDICATOR (line 93) | SET_ACTIVITY_INDICATOR({ commit }, activityIndicator) {
  method SET_LANGUAGE (line 96) | SET_LANGUAGE({ commit }, language) {
  method SET_DECIMALS (line 99) | SET_DECIMALS({ commit }, decimal) {
  method SET_WALLET_EXISTS (line 102) | SET_WALLET_EXISTS({ commit }, walletExists) {
  method SET_WALLET_VERSION (line 107) | SET_WALLET_VERSION({ commit }, version) {

FILE: src/frontend/lite/src/store/modules/mining.js
  method SET_ACTIVE (line 13) | SET_ACTIVE(state, active) {
  method SET_MEMORY_SIZE (line 16) | SET_MEMORY_SIZE(state, memorySize) {
  method SET_STATS (line 19) | SET_STATS(state, stats) {
  method SET_THREAD_COUNT (line 22) | SET_THREAD_COUNT(state, threadCount) {
  method SET_ARENA_THREAD_COUNT (line 25) | SET_ARENA_THREAD_COUNT(state, arenaThreadCount) {
  method SET_ACTIVE (line 30) | SET_ACTIVE({ commit }, active) {
  method SET_MEMORY_SIZE (line 33) | SET_MEMORY_SIZE({ commit }, memorySize) {
  method SET_STATS (line 36) | SET_STATS({ commit }, stats) {
  method SET_THREAD_COUNT (line 39) | SET_THREAD_COUNT({ commit }, threadCount) {
  method SET_ARENA_THREAD_COUNT (line 42) | SET_ARENA_THREAD_COUNT({ commit }, arenaThreadCount) {

FILE: src/frontend/lite/src/store/modules/wallet.js
  method SET_ACCOUNTS (line 14) | SET_ACCOUNTS(state, accounts) {
  method SET_ACTIVE_ACCOUNT (line 17) | SET_ACTIVE_ACCOUNT(state, accountUUID) {
  method SET_BALANCE (line 20) | SET_BALANCE(state, balance) {
  method SET_MUTATIONS (line 23) | SET_MUTATIONS(state, mutations) {
  method SET_RECEIVE_ADDRESS (line 26) | SET_RECEIVE_ADDRESS(state, receiveAddress) {
  method SET_WALLET_BALANCE (line 29) | SET_WALLET_BALANCE(state, walletBalance) {
  method SET_WALLET_PASSWORD (line 32) | SET_WALLET_PASSWORD(state, password) {
  method SET_UNLOCKED (line 35) | SET_UNLOCKED(state, unlocked) {
  method SET_WALLET (line 38) | SET_WALLET(state, payload) {
  method SET_ACCOUNT_NAME (line 46) | SET_ACCOUNT_NAME({ state, commit }, payload) {
  method SET_ACCOUNTS (line 52) | SET_ACCOUNTS({ commit }, accounts) {
  method SET_ACTIVE_ACCOUNT (line 55) | SET_ACTIVE_ACCOUNT({ commit }, accountUUID) {
  method SET_BALANCE (line 61) | SET_BALANCE({ commit }, new_balance) {
  method SET_MUTATIONS (line 64) | SET_MUTATIONS({ commit }, mutations) {
  method SET_RECEIVE_ADDRESS (line 67) | SET_RECEIVE_ADDRESS({ commit }, receiveAddress) {
  method SET_WALLET_BALANCE (line 70) | SET_WALLET_BALANCE({ commit }, walletBalance) {
  method SET_WALLET_PASSWORD (line 73) | SET_WALLET_PASSWORD({ commit }, password) {
  method SET_UNLOCKED (line 76) | SET_UNLOCKED({ commit }, unlocked) {
  method SET_WALLET (line 79) | SET_WALLET({ commit }, payload) {

FILE: src/frontend/lite/src/unity/Controllers.js
  class LibraryController (line 4) | class LibraryController {
    method BuildInfoAsync (line 5) | static async BuildInfoAsync() {
    method BuildInfo (line 9) | static BuildInfo() {
    method InitWalletFromRecoveryPhraseAsync (line 13) | static async InitWalletFromRecoveryPhraseAsync(phrase, password) {
    method InitWalletFromRecoveryPhrase (line 17) | static InitWalletFromRecoveryPhrase(phrase, password) {
    method IsValidLinkURIAsync (line 21) | static async IsValidLinkURIAsync(phrase) {
    method IsValidLinkURI (line 25) | static IsValidLinkURI(phrase) {
    method ReplaceWalletLinkedFromURIAsync (line 29) | static async ReplaceWalletLinkedFromURIAsync(linked_uri, password) {
    method ReplaceWalletLinkedFromURI (line 33) | static ReplaceWalletLinkedFromURI(linked_uri, password) {
    method EraseWalletSeedsAndAccountsAsync (line 37) | static async EraseWalletSeedsAndAccountsAsync() {
    method EraseWalletSeedsAndAccounts (line 41) | static EraseWalletSeedsAndAccounts() {
    method IsValidRecoveryPhraseAsync (line 45) | static async IsValidRecoveryPhraseAsync(phrase) {
    method IsValidRecoveryPhrase (line 49) | static IsValidRecoveryPhrase(phrase) {
    method GenerateRecoveryMnemonicAsync (line 53) | static async GenerateRecoveryMnemonicAsync() {
    method GenerateRecoveryMnemonic (line 57) | static GenerateRecoveryMnemonic() {
    method GenerateGenesisKeysAsync (line 61) | static async GenerateGenesisKeysAsync() {
    method GenerateGenesisKeys (line 65) | static GenerateGenesisKeys() {
    method ComposeRecoveryPhraseAsync (line 69) | static async ComposeRecoveryPhraseAsync(mnemonic, birthTime) {
    method ComposeRecoveryPhrase (line 73) | static ComposeRecoveryPhrase(mnemonic, birthTime) {
    method TerminateUnityLibAsync (line 77) | static async TerminateUnityLibAsync() {
    method TerminateUnityLib (line 81) | static TerminateUnityLib() {
    method QRImageFromStringAsync (line 85) | static async QRImageFromStringAsync(qr_string, width_hint) {
    method QRImageFromString (line 89) | static QRImageFromString(qr_string, width_hint) {
    method GetReceiveAddressAsync (line 93) | static async GetReceiveAddressAsync() {
    method GetReceiveAddress (line 97) | static GetReceiveAddress() {
    method GetRecoveryPhraseAsync (line 101) | static async GetRecoveryPhraseAsync() {
    method GetRecoveryPhrase (line 105) | static GetRecoveryPhrase() {
    method IsMnemonicWalletAsync (line 109) | static async IsMnemonicWalletAsync() {
    method IsMnemonicWallet (line 113) | static IsMnemonicWallet() {
    method IsMnemonicCorrectAsync (line 117) | static async IsMnemonicCorrectAsync(phrase) {
    method IsMnemonicCorrect (line 121) | static IsMnemonicCorrect(phrase) {
    method GetMnemonicDictionaryAsync (line 125) | static async GetMnemonicDictionaryAsync() {
    method GetMnemonicDictionary (line 129) | static GetMnemonicDictionary() {
    method UnlockWalletAsync (line 133) | static async UnlockWalletAsync(password, timeout_in_seconds) {
    method UnlockWallet (line 137) | static UnlockWallet(password, timeout_in_seconds) {
    method LockWalletAsync (line 141) | static async LockWalletAsync() {
    method LockWallet (line 145) | static LockWallet() {
    method GetWalletLockStatusAsync (line 149) | static async GetWalletLockStatusAsync() {
    method GetWalletLockStatus (line 153) | static GetWalletLockStatus() {
    method ChangePasswordAsync (line 157) | static async ChangePasswordAsync(oldPassword, newPassword) {
    method ChangePassword (line 161) | static ChangePassword(oldPassword, newPassword) {
    method DoRescanAsync (line 165) | static async DoRescanAsync() {
    method DoRescan (line 169) | static DoRescan() {
    method IsValidRecipientAsync (line 173) | static async IsValidRecipientAsync(request) {
    method IsValidRecipient (line 177) | static IsValidRecipient(request) {
    method IsValidNativeAddressAsync (line 181) | static async IsValidNativeAddressAsync(address) {
    method IsValidNativeAddress (line 185) | static IsValidNativeAddress(address) {
    method IsValidBitcoinAddressAsync (line 189) | static async IsValidBitcoinAddressAsync(address) {
    method IsValidBitcoinAddress (line 193) | static IsValidBitcoinAddress(address) {
    method FeeForRecipientAsync (line 197) | static async FeeForRecipientAsync(request) {
    method FeeForRecipient (line 201) | static FeeForRecipient(request) {
    method PerformPaymentToRecipientAsync (line 205) | static async PerformPaymentToRecipientAsync(request, substract_fee) {
    method PerformPaymentToRecipient (line 209) | static PerformPaymentToRecipient(request, substract_fee) {
    method GetTransactionAsync (line 213) | static async GetTransactionAsync(txHash) {
    method GetTransaction (line 217) | static GetTransaction(txHash) {
    method ResendTransactionAsync (line 221) | static async ResendTransactionAsync(txHash) {
    method ResendTransaction (line 225) | static ResendTransaction(txHash) {
    method GetAddressBookRecordsAsync (line 229) | static async GetAddressBookRecordsAsync() {
    method GetAddressBookRecords (line 233) | static GetAddressBookRecords() {
    method AddAddressBookRecordAsync (line 237) | static async AddAddressBookRecordAsync(address) {
    method AddAddressBookRecord (line 241) | static AddAddressBookRecord(address) {
    method DeleteAddressBookRecordAsync (line 245) | static async DeleteAddressBookRecordAsync(address) {
    method DeleteAddressBookRecord (line 249) | static DeleteAddressBookRecord(address) {
    method ResetUnifiedProgressAsync (line 253) | static async ResetUnifiedProgressAsync() {
    method ResetUnifiedProgress (line 257) | static ResetUnifiedProgress() {
    method GetLastSPVBlockInfosAsync (line 261) | static async GetLastSPVBlockInfosAsync() {
    method GetLastSPVBlockInfos (line 265) | static GetLastSPVBlockInfos() {
    method GetUnifiedProgressAsync (line 269) | static async GetUnifiedProgressAsync() {
    method GetUnifiedProgress (line 273) | static GetUnifiedProgress() {
    method GetMonitoringStatsAsync (line 277) | static async GetMonitoringStatsAsync() {
    method GetMonitoringStats (line 281) | static GetMonitoringStats() {
    method RegisterMonitorListenerAsync (line 285) | static async RegisterMonitorListenerAsync(listener) {
    method RegisterMonitorListener (line 289) | static RegisterMonitorListener(listener) {
    method UnregisterMonitorListenerAsync (line 293) | static async UnregisterMonitorListenerAsync(listener) {
    method UnregisterMonitorListener (line 297) | static UnregisterMonitorListener(listener) {
    method GetClientInfoAsync (line 301) | static async GetClientInfoAsync() {
    method GetClientInfo (line 305) | static GetClientInfo() {
  class WalletController (line 310) | class WalletController {
    method HaveUnconfirmedFundsAsync (line 311) | static async HaveUnconfirmedFundsAsync() {
    method HaveUnconfirmedFunds (line 315) | static HaveUnconfirmedFunds() {
    method GetBalanceSimpleAsync (line 319) | static async GetBalanceSimpleAsync() {
    method GetBalanceSimple (line 323) | static GetBalanceSimple() {
    method GetBalanceAsync (line 327) | static async GetBalanceAsync() {
    method GetBalance (line 331) | static GetBalance() {
    method AbandonTransactionAsync (line 335) | static async AbandonTransactionAsync(txHash) {
    method AbandonTransaction (line 339) | static AbandonTransaction(txHash) {
    method GetUUIDAsync (line 343) | static async GetUUIDAsync() {
    method GetUUID (line 347) | static GetUUID() {
  class RpcController (line 352) | class RpcController {
    method ExecuteAsync (line 353) | static async ExecuteAsync(command) {
    method Execute (line 357) | static Execute(command) {
    method GetAutocompleteListAsync (line 360) | static async GetAutocompleteListAsync() {
    method GetAutocompleteList (line 364) | static GetAutocompleteList() {
  class P2pNetworkController (line 369) | class P2pNetworkController {
    method DisableNetworkAsync (line 370) | static async DisableNetworkAsync() {
    method DisableNetwork (line 374) | static DisableNetwork() {
    method EnableNetworkAsync (line 378) | static async EnableNetworkAsync() {
    method EnableNetwork (line 382) | static EnableNetwork() {
    method GetPeerInfoAsync (line 386) | static async GetPeerInfoAsync() {
    method GetPeerInfo (line 390) | static GetPeerInfo() {
    method ListBannedPeersAsync (line 394) | static async ListBannedPeersAsync() {
    method ListBannedPeers (line 398) | static ListBannedPeers() {
    method BanPeerAsync (line 402) | static async BanPeerAsync(address, banTimeInSeconds) {
    method BanPeer (line 406) | static BanPeer(address, banTimeInSeconds) {
    method UnbanPeerAsync (line 410) | static async UnbanPeerAsync(address) {
    method UnbanPeer (line 414) | static UnbanPeer(address) {
    method DisconnectPeerAsync (line 418) | static async DisconnectPeerAsync(nodeid) {
    method DisconnectPeer (line 422) | static DisconnectPeer(nodeid) {
    method ClearBannedAsync (line 426) | static async ClearBannedAsync() {
    method ClearBanned (line 430) | static ClearBanned() {
  class AccountsController (line 435) | class AccountsController {
    method ListAccountsAsync (line 436) | static async ListAccountsAsync() {
    method ListAccounts (line 440) | static ListAccounts() {
    method SetActiveAccountAsync (line 444) | static async SetActiveAccountAsync(accountUUID) {
    method SetActiveAccount (line 448) | static SetActiveAccount(accountUUID) {
    method GetActiveAccountAsync (line 452) | static async GetActiveAccountAsync() {
    method GetActiveAccount (line 456) | static GetActiveAccount() {
    method CreateAccountAsync (line 460) | static async CreateAccountAsync(accountName, accountType) {
    method CreateAccount (line 464) | static CreateAccount(accountName, accountType) {
    method GetAccountNameAsync (line 468) | static async GetAccountNameAsync(accountUUID) {
    method GetAccountName (line 472) | static GetAccountName(accountUUID) {
    method RenameAccountAsync (line 476) | static async RenameAccountAsync(accountUUID, newAccountName) {
    method RenameAccount (line 480) | static RenameAccount(accountUUID, newAccountName) {
    method DeleteAccountAsync (line 484) | static async DeleteAccountAsync(accountUUID) {
    method DeleteAccount (line 488) | static DeleteAccount(accountUUID) {
    method PurgeAccountAsync (line 492) | static async PurgeAccountAsync(accountUUID) {
    method PurgeAccount (line 496) | static PurgeAccount(accountUUID) {
    method GetAccountLinkURIAsync (line 500) | static async GetAccountLinkURIAsync(accountUUID) {
    method GetAccountLinkURI (line 504) | static GetAccountLinkURI(accountUUID) {
    method GetWitnessKeyURIAsync (line 508) | static async GetWitnessKeyURIAsync(accountUUID) {
    method GetWitnessKeyURI (line 512) | static GetWitnessKeyURI(accountUUID) {
    method CreateAccountFromWitnessKeyURIAsync (line 516) | static async CreateAccountFromWitnessKeyURIAsync(witnessKeyURI, newAcc...
    method CreateAccountFromWitnessKeyURI (line 520) | static CreateAccountFromWitnessKeyURI(witnessKeyURI, newAccountName) {
    method GetReceiveAddressAsync (line 524) | static async GetReceiveAddressAsync(accountUUID) {
    method GetReceiveAddress (line 528) | static GetReceiveAddress(accountUUID) {
    method GetTransactionHistoryAsync (line 532) | static async GetTransactionHistoryAsync(accountUUID) {
    method GetTransactionHistory (line 536) | static GetTransactionHistory(accountUUID) {
    method GetMutationHistoryAsync (line 540) | static async GetMutationHistoryAsync(accountUUID) {
    method GetMutationHistory (line 544) | static GetMutationHistory(accountUUID) {
    method GetActiveAccountBalanceAsync (line 548) | static async GetActiveAccountBalanceAsync() {
    method GetActiveAccountBalance (line 552) | static GetActiveAccountBalance() {
    method GetAccountBalanceAsync (line 556) | static async GetAccountBalanceAsync(accountUUID) {
    method GetAccountBalance (line 560) | static GetAccountBalance(accountUUID) {
    method GetAllAccountBalancesAsync (line 564) | static async GetAllAccountBalancesAsync() {
    method GetAllAccountBalances (line 568) | static GetAllAccountBalances() {
    method AddAccountLinkAsync (line 572) | static async AddAccountLinkAsync(accountUUID, serviceName, data) {
    method AddAccountLink (line 576) | static AddAccountLink(accountUUID, serviceName, data) {
    method RemoveAccountLinkAsync (line 580) | static async RemoveAccountLinkAsync(accountUUID, serviceName) {
    method RemoveAccountLink (line 584) | static RemoveAccountLink(accountUUID, serviceName) {
    method ListAccountLinksAsync (line 588) | static async ListAccountLinksAsync(accountUUID) {
    method ListAccountLinks (line 592) | static ListAccountLinks(accountUUID) {
  class WitnessController (line 597) | class WitnessController {
    method GetNetworkLimitsAsync (line 598) | static async GetNetworkLimitsAsync() {
    method GetNetworkLimits (line 602) | static GetNetworkLimits() {
    method GetEstimatedWeightAsync (line 606) | static async GetEstimatedWeightAsync(amount_to_lock, lock_period_in_bl...
    method GetEstimatedWeight (line 610) | static GetEstimatedWeight(amount_to_lock, lock_period_in_blocks) {
    method FundWitnessAccountAsync (line 614) | static async FundWitnessAccountAsync(funding_account_UUID, witness_acc...
    method FundWitnessAccount (line 625) | static FundWitnessAccount(funding_account_UUID, witness_account_UUID, ...
    method RenewWitnessAccountAsync (line 631) | static async RenewWitnessAccountAsync(funding_account_UUID, witness_ac...
    method RenewWitnessAccount (line 635) | static RenewWitnessAccount(funding_account_UUID, witness_account_UUID) {
    method GetAccountWitnessStatisticsAsync (line 639) | static async GetAccountWitnessStatisticsAsync(witnessAccountUUID) {
    method GetAccountWitnessStatistics (line 643) | static GetAccountWitnessStatistics(witnessAccountUUID) {
    method SetAccountCompoundingAsync (line 647) | static async SetAccountCompoundingAsync(witnessAccountUUID, percent_to...
    method SetAccountCompounding (line 651) | static SetAccountCompounding(witnessAccountUUID, percent_to_compount) {
    method IsAccountCompoundingAsync (line 655) | static async IsAccountCompoundingAsync(witnessAccountUUID) {
    method IsAccountCompounding (line 659) | static IsAccountCompounding(witnessAccountUUID) {
    method GetWitnessAddressAsync (line 663) | static async GetWitnessAddressAsync(witnessAccountUUID) {
    method GetWitnessAddress (line 667) | static GetWitnessAddress(witnessAccountUUID) {
    method GetOptimalWitnessDistributionAsync (line 671) | static async GetOptimalWitnessDistributionAsync(amount, durationInBloc...
    method GetOptimalWitnessDistribution (line 675) | static GetOptimalWitnessDistribution(amount, durationInBlocks, totalNe...
    method GetOptimalWitnessDistributionForAccountAsync (line 679) | static async GetOptimalWitnessDistributionForAccountAsync(witnessAccou...
    method GetOptimalWitnessDistributionForAccount (line 683) | static GetOptimalWitnessDistributionForAccount(witnessAccountUUID) {
    method OptimiseWitnessAccountAsync (line 687) | static async OptimiseWitnessAccountAsync(witnessAccountUUID, fundingAc...
    method OptimiseWitnessAccount (line 693) | static OptimiseWitnessAccount(witnessAccountUUID, fundingAccountUUID, ...
  class GenerationController (line 698) | class GenerationController {
    method StartGenerationAsync (line 699) | static async StartGenerationAsync(numThreads, numArenaThreads, memoryL...
    method StartGeneration (line 703) | static StartGeneration(numThreads, numArenaThreads, memoryLimit) {
    method StopGenerationAsync (line 707) | static async StopGenerationAsync() {
    method StopGeneration (line 711) | static StopGeneration() {
    method GetGenerationAddressAsync (line 715) | static async GetGenerationAddressAsync() {
    method GetGenerationAddress (line 719) | static GetGenerationAddress() {
    method GetGenerationOverrideAddressAsync (line 723) | static async GetGenerationOverrideAddressAsync() {
    method GetGenerationOverrideAddress (line 727) | static GetGenerationOverrideAddress() {
    method SetGenerationOverrideAddressAsync (line 731) | static async SetGenerationOverrideAddressAsync(overrideAddress) {
    method SetGenerationOverrideAddress (line 735) | static SetGenerationOverrideAddress(overrideAddress) {
    method GetAvailableCoresAsync (line 739) | static async GetAvailableCoresAsync() {
    method GetAvailableCores (line 743) | static GetAvailableCores() {
    method GetMinimumMemoryAsync (line 747) | static async GetMinimumMemoryAsync() {
    method GetMinimumMemory (line 751) | static GetMinimumMemory() {
    method GetMaximumMemoryAsync (line 755) | static async GetMaximumMemoryAsync() {
    method GetMaximumMemory (line 759) | static GetMaximumMemory() {
  class BackendUtilities (line 767) | class BackendUtilities {
    method GetBuySessionUrl (line 768) | static GetBuySessionUrl() {
    method GetSellSessionUrl (line 771) | static GetSellSessionUrl() {
    method holdinAPIActions (line 774) | static holdinAPIActions(witnessKey, action, data) {
  function handleError (line 781) | function handleError(response) {

FILE: src/frontend/lite/src/unity/LibUnity.js
  class LibUnity (line 15) | class LibUnity {
    method constructor (line 16) | constructor(options) {
    method SetMainWindowReady (line 46) | SetMainWindowReady() {
    method Initialize (line 52) | Initialize() {
    method TerminateUnityLib (line 62) | TerminateUnityLib() {
    method _initializeWalletController (line 71) | _initializeWalletController() {
    method _updateAccounts (line 104) | _updateAccounts(dispatch = true) {
    method _initializeAccountsController (line 125) | _initializeAccountsController() {
    method _initializeGenerationController (line 163) | _initializeGenerationController() {
    method _startUnityLib (line 198) | _startUnityLib() {
    method _setStateWhenCoreAndMainWindowReady (line 237) | _setStateWhenCoreAndMainWindowReady() {
    method _registerSignalHandlers (line 249) | _registerSignalHandlers() {
    method _registerIpcHandlers (line 345) | _registerIpcHandlers() {
  function handleError (line 2857) | function handleError(error) {

FILE: src/frontend/lite/src/util.js
  function formatMoneyForDisplay (line 4) | function formatMoneyForDisplay(monetaryAmount, isFiat = false, minimumAm...
  function displayToMonetary (line 22) | function displayToMonetary(displayAmount) {
  function formatTime (line 45) | function formatTime(timestamp) {
  function downloadTransactionList (line 50) | function downloadTransactionList(transactions, fileName) {

FILE: src/fs.cpp
  type fsbridge (line 3) | namespace fsbridge {
    function FILE (line 5) | FILE *fopen(const fs::path& p, const char *mode)
    function FILE (line 10) | FILE *freopen(const fs::path& p, const char *mode, FILE *stream)

FILE: src/fs.h
  function namespace (line 19) | namespace fsbridge {

FILE: src/generation/generation.h
  function class (line 18) | class CReserveKeyOrScript : public CReserveScript
  type CReserveScript (line 50) | typedef CReserveScript CReserveKeyOrScript;

FILE: src/generation/miner.cpp
  function CalculateMissedTimeSteps (line 77) | uint64_t CalculateMissedTimeSteps(uint64_t nEnd, uint64_t nStart)
  function GetAdjustedFutureTime (line 90) | uint64_t GetAdjustedFutureTime()
  function UpdateTime (line 95) | int64_t UpdateTime(CBlockHeader* pblock, const Consensus::Params& consen...
  function DefaultOptions (line 154) | static BlockAssembler::Options DefaultOptions(const CChainParams& params)
  function InsertPoW2WitnessIntoCoinbase (line 206) | static bool InsertPoW2WitnessIntoCoinbase(CBlock& block, const CBlockInd...
  function IncrementExtraNonce (line 882) | void IncrementExtraNonce(CBlock* pblock, const CBlockIndex* pindexPrev, ...
  function ProcessBlockFound (line 900) | bool ProcessBlockFound(const std::shared_ptr<const CBlock> pblock, const...
  function CBlockIndex (line 917) | CBlockIndex* FindMiningTip(CBlockIndex* pIndexParent, const CChainParams...
  function updateHashesPerSec (line 1043) | inline void updateHashesPerSec(uint64_t& nStart, uint64_t nStop, uint64_...
  function clearHashesPerSecondStatistics (line 1063) | inline void clearHashesPerSecondStatistics()
  function PoWGenerate (line 1078) | void static PoWGenerate(const CChainParams& chainparams, CAccount* forAc...
  function PoWStopGeneration (line 1455) | void PoWStopGeneration(bool notify)
  function PoWGenerateBlocks (line 1475) | void PoWGenerateBlocks(bool fGenerate, int64_t nThreads, int64_t nArenaT...
  function PoWGenerationIsActive (line 1496) | bool PoWGenerationIsActive()

FILE: src/generation/miner.h
  function namespace (line 44) | namespace Consensus { struct Params; }
  type CBlockTemplate (line 51) | struct CBlockTemplate
  type CTxMemPoolModifiedEntry (line 60) | struct CTxMemPoolModifiedEntry {
  type CompareCTxMemPoolIter (line 80) | struct CompareCTxMemPoolIter {
  type modifiedentry_iter (line 87) | struct modifiedentry_iter {
  type CompareModifiedEntry (line 98) | struct CompareModifiedEntry {
  type CompareTxIterByAncestorCount (line 113) | struct CompareTxIterByAncestorCount {
  type boost (line 122) | typedef boost::multi_index_container<
  type indexed_modified_transaction_set (line 139) | typedef indexed_modified_transaction_set::nth_index<0>::type::iterator m...
  type indexed_modified_transaction_set (line 140) | typedef indexed_modified_transaction_set::index<ancestor_score>::type::i...
  type update_for_parent_inclusion (line 142) | struct update_for_parent_inclusion
  function class (line 171) | class BlockAssembler

FILE: src/generation/witness.cpp
  function SignBlockAsWitness (line 123) | static bool SignBlockAsWitness(std::shared_ptr<CBlock> pBlock, CTxOut fi...
  function alert (line 165) | static bool alert(const std::string& msg)
  function CreateWitnessSubsidyOutputs (line 172) | static bool CreateWitnessSubsidyOutputs(CTxOutPoW2Witness& witnessInput,...
  function CreateWitnessCoinbase (line 319) | static std::tuple<bool, CMutableTransaction, CWitnessBundles> CreateWitn...
  function TryPopulateAndSignWitnessBlock (line 418) | void TryPopulateAndSignWitnessBlock(CBlockIndex* candidateIter, CChainPa...
  type CBlockIndexCacheComparator (line 620) | struct CBlockIndexCacheComparator
  function MuntWitness (line 638) | void static MuntWitness()
  function StartPoW2WitnessThread (line 835) | void StartPoW2WitnessThread(boost::thread_group& threadGroup)

FILE: src/generation/witnessrewardtemplate.cpp
  function CAmount (line 15) | CAmount CWitnessRewardTemplate::fixedAmountsSum() const {

FILE: src/generation/witnessrewardtemplate.h
  type CWitnessRewardDestination (line 13) | struct CWitnessRewardDestination {
  function class (line 45) | class CWitnessRewardTemplate {

FILE: src/hash.cpp
  function ROTL32 (line 11) | inline uint32_t ROTL32(uint32_t x, int8_t r)
  function MurmurHash3 (line 16) | unsigned int MurmurHash3(unsigned int nHashSeed, const std::vector<unsig...
  function BIP32Hash (line 75) | void BIP32Hash(const ChainCode &chainCode, unsigned int nChild, unsigned...
  function CSipHasher (line 106) | CSipHasher& CSipHasher::Write(uint64_t data)
  function CSipHasher (line 126) | CSipHasher& CSipHasher::Write(const unsigned char* data, size_t size)
  function SipHashUint256 (line 172) | uint64_t SipHashUint256(uint64_t k0, uint64_t k1, const uint256& val)
  function SipHashUint256Extra (line 212) | uint64_t SipHashUint256Extra(uint64_t k0, uint64_t k1, const uint256& va...

FILE: src/hash.h
  type uint256 (line 18) | typedef uint256 ChainCode;
  function class (line 21) | class CHash256 {
  function class (line 45) | class CHash160 {
  function uint256 (line 70) | uint256 Hash(const T1 pbegin, const T1 pend)
  function uint256 (line 81) | uint256 Hash(const T1 p1begin, const T1 p1end,
  function uint256 (line 93) | uint256 Hash(const T1 p1begin, const T1 p1end,
  function uint160 (line 107) | uint160 Hash160(const T1 pbegin, const T1 pend)
  function uint160 (line 117) | inline uint160 Hash160(const std::vector<unsigned char>& vch)
  function uint160 (line 124) | uint160 Hash160(const prevector<N, unsigned char>& vch)
  function class (line 130) | class CHashWriter
  function write (line 144) | void write(const char *pch, size_t size) {
  function write (line 148) | void write(Span<const std::byte> dataSpan) {
  function uint256 (line 153) | uint256 GetHash() {
  function read (line 177) | void read(char* pch, size_t nSize)
  function read (line 183) | void read(Span<std::byte> dataSpan) {
  function peek (line 188) | void peek(char* pch, size_t nSize)
  function ignore (line 193) | void ignore(size_t nSize)
  function class (line 226) | class CSipHasher

FILE: src/httprpc.cpp
  function JSONErrorReply (line 29) | static void JSONErrorReply(HTTPRequest* req, const UniValue& objError, c...
  function multiUserAuthorized (line 48) | static bool multiUserAuthorized(std::string strUserPass)
  function RPCAuthorized (line 90) | static bool RPCAuthorized(const std::string& strAuth, std::string& strAu...
  function HTTPReq_JSONRPC (line 110) | static bool H
Copy disabled (too large) Download .json
Condensed preview — 2078 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,986K chars).
[
  {
    "path": ".gitattributes",
    "chars": 35,
    "preview": "src/clientversion.cpp export-subst\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 1072,
    "preview": "<!--- Remove sections that do not apply -->\n\nThis issue tracker is only for technical issues related to Gulden.\n\nGeneral"
  },
  {
    "path": ".gitignore",
    "chars": 1959,
    "preview": "*.tar.gz\n\n*.exe\n\n# autoreconf\nMakefile.in\naclocal.m4\nautom4te.cache/\nbuild-aux/config.guess\nbuild-aux/config.sub\nbuild-a"
  },
  {
    "path": ".gitmodules",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".mailmap",
    "chars": 324,
    "preview": "Willem de Jonge\t<willem@isnapp.nl>\tWillem de Jonge\t<willem@isnapp.nl>\n<malcolm@gulden.com>\t<mmacleod@webmail.co.za>\n<mal"
  },
  {
    "path": ".travis.yml",
    "chars": 6698,
    "preview": "language: minimal\ndist: trusty\nsudo: required\ncache:\n  ccache: true\n  directories:\n  - depends/built\n  - depends/sdk-sou"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1686,
    "preview": "Contributing to Munt\n============================\n\nWant to contribute to Munt? There are many ways you can contribute, s"
  },
  {
    "path": "COPYING",
    "chars": 8624,
    "preview": "For licensing of all original portions of the code coming from the Munt project, please review the license in this file "
  },
  {
    "path": "COPYING_munt",
    "chars": 7402,
    "preview": "GNU LESSER GENERAL PUBLIC LICENSE\n\nVersion 3, 29 June 2007\n\nCopyright © 2007 Free Software Foundation, Inc. <https://fsf"
  },
  {
    "path": "COPYING_upstream",
    "chars": 1099,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2009-2017 The Bitcoin Core developers\n\nPermission is hereby granted, free of charge"
  },
  {
    "path": "INSTALL.md",
    "chars": 682,
    "preview": "Windows\n================\nDownload and install the latest .exe setup file from [releases](https://github.com/muntorg/munt"
  },
  {
    "path": "Makefile.am",
    "chars": 10110,
    "preview": "# Copyright (c) 2013-2016 The Bitcoin developers\n# Distributed under the MIT software license, see the accompanying\n# fi"
  },
  {
    "path": "README.md",
    "chars": 6530,
    "preview": "<table cellspacing=\"0\" cellpadding=\"0\" color=\"grey\" border=\"1px\">\n  <tr border=0>\n    <td border=\"0px\" width=\"80%\" rowsp"
  },
  {
    "path": "autogen.sh",
    "chars": 527,
    "preview": "#!/bin/sh\n# Copyright (c) 2013-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
  },
  {
    "path": "changelog.txt",
    "chars": 54013,
    "preview": "3.0.5\n\nFinal release by Centure developers\nRelicensed under the GNU Lesser General Public License v3\nGeneral maintenance"
  },
  {
    "path": "configure.ac",
    "chars": 46149,
    "preview": "AC_PREREQ([2.69])\ndefine(_CLIENT_VERSION_MAJOR,       3)\ndefine(_CLIENT_VERSION_MINOR,       0)\ndefine(_CLIENT_VERSION_R"
  },
  {
    "path": "contrib/Munt-cli.bash-completion",
    "chars": 4695,
    "preview": "# bash programmable completion for Munt-cli(1)\n# Copyright (c) 2012-2016 The Bitcoin Core developers\n# Distributed under"
  },
  {
    "path": "contrib/Munt-daemon.bash-completion",
    "chars": 1609,
    "preview": "# bash programmable completion for Munt-daemon(1) and Munt(1)\n# Copyright (c) 2012-2016 The Bitcoin Core developers\n# Di"
  },
  {
    "path": "contrib/Munt-tx.bash-completion",
    "chars": 1627,
    "preview": "# bash programmable completion for Munt-tx(1)\n# Copyright (c) 2016 The Bitcoin Core developers\n# Distributed under the M"
  },
  {
    "path": "contrib/README.md",
    "chars": 849,
    "preview": "Repository Tools\n---------------------\n\n### [Qos](/contrib/qos) ###\n\nA Linux bash script that will set up traffic contro"
  },
  {
    "path": "contrib/devtools/security-check.py",
    "chars": 8216,
    "preview": "#!/usr/bin/env python\n# Copyright (c) 2015-2016 The Bitcoin Core developers\n# Distributed under the MIT software license"
  },
  {
    "path": "contrib/devtools/split-debug.sh.in",
    "chars": 353,
    "preview": "#!/bin/sh\n\nif [ $# -ne 3 ];\n    then echo \"usage: $0 <input> <stripped-binary> <debug-binary>\"\nfi\n\n@OBJCOPY@ --enable-de"
  },
  {
    "path": "contrib/devtools/symbol-check.py",
    "chars": 6126,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) 2014 Wladimir J. van der Laan\n# Distributed under the MIT software license, see t"
  },
  {
    "path": "contrib/devtools/test-security-check.py",
    "chars": 2644,
    "preview": "#!/usr/bin/env python2\n# Copyright (c) 2015-2016 The Bitcoin Core developers\n# Distributed under the MIT software licens"
  },
  {
    "path": "contrib/guix/INSTALL.md",
    "chars": 30894,
    "preview": "# Guix Installation and Setup\n\nThis only needs to be done once per machine. If you have already completed the\ninstallati"
  },
  {
    "path": "contrib/guix/README.md",
    "chars": 16652,
    "preview": "# Bootstrappable Bitcoin Core Builds\n\nThis directory contains the files necessary to perform bootstrappable Bitcoin\nCore"
  },
  {
    "path": "contrib/guix/guix-attest",
    "chars": 7265,
    "preview": "#!/usr/bin/env bash\nexport LC_ALL=C\nset -e -o pipefail\n\n# Source the common prelude, which:\n#   1. Checks if we're at th"
  },
  {
    "path": "contrib/guix/guix-build",
    "chars": 16572,
    "preview": "#!/usr/bin/env bash\nexport LC_ALL=C\nset -e -o pipefail\n\n# Source the common prelude, which:\n#   1. Checks if we're at th"
  },
  {
    "path": "contrib/guix/guix-clean",
    "chars": 2450,
    "preview": "#!/usr/bin/env bash\nexport LC_ALL=C\nset -e -o pipefail\n\n# Source the common prelude, which:\n#   1. Checks if we're at th"
  },
  {
    "path": "contrib/guix/guix-codesign",
    "chars": 13170,
    "preview": "#!/usr/bin/env bash\nexport LC_ALL=C\nset -e -o pipefail\n\n# Source the common prelude, which:\n#   1. Checks if we're at th"
  },
  {
    "path": "contrib/guix/guix-verify",
    "chars": 4806,
    "preview": "#!/usr/bin/env bash\nexport LC_ALL=C\nset -e -o pipefail\n\n# Source the common prelude, which:\n#   1. Checks if we're at th"
  },
  {
    "path": "contrib/guix/libexec/build.sh",
    "chars": 20442,
    "preview": "#!/usr/bin/env bash\n# Copyright (c) 2019-2021 The Bitcoin Core developers\n# Distributed under the MIT software license, "
  },
  {
    "path": "contrib/guix/libexec/codesign.sh",
    "chars": 3815,
    "preview": "#!/usr/bin/env bash\n# Copyright (c) 2021 The Bitcoin Core developers\n# Distributed under the MIT software license, see t"
  },
  {
    "path": "contrib/guix/libexec/prelude.bash",
    "chars": 2241,
    "preview": "#!/usr/bin/env bash\nexport LC_ALL=C\nset -e -o pipefail\n\n# shellcheck source=contrib/shell/realpath.bash\nsource contrib/s"
  },
  {
    "path": "contrib/guix/manifest.scm",
    "chars": 26082,
    "preview": "(use-modules (gnu)\n             (gnu packages)\n             (gnu packages autotools)\n             (gnu packages base)\n  "
  },
  {
    "path": "contrib/init/README.md",
    "chars": 272,
    "preview": "Sample configuration files for:\n```\nSystemD: daemon.service\nUpstart: daemon.conf\nOpenRC:  daemon.openrc\n         daemon."
  },
  {
    "path": "contrib/init/daemon.conf",
    "chars": 2106,
    "preview": "description \"Munt Core Daemon\"\n\nstart on runlevel [2345]\nstop on starting rc RUNLEVEL=[016]\n\nenv DAEMON_BIN=\"/usr/bin/Mu"
  },
  {
    "path": "contrib/init/daemon.init",
    "chars": 1338,
    "preview": "#!/bin/bash\n#\n#  Munt-daemon The Munt core server.\n#\n#\n# chkconfig: 345 80 20\n# description: Munt-daemon\n# processname: "
  },
  {
    "path": "contrib/init/daemon.openrc",
    "chars": 2583,
    "preview": "#!/sbin/runscript\n\n# backward compatibility for existing gentoo layout \n#\nif [ -d \"/var/lib/munt/.munt\" ]; then\n\tDAEMON_"
  },
  {
    "path": "contrib/init/daemon.openrcconf",
    "chars": 1011,
    "preview": "# /etc/conf.d/munt_daemon: config file for /etc/init.d/munt_daemon\n\n# Config file location\n#DAEMON_CONFIGFILE=\"/etc/munt"
  },
  {
    "path": "contrib/init/daemon.service",
    "chars": 468,
    "preview": "[Unit]\nDescription=Munt distributed currency daemon\nAfter=network.target\n\n[Service]\nUser=munt\nGroup=munt\n\nType=forking\nP"
  },
  {
    "path": "contrib/macdeploy/LICENSE",
    "chars": 35147,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "contrib/macdeploy/README.md",
    "chars": 460,
    "preview": "### MacDeploy ###\n\nFor Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will ne"
  },
  {
    "path": "contrib/macdeploy/custom_dsstore.py",
    "chars": 3747,
    "preview": "#!/usr/bin/env python\n# Copyright (c) 2013-2016 The Bitcoin Core developers\n# Distributed under the MIT software license"
  },
  {
    "path": "contrib/macdeploy/detached-sig-apply.sh",
    "chars": 1418,
    "preview": "#!/bin/sh\n# Copyright (c) 2014-2015 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
  },
  {
    "path": "contrib/macdeploy/detached-sig-create.sh",
    "chars": 1523,
    "preview": "#!/bin/sh\n# Copyright (c) 2014-2015 The Bitcoin Core developers\n# Distributed under the MIT software license, see the ac"
  },
  {
    "path": "contrib/macdeploy/extract-osx-sdk.sh",
    "chars": 1203,
    "preview": "#!/bin/bash\n# Copyright (c) 2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accom"
  },
  {
    "path": "contrib/macdeploy/fancy.plist",
    "chars": 723,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "contrib/qos/README.md",
    "chars": 441,
    "preview": "### QoS (Quality of service) ###\n\nThis is a Linux bash script that will set up tc to limit the outgoing bandwidth for co"
  },
  {
    "path": "contrib/qos/tc.sh",
    "chars": 2561,
    "preview": "# Copyright (c) 2017 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying\n# fi"
  },
  {
    "path": "contrib/shell/git-utils.bash",
    "chars": 287,
    "preview": "#!/usr/bin/env bash\n\ngit_root() {\n    git rev-parse --show-toplevel 2> /dev/null\n}\n\ngit_head_version() {\n    local recen"
  },
  {
    "path": "contrib/shell/realpath.bash",
    "chars": 1458,
    "preview": "#!/usr/bin/env bash\n\n# Based on realpath.sh written by Michael Kropat\n# Found at: https://github.com/mkropat/sh-realpath"
  },
  {
    "path": "contrib/testgen/README.md",
    "chars": 268,
    "preview": "### TestGen ###\n\nUtilities to generate test vectors for the data-driven Munt tests.\n\nUsage: \n\n    gen_base58_test_vector"
  },
  {
    "path": "contrib/testgen/base58.py",
    "chars": 2972,
    "preview": "# Copyright (c) 2012-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying"
  },
  {
    "path": "contrib/testgen/gen_base58_test_vectors.py",
    "chars": 4501,
    "preview": "#!/usr/bin/env python\n# Copyright (c) 2012-2016 The Bitcoin Core developers\n# Distributed under the MIT software license"
  },
  {
    "path": "contrib/tidy_datadir.sh",
    "chars": 1551,
    "preview": "#!/bin/bash\n# Copyright (c) 2013 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accom"
  },
  {
    "path": "contrib/zmq/zmq_sub.py",
    "chars": 3056,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) 2014-2016 The Bitcoin Core developers\n# Distributed under the MIT software licens"
  },
  {
    "path": "contrib/zmq/zmq_sub3.4.py",
    "chars": 3277,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) 2014-2016 The Bitcoin Core developers\n# Distributed under the MIT software licens"
  },
  {
    "path": "dependabot.yml",
    "chars": 392,
    "preview": "# Specify a non-default branch for pull requests\n\nversion: 2\nupdates:\n  - package-ecosystem: \"npm\"\n    directory: \"src/f"
  },
  {
    "path": "depends/.gitignore",
    "chars": 108,
    "preview": "SDKs/\nwork/\nbuilt/\nsources/\nconfig.site\nx86_64*\ni686*\nmips*\narm*\naarch64*\npowerpc*\nriscv32*\nriscv64*\ns390x*\n"
  },
  {
    "path": "depends/README.md",
    "chars": 3489,
    "preview": "### Usage\n\nTo build dependencies for the current arch+OS:\n\n    make\n\nTo build for another arch/OS:\n\n    make HOST=host-p"
  },
  {
    "path": "depends/builders/darwin.mk",
    "chars": 1247,
    "preview": "OSX_MIN_VERSION=10.10\nOSX_SDK_VERSION?=12.0\nOSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk\nOSX_SYSROOT=--sysroot $(OSX"
  },
  {
    "path": "depends/builders/default.mk",
    "chars": 807,
    "preview": "default_build_CC = gcc\ndefault_build_CXX = g++\ndefault_build_AR = ar\ndefault_build_TAR = tar\ndefault_build_RANLIB = ranl"
  },
  {
    "path": "depends/builders/linux.mk",
    "chars": 157,
    "preview": "build_linux_SHA256SUM = sha256sum\nbuild_linux_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CONNECT_TIM"
  },
  {
    "path": "depends/builders/mingw32.mk",
    "chars": 236,
    "preview": "build_mingw32_SHA256SUM = sha256sum.exe\nbuild_mingw32_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CON"
  },
  {
    "path": "depends/builders/mingw64.mk",
    "chars": 237,
    "preview": "build_mingw64_SHA256SUM = sha256sum.exe\nbuild_mingw64_DOWNLOAD = curl --location --fail --connect-timeout $(DOWNLOAD_CON"
  },
  {
    "path": "depends/config.guess",
    "chars": 49548,
    "preview": "#! /bin/sh\n# Attempt to guess a canonical system name.\n#   Copyright 1992-2021 Free Software Foundation, Inc.\n\ntimestamp"
  },
  {
    "path": "depends/config.site.in",
    "chars": 3349,
    "preview": "# shellcheck shell=sh disable=SC2034 # Many variables set will be used in\n                                     # ./confi"
  },
  {
    "path": "depends/config.sub",
    "chars": 34582,
    "preview": "#! /bin/sh\n# Configuration validation subroutine script.\n#   Copyright 1992-2021 Free Software Foundation, Inc.\n\ntimesta"
  },
  {
    "path": "depends/description.md",
    "chars": 2534,
    "preview": "This is a system of building and caching dependencies necessary for building Munt. \nThere are several features that make"
  },
  {
    "path": "depends/funcs.mk",
    "chars": 13350,
    "preview": "define int_vars\n#Set defaults for vars which may be overridden per-package\n$(1)_cc=$$($$($(1)_type)_CC)\n$(1)_cxx=$$($$($"
  },
  {
    "path": "depends/gen_id",
    "chars": 2488,
    "preview": "#!/usr/bin/env bash\n\n# Usage: env [ CC=... ] [ CXX=... ] [ AR=... ] [ RANLIB=... ] [ STRIP=... ] \\\n#            [ DEBUG="
  },
  {
    "path": "depends/hosts/android.mk",
    "chars": 29,
    "preview": "android_cmake_system=Android\n"
  },
  {
    "path": "depends/hosts/darwin.mk",
    "chars": 5751,
    "preview": "OSX_MIN_VERSION=10.10\nOSX_SDK_VERSION?=12.0\nOSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk\nLD64_VERSION=609\n\ndarwin_na"
  },
  {
    "path": "depends/hosts/default.mk",
    "chars": 1668,
    "preview": "ifneq ($(host),$(build))\nhost_toolchain:=$(host)-\nendif\n\ndefault_host_CC = $(host_toolchain)gcc\ndefault_host_CXX = $(hos"
  },
  {
    "path": "depends/hosts/ios.mk",
    "chars": 806,
    "preview": "aarch64_ios_SDK=$(shell xcrun --sdk iphoneos --show-sdk-path)\nx86_64_ios_SDK=$(shell xcrun --sdk iphonesimulator --show-"
  },
  {
    "path": "depends/hosts/linux.mk",
    "chars": 782,
    "preview": "linux_CFLAGS=-pipe\nlinux_CXXFLAGS=$(linux_CFLAGS)\n\nlinux_release_CFLAGS=-O2\nlinux_release_CXXFLAGS=$(linux_release_CFLAG"
  },
  {
    "path": "depends/hosts/mingw32.mk",
    "chars": 416,
    "preview": "ifneq ($(shell $(SHELL) $(.SHELLFLAGS) \"command -v $(host)-g++-posix\"),)\nmingw32_CXX := $(host)-g++-posix\nendif\n\nmingw32"
  },
  {
    "path": "depends/hosts/mingw64.mk",
    "chars": 276,
    "preview": "mingw64_CFLAGS=-pipe\nmingw64_CXXFLAGS=$(mingw64_CFLAGS)\n\nmingw64_release_CFLAGS=-O2\nmingw64_release_CXXFLAGS=$(mingw64_r"
  },
  {
    "path": "depends/packages/bdb.mk",
    "chars": 1363,
    "preview": "package=bdb\n$(package)_version=4.8.30\n$(package)_download_path=http://download.oracle.com/berkeley-db\n$(package)_file_na"
  },
  {
    "path": "depends/packages/boost.mk",
    "chars": 2633,
    "preview": "package=boost\n$(package)_version=1.77.0\n$(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$($("
  },
  {
    "path": "depends/packages/djinni.mk",
    "chars": 1017,
    "preview": "package=djinni\n$(package)_commit=da0f079711e863542b558aa31690605a8688ab55\n$(package)_version=$($(package)_commit)\n$(pack"
  },
  {
    "path": "depends/packages/electron_node_headers.mk",
    "chars": 774,
    "preview": "package=electron_node_headers\n$(package)_version=18.15.0\n$(package)_download_path=https://nodejs.org/dist/v$($(package)_"
  },
  {
    "path": "depends/packages/libcryptopp.mk",
    "chars": 1937,
    "preview": "package=libcryptopp\n$(package)_version=8.2.0\n$(package)_download_path=https://github.com/weidai11/cryptopp/archive/\n\n$(p"
  },
  {
    "path": "depends/packages/libcryptoppunity.mk",
    "chars": 3117,
    "preview": "package=libcryptopp\n$(package)_version=8.2.0\n$(package)_download_path=https://github.com/robobit/cryptopp/archive/\n\n$(pa"
  },
  {
    "path": "depends/packages/libevent.mk",
    "chars": 1486,
    "preview": "package=libevent\n$(package)_version=2.1.12-stable\n$(package)_download_path=https://github.com/libevent/libevent/releases"
  },
  {
    "path": "depends/packages/miniupnpc.mk",
    "chars": 1031,
    "preview": "package=miniupnpc\n$(package)_version=2.2.2\n$(package)_download_path=https://miniupnp.tuxfamily.org/files/\n$(package)_fil"
  },
  {
    "path": "depends/packages/native_biplist.mk",
    "chars": 611,
    "preview": "package=native_biplist\n$(package)_version=1.0.3\n$(package)_download_path=https://bitbucket.org/wooster/biplist/downloads"
  },
  {
    "path": "depends/packages/native_cctools.mk",
    "chars": 1301,
    "preview": "package=native_cctools\n$(package)_version=2ef2e931cf641547eb8a68cfebde61003587c9fd\n$(package)_download_path=https://gith"
  },
  {
    "path": "depends/packages/native_cdrkit.mk",
    "chars": 940,
    "preview": "package=native_cdrkit\n$(package)_version=1.1.11\n$(package)_download_path=http://distro.ibiblio.org/fatdog/source/600/c\n$"
  },
  {
    "path": "depends/packages/native_clang.mk",
    "chars": 1273,
    "preview": "package=native_clang\n$(package)_version=14.0.0\n$(package)_download_path=https://github.com/llvm/llvm-project/releases/do"
  },
  {
    "path": "depends/packages/native_ds_store.mk",
    "chars": 603,
    "preview": "package=native_ds_store\n$(package)_version=1.3.0\n$(package)_download_path=https://github.com/dmgbuild/ds_store/archive/\n"
  },
  {
    "path": "depends/packages/native_libdmg-hfsplus.mk",
    "chars": 610,
    "preview": "package=native_libdmg-hfsplus\n$(package)_version=0.1\n$(package)_download_path=https://github.com/theuni/libdmg-hfsplus/a"
  },
  {
    "path": "depends/packages/native_libtapi.mk",
    "chars": 571,
    "preview": "package=native_libtapi\n$(package)_version=664b8414f89612f2dfd35a9b679c345aa5389026\n$(package)_download_path=https://gith"
  },
  {
    "path": "depends/packages/native_mac_alias.mk",
    "chars": 605,
    "preview": "package=native_mac_alias\n$(package)_version=2.2.0\n$(package)_download_path=https://github.com/dmgbuild/mac_alias/archive"
  },
  {
    "path": "depends/packages/node_addon_api.mk",
    "chars": 500,
    "preview": "package=node_addon_api\n$(package)_version=7.0.0\n$(package)_download_path=https://registry.npmjs.org/node-addon-api/-/\n$("
  },
  {
    "path": "depends/packages/openssl.mk",
    "chars": 3906,
    "preview": "package=openssl\n$(package)_version=1.0.1k\n$(package)_download_path=https://www.openssl.org/source/old/1.0.1\n$(package)_f"
  },
  {
    "path": "depends/packages/packages.mk",
    "chars": 919,
    "preview": "packages:=boost openssl qrencode electron_node_headers node_addon_api\n\nqrencode_linux_packages = qrencode\nqrencode_andro"
  },
  {
    "path": "depends/packages/protobufunity.mk",
    "chars": 956,
    "preview": "package=protobuf\n$(package)_version=2.6.1\n$(package)_download_path=https://github.com/protocolbuffers/protobuf/releases/"
  },
  {
    "path": "depends/packages/qrencode.mk",
    "chars": 807,
    "preview": "package=qrencode\n$(package)_version=3.4.4\n$(package)_download_path=https://fukuchi.org/works/qrencode/\n$(package)_file_n"
  },
  {
    "path": "depends/packages/rapidcheck.mk",
    "chars": 588,
    "preview": "package=rapidcheck\n$(package)_version=3eb9b4ff69f4ff2d9932e8f852c2b2a61d7c20d3\n$(package)_download_path=https://github.c"
  },
  {
    "path": "depends/packages/zeromq.mk",
    "chars": 1736,
    "preview": "package=zeromq\n$(package)_version=4.3.4\n$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($"
  },
  {
    "path": "depends/packages/zlib.mk",
    "chars": 1001,
    "preview": "package=zlib\n$(package)_version=1.2.11\n$(package)_download_path=http://www.zlib.net/fossils/\n$(package)_file_name=$(pack"
  },
  {
    "path": "depends/packages.md",
    "chars": 7219,
    "preview": "Each recipe consists of 3 main parts: defining identifiers, setting build\nvariables, and defining build commands.\n\nThe p"
  },
  {
    "path": "depends/patches/electron_node_headers/node.def",
    "chars": 3084,
    "preview": "LIBRARY node.exe\nEXPORTS\nuv_default_loop\nuv_queue_work\nnapi_acquire_threadsafe_function\nnapi_add_env_cleanup_hook\nnapi_a"
  },
  {
    "path": "depends/sdk.guess",
    "chars": 558,
    "preview": "#! /bin/sh\n# Attempt to guess an SDK path for MacOS\n# Copyright 2019-2022 The Centure developers\n# Originally written by"
  },
  {
    "path": "developer-tools/README.md",
    "chars": 2177,
    "preview": "Developer tools\n---------------------\n\nThis directory, and sub-directories, contain various scripts that are not a core "
  },
  {
    "path": "developer-tools/build_docker.sh",
    "chars": 204,
    "preview": "#! /bin/bash\nset -e\n\n#Set up docker container\ncd developer-tools/docker-build\ndocker build -t nlg-build .\n\n#Run the buil"
  },
  {
    "path": "developer-tools/build_node.sh",
    "chars": 2644,
    "preview": "#! /bin/bash\nset -e\nset -x\n\nNUM_PROCS=$(getconf _NPROCESSORS_ONLN)\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" >/dev/n"
  },
  {
    "path": "developer-tools/djinni_generate_bindings.sh",
    "chars": 1046,
    "preview": "#!/bin/bash\n\nDJINNI_REPO=https://github.com/mjmacleod/djinni.git\n\nif [ ! -d djinni ]; then\n\tgit clone --single-branch --"
  },
  {
    "path": "developer-tools/docker-build/Dockerfile",
    "chars": 664,
    "preview": "# Build Munt ()\n#\n# VERSION               0.1\n\nFROM ubuntu:18.04\n\n# Generic build tools\nRUN apt-get update && apt-get in"
  },
  {
    "path": "developer-tools/docker-build/README.md",
    "chars": 754,
    "preview": "# Docker image to compile the Munt binaries\n\nThe build is for test and development purposes, the official binaries are b"
  },
  {
    "path": "developer-tools/docker-build/build.sh",
    "chars": 367,
    "preview": "#!/bin/bash\n\nMAKEJOBS=-j3\nHOST=x86_64-unknown-linux-gnu\nDEP_OPTS=\"NO_UPNP=1 ALLOW_HOST_PACKAGES=1\"\n\nmake $MAKEJOBS -C de"
  },
  {
    "path": "developer-tools/genbootstrap.sh",
    "chars": 198,
    "preview": "#! /bin/bash\nset -e\n\nsource developer-tools/private.conf\npython developer-tools/python/genbootstrap.py\n\necho \"compress b"
  },
  {
    "path": "developer-tools/gencheckpoints.sh",
    "chars": 262,
    "preview": "#! /bin/bash\nset -e\n\n#Fetch our private configuration variables and then hand the rest of the work off to python script\n"
  },
  {
    "path": "developer-tools/genstaticdiffs.sh",
    "chars": 472,
    "preview": "#! /bin/bash\nset -e\n\n#Fetch our private configuration variables and then hand the rest of the work off to python script\n"
  },
  {
    "path": "developer-tools/genstaticfilters.sh",
    "chars": 209,
    "preview": "#! /bin/bash\nset -e\n\n#Fetch our private configuration variables and then hand the rest of the work off to python script\n"
  },
  {
    "path": "developer-tools/mobile/android/build_android_core.sh",
    "chars": 3669,
    "preview": "#! /bin/bash\nset -e\nset -x\n\n#Load NDK config\nsource `dirname $0`/ndk_definitions.conf\n\n#Load private config\nMUNT_DEVTOOL"
  },
  {
    "path": "developer-tools/mobile/android/build_targets/aarch64-linux-android-clang",
    "chars": 216,
    "preview": "clang_prefix=aarch64-linux-android\ntarget_host=aarch64-linux-android\ntarget_bits=64\njni_lib=arm64-v8a\nlib_dir=sysroot/us"
  },
  {
    "path": "developer-tools/mobile/android/build_targets/arm-linux-androideabi-clang",
    "chars": 205,
    "preview": "clang_prefix=armv7a-linux-androideabi\ntarget_host=arm-linux-androideabi\ntarget_bits=32\njni_lib=armeabi-v7a\nlib_dir=sysro"
  },
  {
    "path": "developer-tools/mobile/android/build_targets/x86-clang",
    "chars": 197,
    "preview": "clang_prefix=i686-linux-android\ntarget_host=i686-linux-android\ntarget_bits=32\njni_lib=x86\nlib_dir=sysroot/usr/lib\nmarch_"
  },
  {
    "path": "developer-tools/mobile/android/build_targets/x86_64-clang",
    "chars": 205,
    "preview": "clang_prefix=x86_64-linux-android\ntarget_host=x86_64-linux-android\ntarget_bits=64\njni_lib=x86_64\nlib_dir=sysroot/usr/lib"
  },
  {
    "path": "developer-tools/mobile/android/fetch_android.sh",
    "chars": 659,
    "preview": "#!/bin/bash\nset -e\nset -x\n\n#Load NDK config\nsource `dirname $0`/ndk_definitions.conf\n\n#Load private config\nsource develo"
  },
  {
    "path": "developer-tools/mobile/android/ndk_definitions.conf",
    "chars": 46,
    "preview": "NDK_VERSION=android-ndk-r23b\nANDROID_LEVEL=21\n"
  },
  {
    "path": "developer-tools/mobile/ios/build_ios_core.sh",
    "chars": 610,
    "preview": "#! /bin/bash\nset -e\nset -x\n\nNPROC=`sysctl -n hw.physicalcpu`\n\nexport CXXFLAGS=\"-O3\"\nexport CFLAGS=${CXXFLAGS}\n\nfor i in "
  },
  {
    "path": "developer-tools/mobile/ios/build_targets/aarch64",
    "chars": 24,
    "preview": "target_host=aarch64-ios\n"
  },
  {
    "path": "developer-tools/mobile/ios/build_targets/x86_64",
    "chars": 23,
    "preview": "target_host=x86_64-ios\n"
  },
  {
    "path": "developer-tools/mobile/thirdparty.licenses.sh",
    "chars": 2647,
    "preview": "#! /bin/bash\nset -e\nset -x\n\nOUTPUT=./src/data/core-packages.licenses\n\necho \"\" > $OUTPUT\n\necho \"-- LevelDB\" >> $OUTPUT\nca"
  },
  {
    "path": "developer-tools/node/node.def",
    "chars": 3084,
    "preview": "LIBRARY node.exe\nEXPORTS\nuv_default_loop\nuv_queue_work\nnapi_acquire_threadsafe_function\nnapi_add_env_cleanup_hook\nnapi_a"
  },
  {
    "path": "developer-tools/private.conf.example",
    "chars": 774,
    "preview": "# Set API key from translate.munt.org here to be able to run translation scripts\n#ONESKY_API_KEY=\n\n# Set this to a syste"
  },
  {
    "path": "developer-tools/python/genbootstrap.py",
    "chars": 2510,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\"\"\"Generate bootstrap.dat\n   Script will connect to Munt rpc server and f"
  },
  {
    "path": "developer-tools/python/gencheckpoints.py",
    "chars": 1889,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n\"\"\"Generate C++ code for the compiled-in checkpoints.\n   Script will conn"
  },
  {
    "path": "developer-tools/python/genstaticdiffs.py",
    "chars": 851,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nfrom bitcoinrpc.authproxy import AuthServiceProxy\nimport sys\nimport strin"
  },
  {
    "path": "developer-tools/python/genstaticfilters.py",
    "chars": 815,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nfrom bitcoinrpc.authproxy import AuthServiceProxy\nimport sys\nimport strin"
  },
  {
    "path": "doc/.gitignore",
    "chars": 9,
    "preview": "Doxyfile\n"
  },
  {
    "path": "doc/Doxyfile.in",
    "chars": 107125,
    "preview": "# Doxyfile 1.8.12\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org)"
  },
  {
    "path": "doc/REST-interface.md",
    "chars": 3734,
    "preview": "Unauthenticated REST Interface\n==============================\n\nThe REST API can be enabled with the `-rest` option.\n\nThe"
  },
  {
    "path": "doc/benchmarking.md",
    "chars": 1220,
    "preview": "Benchmarking\n============\n\nMunt Core has an internal benchmarking framework, with benchmarks\nfor cryptographic algorithm"
  },
  {
    "path": "doc/building.md",
    "chars": 5947,
    "preview": "Note\n-----\n\nPlease note that in order to achieve quality and consistency Munt is written to modern software standards, t"
  },
  {
    "path": "doc/building_windows.md",
    "chars": 5001,
    "preview": "Note\n-----\n\nFor development the easiest way to get a working native windows build on a windows host is to use msys2, see"
  },
  {
    "path": "doc/developer-notes.md",
    "chars": 14076,
    "preview": "Developer Notes\n===============\n\nView [the developer guidelines](./developer-guidelines.md) for basic coding standards a"
  },
  {
    "path": "doc/developer_guidelines.md",
    "chars": 6772,
    "preview": "Developer Guidelines\n===============\n\nVarious coding styles have been used during the history of the codebase, and the c"
  },
  {
    "path": "doc/files.md",
    "chars": 1864,
    "preview": "\n* banlist.dat: stores the IPs/Subnets of banned nodes\n* munt.conf: contains configuration settings for Munt-daemon or M"
  },
  {
    "path": "doc/fuzzing.md",
    "chars": 2164,
    "preview": "Fuzz-testing Munt Core\n==========================\n\nA special test harness `test_munt_fuzzy` is provided to provide an ea"
  },
  {
    "path": "doc/init.md",
    "chars": 4562,
    "preview": "Sample init scripts and service configuration for Munt-daemon\n=========================================================="
  },
  {
    "path": "doc/reduce-traffic.md",
    "chars": 1545,
    "preview": "Reduce Traffic\n==============\n\nSome node operators need to deal with bandwidth caps imposed by their ISPs.\n\nBy default, "
  },
  {
    "path": "doc/stack_trace_from_frozen_process.md",
    "chars": 2964,
    "preview": "Often when there is behaviour like a frozen program it can be very situation specific. i.e. something specific to your m"
  },
  {
    "path": "doc/translation_strings_policy.md",
    "chars": 4613,
    "preview": "Translation Strings Policy\n===========================\n\nThis document provides guidelines for internationalization of th"
  },
  {
    "path": "doc/zmq.md",
    "chars": 4405,
    "preview": "# Block and Transaction Broadcasting with ZeroMQ\n\n[ZeroMQ](http://zeromq.org/) is a lightweight wrapper around TCP\nconne"
  },
  {
    "path": "libscriptconsensus.pc.in",
    "chars": 291,
    "preview": "prefix=@prefix@\nexec_prefix=@exec_prefix@\nlibdir=@libdir@\nincludedir=@includedir@\n\nName: @PACKAGE_NAME@ consensus librar"
  },
  {
    "path": "mining_documentation/historical_list_of_mining_pools.md",
    "chars": 5400,
    "preview": "\nThe below is a historical list of Scrypt mining pools that mined Gulden in the past before the switch to SIGMA CPU mini"
  },
  {
    "path": "share/genbuild.sh",
    "chars": 1601,
    "preview": "#!/bin/sh\n# Copyright (c) 2012-2022 The Centure developers\n# Distributed under the MIT software license, see the accompa"
  },
  {
    "path": "share/rpcauth/README.md",
    "chars": 411,
    "preview": "RPC Tools\n---------------------\n\n### [RPCAuth](/share/rpcauth) ###\n\n```\nusage: rpcauth.py [-h] username [password]\n\nCrea"
  },
  {
    "path": "share/rpcauth/rpcauth.py",
    "chars": 1534,
    "preview": "#!/usr/bin/env python3\n# Copyright (c) 2015-2021 The Bitcoin Core developers\n# Distributed under the MIT software licens"
  },
  {
    "path": "share/rpcuser/README.md",
    "chars": 142,
    "preview": "RPC Tools\n---------------------\n\n### [RPCUser](/share/rpcuser) ###\n\nCreate an RPC user login credential.\n\nUsage:\n\n    ./"
  },
  {
    "path": "share/rpcuser/rpcuser.py",
    "chars": 1111,
    "preview": "#!/usr/bin/env python2 \n# Copyright (c) 2015-2016 The Bitcoin Core developers\n# Distributed under the MIT software licen"
  },
  {
    "path": "share/seeds/nodes_main.txt",
    "chars": 700,
    "preview": "# List of fixed seed nodes for main network\n\n# IPv4 nodes (generated using contrib/seeds/makeseeds.py)\n86.85.144.196\n178"
  },
  {
    "path": "share/seeds/nodes_test.txt",
    "chars": 537,
    "preview": "# List of fixed seed nodes for testnet\n83.161.66.135\n87.213.74.220\n84.105.1.4\n94.23.213.47\n188.165.2.147\n178.62.99.118\n1"
  },
  {
    "path": "share/setup.nsi.in",
    "chars": 7694,
    "preview": "Name \"@PACKAGE_NAME@ (@WINDOWS_BITS@-bit)\"\n\nRequestExecutionLevel highest\nSetCompressor /SOLID lzma\n\n# General Symbol De"
  },
  {
    "path": "src/LRUCache/COPYING",
    "chars": 1319,
    "preview": "/*\n * LRUCache11 - a templated C++11 based LRU cache class that allows\n * specification of\n * key, value and optionally "
  },
  {
    "path": "src/LRUCache/LRUCache11.hpp",
    "chars": 5748,
    "preview": "/*\n * LRUCache11 - a templated C++11 based LRU cache class that allows\n * specification of\n * key, value and optionally "
  },
  {
    "path": "src/Makefile.am",
    "chars": 47390,
    "preview": "# Copyright (c) 2013-2016 The Bitcoin developers\n# Distributed under the MIT software license, see the accompanying\n# fi"
  },
  {
    "path": "src/Makefile.bench.include",
    "chars": 2308,
    "preview": "# Copyright (c) 2015-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying"
  },
  {
    "path": "src/Makefile.crc32c.include",
    "chars": 1707,
    "preview": "# Copyright (c) 2019 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying\n# fi"
  },
  {
    "path": "src/Makefile.leveldb.include",
    "chars": 7455,
    "preview": "# Copyright (c) 2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying\n# fi"
  },
  {
    "path": "src/Makefile.sigmabench.include",
    "chars": 1232,
    "preview": "# Copyright (c) 2019-2022 The Centure developers\n# Authored by: Malcolm MacLeod (mmacleod@gmx.com)\n# Distributed under t"
  },
  {
    "path": "src/Makefile.test.include",
    "chars": 6136,
    "preview": "# Copyright (c) 2013-2016 The Bitcoin Core developers\n# Distributed under the MIT software license, see the accompanying"
  },
  {
    "path": "src/Makefile.univalue.include",
    "chars": 298,
    "preview": "include univalue/sources.mk\n\nLIBUNIVALUE = libunivalue.la\nnoinst_LTLIBRARIES += $(LIBUNIVALUE)\nlibunivalue_la_SOURCES = "
  },
  {
    "path": "src/addrdb.cpp",
    "chars": 7001,
    "preview": "// Copyright (c) 2009-2010 Satoshi Nakamoto\n// Copyright (c) 2009-2016 The Bitcoin Core developers\n// Distributed under "
  },
  {
    "path": "src/addrdb.h",
    "chars": 2101,
    "preview": "// Copyright (c) 2009-2010 Satoshi Nakamoto\n// Copyright (c) 2009-2016 The Bitcoin Core developers\n// Distributed under "
  },
  {
    "path": "src/addrman.cpp",
    "chars": 16822,
    "preview": "// Copyright (c) 2012 Pieter Wuille\n// Copyright (c) 2012-2016 The Bitcoin Core developers\n// Distributed under the MIT "
  },
  {
    "path": "src/addrman.h",
    "chars": 19364,
    "preview": "// Copyright (c) 2012 Pieter Wuille\n// Copyright (c) 2012-2016 The Bitcoin Core developers\n// Distributed under the MIT "
  },
  {
    "path": "src/alert.cpp",
    "chars": 8061,
    "preview": "// Copyright (c) 2010 Satoshi Nakamoto\n// Copyright (c) 2009-2015 The Bitcoin Core developers\n// Distributed under the M"
  },
  {
    "path": "src/alert.h",
    "chars": 3732,
    "preview": "// Copyright (c) 2010 Satoshi Nakamoto\n// Copyright (c) 2009-2015 The Bitcoin Core developers\n// Distributed under the M"
  },
  {
    "path": "src/amount.h",
    "chars": 1678,
    "preview": "// Copyright (c) 2009-2010 Satoshi Nakamoto\n// Copyright (c) 2009-2016 The Bitcoin Core developers\n// Distributed under "
  },
  {
    "path": "src/appname.h",
    "chars": 413,
    "preview": "// Copyright (c) 2020-2022 The Centure developers\n// Authored by: Malcolm MacLeod (mmacleod@gmx.com)\n// Distributed unde"
  },
  {
    "path": "src/arith_uint256.cpp",
    "chars": 7350,
    "preview": "// Copyright (c) 2009-2010 Satoshi Nakamoto\n// Copyright (c) 2009-2016 The Bitcoin Core developers\n// Distributed under "
  },
  {
    "path": "src/arith_uint256.h",
    "chars": 8532,
    "preview": "// Copyright (c) 2009-2010 Satoshi Nakamoto\n// Copyright (c) 2009-2016 The Bitcoin Core developers\n// Distributed under "
  },
  {
    "path": "src/attributes.h",
    "chars": 521,
    "preview": "// Copyright (c) 2009-2010 Satoshi Nakamoto\n// Copyright (c) 2009-2020 The Bitcoin Core developers\n// Distributed under "
  },
  {
    "path": "src/base58.cpp",
    "chars": 11440,
    "preview": "// Copyright (c) 2014-2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/base58.h",
    "chars": 11797,
    "preview": "// Copyright (c) 2009-2010 Satoshi Nakamoto\n// Copyright (c) 2009-2015 The Bitcoin Core developers\n// Distributed under "
  },
  {
    "path": "src/bench/.gitignore",
    "chars": 11,
    "preview": "bench_munt\n"
  },
  {
    "path": "src/bench/Examples.cpp",
    "chars": 804,
    "preview": "// Copyright (c) 2015-2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/bench/base58.cpp",
    "chars": 1397,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/bench.cpp",
    "chars": 3586,
    "preview": "// Copyright (c) 2015-2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/bench/bench.h",
    "chars": 2341,
    "preview": "// Copyright (c) 2015-2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/bench/bench_munt.cpp",
    "chars": 490,
    "preview": "// Copyright (c) 2015-2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/bench/bench_sigma.cpp",
    "chars": 38385,
    "preview": "// Copyright (c) 2019-2022 The Centure developers\n// Authored by: Malcolm MacLeod (mmacleod@gmx.com)\n// Distributed unde"
  },
  {
    "path": "src/bench/ccoins_caching.cpp",
    "chars": 3457,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/checkblock.cpp",
    "chars": 1879,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/checkqueue.cpp",
    "chars": 3562,
    "preview": "// Copyright (c) 2015 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/coin_selection.cpp",
    "chars": 2080,
    "preview": "// Copyright (c) 2012-2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/bench/crypto_hash.cpp",
    "chars": 2576,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/lockedpool.cpp",
    "chars": 1224,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/mempool_eviction.cpp",
    "chars": 4241,
    "preview": "// Copyright (c) 2011-2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/bench/perf.cpp",
    "chars": 1139,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/perf.h",
    "chars": 755,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/prevector_destructor.cpp",
    "chars": 937,
    "preview": "// Copyright (c) 2015-2017 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanyi"
  },
  {
    "path": "src/bench/rollingbloom.cpp",
    "chars": 1302,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  },
  {
    "path": "src/bench/verify_script.cpp",
    "chars": 2022,
    "preview": "// Copyright (c) 2016 The Bitcoin Core developers\n// Distributed under the MIT software license, see the accompanying\n//"
  }
]

// ... and 1878 more files (download for full content)

About this extraction

This page contains the full source code of the Gulden/gulden-official GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2078 files (30.4 MB), approximately 3.4M tokens, and a symbol index with 8844 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!