Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
243 commits
Select commit Hold shift + click to select a range
b8efdfb
created Rust initial folder
AdamSedla Jul 5, 2025
45efbdb
add module and struct
AdamSedla Jul 5, 2025
e909ee7
remove main fn
AdamSedla Jul 5, 2025
a7a239a
rename rust_big_int -> BigInt
AdamSedla Jul 5, 2025
3cdafda
minor dispute with rust
AdamSedla Jul 5, 2025
ba2e853
add main at the request of Rust
AdamSedla Jul 5, 2025
0260051
return of use crate
AdamSedla Jul 5, 2025
0008345
minor changes for in implementation
AdamSedla Jul 7, 2025
3830f91
adds BigInt::new()
AdamSedla Jul 7, 2025
efbeefc
adds #[derive(Clone)]
AdamSedla Jul 9, 2025
d198aaa
Adds tests for BigInt::new()
AdamSedla Jul 9, 2025
cc6a55e
Adds tests for BigInt::from()
AdamSedla Jul 9, 2025
5f79ea1
Adds tests for BigInt::from_str
AdamSedla Jul 9, 2025
fefcc66
Adds tests for BigInt::try_from
AdamSedla Jul 9, 2025
fa8a98f
Adds tests for Display trait
AdamSedla Jul 9, 2025
4e2672c
Adds tests for debug trait
AdamSedla Jul 9, 2025
9f359f4
Adds tests for BigInt::to_words()
AdamSedla Jul 9, 2025
5e910d4
Adds tests for equal trait
AdamSedla Jul 9, 2025
e9aae77
Adds more tests for BigInt::from_str
AdamSedla Jul 9, 2025
674b372
Adds tests for greater than trait
AdamSedla Jul 9, 2025
df44cfa
more tests for BigInt::greater_then
AdamSedla Jul 9, 2025
2884bef
add tests for BigInt::less_then
AdamSedla Jul 9, 2025
49df7f0
add tests for add trait
AdamSedla Jul 9, 2025
f0dd651
add mut for add tests
AdamSedla Jul 9, 2025
e2aef32
add forgotten += tests
AdamSedla Jul 9, 2025
ce397f8
add more add tests
AdamSedla Jul 9, 2025
7338ada
add tests for sub trait
AdamSedla Jul 9, 2025
72714e3
add tests for neg trait
AdamSedla Jul 9, 2025
45779e5
adds tests for mul trait
AdamSedla Jul 9, 2025
9155bd3
adds tests for div trait
AdamSedla Jul 9, 2025
3f3392f
adds tests for reminder trait
AdamSedla Jul 9, 2025
8bd21e2
adds tests for binary trait
AdamSedla Jul 10, 2025
7199a02
add tests for bit_and trait
AdamSedla Jul 10, 2025
10b143d
add tests for bit_or trait
AdamSedla Jul 10, 2025
57c8ada
add tests for bit_xor
AdamSedla Jul 10, 2025
b58ddec
add tests for bit_shift_left trait
AdamSedla Jul 10, 2025
dcf8a5a
add tests bit_shift_right trait
AdamSedla Jul 10, 2025
b760833
add tests for hex format
AdamSedla Jul 10, 2025
18ec1f0
add tests from ProgTest
AdamSedla Jul 10, 2025
68dc3fd
change of package name
AdamSedla Jul 10, 2025
8d40310
add unwrap to tests
AdamSedla Jul 10, 2025
502e10f
remove try_from tests
AdamSedla Jul 10, 2025
f5a3f6f
remove try_from tests
AdamSedla Jul 10, 2025
4a0bd50
minor changes in tests
AdamSedla Jul 11, 2025
2cb26b5
add use super::* instead of another "use" formulas
AdamSedla Jul 11, 2025
ccc7f2e
change of Rust version
AdamSedla Jul 12, 2025
71236fb
add tests for lower_hex
AdamSedla Jul 13, 2025
0af2c59
add dependencies
AdamSedla Jul 13, 2025
d2319e5
move of #derive
AdamSedla Jul 13, 2025
3eb5aca
minor formatting changes
AdamSedla Jul 13, 2025
98a8fb7
add declarations of traits
AdamSedla Jul 13, 2025
66cb2a2
minor changes to silence warnings
AdamSedla Jul 13, 2025
e80a26c
remove unused imports
AdamSedla Jul 13, 2025
4eae729
add implementation of from<T>
AdamSedla Jul 13, 2025
8152c43
change of naming for better consistency
AdamSedla Jul 13, 2025
63c3f5d
add comments into From trait
AdamSedla Jul 13, 2025
56c6c6e
more tests
AdamSedla Jul 13, 2025
be85821
change of use section
AdamSedla Jul 13, 2025
2d0eca8
remove tests for number from string
AdamSedla Jul 13, 2025
58f1a30
more tests
AdamSedla Jul 13, 2025
24633b3
change app -> lib
AdamSedla Jul 13, 2025
7a190fa
add implementation of from_str
AdamSedla Jul 13, 2025
aef0397
more tests
AdamSedla Jul 13, 2025
207356e
add display trait
AdamSedla Jul 13, 2025
cd25a5f
one test fixed
AdamSedla Jul 13, 2025
1bb4fdf
another test fixed
AdamSedla Jul 13, 2025
b081e1c
implement of debug trait
AdamSedla Jul 13, 2025
be74d35
add tests for not trait
AdamSedla Jul 13, 2025
8dd2fc7
add implementation of ! and - traits
AdamSedla Jul 13, 2025
9b2005a
add implementation of to_words
AdamSedla Jul 14, 2025
4870a39
more tests
AdamSedla Jul 14, 2025
b83e2ef
more tests
AdamSedla Jul 14, 2025
854b63f
remove useless ne trait
AdamSedla Jul 14, 2025
6ea477e
From<int> reimplemented with macros
AdamSedla Jul 14, 2025
0c6222d
eq traits implementation
AdamSedla Jul 14, 2025
e0d1a9d
remove unused imports
AdamSedla Jul 14, 2025
60a95f4
renamed BigInt -> big_int
AdamSedla Jul 14, 2025
b2a88d7
move of asociated functions to be in impl big_int
AdamSedla Jul 14, 2025
fb8b0d5
change all names to be longer and more exact
AdamSedla Jul 14, 2025
4b63730
change Debug to be derived
AdamSedla Jul 14, 2025
28e7c53
remove neg trait
AdamSedla Jul 14, 2025
677f8ec
move of tests to another file
AdamSedla Jul 15, 2025
a7d7d3a
rename of big_int --> BigInt
AdamSedla Jul 15, 2025
4ea8a78
remove unused import
AdamSedla Jul 15, 2025
ac4c851
change of .clone() -> &
AdamSedla Jul 15, 2025
a700ba4
rename of crate
AdamSedla Jul 15, 2025
c0f1750
edit of use block
AdamSedla Jul 15, 2025
ffa90c3
quick fix
AdamSedla Jul 15, 2025
9845073
quick fix
AdamSedla Jul 15, 2025
02bfe36
add of Display for BigIntError
AdamSedla Jul 15, 2025
534c135
error traits fix
AdamSedla Jul 16, 2025
ced20c2
performance fix
AdamSedla Jul 16, 2025
b7daaac
change of if to match
AdamSedla Jul 16, 2025
b31f2e0
remove useless fn traits
AdamSedla Jul 16, 2025
4e1920c
allow unused code
AdamSedla Jul 20, 2025
dd3a307
implement gt fn of PartialOrd trait
AdamSedla Jul 20, 2025
06203dd
implement partial_cmp fn of PartialOrd trait
AdamSedla Jul 20, 2025
8273896
rework PartialOrd
AdamSedla Jul 20, 2025
739c29b
remove useless implementations
AdamSedla Jul 20, 2025
20fa281
minor changes in code structure
AdamSedla Jul 20, 2025
9470361
minor changes in code structure
AdamSedla Jul 20, 2025
58ef973
implement partial_cmp with string
AdamSedla Jul 20, 2025
9646b1c
implement partialOrd for intiegers
AdamSedla Jul 20, 2025
8d190bf
fix some tests
AdamSedla Jul 20, 2025
3cbaca7
add implementation of add trait
AdamSedla Jul 20, 2025
1905062
implement add_assign
AdamSedla Jul 21, 2025
0c349ec
fix an error with an extra zero
AdamSedla Jul 21, 2025
0c5ebc3
squish two lines into one
AdamSedla Jul 22, 2025
a1aeaff
implement sub_assign
AdamSedla Jul 22, 2025
8b0c6c9
add implementation of sub trait
AdamSedla Jul 24, 2025
670b908
fix tests
AdamSedla Jul 24, 2025
b4feeff
fix -X-Y edgecase
AdamSedla Jul 24, 2025
6dd4c58
add more tests
AdamSedla Jul 24, 2025
669442c
add even more tests
AdamSedla Jul 24, 2025
b2eab2e
add removal of first zeros
AdamSedla Jul 24, 2025
ae2abec
add more tests for sub trait
AdamSedla Jul 24, 2025
a1860c3
fix self < right edgecase
AdamSedla Jul 24, 2025
d2b46c6
remove useless .into()
AdamSedla Jul 24, 2025
891f689
implement remaining assign traits
AdamSedla Jul 24, 2025
f97b529
change minor things
AdamSedla Jul 25, 2025
85c7b31
fix tests
AdamSedla Jul 26, 2025
793d745
add implementation of mul trait
AdamSedla Jul 26, 2025
d5ee7f3
add more tests
AdamSedla Jul 26, 2025
e6eba6a
remove useless remove keywords
AdamSedla Jul 26, 2025
5b220cc
change insert(0) -> push() for better performance
AdamSedla Jul 26, 2025
dfc6771
fix missing ;
AdamSedla Jul 26, 2025
e9fb2ee
change return type of number_to_word
AdamSedla Jul 26, 2025
b32132d
additional changes
AdamSedla Jul 26, 2025
9616c7a
add more tests
AdamSedla Jul 26, 2025
bab1752
change some tests
AdamSedla Jul 28, 2025
d478b44
fix some tests
AdamSedla Jul 28, 2025
e96d568
implement slow version of division
AdamSedla Jul 28, 2025
c40519b
move slow division to another function
AdamSedla Jul 28, 2025
56e9876
add sub trait -1 edgecase
AdamSedla Jul 28, 2025
e667b7e
add more tests
AdamSedla Jul 28, 2025
81285c6
rewrite add trait iterative way
AdamSedla Jul 28, 2025
7a7a166
move extending logic to separate function
AdamSedla Jul 28, 2025
f800733
minor line change
AdamSedla Jul 28, 2025
6664b2c
rewrite sub trait iterative way
AdamSedla Jul 28, 2025
02b185a
rewrite mul trait
AdamSedla Jul 28, 2025
3a1b7a9
change some tests
AdamSedla Jul 28, 2025
920ca40
fix partialOrd
AdamSedla Jul 28, 2025
02f4eb1
add more tests
AdamSedla Jul 28, 2025
8f1363b
add time consuming test of div
AdamSedla Jul 28, 2025
e54dae5
change div trait to be fast
AdamSedla Jul 28, 2025
613987e
move one test to new segment
AdamSedla Jul 28, 2025
52f7601
fix one test
AdamSedla Jul 28, 2025
d5d67b9
implement rem trait
AdamSedla Jul 28, 2025
b2990bf
add tests for power of
AdamSedla Jul 28, 2025
0970376
implement Pow trait
AdamSedla Jul 28, 2025
3a9faec
fix division edgecase
AdamSedla Jul 28, 2025
f0392fd
implement bit_shift_left
AdamSedla Jul 28, 2025
bc3b9f5
implement bit_shift_right
AdamSedla Jul 28, 2025
bdb621c
add more tests
AdamSedla Jul 29, 2025
c2623f2
change tests line order
AdamSedla Jul 29, 2025
e1d1450
add formating options for Display trait
AdamSedla Jul 29, 2025
91763f9
add helper function .is_even()
AdamSedla Jul 29, 2025
e01dbc6
add helper function .to_binary()
AdamSedla Jul 29, 2025
7262d9b
useless commentary removal
AdamSedla Jul 29, 2025
9b461d9
add 1 to binary if negative
AdamSedla Jul 29, 2025
32201dd
simplify .extend() lines
AdamSedla Jul 29, 2025
6b4acc2
add more tests
AdamSedla Jul 29, 2025
1c0fd8d
implement binary trait
AdamSedla Jul 29, 2025
a257357
rewrite parse_word_digits with iterators
AdamSedla Jul 30, 2025
6ac0972
add 0 if positive number
AdamSedla Jul 30, 2025
10d9d1a
fix binary transformation logic
AdamSedla Jul 30, 2025
d22977b
change tests corresponding to binary trait changes
AdamSedla Jul 30, 2025
8d8c97e
add tests for transformation from binary
AdamSedla Jul 30, 2025
34a2e3c
fix zero edgecase in to_binary
AdamSedla Jul 30, 2025
bcebf73
add from_binary
AdamSedla Jul 30, 2025
f76141e
change while cycle in binary transformation
AdamSedla Jul 30, 2025
58eeca3
add and fix hexadecimal tests
AdamSedla Jul 30, 2025
1dac3c4
add function to transform number to hexa digit
AdamSedla Jul 30, 2025
227b39e
add function to transform BigInt into hexa number
AdamSedla Jul 30, 2025
bcc5681
add function to transform BigInt into formated string
AdamSedla Jul 30, 2025
9c7e8c3
add implementation of LowerHex trait
AdamSedla Jul 30, 2025
8153bc1
add implementation of UpperHex trait
AdamSedla Jul 30, 2025
0e3417e
add implementation of &
AdamSedla Jul 30, 2025
6462fa3
add implementation of |
AdamSedla Jul 30, 2025
f6d3b5b
add implementation of ^
AdamSedla Jul 30, 2025
c25e2af
fix some tests
AdamSedla Jul 30, 2025
90217dd
fix PartialOrd trait
AdamSedla Jul 30, 2025
3198ada
change lib.rs to make Clippy happy again
AdamSedla Jul 31, 2025
5317725
change tests.rs to make Clippy happy again
AdamSedla Jul 31, 2025
8db630f
remove useless .clone
AdamSedla Aug 3, 2025
daf2e88
Update .gitignore
AdamSedla Aug 3, 2025
839c6e4
remove useless comment
AdamSedla Aug 3, 2025
d299cae
replace == vec by .is_empty()
AdamSedla Aug 3, 2025
3f65b57
replace = vec by .clear()
AdamSedla Aug 3, 2025
27a72a1
change function arguments
AdamSedla Aug 3, 2025
837565d
change naming of some variables
AdamSedla Aug 3, 2025
0a82c61
fix string by &str replacement
AdamSedla Aug 3, 2025
4e112b7
remove allow of unused code
AdamSedla Aug 3, 2025
7b5b3ab
remove unused code in lib.rs
AdamSedla Aug 3, 2025
c59075d
remove useless mut in tests.rs
AdamSedla Aug 3, 2025
f14c039
fix from_str
AdamSedla Aug 4, 2025
2537437
remove useless .to_string()
AdamSedla Aug 4, 2025
3efc251
replace .is_zero by ==0
AdamSedla Aug 4, 2025
f7b2ca8
simplify hex text functions
AdamSedla Aug 4, 2025
9205cef
add more tests for .pow()
AdamSedla Aug 4, 2025
e3e5eee
add negative .pow edgecase
AdamSedla Aug 4, 2025
b65626b
fix 0-X edgecase
AdamSedla Aug 4, 2025
f4e773f
fix x/1 edgecase
AdamSedla Aug 4, 2025
206db8f
fix negation of 0 edgecase
AdamSedla Aug 5, 2025
7ac7334
refactor word_to_number parsing
AdamSedla Aug 5, 2025
9b8f1bd
refactor .to_words() function
AdamSedla Aug 5, 2025
54c995d
fix binary tests
AdamSedla Aug 5, 2025
186a12d
Change the binary representation
AdamSedla Aug 5, 2025
b359e36
refactor binary operations
AdamSedla Aug 5, 2025
40ed7a4
change position and arguments of function
AdamSedla Aug 5, 2025
dec9f9a
Create function to do all binary operation logic
AdamSedla Aug 5, 2025
154d724
remove useless mut
AdamSedla Aug 5, 2025
a2c48b6
move div and rem logic to one function
AdamSedla Aug 5, 2025
a957529
refactor .to_words function
AdamSedla Aug 5, 2025
514e8f5
add tests for try_into
AdamSedla Aug 5, 2025
da803a9
add error for too large number
AdamSedla Aug 5, 2025
9cced9a
minor change in Display trait
AdamSedla Aug 5, 2025
337cc00
Refactor number_to_hexa function
AdamSedla Aug 5, 2025
e8e7e4d
add try_into<i128, u128> implementations
AdamSedla Aug 5, 2025
671b8eb
Change some tests
AdamSedla Aug 5, 2025
4a48c03
add more tests
AdamSedla Aug 5, 2025
551d3fa
generate all TryInto variants by macro
AdamSedla Aug 5, 2025
6f7fc37
refactor number_to_hexa
AdamSedla Aug 5, 2025
151477c
add macro for assign traits
AdamSedla Aug 5, 2025
c28ce18
replace assign functions by macro
AdamSedla Aug 5, 2025
4697d0e
change name of to_hexa
AdamSedla Aug 5, 2025
553a65b
Refactor to_hexa_vec
AdamSedla Aug 5, 2025
e28b544
move allignment logic to separate function
AdamSedla Aug 5, 2025
a8fadbd
fix double l in alignment
AdamSedla Aug 5, 2025
7543f2f
add more tests
AdamSedla Aug 5, 2025
cd8ce44
mark unreachable parts of code
AdamSedla Aug 5, 2025
713aac4
refactor alignment function
AdamSedla Aug 5, 2025
c6ba8e9
remove useless return
AdamSedla Aug 5, 2025
3914d34
remove forgotten comment
AdamSedla Aug 5, 2025
76772de
move method to impl BigInt block
AdamSedla Aug 6, 2025
4ae5eb9
Create README.md
AdamSedla Aug 6, 2025
e944484
fix typo
AdamSedla Aug 8, 2025
c167c7b
add LICENSE
AdamSedla Aug 8, 2025
a3e0161
edit README
AdamSedla Aug 8, 2025
c1fdc2f
minor formatting fix
AdamSedla Aug 8, 2025
54712c7
change package name
AdamSedla Aug 8, 2025
ce0e5c5
fix example in README
AdamSedla Aug 8, 2025
73c8889
add integration test
AdamSedla Aug 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ target
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
.DS_Store
25 changes: 25 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[package]
name = "rust_big_int"
version = "0.1.0"
edition = "2024"

