Morphological tree learning utilities with a stable morphology facade
Project description
MTLearn
MTLearn (Morphological Tree Learning) is a C++/Python research library for
learnable connected operators based on morphological trees. The Python package
is published as mtlearn.
The library explores a simple idea: connected morphology can become a structural prior for deep neural networks. Instead of processing images only through local pixel-wise operations, connected operators reason over components, regions, shape, contrast, and hierarchy. This makes them naturally interpretable and well-suited for tasks where structure matters.
Classical connected filters are powerful, but they usually depend on hard keep/discard decisions and manually selected attribute thresholds. This limits their integration into end-to-end trainable neural architectures.
MTLearn provides a stable implementation platform for this research direction. It currently includes Connected Filter Preprocessing (CFP), and is intended to grow toward trainable connected-operator layers, differentiable or learnable attribute criteria, self-dual tree representations, intermediate network insertions, and scalable implementations.
Main Features
-
Connected Filter Preprocessing (CFP): the current main model, available as
mtlearn.layers.ConnectedFilterPreprocessingLayer. CFP replaces hard connected-filter decisions with a differentiable sigmoid gate over normalized tree-node attributes. -
Stable morphology interface:
mtlearn.morphologybuilds max-trees, min-trees, and tree-of-shapes through a backend-independent API. -
Trainable connected morphology: designed as an implementation platform for connected morphology as a learnable structural prior in deep neural networks.
-
Research-ready validation: includes C++ tests, Python tests, gradient checks, reference implementations, notebook validations, and public dataset download helpers.
Install
The Python package is available from PyPI as mtlearn:
pip install mtlearn
See docs/installation.md for installation instructions and docs/development.md for source builds, validation, and releases.
Quick Start
Build a morphology tree and compute attributes:
import numpy as np
from mtlearn import morphology
image = np.array([[1, 2], [3, 4]], dtype=np.uint8)
tree = morphology.create_max_tree(image)
_, attributes = morphology.compute_attributes(
tree,
[morphology.AttributeType.AREA, morphology.AttributeType.COMPACTNESS],
)
print(attributes.shape)
Create a CFP layer and run a forward pass:
import torch
from mtlearn import morphology
from mtlearn.layers import ConnectedFilterPreprocessingLayer
cfp_layer = ConnectedFilterPreprocessingLayer(
in_channels=1,
attributes_spec=[(
morphology.AttributeType.AREA,
morphology.AttributeType.CIRCULARITY,
)],
tree_type="max-tree",
device="cpu",
)
x = torch.tensor([[[[1, 2], [3, 4]]]], dtype=torch.float32)
y = cfp_layer(x)
assert y.shape == x.shape
Examples and Notebooks
Executable examples are available in notebooks/.
Install notebook dependencies with:
pip install "mtlearn[notebooks]"
The main public experiment example is:
notebooks/experiments/Example_screws_filtering.ipynb
Implementation Notes
ConnectedFilterPreprocessingLayer is the recommended implementation for new
CFP experiments.
Tensor operations, trainable parameters, and cached attributes can live on CUDA
when device="cuda". Morphology-tree construction is still performed by the
C++ backend on CPU.
The main implementation uses an implicit Jacobian formulation. The dense region-pixel matrix is not materialized during normal training; tree-ordering metadata is used to perform the equivalent reconstruction and backward accumulation more compactly. This reduces memory pressure compared with explicit region-pixel Jacobian construction.
Reference implementations based on explicit Jacobians and CPU tree traversals remain available for gradient checks, comparisons, and debugging.
MTLearn uses a C++ morphology backend internally through mtlearn::morphology.
User code should interact with morphology through the public Python facade
mtlearn.morphology, rather than depending on backend-specific APIs.
The backend is MorphologicalAttributeFilters / mmcfilters, but the top-level
Python package mmcfilters is not required as a runtime dependency of
mtlearn.
Current Scope
MTLearn is a research-oriented library. CFP is the first validated member of a broader planned family of trainable connected-operator layers. The current implementation supports max-tree and min-tree CFP workflows, multi-attribute groups, dataset-level attribute normalization, cached preprocessing, and PyTorch forward/backward for CFP parameters on CPU or CUDA tensors.
Citation
If you use the CFP layer in your work, please cite:
Wonder A. L. Alves, Lucas de P. O. Santos, Ronaldo F. Hashimoto, Nicolas Passat, Anderson H. R. Souza, Dennis J. Silva, Yukiko Kenmochi. A trainable connected filter preprocessing layer based on component trees. International Conference on Pattern Recognition (ICPR), 2026, Lyon, France. ⟨hal-05575141⟩
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mtlearn-1.0.5.tar.gz.
File metadata
- Download URL: mtlearn-1.0.5.tar.gz
- Upload date:
- Size: 232.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54d14d2ff427febd4d9859d198db993bbfd49f7f9d0851d825c3f34ba950e012
|
|
| MD5 |
eee49df5d303852978421157d0f0d3bd
|
|
| BLAKE2b-256 |
330f6e4871bf191fdcdf053e3b83a17fcaf53fa8f874bd30d7c77d24edc17b66
|
File details
Details for the file mtlearn-1.0.5-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 485.4 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
342cd17089ad5ea8e559c4af8a37083fbd010e1ab2acbd498f138f601ddbf99a
|
|
| MD5 |
29282ed6a874a34cc5c2f00973da60b1
|
|
| BLAKE2b-256 |
f9fd14600f020bb4ed8dc765af3e0c57d5f25bec2fbbae80c8396c20fa40da55
|
File details
Details for the file mtlearn-1.0.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 507.9 kB
- Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aca9b533f77a0ea867b7079a544fe56c7010b03318261dd32d5025c050fd845a
|
|
| MD5 |
8c306c96a9fd3bea4bc2df88b1e63dc2
|
|
| BLAKE2b-256 |
2106525b4d0e5d5a7ee628331ee0ed4f001b4012b7d10802077a0edfe6767ebc
|
File details
Details for the file mtlearn-1.0.5-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 401.3 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef5b62dc9d3d8036aa7b4ae54ac038075ac01a19e4610b3f41536f177fe8aa71
|
|
| MD5 |
cca953ea3c675464a4b2f174e44f468d
|
|
| BLAKE2b-256 |
c46f43eaceeb35091ee49ef4125d8ad203b6a26990c2d7e199014a6d9bc0fa79
|
File details
Details for the file mtlearn-1.0.5-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 473.7 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f07720fd9efc680edcd713a46ff39f4e0a9f9deecdab78b7e417cfe5942bb1a
|
|
| MD5 |
524a6d103b510f28545f8e9480af53fc
|
|
| BLAKE2b-256 |
9103f0b7356121c16f2cddc4f722dff3febdb01a3e1f11edf09b2cd15d75e0ee
|
File details
Details for the file mtlearn-1.0.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 507.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9859f1211b6bdc1bd1cc7211257d61d596658ea711c2e7909cd0a48fe02d5862
|
|
| MD5 |
cb7a030815b1cc7f43c45af54b602585
|
|
| BLAKE2b-256 |
b6c3b4e0dd49b054747977308930e2651b29c96e371d15a411bb80bf2abc422f
|
File details
Details for the file mtlearn-1.0.5-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 400.5 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff8104c42e0495b9c7682b699250977bfc25c1a05485057c9c7452d94a40b7b7
|
|
| MD5 |
59efd7119a9d272519947957aa3806f8
|
|
| BLAKE2b-256 |
6adc26e5f7e726357deda6351226f95f5d116b1b96a754a5b26fb5a58080c1f9
|
File details
Details for the file mtlearn-1.0.5-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 473.7 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1702a94aa55de17a640b751731f3c9f5c013d9c76d39c227ca51c2793728030
|
|
| MD5 |
11ca37dc5da57588d8c4919c2eaa53ce
|
|
| BLAKE2b-256 |
bef33ff426a9cf5e66195ba24f2056bd8b08642189ba572aa4678cc221cb13ff
|
File details
Details for the file mtlearn-1.0.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 507.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d8e7e0bc26b9dc9307389c30106ea54e8dfc3545a65f9111d66c7e348332bfc
|
|
| MD5 |
fb0e6a803d892b65bda092bacfac0a13
|
|
| BLAKE2b-256 |
e6961aaa6782cf99ba9f41a13e4a0f19a51408239525d1eb9c4fb1b4bfac1ca9
|
File details
Details for the file mtlearn-1.0.5-cp312-cp312-macosx_11_0_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp312-cp312-macosx_11_0_x86_64.whl
- Upload date:
- Size: 434.4 kB
- Tags: CPython 3.12, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c5bfb9646234dcdaa6b8534c10ae5e410ed30d684a881fe035a8d5a97a9abdf
|
|
| MD5 |
f4d2736c02185516c9621d69d52ece33
|
|
| BLAKE2b-256 |
b6ab2e4c03f1c9b226b6f8390dda73df145a81412783f8f539489c2bd8386134
|
File details
Details for the file mtlearn-1.0.5-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 400.5 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4dfe9deaa18d247fd7201490fd2ad0aa8140964de2550d20c57b4b1f3e626cd7
|
|
| MD5 |
ae440eac5872638fb31bcb9236368474
|
|
| BLAKE2b-256 |
82ec85c12db2032f23c1a91d36f6d64e0fad3a8eb97e20f7ee3298f598fd16fc
|
File details
Details for the file mtlearn-1.0.5-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 471.5 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ac2e339c222c9c7b4bc6f96b749c20c0e4b5da2365f8d604a9d70fbcb4888fc
|
|
| MD5 |
aea130cc144f88887c578ddfdc08f53b
|
|
| BLAKE2b-256 |
52fe38d322e86ddf195287b6ed08ac9cdbac5f96e316ebc06a82106f2f5b35fd
|
File details
Details for the file mtlearn-1.0.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 508.8 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cec2464e3dedb6bd7779d48a5614e9a21cbabb23f6707f3514aee0223cd537d
|
|
| MD5 |
ce1a5757d5fbbb829f8d2bbab14b00dc
|
|
| BLAKE2b-256 |
fc1491272ba4eb486db05360ee363a5c7beb4939c03258b38cae9ab264d014af
|
File details
Details for the file mtlearn-1.0.5-cp311-cp311-macosx_11_0_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp311-cp311-macosx_11_0_x86_64.whl
- Upload date:
- Size: 430.7 kB
- Tags: CPython 3.11, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f5508969f12134f8190c81f2c874e10a50ca2f3e1a75846120a912cd7e26cff
|
|
| MD5 |
ed5df0839f37d5075d61553c13861375
|
|
| BLAKE2b-256 |
14e7f458852a9df9932e4f80e1d18f15e88c13295100bd28dca1b01a0b3ad8b4
|
File details
Details for the file mtlearn-1.0.5-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 399.9 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c019f062a2d599b0965b3cba88aa7fc2097c9120c2ae24bd07f9791ab651ea9
|
|
| MD5 |
8a3e073e61e3bb3c86eda284cfb498ba
|
|
| BLAKE2b-256 |
58ea0ec516ab7528b54b66d57fbb00694aaddd1a3a5604864a9a908a4d148f57
|
File details
Details for the file mtlearn-1.0.5-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 470.3 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a0edcd02724f3359563eba6ebb545e46e83959277827a3a6712043a2da9df95
|
|
| MD5 |
d2c2ccaece5328a25181e72d46ba2d01
|
|
| BLAKE2b-256 |
b9e8263903e8f31440f48918bedb5b9e384f443286e0e9f6a043b601e698daed
|
File details
Details for the file mtlearn-1.0.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 508.0 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d43d72f8fe131e6e1021501266ba587eec18ed7cb6dcc9cb25579124f38f2da
|
|
| MD5 |
dddfbed4fa24a154278836a57d8c0ffd
|
|
| BLAKE2b-256 |
433c0ebdf9c4ac491b4218c69663ce24b6ae1e378b961859fefa72164c51a03a
|
File details
Details for the file mtlearn-1.0.5-cp310-cp310-macosx_11_0_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp310-cp310-macosx_11_0_x86_64.whl
- Upload date:
- Size: 429.5 kB
- Tags: CPython 3.10, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
333b7834d08db56fbc42e7410ef2c584502051dec450540c43c9291bbd460f98
|
|
| MD5 |
c56545255b66008af5e66b0530b85556
|
|
| BLAKE2b-256 |
0ca51617b0d60be5485916c0b0b4caeaedda8cb15d34964c00d973705dd9b596
|
File details
Details for the file mtlearn-1.0.5-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 398.7 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c7213026bc93f14c7a5ca86ec3e22d834e8de5a5f55772677d59a5215293b8e
|
|
| MD5 |
d040542607041b319bf4b51479cd2c7d
|
|
| BLAKE2b-256 |
e699ef5223739c7abedf18e7106195f9619d76b7e46558f45e227ab4d42660fd
|
File details
Details for the file mtlearn-1.0.5-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 478.2 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f29d2668d4fb94f429ce898e497f2b2eee767e45419c1bc6e6c91c547990963
|
|
| MD5 |
8b0ac691c6f060b83047ee027eb8cf3c
|
|
| BLAKE2b-256 |
4f12a5458300dff9102d1e9f5fb0fb2f856f5a1ea784fdc8d97e5c57e3a9b0d3
|
File details
Details for the file mtlearn-1.0.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 505.8 kB
- Tags: CPython 3.9, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfdf45ebba4900c18f8d985948ae17b8014797baacf063f54870c94c5fd5b1ff
|
|
| MD5 |
7eab0f8d186e00fe5272c5a935322fb9
|
|
| BLAKE2b-256 |
3ed6b1fbc10177ebea161d090bb295fcf55929d1e4956aa2c927c4a07426596d
|
File details
Details for the file mtlearn-1.0.5-cp39-cp39-macosx_11_0_x86_64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp39-cp39-macosx_11_0_x86_64.whl
- Upload date:
- Size: 429.5 kB
- Tags: CPython 3.9, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0f86763c6c841de72895f7f6322005492c035e80650e47184368cd372cb96ac
|
|
| MD5 |
0b5965b303309ce1d2298ee6a9fc63b4
|
|
| BLAKE2b-256 |
5ebbe2be1cff5eff0e588043d8ddaac3369a91267a072584ce79bcc28b096576
|
File details
Details for the file mtlearn-1.0.5-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: mtlearn-1.0.5-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 398.8 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1094db1874b7686738dcb39c6703adce5c1724c382c0f45f37f4cb707447d98
|
|
| MD5 |
10464f4a3d2fb1472f3217fc4450196f
|
|
| BLAKE2b-256 |
fc2e266de3a88c119abdaf35177ddebcb72d834aa175379526dfa7318ef0a07c
|