Skip to content

add SHA3.sol for keccak worst case and adapt w3utils.py and deploy.py#15

Merged
AronisAt79 merged 2 commits into
mainfrom
worst-case-keccak256
Jan 3, 2023
Merged

add SHA3.sol for keccak worst case and adapt w3utils.py and deploy.py#15
AronisAt79 merged 2 commits into
mainfrom
worst-case-keccak256

Conversation

@AronisAt79

Copy link
Copy Markdown
Contributor

@ed255

ed255 commented Dec 15, 2022

Copy link
Copy Markdown

I took a quick look at the generated bytecode and each sha3 iteration looks like this:

KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB4 SWAP2 SWAP1 PUSH2 0x676 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD

I think this can be improved significantly to increase the ratio of KECCAK256/number_of_opcodes_per_iter.

I'll try to figure out how to improve it

@pinkiebell

Copy link
Copy Markdown

Giving that the out of gas exception work now we can attach as many keccak256(src,len) inside the body and let it run out of gas. Is this correct? And what about the differences in the keccak circuit regarding the number of words? It might makes sense to test both as many keccak invocations and the number of words 6 gas per word for each keccak invocation.

@pinkiebell

pinkiebell commented Dec 15, 2022

Copy link
Copy Markdown

This one uses as many as possible keccak256(0, 32) - and will always revert (out of gas)

0x60205b803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050600256

@AronisAt79

Copy link
Copy Markdown
Contributor Author

This one uses as many as possible keccak256(0, 32) - and will always revert (out of gas)

0x60205b803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050803d2050600256

if the Tx reverts, do we generate a proof?

@pinkiebell

Copy link
Copy Markdown

if the Tx reverts, do we generate a proof?

This should work since privacy-ethereum/zkevm-circuits#979 but didn't test it yet

@pinkiebell

Copy link
Copy Markdown

I just tested it and get TODO: error state OutOfGas(Sha3) not implemented I assume that it will still work tho?

@ed255

ed255 commented Dec 15, 2022

Copy link
Copy Markdown

I just tested it and get TODO: error state OutOfGas(Sha3) not implemented I assume that it will still work tho?

Ah yeah! This is expected. Although in the EVM side the out of gas situation is a single error, in the circuits we implement them separate for each opcode (this is because each opcode has a different logic to calculate its gas cost). So currently out of gas checks for some opcodes are implemented, but for others not yet.

Edit1: If this error is encountered the proof generation fails. I'm not sure if privacy-ethereum/zkevm-circuits#979 fixes it, but I think it's best to avoid the OutOfGasSHA3 state until it's implemented.

@ed255

ed255 commented Dec 15, 2022

Copy link
Copy Markdown

@AronisAt79 can you try with this contract?

// SPDX-License-Identifier: MIT
 
pragma solidity 0.8.17;
 
contract CheckKeccak {
 
    function checkBatchYul(uint256 l) external  returns (bytes32 r) {
        uint256 len = l / 32;
        uint256 p = 0;
        uint256 n = 1;
        for (uint256 i; i<len; i++) {
            assembly {
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
               pop(keccak256(p, n))
            }
        }
        return 0;
    }
}

The SHA3 (also called KECCAK256) opcode takes input from memory and outputs to the stack. Since the input and output are in different places, chaining the opcodes (like keccak256(keccak256(keccak256(...)))) doesn't help.

In the contract code I passed each sha3 iteration will look like this:

DUP2 DUP4 KECCAK256 POP

@AronisAt79

AronisAt79 commented Dec 15, 2022

Copy link
Copy Markdown
Contributor Author

Thank you both! I am seeing that both approaches result in similar iterations. I will try with the .sol deployment for now, as it is easier to do withing the tool, but @pinkiebell , could you please send the corresponding solidity file (from your bytecode) just for my info?

@pinkiebell

Copy link
Copy Markdown

I added this here via the bytecode util, no solidity file

@AronisAt79

Copy link
Copy Markdown
Contributor Author

I added this here via the bytecode util, no solidity file

so it will be already part of the precompiled l2 ?

@pinkiebell

Copy link
Copy Markdown

I added this here via the bytecode util, no solidity file

so it will be already part of the precompiled l2 ?

it isn't yet but I will add all the bytecodes to the l2 genesis 👌

@AronisAt79

AronisAt79 commented Dec 20, 2022

Copy link
Copy Markdown
Contributor Author

@ed255, @pinkiebell
for some reason, i can invoke no KECCAK256 executions with the optimized sc, when deployed in zkevm-chain, while it seems it works in remix and goerli (trace debug in remix shows SHA3 steps). Deployment is ok, and i see no errors in geth logs. Any idea what i should look into for some insight?

thanks,
Marios

@ed255

ed255 commented Jan 2, 2023

Copy link
Copy Markdown

for some reason, i can invoke no KECCAK256 executions with the optimized sc, when deployed in zkevm-chain, while it seems it works in remix and goerli (trace debug in remix shows SHA3 steps). Deployment is ok, and i see no errors in geth logs. Any idea what i should look into for some insight?

thanks, Marios

Could you provide more details on this issue?

  • Can you execute a successful tx that calls the checkBatchYul in the zkevm-chain?
  • Did you try to get the trace log of such tx? Using debug_traceTransaction geth API.
  • How do you observe that no KECCAK256 executions are done?

Just for clarity, KECCAK256 and SHA3 are the same in the Ethereum world. Some libraries/tools show it one way or the other; but it's the same opcode.

@AronisAt79

Copy link
Copy Markdown
Contributor Author

@ed255
Hi Edu,

thanks for the hints during our call yesterday! Indeed the problem was the default solidity optimizations applied by brownie. I modified the compiler config and it now works as expected!

@AronisAt79 AronisAt79 marked this pull request as ready for review January 3, 2023 11:49
@AronisAt79 AronisAt79 merged commit 9ba6b1a into main Jan 3, 2023
@AronisAt79 AronisAt79 deleted the worst-case-keccak256 branch January 5, 2023 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

Write SC to generate worst case block for KECCAK circuit

3 participants