[dependencies]
num-traits = { version = "0.2.19", features = ["i128"] }
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025 Adam Sedláček

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.
148 changes: 148 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# RustBigInt

BigInt written in Rust.

## Description

My own implementation of BigInt (type of integer with unlimited size) as project to learn Rust.

## Example

```rs
use RustBigInt::BigInt;
use std::str::FromStr;

//from
let x: BigInt = 66.into();
let y: BigInt = BigInt::from(34);
let z: BigInt = BigInt::from_str("999999").unwrap();

//tryInto
let x: BigInt = 32.into();
let x_num: i32 = x.try_into.unwrap();
assert_eq!(32, x_num);

let y: BigInt = i16:MAX.into();
let y_num: i8 = y.try_into();
assert!(y_num.is_err());

//Display
let x: BigInt = BigInt::from(1003);
assert_eq!(format!("Number is: {x}"), "Number is: 1003");
assert_eq!(format!("Number is: {x:0^11}"), "Number is: 00010030000");
assert_eq!(format!("Number is: {x:0>10}"), "Number is: 0000001003");
assert_eq!(format!("Number is: {x:0<10}"), "Number is: 1003000000");
assert_eq!(format!("Number is: {x:->10}"), "Number is: ------1003");
assert_eq!(format!("Number is: {x:9}"), "Number is: 1003");

//Binary
let x: BigInt = BigInt::from(11);
assert_eq!(format!("{x:#b}"), "0b1011");
assert_eq!(format!("{x:b}"), "1011");
assert_eq!(format!("{x:0^11b}"), "00010110000");


//Hexadecimal
let x: BigInt = BigInt::from(11);
assert_eq!(format!("{x:x}"), "a");
assert_eq!(format!("{x:X}"), "A");
assert_eq!(format!("{x:#X}"), "0xA");
assert_eq!(format!("{x:0^11X}"), "00000A00000");

let x: BigInt = BigInt::from(20);
assert_eq!(x.to_words(), "two zero");

//Math operations
let x: BigInt = BigInt::from(66);
let y: BigInt = BigInt::from(34);
assert!(x != y);
assert_eq!(x + y, 100);
assert_eq!(x - y, 32);
assert_eq!(x * y, 2244);
assert_eq!(x / y, 1);
assert_eq!(x % y, 32);
assert_eq!(x.pow(2), 4356);

//Binary operations
let x: BigInt = 11; //Ob1011
let y: BigInt = 6; //Ob0110
assert_eq!(x & y, 2); //0b0010
assert_eq!(x | y, 15); //0b1111
assert_eq!(x ^ y, 13); //0b1101
assert_eq!(x >> 2, 2) //0b10
assert_eq!(x << 2, 44) //0b101100
```

