Bhargava Shastry
|
9befb4bdf0
|
yul proto fuzzer: Do not generate infinite for loops and limit total
number of for loops per test program to two
|
2020-01-20 16:27:01 +05:30 |
|
cameel
|
bf5e62931d
|
fixup! [yulopti] Fix typo: (f)flatten -> (f)latten
|
2020-01-17 12:38:45 +01:00 |
|
cameel
|
49ca1f8534
|
[yulopti] Add missing ConditionalUnsimplifier to the list of available optimizations
|
2020-01-17 08:01:39 +01:00 |
|
cameel
|
4262eebdc4
|
[yulopti] Fix typo: (f)flatten -> (f)latten
|
2020-01-17 08:01:31 +01:00 |
|
Alex Beregszaszi
|
3c88d295b3
|
Remove FixedHash(unsigned) constructor
|
2020-01-16 16:18:08 +00:00 |
|
chriseth
|
9d9a7ebe25
|
Merge pull request #7765 from ethereum/fix-7626
yul proto fuzzer: permit variable declarations inside for-init block
|
2020-01-15 11:21:23 +01:00 |
|
Christian Parpart
|
abb9f1eed7
|
CMake: Renaming devcore static library to solutil (to match source code paths)
|
2020-01-13 15:52:46 +01:00 |
|
Bhargava Shastry
|
49a05b5935
|
Permit variable declarations inside for init block
|
2020-01-13 16:17:33 +05:30 |
|
Daniel Kirchner
|
61652366ab
|
Fix indentation
|
2020-01-08 10:42:19 +01:00 |
|
Daniel Kirchner
|
be0775da49
|
Merge pull request #8075 from ethereum/refactor-namespaces
Refactor namespaces
|
2020-01-07 16:52:20 +01:00 |
|
Mathias L. Baumann
|
a2141d3be2
|
Merge pull request #7869 from fulldecent/fix-kill
Reduce usage of word kill
|
2020-01-07 16:01:04 +01:00 |
|
Christian Parpart
|
345f9928ab
|
Library libdevcore renamed to libsolutil.
|
2020-01-07 15:51:50 +01:00 |
|
Christian Parpart
|
ed45b000d1
|
Adapt tests directory to C++ namespace changes.
|
2020-01-07 15:51:50 +01:00 |
|
Christian Parpart
|
6b23412fae
|
C++ namespace cleanup (except tests).
|
2020-01-07 15:51:50 +01:00 |
|
William Entriken
|
6d068b6331
|
Reduce usage of the word "kill"
|
2020-01-07 11:18:10 +01:00 |
|
Bhargava Shastry
|
49aec64caf
|
abiv2 proto converter: Do not resize dynamic storage arrays by writing to the length field as it is now read only
|
2020-01-06 17:44:42 +01:00 |
|
Alex Beregszaszi
|
9c27e98b83
|
Rename EWasmBuiltinInterpreter to EwasmBuiltinInterpreter
|
2019-12-19 11:36:08 +00:00 |
|
Alex Beregszaszi
|
47a8e5fbd1
|
Fix getExternalCodeSize in the Yul Ewasm interpreter
|
2019-12-18 22:54:34 +00:00 |
|
rodiazet
|
d867f5339b
|
[WASM] add i64.clz and i64.store8 to Wasm dialect and EWasm interpreter.
dsads
|
2019-12-18 19:51:27 +01:00 |
|
Alex Beregszaszi
|
7effc94f24
|
Rename EVMToEWasmTranslator to EVMToEwasmTranslator
|
2019-12-18 16:57:45 +00:00 |
|
Alex Beregszaszi
|
b3caf35e88
|
Change writeU256/writeU128/writeAddress not to return anything in Yul Ewasm interpreter
|
2019-12-18 14:58:28 +00:00 |
|
Alex Beregszaszi
|
9f1e8086bb
|
Fix returning code size in Yul Ewasm interpreter
|
2019-12-18 14:58:28 +00:00 |
|
Alex Beregszaszi
|
7d60cc1729
|
Fix tracing LOG instruction in the Yul Ewasm interpreter
|
2019-12-18 13:35:05 +00:00 |
|
Alex Beregszaszi
|
2a808e4f32
|
Add trace for unreachable in Yul Ewasm translation tests
|
2019-12-15 13:28:38 +00:00 |
|
Bhargava Shastry
|
f5bd483dfa
|
yul proto fuzzer: Target default evm version
|
2019-12-11 16:52:00 +01:00 |
|
Christian Parpart
|
8682af2216
|
libsolc: Overhauls memory management.
|
2019-12-11 15:17:39 +00:00 |
|
chriseth
|
f6916a637e
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-12-09 17:16:58 +01:00 |
|
Leonardo Alt
|
225041738e
|
Add SMTCheckerTest for isoltest
|
2019-12-09 15:32:08 +01:00 |
|
chriseth
|
f7fc42d8c3
|
Merge pull request #7826 from ethereum/develop
Merge develop into develop_060
|
2019-11-28 13:37:19 +01:00 |
|
chriseth
|
301215f186
|
Merge pull request #7461 from sifmelcara/licm
[YulOpt] Implement loop-invariant code motion
|
2019-11-28 12:00:19 +01:00 |
|
mingchuan
|
db60d123d0
|
[YulOpt] Implement loop-invariant code motion
|
2019-11-28 11:59:29 +01:00 |
|
chriseth
|
1ebcc757e1
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-11-27 19:14:08 +01:00 |
|
Paweł Bylica
|
38a20190f4
|
test: Use evmc::VM directly
The evmc::VM works as a RAII wrapper similarly to unique_ptr, so there is no point in using additional unique_ptr.
|
2019-11-27 18:53:02 +01:00 |
|
Bhargava Shastry
|
ea9e849ee4
|
Use pointer to string for efficiency
|
2019-11-26 17:12:56 +01:00 |
|
Bhargava Shastry
|
41bdc9b673
|
yul proto fuzzer: Generalize variable references
|
2019-11-26 17:12:56 +01:00 |
|
chriseth
|
b0db64ff5b
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-11-26 16:19:35 +01:00 |
|
chriseth
|
d4d0df021d
|
EWasm translation tests.
|
2019-11-26 15:46:33 +01:00 |
|
chriseth
|
6625f634fc
|
Wasm Interpreter
|
2019-11-26 15:46:33 +01:00 |
|
Alex Beregszaszi
|
eedfafbbc4
|
Introduce callback context in libsolc
|
2019-11-22 11:42:39 +00:00 |
|
chriseth
|
a00f824479
|
Merge pull request #7773 from ethereum/develop
Merge develop into develop_060
|
2019-11-21 21:49:22 +01:00 |
|
chriseth
|
a26dd5a428
|
Remove trailing spaces in output.
|
2019-11-21 20:09:03 +01:00 |
|
Leonardo Alt
|
389da5228e
|
Merge remote-tracking branch 'origin/develop' into merge_develop_060
|
2019-11-20 12:27:40 +01:00 |
|
chriseth
|
5deaac0849
|
Merge pull request #7740 from ethereum/istanbul
Enable support for Istanbul
|
2019-11-20 10:49:27 +01:00 |
|
chriseth
|
32f321e416
|
Merge pull request #7751 from ethereum/replace_boost_variant_std
Replace boost::variant by std::variant in libyul
|
2019-11-19 19:40:39 +01:00 |
|
Leonardo Alt
|
be849b3c47
|
Replace boost::variant by std::variant in libyul
|
2019-11-19 17:23:18 +01:00 |
|
Alex Beregszaszi
|
71a310a2ea
|
Run fuzzer for istanbul
|
2019-11-19 17:09:18 +01:00 |
|
Erik K
|
94272d44aa
|
Merge pull request #7745 from ethereum/develop
Merge develop into develop_060
|
2019-11-19 15:30:31 +01:00 |
|
Alex Beregszaszi
|
1432f0ad28
|
Adapt EVMHost for EVMC7
|
2019-11-19 12:21:03 +01:00 |
|
Bhargava Shastry
|
62ae015552
|
docker: Add versioning and edit naming scheme
|
2019-11-18 15:16:53 +01:00 |
|
Bhargava Shastry
|
a8a50c4e0e
|
Upgrade evmone to v0.2.0 and adapt fuzzer build
|
2019-11-18 15:16:53 +01:00 |
|
Bhargava Shastry
|
505b5deaf9
|
Add chainid and selfbalance opcodes to yul proto converter and enable it
in the yul proto differential fuzzer.
|
2019-11-18 09:26:00 +01:00 |
|
chriseth
|
2e5a42836c
|
Merge pull request #7681 from ethereum/develop
Merge develop into develop_060
|
2019-11-11 16:42:03 +01:00 |
|
Christian Parpart
|
f15d47f165
|
Yul: Remove obsoleted FunctionalInstruction.
|
2019-11-11 16:04:39 +01:00 |
|
Bhargava Shastry
|
9772cc44a0
|
abiv2 proto fuzzer: Fuzz return data coding
|
2019-11-06 23:42:10 +01:00 |
|
chriseth
|
46ac16d25c
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-11-04 19:09:11 +01:00 |
|
Bhargava Shastry
|
6a55949c04
|
yul proto fuzzer: Increase step limit upper bound for optimized code
|
2019-11-04 18:38:56 +01:00 |
|
Bhargava Shastry
|
04becb9458
|
Minor refactoring
|
2019-11-04 15:47:04 +01:00 |
|
Bhargava Shastry
|
12ed08eddb
|
Place upper bound number on number of array dimensions
|
2019-11-04 15:47:04 +01:00 |
|
Bhargava Shastry
|
3cfeca33c1
|
Abiv2 proto fuzzer: Refactor and add support for structs
|
2019-11-04 15:47:04 +01:00 |
|
chriseth
|
08cf616157
|
Merge pull request #7609 from ethereum/fix-7608
yul proto fuzzer: Catch exception early and propagate termination reason
|
2019-11-04 13:29:50 +01:00 |
|
chriseth
|
5d6e983be3
|
Conditional simplifier.
|
2019-11-01 14:01:56 +01:00 |
|
Bhargava Shastry
|
e4ba1c02e8
|
yul proto fuzzer: Catch exception early and propagate termination reason to harness
|
2019-11-01 12:26:35 +01:00 |
|
Bhargava Shastry
|
edc5059208
|
yul proto: Add leave statement
|
2019-11-01 11:18:05 +01:00 |
|
chriseth
|
42b8c98567
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-10-31 18:03:25 +01:00 |
|
chriseth
|
ceb8ee9124
|
[Yul] leave statement.
|
2019-10-29 14:32:16 +01:00 |
|
chriseth
|
5d906cd58d
|
Merge pull request #7568 from ethereum/fixtest
Fix failing tests on ArchLinux and potentially MacOS
|
2019-10-29 12:37:51 +01:00 |
|
Mathias Baumann
|
b3a5c9c9c0
|
Fix failing tests on ArchLinux and potentially MacOS
|
2019-10-29 12:02:50 +01:00 |
|
chriseth
|
edf1e83fda
|
Merge remote-tracking branch 'origin/develop' into develop_060
|
2019-10-28 15:21:49 +01:00 |
|
chriseth
|
81e2d1ed14
|
Merge pull request #7528 from ethereum/fix-7434
yul interpreter: Initialize calldata with random data
|
2019-10-28 12:39:27 +01:00 |
|
Christian Parpart
|
df729b3084
|
Make use of C++17 std::optional<> instead of boost::optional<>.
|
2019-10-28 11:39:30 +01:00 |
|
Christian Parpart
|
3c1d12b16c
|
Assembly: Remove errorTypeForLoose property from AsmAnalyzer.
|
2019-10-25 15:01:26 +02:00 |
|
Bhargava Shastry
|
128c3c7cf6
|
yul interpreter: Initialize calldata with random data
|
2019-10-21 10:37:35 +02:00 |
|
chriseth
|
9ce1ca2340
|
Refactor Optimiser Steps Interface.
|
2019-09-24 14:52:01 +02:00 |
|
chriseth
|
5a950908b6
|
Merge pull request #7432 from ethereum/fix-ossfuzz-build
ossfuzz: Create a separate cmake toolchain file for ossfuzz
|
2019-09-17 15:24:50 +02:00 |
|
Bhargava Shastry
|
9b31d72f43
|
solc fuzzer: Use randomly chosen evm version
|
2019-09-17 13:43:22 +02:00 |
|
chriseth
|
7a79742f3d
|
Out of body again.
|
2019-09-17 12:30:15 +02:00 |
|
Bhargava Shastry
|
48da5f07a5
|
ossfuzz: Create a separate cmake toolchain file for ossfuzz so that multiple fuzzing backends may be used
|
2019-09-16 18:35:15 +02:00 |
|
Bhargava Shastry
|
403fb7d88c
|
Update logic to track dynamically encoded parameters
|
2019-09-16 14:25:37 +02:00 |
|
chriseth
|
192946c1ba
|
Merge pull request #7413 from ethereum/ossfuzz-link-correctly
Link ossfuzz targets with -fsanitize=fuzzer instead of libFuzzingEngine
|
2019-09-12 20:22:53 +02:00 |
|
Bhargava Shastry
|
a7c987d931
|
Link ossfuzz targets with -fsanitize=fuzzer instead of libFuzzingEngine supplied by docker image
|
2019-09-12 11:26:05 +02:00 |
|
chriseth
|
4f80117eef
|
Use builtin iszero for for loop condition rewriting.
|
2019-09-12 10:26:16 +02:00 |
|
chriseth
|
fcfe829534
|
Introduce LiteralRematerializer and thus simplify StructuralSimplifier.
|
2019-09-11 19:50:24 +02:00 |
|
chriseth
|
a064e0fc97
|
Merge pull request #7236 from ethereum/proto-add-object-access
Experimental support for object access builtins
|
2019-09-11 18:28:10 +02:00 |
|
chriseth
|
e9346ca38a
|
Merge pull request #7400 from ethereum/evmoneSearch
Fix evmone filename for auto-discovery for windows and macos.
|
2019-09-11 17:55:12 +02:00 |
|
Daniel Kirchner
|
2535091168
|
Replace preprocessor macros with constexpr expressions.
|
2019-09-11 13:03:05 +02:00 |
|
Christian Parpart
|
ccdca32f39
|
isoltest: Fixes matching tests on platforms that don't use forward slahes as path separators.
|
2019-09-11 12:53:20 +02:00 |
|
Flash Sheridan
|
733d40ddb5
|
Fix evmone filename for auto-discovery for windows and macos.
|
2019-09-11 12:28:05 +02:00 |
|
Bhargava Shastry
|
34022a2c8c
|
Pseudo-randomly choose object/data identifier that is in scope
|
2019-09-11 10:57:54 +02:00 |
|
Bhargava Shastry
|
d677a15507
|
Add object access builtin functions
|
2019-09-11 10:57:54 +02:00 |
|
Dimitry
|
fd3ae0b24a
|
add chainid and selfbalance to lllc
|
2019-09-09 23:35:36 +03:00 |
|
Bhargava Shastry
|
e349fb1ce1
|
Abiv2 proto fuzzer: Crop at least 32 bytes if last dynamically encoded parameter is right padded
|
2019-09-09 10:07:30 +02:00 |
|
chriseth
|
7f797bc6ae
|
Merge pull request #7342 from ethereum/extendedMemorySizeInterpreter
Make memory addresses wrap in interpreter.
|
2019-09-05 13:14:57 +02:00 |
|
Bhargava Shastry
|
137a898eca
|
Yul proto fuzzer: Fix typo in low level call
|
2019-09-04 21:14:26 +02:00 |
|
chriseth
|
5b4b4011c7
|
Extend memory beyond 32 byte addresses in interpreter.
|
2019-09-04 20:10:42 +02:00 |
|
Bhargava Shastry
|
c889e6e015
|
Yul proto fuzzer: Add create and call opcodes
|
2019-09-04 19:13:40 +02:00 |
|
Bhargava Shastry
|
6b27ef8fcb
|
Yul proto fuzzer: Additional blockchain opcodes
|
2019-09-04 19:13:40 +02:00 |
|
Bhargava Shastry
|
fce65ec811
|
Randomize calldataload and storage slots and use dictionary tokens as function argument
|
2019-09-04 09:54:57 +02:00 |
|
Bhargava Shastry
|
d066ba71a4
|
Force call of every valid func declaration
|
2019-09-04 09:54:57 +02:00 |
|
Bhargava Shastry
|
4837ef4ada
|
Yul proto fuzzer: Make function definition a statement
|
2019-09-04 09:54:36 +02:00 |
|
Leonardo Alt
|
d131784714
|
Add Load Resolver to Yulopti
|
2019-09-03 15:51:33 +02:00 |
|
chriseth
|
6e4e54cbc6
|
Merge pull request #7309 from ethereum/yulproto-refactor
Yul proto fuzzer: Do not shadow variables
|
2019-09-03 12:29:13 +02:00 |
|
chriseth
|
029941a168
|
Merge pull request #7251 from ethereum/sideEffectsForUserDefinedFunctions
Side effects for user defined functions
|
2019-09-03 12:10:56 +02:00 |
|
Bhargava Shastry
|
6427ec661a
|
Yul interpreter: Out of bounds mloads return zero
|
2019-09-03 09:51:15 +02:00 |
|
chriseth
|
127bcfc69d
|
Take user function side-effects into account for unused pruner.
|
2019-09-02 17:41:51 +02:00 |
|
chriseth
|
1c5845e3f2
|
Side-effects of user-defined functions.
|
2019-09-02 17:41:51 +02:00 |
|
Bhargava Shastry
|
bcf0c1810c
|
Yul proto fuzzer: Do not reuse variable names
|
2019-09-02 15:23:10 +02:00 |
|
chriseth
|
9a6357ab09
|
Merge pull request #7188 from ethereum/abiv2-use-bytes-string-longer-than-32-bytes
Abiv2 use bytes string longer than 32 bytes
|
2019-09-02 15:05:43 +02:00 |
|
chriseth
|
bdf29277a2
|
Change interpreter memory to be non-contiguous.
|
2019-09-02 13:51:47 +02:00 |
|
Bhargava Shastry
|
46a133e848
|
Generate bytes and string literals that are longer than 32 bytes
|
2019-09-02 12:43:47 +02:00 |
|
Bhargava Shastry
|
3963d0ca02
|
Create bytes/string values of shorter than 32 bytes and adjust invalid encoding length accordingly
|
2019-09-02 11:30:38 +02:00 |
|
chriseth
|
01e0a12c3b
|
Fix handling of scopes in Yul Interpreter.
|
2019-09-02 10:41:26 +02:00 |
|
Bhargava Shastry
|
922790730c
|
Do not create duplicate case statements
|
2019-08-26 12:44:06 +02:00 |
|
Bhargava Shastry
|
86c981d9fa
|
proto fuzzer: Use a yul optimizer dictionary
|
2019-08-26 12:44:06 +02:00 |
|
chriseth
|
3c4f558242
|
Tests
|
2019-08-15 16:30:05 +02:00 |
|
Mathias Baumann
|
ccfcee5b80
|
YulInterpreter: Fix wrong context passed to called function
|
2019-08-12 17:12:53 +02:00 |
|
chriseth
|
f3f3cac864
|
Fix for ossfuzz.
|
2019-08-08 17:35:46 +02:00 |
|
chriseth
|
c4638cc5cb
|
Remove mention of IPC.
|
2019-08-08 17:35:46 +02:00 |
|
chriseth
|
ac43c3bd18
|
Construct VM with path.
|
2019-08-08 17:35:46 +02:00 |
|
chriseth
|
f692cec11d
|
Provide path to libevmone.
|
2019-08-08 17:35:46 +02:00 |
|
chriseth
|
3dec3af638
|
Use evmone for testing.
|
2019-08-08 17:35:44 +02:00 |
|
Bhargava Shastry
|
2f815c5c35
|
While compiling abiv2 proto generated solidity test program, silently ignore stack too deep errors (exception), throw exception otherwise.
|
2019-08-06 11:06:09 +02:00 |
|
Bhargava Shastry
|
bf16f2f75e
|
Test low level calls with correct and incorrect encodings
|
2019-08-06 09:43:55 +02:00 |
|
Bhargava Shastry
|
e018d62a67
|
Dynamically sized array dimensions can be zero sized
|
2019-08-01 16:33:57 +02:00 |
|
Bhargava Shastry
|
90d421352a
|
Add bool type and array of bool and dynamic byte types
|
2019-07-17 14:24:43 +02:00 |
|
Bhargava Shastry
|
00bca77cca
|
Updated evmc to version tracked by evmone v0.1.0
|
2019-07-17 14:24:27 +02:00 |
|
Christian Parpart
|
810a0de1aa
|
Add evmc and host interface implementation. Modify fuzzer harness to make use of evmc host/vm.
|
2019-07-17 10:55:33 +02:00 |
|
Bhargava Shastry
|
5aa571e56f
|
Update fuzzing deps in docker image and ossfuzz CMakeLists.txt
|
2019-07-16 09:10:02 +02:00 |
|
chriseth
|
869d69d293
|
Supply full object to stack compressor and Optimizer Suite.
|
2019-07-10 18:49:42 +02:00 |
|
Bhargava Shastry
|
3b33ff1454
|
Adjust call to suffixedVariableNameList post refactoring in ABIv2 proto fuzzer and slim down dependencies.
|
2019-07-09 18:18:40 +02:00 |
|
chriseth
|
859dbaa2a3
|
Merge pull request #7053 from djudjuu/moveSuffixHelper
move SuffixHelper to StringUtils
|
2019-07-09 14:32:05 +02:00 |
|
djudjuu
|
cafa01cbf6
|
moved SuffixHelper to StringUtils
|
2019-07-09 13:50:07 +02:00 |
|
chriseth
|
479b843067
|
Merge pull request #7048 from ethereum/soltest-refactoring
[isoltest] Types and formatting refactoring
|
2019-07-09 12:50:15 +02:00 |
|
Bhargava Shastry
|
5bc1a68b40
|
ABIv2 proto fuzzer implementation for a limited set of value and non-value types (arrays included).
|
2019-07-09 10:50:43 +02:00 |
|
Erik Kundt
|
de34f7712d
|
Separates types and conversion functions in soltest.
|
2019-07-04 14:11:07 +02:00 |
|
chriseth
|
a4ef435c07
|
Automated ABI Json tests.
|
2019-07-02 18:11:49 +02:00 |
|
chriseth
|
05a67c486e
|
Use "what" in exception reports.
|
2019-06-18 17:34:10 +02:00 |
|
Bhargava Shastry
|
b5cbb1a3e9
|
For loop with custom init and post blocks and potentially unbounded conditional expression
|
2019-06-14 08:46:28 +02:00 |
|
Daniel Kirchner
|
226f8bb64d
|
Use imported cmake targets for boost.
|
2019-06-06 18:49:34 +02:00 |
|
Bhargava Shastry
|
f57439035a
|
Do not enclose string literal within double quotes before conversion to u256
|
2019-05-29 15:52:31 +02:00 |
|
chriseth
|
a3f721bbcc
|
Merge pull request #6583 from ethereum/reset_yulstringrepo
Reset YulStringRepository regularly
|
2019-05-28 14:20:53 +02:00 |
|
Bhargava Shastry
|
dbae0fa939
|
Reset Yul string repository before each compilation.
|
2019-05-28 13:12:39 +02:00 |
|
chriseth
|
cee1340113
|
Add mini-interpreter to check representation.
|
2019-05-28 11:35:07 +02:00 |
|
chriseth
|
6132f0aea9
|
Merge pull request #6800 from ethereum/skipEmptyDump
Skip empty entries in memory and storage dump.
|
2019-05-23 14:27:44 +02:00 |
|
chriseth
|
e5902c58a4
|
Merge pull request #6777 from sifmelcara/loop-cond-rewriter
[YulOpt] Implement ForLoopConditionIntoBody
|
2019-05-23 12:51:51 +02:00 |
|
chriseth
|
1ca3edf6a1
|
Remove side-effect-free instructions from the trace.
|
2019-05-23 12:42:11 +02:00 |
|
chriseth
|
3ef03258ec
|
Remove memory logging.
|
2019-05-23 12:42:11 +02:00 |
|
chriseth
|
91312e657b
|
Skip empty entries in memory and storage dump.
|
2019-05-23 12:27:56 +02:00 |
|
mingchuan
|
4ab377eb00
|
Add tests for ForLoopConditionIntoBody
|
2019-05-22 21:51:03 +08:00 |
|
Bhargava Shastry
|
804368bb51
|
First commit
|
2019-05-22 10:15:28 +02:00 |
|
chriseth
|
1dc15d5864
|
Modify parser and optimizer.
|
2019-05-20 17:32:56 +02:00 |
|