## All implemented traits and functions

<details>
<summary>From and Into traits</summary>

- Default
- New
- FromStr
- From<i8, i16, i32, i64, i128, u8, u16, u32, u64, u128>
- TryInto<i8, i16, i32, i64, i128, u8, u16, u32, u64, u128>

</details>

<details>
<summary> Display traits </summary>

- Display
- Binary
- UpperHex
- LowerHex
- to_words
</details>

<details>
<summary> Comparing traits </summary>

- PartialEq<BigInt, &str, i8, i16, i32, i64, i128, u8, u16, u32, u64, u128>
- PartialOrd<BigInt, &str, i8, i16, i32, i64, i128, u8, u16, u32, u64, u128>
</details>

<details>
<summary> Math traits </summary>

- Neg (-)
- Add (+)
- AddAssign(+=)
- Sub (-)
- SubAssign (-=)
- Mul (*)
- MulAssign (*=)
- Div (/)
- DivAssign (/=)
- Rem (%)
- RemAssign (%=)
- Pow
</details>


<details>
<summary> Bit operation traits </summary>

- BitAnd (&)
- BitAndAssign (&=)
- BitOr (|)
- BitOrAssign (|=)
- BitXor (^)
- BitXorAssign (^=)
- Shl (<<)
- ShlAssign (<<=)
- Shr (>>)
- ShrAssign (>>=)
</details>


## Acknowledgments

Special thanks to [magnusi](https://github.com/luciusmagn) for leading me throughout this project.

## License

Project is licensed under the MIT license. See the LICENSE file for more info.

Adam Sedláček, 2025 (C)
Loading