Contract

0xdeBE11331b8ccbD9f9Af27D2Da2905b2040AdD83

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ProtocolLibrary

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at SonicScan.org on 2024-12-18
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

interface IRouter {
    function poolFor(address tokenA, address tokenB, bool stable, address _factory) external view returns (address pool);
}
pragma solidity ^0.8.13;

interface IPair {
    function metadata() external view returns (uint dec0, uint dec1, uint r0, uint r1, bool st, address t0, address t1);
}
pragma solidity ^0.8.13;

contract ProtocolLibrary {
    IRouter internal immutable router;
    event Log(uint r0, uint r1, bool st, uint sample);

    constructor(address _router) {
        router = IRouter(_router);
    }

    struct Diffs {
        uint256[] aDiffs;
        uint256[] bDiffs;
    }

    struct PairData {
        uint256 dec0;
        uint256 dec1;
        uint256 r0;
        uint256 r1;
        bool st;
        address t0;
    }

    function _f(uint x0, uint y) internal pure returns (uint) {
        return x0*(y*y/1e18*y/1e18)/1e18+(x0*x0/1e18*x0/1e18)*y/1e18;
    }

    function _d(uint x0, uint y) internal pure returns (uint) {
        return 3*x0*(y*y/1e18)/1e18+(x0*x0/1e18*x0/1e18);
    }

    function _get_y(uint x0, uint xy, uint y) internal pure returns (uint) {
        for (uint i = 0; i < 255; i++) {
            uint y_prev = y;
            uint k = _f(x0, y);
            if (k < xy) {
                uint dy = (xy - k)*1e18/_d(x0, y);
                y = y + dy;
            } else {
                uint dy = (k - xy)*1e18/_d(x0, y);
                y = y - dy;
            }
            if (y > y_prev) {
                if (y - y_prev <= 1) {
                    return y;
                }
            } else {
                if (y_prev - y <= 1) {
                    return y;
                }
            }
        }
        return y;
    }

    function getTradeDiffs(uint[] memory amountIn, address[] memory tokenIn, address[] memory tokenOut, bool[] memory stable, address[] memory factories) external view returns (uint[] memory a, uint[] memory b) {
        Diffs memory diffs;
        diffs.aDiffs = new uint256[]( amountIn.length );
        diffs.bDiffs = new uint256[]( amountIn.length );
        for (uint16 i = 0; i < amountIn.length; i++) {
            PairData memory pairData;
            (pairData.dec0, pairData.dec1, pairData.r0, pairData.r1, pairData.st, pairData.t0,) = IPair(router.poolFor(tokenIn[i], tokenOut[i], stable[i], factories[i])).metadata();
            if(stable[i]){
                uint sample = tokenIn[i] == pairData.t0 ? pairData.r0*pairData.dec1/pairData.r1 : pairData.r1*pairData.dec0/pairData.r0;
                diffs.aDiffs[i] = _getAmountOut(sample, tokenIn[i], pairData.r0, pairData.r1, pairData.t0, pairData.dec0, pairData.dec1, pairData.st) * 1e18 / sample;
            }
            else{
                diffs.aDiffs[i] = tokenIn[i] == pairData.t0 ? (pairData.r1 * 1e18 / pairData.dec1) * pairData.dec0 / pairData.r0 : (pairData.r0 * 1e18 / pairData.dec0) * pairData.dec1 / pairData.r1;
            }
            diffs.bDiffs[i] = _getAmountOut(amountIn[i], tokenIn[i], pairData.r0, pairData.r1, pairData.t0, pairData.dec0, pairData.dec1, pairData.st) * 1e18 / amountIn[i];
        }
        return (diffs.aDiffs, diffs.bDiffs);
    }

    function getTradeDiff(uint amountIn, address tokenIn, address tokenOut, bool stable, address factory) external view returns (uint a, uint b) {
        (uint dec0, uint dec1, uint r0, uint r1, bool st, address t0,) = IPair(router.poolFor(tokenIn, tokenOut, stable, factory)).metadata();
        if(stable){
            uint sample = tokenIn == t0 ? r0*dec1/r1 : r1*dec0/r0;
            a = _getAmountOut(sample, tokenIn, r0, r1, t0, dec0, dec1, st) * 1e18 / sample;
        }
        else{
            a = tokenIn == t0 ? (r1 * 1e18 / dec1) * dec0 / r0 : (r0 * 1e18 / dec0) * dec1 / r1;
        }
        b = _getAmountOut(amountIn, tokenIn, r0, r1, t0, dec0, dec1, st) * 1e18 / amountIn;
    }

    function getTradeDiff(uint amountIn, address tokenIn, address pair) external view returns (uint a, uint b) {
        (uint dec0, uint dec1, uint r0, uint r1, bool st, address t0,) = IPair(pair).metadata();
        uint sample = tokenIn == t0 ? r0*dec1/r1 : r1*dec0/r0;
        a = _getAmountOut(sample, tokenIn, r0, r1, t0, dec0, dec1, st) * 1e18 / sample;
        b = _getAmountOut(amountIn, tokenIn, r0, r1, t0, dec0, dec1, st) * 1e18 / amountIn;
    }

    function _getAmountOut(uint amountIn, address tokenIn, uint _reserve0, uint _reserve1, address token0, uint decimals0, uint decimals1, bool stable) internal pure returns (uint) {
        if (stable) {
            uint xy =  _k(_reserve0, _reserve1, stable, decimals0, decimals1);
            _reserve0 = _reserve0 * 1e18 / decimals0;
            _reserve1 = _reserve1 * 1e18 / decimals1;
            (uint reserveA, uint reserveB) = tokenIn == token0 ? (_reserve0, _reserve1) : (_reserve1, _reserve0);
            amountIn = tokenIn == token0 ? amountIn * 1e18 / decimals0 : amountIn * 1e18 / decimals1;
            uint y = reserveB - _get_y(amountIn+reserveA, xy, reserveB);
            return y * (tokenIn == token0 ? decimals1 : decimals0) / 1e18;
        } else {
            (uint reserveA, uint reserveB, uint decimalsA, uint decimalsB) = tokenIn == token0 ? (_reserve0, _reserve1, decimals0, decimals1) : (_reserve1, _reserve0, decimals1, decimals0);
            if (decimalsA > decimalsB) {
                return (amountIn * reserveB / (reserveA + amountIn)) * (decimalsA / decimalsB);
            }
            else {
                return (amountIn * reserveB / (reserveA + amountIn)) / (decimalsB / decimalsA);
            }
        }
    }

    function _k(uint x, uint y, bool stable, uint decimals0, uint decimals1) internal pure returns (uint) {
        if (stable) {
            uint _x = x * 1e18 / decimals0;
            uint _y = y * 1e18 / decimals1;
            uint _a = (_x * _y) / 1e18;
            uint _b = ((_x * _x) / 1e18 + (_y * _y) / 1e18);
            return _a * _b / 1e18;  // x3y+y3x >= k
        } else {
            return x * y; // xy >= k
        }
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"r0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"r1","type":"uint256"},{"indexed":false,"internalType":"bool","name":"st","type":"bool"},{"indexed":false,"internalType":"uint256","name":"sample","type":"uint256"}],"name":"Log","type":"event"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"bool","name":"stable","type":"bool"},{"internalType":"address","name":"factory","type":"address"}],"name":"getTradeDiff","outputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"pair","type":"address"}],"name":"getTradeDiff","outputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"uint256","name":"b","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amountIn","type":"uint256[]"},{"internalType":"address[]","name":"tokenIn","type":"address[]"},{"internalType":"address[]","name":"tokenOut","type":"address[]"},{"internalType":"bool[]","name":"stable","type":"bool[]"},{"internalType":"address[]","name":"factories","type":"address[]"}],"name":"getTradeDiffs","outputs":[{"internalType":"uint256[]","name":"a","type":"uint256[]"},{"internalType":"uint256[]","name":"b","type":"uint256[]"}],"stateMutability":"view","type":"function"}]

60a060405234801561001057600080fd5b506040516114c43803806114c483398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516114336100916000396000818160ef015261041a01526114336000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806372eec2a2146100465780637364429d14610073578063ec323c0014610094575b600080fd5b610059610054366004610f2d565b6100a7565b604080519283526020830191909152015b60405180910390f35b610086610081366004611133565b610315565b60405161006a929190611240565b6100596100a2366004611265565b6108d5565b60405163874029d960e01b81526001600160a01b03858116600483015284811660248301528315156044830152828116606483015260009182918291829182918291829182917f0000000000000000000000000000000000000000000000000000000000000000169063874029d990608401602060405180830381865afa158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a91906112a7565b6001600160a01b031663392f37e96040518163ffffffff1660e01b815260040160e060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb91906112c4565b50955095509550955095509550891561024f576000816001600160a01b03168d6001600160a01b03161461020357846101f4888661134e565b6101fe9190611365565b610218565b8361020e878761134e565b6102189190611365565b90508061022b828f8888878d8d8b610a09565b61023d90670de0b6b3a764000061134e565b6102479190611365565b9850506102d6565b806001600160a01b03168c6001600160a01b0316146102a05782858761027d87670de0b6b3a764000061134e565b6102879190611365565b610291919061134e565b61029b9190611365565b6102d3565b8386866102b586670de0b6b3a764000061134e565b6102bf9190611365565b6102c9919061134e565b6102d39190611365565b97505b8c6102e78e8e8787868c8c8a610a09565b6102f990670de0b6b3a764000061134e565b6103039190611365565b96505050505050509550959350505050565b606080610335604051806040016040528060608152602001606081525090565b875167ffffffffffffffff81111561034f5761034f610f95565b604051908082528060200260200182016040528015610378578160200160208202803683370190505b508152875167ffffffffffffffff81111561039557610395610f95565b6040519080825280602002602001820160405280156103be578160200160208202803683370190505b50602082015260005b88518161ffff1610156108be576104186040518060c001604052806000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663874029d98a8461ffff168151811061045d5761045d611387565b60200260200101518a8561ffff168151811061047b5761047b611387565b60200260200101518a8661ffff168151811061049957610499611387565b60200260200101518a8761ffff16815181106104b7576104b7611387565b60200260200101516040518563ffffffff1660e01b815260040161050494939291906001600160a01b03948516815292841660208401529015156040830152909116606082015260800190565b602060405180830381865afa158015610521573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054591906112a7565b6001600160a01b031663392f37e96040518163ffffffff1660e01b815260040160e060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a691906112c4565b506001600160a01b031660a08701521515608086015260608501526040840152602083015281528651879061ffff84169081106105e5576105e5611387565b6020026020010151156107045760008160a001516001600160a01b03168a8461ffff168151811061061857610618611387565b60200260200101516001600160a01b03161461065357604082015182516060840151610644919061134e565b61064e9190611365565b610676565b81606001518260200151836040015161066c919061134e565b6106769190611365565b9050806106be828c8661ffff168151811061069357610693611387565b6020026020010151856040015186606001518760a00151886000015189602001518a60800151610a09565b6106d090670de0b6b3a764000061134e565b6106da9190611365565b8451805161ffff86169081106106f2576106f2611387565b602002602001018181525050506107ea565b8060a001516001600160a01b0316898361ffff168151811061072857610728611387565b60200260200101516001600160a01b03161461078457606081015160208201518251604084015161076190670de0b6b3a764000061134e565b61076b9190611365565b610775919061134e565b61077f9190611365565b6107c5565b60408101518151602083015160608401516107a790670de0b6b3a764000061134e565b6107b19190611365565b6107bb919061134e565b6107c59190611365565b8351805161ffff85169081106107dd576107dd611387565b6020026020010181815250505b898261ffff168151811061080057610800611387565b602002602001015161086a8b8461ffff168151811061082157610821611387565b60200260200101518b8561ffff168151811061083f5761083f611387565b6020026020010151846040015185606001518660a00151876000015188602001518960800151610a09565b61087c90670de0b6b3a764000061134e565b6108869190611365565b83602001518361ffff16815181106108a0576108a0611387565b602090810291909101015250806108b68161139d565b9150506103c7565b508051602090910151909890975095505050505050565b600080600080600080600080886001600160a01b031663392f37e96040518163ffffffff1660e01b815260040160e060405180830381865afa15801561091f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094391906112c4565b509550955095509550955095506000816001600160a01b03168b6001600160a01b0316146109855784610976888661134e565b6109809190611365565b61099a565b83610990878761134e565b61099a9190611365565b9050806109ad828d8888878d8d8b610a09565b6109bf90670de0b6b3a764000061134e565b6109c99190611365565b98508b6109dc8d8d8888878d8d8b610a09565b6109ee90670de0b6b3a764000061134e565b6109f89190611365565b975050505050505050935093915050565b60008115610b4f576000610a208888858888610bf6565b905084610a3589670de0b6b3a764000061134e565b610a3f9190611365565b975083610a5488670de0b6b3a764000061134e565b610a5e9190611365565b9650600080876001600160a01b03168b6001600160a01b031614610a8357888a610a86565b89895b91509150876001600160a01b03168b6001600160a01b031614610ac55785610ab68d670de0b6b3a764000061134e565b610ac09190611365565b610ae2565b86610ad88d670de0b6b3a764000061134e565b610ae29190611365565b9b506000610afa610af3848f6113be565b8584610ce7565b610b0490836113d1565b9050670de0b6b3a7640000896001600160a01b03168d6001600160a01b031614610b2e5788610b30565b875b610b3a908361134e565b610b449190611365565b945050505050610bea565b600080600080886001600160a01b03168c6001600160a01b031614610b7757898b888a610b7c565b8a8a89895b935093509350935080821115610bc057610b968183611365565b610ba08e866113be565b848f610bac919061134e565b610bb69190611365565b610b44919061134e565b610bca8282611365565b610bd48e866113be565b848f610be0919061134e565b610b3a9190611365565b98975050505050505050565b60008315610cd157600083610c1388670de0b6b3a764000061134e565b610c1d9190611365565b9050600083610c3488670de0b6b3a764000061134e565b610c3e9190611365565b90506000670de0b6b3a7640000610c55838561134e565b610c5f9190611365565b90506000670de0b6b3a7640000610c76848061134e565b610c809190611365565b670de0b6b3a7640000610c93868061134e565b610c9d9190611365565b610ca791906113be565b9050670de0b6b3a7640000610cbc828461134e565b610cc69190611365565b945050505050610cde565b610cdb858761134e565b90505b95945050505050565b6000805b60ff811015610ded57826000610d018783610df9565b905085811015610d51576000610d178887610e9f565b610d2183896113d1565b610d3390670de0b6b3a764000061134e565b610d3d9190611365565b9050610d4981876113be565b955050610d93565b6000610d5d8887610e9f565b610d6788846113d1565b610d7990670de0b6b3a764000061134e565b610d839190611365565b9050610d8f81876113d1565b9550505b81851115610dbc576001610da783876113d1565b11610db757849350505050610df2565b610dd8565b6001610dc886846113d1565b11610dd857849350505050610df2565b50508080610de5906113e4565b915050610ceb565b508190505b9392505050565b6000670de0b6b3a764000082818581610e12828061134e565b610e1c9190611365565b610e26919061134e565b610e309190611365565b610e3a919061134e565b610e449190611365565b670de0b6b3a7640000808481610e5a828061134e565b610e649190611365565b610e6e919061134e565b610e789190611365565b610e82908661134e565b610e8c9190611365565b610e9691906113be565b90505b92915050565b6000670de0b6b3a76400008381610eb6828061134e565b610ec09190611365565b610eca919061134e565b610ed49190611365565b670de0b6b3a764000080610ee8858061134e565b610ef29190611365565b610efd86600361134e565b610e82919061134e565b6001600160a01b0381168114610f1c57600080fd5b50565b8015158114610f1c57600080fd5b600080600080600060a08688031215610f4557600080fd5b853594506020860135610f5781610f07565b93506040860135610f6781610f07565b92506060860135610f7781610f1f565b91506080860135610f8781610f07565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fd457610fd4610f95565b604052919050565b600067ffffffffffffffff821115610ff657610ff6610f95565b5060051b60200190565b600082601f83011261101157600080fd5b8135602061102661102183610fdc565b610fab565b82815260059290921b8401810191818101908684111561104557600080fd5b8286015b848110156110605780358352918301918301611049565b509695505050505050565b600082601f83011261107c57600080fd5b8135602061108c61102183610fdc565b82815260059290921b840181019181810190868411156110ab57600080fd5b8286015b848110156110605780356110c281610f07565b83529183019183016110af565b600082601f8301126110e057600080fd5b813560206110f061102183610fdc565b82815260059290921b8401810191818101908684111561110f57600080fd5b8286015b8481101561106057803561112681610f1f565b8352918301918301611113565b600080600080600060a0868803121561114b57600080fd5b853567ffffffffffffffff8082111561116357600080fd5b61116f89838a01611000565b9650602088013591508082111561118557600080fd5b61119189838a0161106b565b955060408801359150808211156111a757600080fd5b6111b389838a0161106b565b945060608801359150808211156111c957600080fd5b6111d589838a016110cf565b935060808801359150808211156111eb57600080fd5b506111f88882890161106b565b9150509295509295909350565b600081518084526020808501945080840160005b8381101561123557815187529582019590820190600101611219565b509495945050505050565b6040815260006112536040830185611205565b8281036020840152610cde8185611205565b60008060006060848603121561127a57600080fd5b83359250602084013561128c81610f07565b9150604084013561129c81610f07565b809150509250925092565b6000602082840312156112b957600080fd5b8151610df281610f07565b600080600080600080600060e0888a0312156112df57600080fd5b87519650602088015195506040880151945060608801519350608088015161130681610f1f565b60a089015190935061131781610f07565b60c089015190925061132881610f07565b8091505092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e9957610e99611338565b60008261138257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036113b4576113b4611338565b6001019392505050565b80820180821115610e9957610e99611338565b81810381811115610e9957610e99611338565b6000600182016113f6576113f6611338565b506001019056fea26469706673582212200370a0034e22085474a96564912d9ddf2c5610c746cb23ee1998b0558574129064736f6c63430008130033000000000000000000000000bbb41073e22b7fec739e0b45d0c148a3897e53b8

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c806372eec2a2146100465780637364429d14610073578063ec323c0014610094575b600080fd5b610059610054366004610f2d565b6100a7565b604080519283526020830191909152015b60405180910390f35b610086610081366004611133565b610315565b60405161006a929190611240565b6100596100a2366004611265565b6108d5565b60405163874029d960e01b81526001600160a01b03858116600483015284811660248301528315156044830152828116606483015260009182918291829182918291829182917f000000000000000000000000bbb41073e22b7fec739e0b45d0c148a3897e53b8169063874029d990608401602060405180830381865afa158015610136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015a91906112a7565b6001600160a01b031663392f37e96040518163ffffffff1660e01b815260040160e060405180830381865afa158015610197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101bb91906112c4565b50955095509550955095509550891561024f576000816001600160a01b03168d6001600160a01b03161461020357846101f4888661134e565b6101fe9190611365565b610218565b8361020e878761134e565b6102189190611365565b90508061022b828f8888878d8d8b610a09565b61023d90670de0b6b3a764000061134e565b6102479190611365565b9850506102d6565b806001600160a01b03168c6001600160a01b0316146102a05782858761027d87670de0b6b3a764000061134e565b6102879190611365565b610291919061134e565b61029b9190611365565b6102d3565b8386866102b586670de0b6b3a764000061134e565b6102bf9190611365565b6102c9919061134e565b6102d39190611365565b97505b8c6102e78e8e8787868c8c8a610a09565b6102f990670de0b6b3a764000061134e565b6103039190611365565b96505050505050509550959350505050565b606080610335604051806040016040528060608152602001606081525090565b875167ffffffffffffffff81111561034f5761034f610f95565b604051908082528060200260200182016040528015610378578160200160208202803683370190505b508152875167ffffffffffffffff81111561039557610395610f95565b6040519080825280602002602001820160405280156103be578160200160208202803683370190505b50602082015260005b88518161ffff1610156108be576104186040518060c001604052806000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681525090565b7f000000000000000000000000bbb41073e22b7fec739e0b45d0c148a3897e53b86001600160a01b031663874029d98a8461ffff168151811061045d5761045d611387565b60200260200101518a8561ffff168151811061047b5761047b611387565b60200260200101518a8661ffff168151811061049957610499611387565b60200260200101518a8761ffff16815181106104b7576104b7611387565b60200260200101516040518563ffffffff1660e01b815260040161050494939291906001600160a01b03948516815292841660208401529015156040830152909116606082015260800190565b602060405180830381865afa158015610521573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054591906112a7565b6001600160a01b031663392f37e96040518163ffffffff1660e01b815260040160e060405180830381865afa158015610582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a691906112c4565b506001600160a01b031660a08701521515608086015260608501526040840152602083015281528651879061ffff84169081106105e5576105e5611387565b6020026020010151156107045760008160a001516001600160a01b03168a8461ffff168151811061061857610618611387565b60200260200101516001600160a01b03161461065357604082015182516060840151610644919061134e565b61064e9190611365565b610676565b81606001518260200151836040015161066c919061134e565b6106769190611365565b9050806106be828c8661ffff168151811061069357610693611387565b6020026020010151856040015186606001518760a00151886000015189602001518a60800151610a09565b6106d090670de0b6b3a764000061134e565b6106da9190611365565b8451805161ffff86169081106106f2576106f2611387565b602002602001018181525050506107ea565b8060a001516001600160a01b0316898361ffff168151811061072857610728611387565b60200260200101516001600160a01b03161461078457606081015160208201518251604084015161076190670de0b6b3a764000061134e565b61076b9190611365565b610775919061134e565b61077f9190611365565b6107c5565b60408101518151602083015160608401516107a790670de0b6b3a764000061134e565b6107b19190611365565b6107bb919061134e565b6107c59190611365565b8351805161ffff85169081106107dd576107dd611387565b6020026020010181815250505b898261ffff168151811061080057610800611387565b602002602001015161086a8b8461ffff168151811061082157610821611387565b60200260200101518b8561ffff168151811061083f5761083f611387565b6020026020010151846040015185606001518660a00151876000015188602001518960800151610a09565b61087c90670de0b6b3a764000061134e565b6108869190611365565b83602001518361ffff16815181106108a0576108a0611387565b602090810291909101015250806108b68161139d565b9150506103c7565b508051602090910151909890975095505050505050565b600080600080600080600080886001600160a01b031663392f37e96040518163ffffffff1660e01b815260040160e060405180830381865afa15801561091f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094391906112c4565b509550955095509550955095506000816001600160a01b03168b6001600160a01b0316146109855784610976888661134e565b6109809190611365565b61099a565b83610990878761134e565b61099a9190611365565b9050806109ad828d8888878d8d8b610a09565b6109bf90670de0b6b3a764000061134e565b6109c99190611365565b98508b6109dc8d8d8888878d8d8b610a09565b6109ee90670de0b6b3a764000061134e565b6109f89190611365565b975050505050505050935093915050565b60008115610b4f576000610a208888858888610bf6565b905084610a3589670de0b6b3a764000061134e565b610a3f9190611365565b975083610a5488670de0b6b3a764000061134e565b610a5e9190611365565b9650600080876001600160a01b03168b6001600160a01b031614610a8357888a610a86565b89895b91509150876001600160a01b03168b6001600160a01b031614610ac55785610ab68d670de0b6b3a764000061134e565b610ac09190611365565b610ae2565b86610ad88d670de0b6b3a764000061134e565b610ae29190611365565b9b506000610afa610af3848f6113be565b8584610ce7565b610b0490836113d1565b9050670de0b6b3a7640000896001600160a01b03168d6001600160a01b031614610b2e5788610b30565b875b610b3a908361134e565b610b449190611365565b945050505050610bea565b600080600080886001600160a01b03168c6001600160a01b031614610b7757898b888a610b7c565b8a8a89895b935093509350935080821115610bc057610b968183611365565b610ba08e866113be565b848f610bac919061134e565b610bb69190611365565b610b44919061134e565b610bca8282611365565b610bd48e866113be565b848f610be0919061134e565b610b3a9190611365565b98975050505050505050565b60008315610cd157600083610c1388670de0b6b3a764000061134e565b610c1d9190611365565b9050600083610c3488670de0b6b3a764000061134e565b610c3e9190611365565b90506000670de0b6b3a7640000610c55838561134e565b610c5f9190611365565b90506000670de0b6b3a7640000610c76848061134e565b610c809190611365565b670de0b6b3a7640000610c93868061134e565b610c9d9190611365565b610ca791906113be565b9050670de0b6b3a7640000610cbc828461134e565b610cc69190611365565b945050505050610cde565b610cdb858761134e565b90505b95945050505050565b6000805b60ff811015610ded57826000610d018783610df9565b905085811015610d51576000610d178887610e9f565b610d2183896113d1565b610d3390670de0b6b3a764000061134e565b610d3d9190611365565b9050610d4981876113be565b955050610d93565b6000610d5d8887610e9f565b610d6788846113d1565b610d7990670de0b6b3a764000061134e565b610d839190611365565b9050610d8f81876113d1565b9550505b81851115610dbc576001610da783876113d1565b11610db757849350505050610df2565b610dd8565b6001610dc886846113d1565b11610dd857849350505050610df2565b50508080610de5906113e4565b915050610ceb565b508190505b9392505050565b6000670de0b6b3a764000082818581610e12828061134e565b610e1c9190611365565b610e26919061134e565b610e309190611365565b610e3a919061134e565b610e449190611365565b670de0b6b3a7640000808481610e5a828061134e565b610e649190611365565b610e6e919061134e565b610e789190611365565b610e82908661134e565b610e8c9190611365565b610e9691906113be565b90505b92915050565b6000670de0b6b3a76400008381610eb6828061134e565b610ec09190611365565b610eca919061134e565b610ed49190611365565b670de0b6b3a764000080610ee8858061134e565b610ef29190611365565b610efd86600361134e565b610e82919061134e565b6001600160a01b0381168114610f1c57600080fd5b50565b8015158114610f1c57600080fd5b600080600080600060a08688031215610f4557600080fd5b853594506020860135610f5781610f07565b93506040860135610f6781610f07565b92506060860135610f7781610f1f565b91506080860135610f8781610f07565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fd457610fd4610f95565b604052919050565b600067ffffffffffffffff821115610ff657610ff6610f95565b5060051b60200190565b600082601f83011261101157600080fd5b8135602061102661102183610fdc565b610fab565b82815260059290921b8401810191818101908684111561104557600080fd5b8286015b848110156110605780358352918301918301611049565b509695505050505050565b600082601f83011261107c57600080fd5b8135602061108c61102183610fdc565b82815260059290921b840181019181810190868411156110ab57600080fd5b8286015b848110156110605780356110c281610f07565b83529183019183016110af565b600082601f8301126110e057600080fd5b813560206110f061102183610fdc565b82815260059290921b8401810191818101908684111561110f57600080fd5b8286015b8481101561106057803561112681610f1f565b8352918301918301611113565b600080600080600060a0868803121561114b57600080fd5b853567ffffffffffffffff8082111561116357600080fd5b61116f89838a01611000565b9650602088013591508082111561118557600080fd5b61119189838a0161106b565b955060408801359150808211156111a757600080fd5b6111b389838a0161106b565b945060608801359150808211156111c957600080fd5b6111d589838a016110cf565b935060808801359150808211156111eb57600080fd5b506111f88882890161106b565b9150509295509295909350565b600081518084526020808501945080840160005b8381101561123557815187529582019590820190600101611219565b509495945050505050565b6040815260006112536040830185611205565b8281036020840152610cde8185611205565b60008060006060848603121561127a57600080fd5b83359250602084013561128c81610f07565b9150604084013561129c81610f07565b809150509250925092565b6000602082840312156112b957600080fd5b8151610df281610f07565b600080600080600080600060e0888a0312156112df57600080fd5b87519650602088015195506040880151945060608801519350608088015161130681610f1f565b60a089015190935061131781610f07565b60c089015190925061132881610f07565b8091505092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e9957610e99611338565b60008261138257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036113b4576113b4611338565b6001019392505050565b80820180821115610e9957610e99611338565b81810381811115610e9957610e99611338565b6000600182016113f6576113f6611338565b506001019056fea26469706673582212200370a0034e22085474a96564912d9ddf2c5610c746cb23ee1998b0558574129064736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000bbb41073e22b7fec739e0b45d0c148a3897e53b8

-----Decoded View---------------
Arg [0] : _router (address): 0xbBb41073e22B7FEc739E0B45d0c148a3897E53B8

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bbb41073e22b7fec739e0b45d0c148a3897e53b8


Deployed Bytecode Sourcemap

408:5800:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3295:703;;;;;;:::i;:::-;;:::i;:::-;;;;1186:25:1;;;1242:2;1227:18;;1220:34;;;;1159:18;3295:703:0;;;;;;;;1835:1452;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4006:459::-;;;;;;:::i;:::-;;:::i;3295:703::-;3518:50;;-1:-1:-1;;;3518:50:0;;-1:-1:-1;;;;;6936:15:1;;;3518:50:0;;;6918:34:1;6988:15;;;6968:18;;;6961:43;7047:14;;7040:22;7020:18;;;7013:50;7099:15;;;7079:18;;;7072:43;3420:6:0;;;;;;;;;;;;;;;;3518;:14;;;;6852:19:1;;3518:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3512:66:0;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3447:133;;;;;;;;;;;;;3594:6;3591:307;;;3616:11;3641:2;-1:-1:-1;;;;;3630:13:0;:7;-1:-1:-1;;;;;3630:13:0;;:39;;3667:2;3659:7;3662:4;3659:2;:7;:::i;:::-;:10;;;;:::i;:::-;3630:39;;;3654:2;3646:7;3649:4;3646:2;:7;:::i;:::-;:10;;;;:::i;:::-;3616:53;;3756:6;3688:58;3702:6;3710:7;3719:2;3723;3727;3731:4;3737;3743:2;3688:13;:58::i;:::-;:65;;3749:4;3688:65;:::i;:::-;:74;;;;:::i;:::-;3684:78;;3601:173;3591:307;;;3818:2;-1:-1:-1;;;;;3807:13:0;:7;-1:-1:-1;;;;;3807:13:0;;:79;;3884:2;3877:4;3869;3857:9;:2;3862:4;3857:9;:::i;:::-;:16;;;;:::i;:::-;3856:25;;;;:::i;:::-;:30;;;;:::i;:::-;3807:79;;;3851:2;3844:4;3836;3824:9;:2;3829:4;3824:9;:::i;:::-;:16;;;;:::i;:::-;3823:25;;;;:::i;:::-;:30;;;;:::i;:::-;3803:83;;3591:307;3982:8;3912:60;3926:8;3936:7;3945:2;3949;3953;3957:4;3963;3969:2;3912:13;:60::i;:::-;:67;;3975:4;3912:67;:::i;:::-;:78;;;;:::i;:::-;3908:82;;3436:562;;;;;;3295:703;;;;;;;;:::o;1835:1452::-;2008:15;2025;2053:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;2053:18:0;2112:8;:15;2097:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2097:32:0;-1:-1:-1;2082:47:0;;2170:15;;2155:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2155:32:0;-1:-1:-1;2140:12:0;;;:47;2203:8;2198:1036;2221:8;:15;2217:1;:19;;;2198:1036;;;2258:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2258:24:0;2389:6;-1:-1:-1;;;;;2389:14:0;;2404:7;2412:1;2404:10;;;;;;;;;;:::i;:::-;;;;;;;2416:8;2425:1;2416:11;;;;;;;;;;:::i;:::-;;;;;;;2429:6;2436:1;2429:9;;;;;;;;;;:::i;:::-;;;;;;;2440;2450:1;2440:12;;;;;;;;;;:::i;:::-;;;;;;;2389:64;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6936:15:1;;;6918:34;;6988:15;;;6983:2;6968:18;;6961:43;7047:14;;7040:22;7035:2;7020:18;;7013:50;7099:15;;;7094:2;7079:18;;7072:43;6867:3;6852:19;;6655:466;2389:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2383:80:0;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;2297:168:0;2367:11;;;2297:168;;;2354:11;;;2297:168;2341:11;;;2297:168;2328:11;;;2297:168;2313:13;;;2297:168;;;2483:9;;:6;;:9;;;;;;;;;;:::i;:::-;;;;;;;2480:569;;;2512:11;2540:8;:11;;;-1:-1:-1;;;;;2526:25:0;:7;2534:1;2526:10;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2526:25:0;;:105;;2620:11;;;;2606:13;;2594:11;;;;:25;;2606:13;2594:25;:::i;:::-;:37;;;;:::i;:::-;2526:105;;;2580:8;:11;;;2566:8;:13;;;2554:8;:11;;;:25;;;;:::i;:::-;:37;;;;:::i;:::-;2512:119;;2793:6;2668:115;2682:6;2690:7;2698:1;2690:10;;;;;;;;;;:::i;:::-;;;;;;;2702:8;:11;;;2715:8;:11;;;2728:8;:11;;;2741:8;:13;;;2756:8;:13;;;2771:8;:11;;;2668:13;:115::i;:::-;:122;;2786:4;2668:122;:::i;:::-;:131;;;;:::i;:::-;2650:12;;:15;;;;;;;;;;;;:::i;:::-;;;;;;:149;;;;;2493:322;2480:569;;;2884:8;:11;;;-1:-1:-1;;;;;2870:25:0;:7;2878:1;2870:10;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2870:25:0;;:163;;3022:11;;;;3006:13;;;;2989;;2968:11;;;;:18;;2982:4;2968:18;:::i;:::-;:34;;;;:::i;:::-;2967:52;;;;:::i;:::-;:66;;;;:::i;:::-;2870:163;;;2953:11;;;;2937:13;;2920;;;;2899:11;;;;:18;;2913:4;2899:18;:::i;:::-;:34;;;;:::i;:::-;2898:52;;;;:::i;:::-;:66;;;;:::i;:::-;2852:12;;:15;;;;;;;;;;;;:::i;:::-;;;;;;:181;;;;;2480:569;3211:8;3220:1;3211:11;;;;;;;;;;:::i;:::-;;;;;;;3081:120;3095:8;3104:1;3095:11;;;;;;;;;;:::i;:::-;;;;;;;3108:7;3116:1;3108:10;;;;;;;;;;:::i;:::-;;;;;;;3120:8;:11;;;3133:8;:11;;;3146:8;:11;;;3159:8;:13;;;3174:8;:13;;;3189:8;:11;;;3081:13;:120::i;:::-;:127;;3204:4;3081:127;:::i;:::-;:141;;;;:::i;:::-;3063:5;:12;;;3076:1;3063:15;;;;;;;;;;:::i;:::-;;;;;;;;;;:159;-1:-1:-1;2238:3:0;;;;:::i;:::-;;;;2198:1036;;;-1:-1:-1;3252:12:0;;3266;;;;;3252;;3266;;-1:-1:-1;1835:1452:0;-1:-1:-1;;;;;;1835:1452:0:o;4006:459::-;4097:6;4105;4125:9;4136;4147:7;4156;4165;4174:10;4195:4;-1:-1:-1;;;;;4189:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4124:87;;;;;;;;;;;;;4222:11;4247:2;-1:-1:-1;;;;;4236:13:0;:7;-1:-1:-1;;;;;4236:13:0;;:39;;4273:2;4265:7;4268:4;4265:2;:7;:::i;:::-;:10;;;;:::i;:::-;4236:39;;;4260:2;4252:7;4255:4;4252:2;:7;:::i;:::-;:10;;;;:::i;:::-;4222:53;;4358:6;4290:58;4304:6;4312:7;4321:2;4325;4329;4333:4;4339;4345:2;4290:13;:58::i;:::-;:65;;4351:4;4290:65;:::i;:::-;:74;;;;:::i;:::-;4286:78;;4449:8;4379:60;4393:8;4403:7;4412:2;4416;4420;4424:4;4430;4436:2;4379:13;:60::i;:::-;:67;;4442:4;4379:67;:::i;:::-;:78;;;;:::i;:::-;4375:82;;4113:352;;;;;;;4006:459;;;;;;:::o;4473:1272::-;4644:4;4665:6;4661:1077;;;4688:7;4699:54;4702:9;4713;4724:6;4732:9;4743;4699:2;:54::i;:::-;4688:65;-1:-1:-1;4799:9:0;4780:16;:9;4792:4;4780:16;:::i;:::-;:28;;;;:::i;:::-;4768:40;-1:-1:-1;4854:9:0;4835:16;:9;4847:4;4835:16;:::i;:::-;:28;;;;:::i;:::-;4823:40;;4879:13;4894;4922:6;-1:-1:-1;;;;;4911:17:0;:7;-1:-1:-1;;;;;4911:17:0;;:67;;4957:9;4968;4911:67;;;4932:9;4943;4911:67;4878:100;;;;5015:6;-1:-1:-1;;;;;5004:17:0;:7;-1:-1:-1;;;;;5004:17:0;;:77;;5072:9;5054:15;:8;5065:4;5054:15;:::i;:::-;:27;;;;:::i;:::-;5004:77;;;5042:9;5024:15;:8;5035:4;5024:15;:::i;:::-;:27;;;;:::i;:::-;4993:88;-1:-1:-1;5096:6:0;5116:39;5123:17;5132:8;4993:88;5123:17;:::i;:::-;5142:2;5146:8;5116:6;:39::i;:::-;5105:50;;:8;:50;:::i;:::-;5096:59;;5227:4;5193:6;-1:-1:-1;;;;;5182:17:0;:7;-1:-1:-1;;;;;5182:17:0;;:41;;5214:9;5182:41;;;5202:9;5182:41;5177:47;;:1;:47;:::i;:::-;:54;;;;:::i;:::-;5170:61;;;;;;;;4661:1077;5265:13;5280;5295:14;5311;5340:6;-1:-1:-1;;;;;5329:17:0;:7;-1:-1:-1;;;;;5329:17:0;;:111;;5397:9;5408;5419;5430;5329:111;;;5350:9;5361;5372;5383;5329:111;5264:176;;;;;;;;5471:9;5459;:21;5455:272;;;5557:21;5569:9;5557;:21;:::i;:::-;5532:19;5543:8;5532;:19;:::i;:::-;5520:8;5509;:19;;;;:::i;:::-;:43;;;;:::i;:::-;5508:71;;;;:::i;5455:272::-;5689:21;5701:9;5689;:21;:::i;:::-;5664:19;5675:8;5664;:19;:::i;:::-;5652:8;5641;:19;;;;:::i;:::-;:43;;;;:::i;4661:1077::-;4473:1272;;;;;;;;;;:::o;5753:446::-;5849:4;5870:6;5866:326;;;5893:7;5914:9;5903:8;:1;5907:4;5903:8;:::i;:::-;:20;;;;:::i;:::-;5893:30;-1:-1:-1;5938:7:0;5959:9;5948:8;:1;5952:4;5948:8;:::i;:::-;:20;;;;:::i;:::-;5938:30;-1:-1:-1;5983:7:0;6005:4;5994:7;5938:30;5994:2;:7;:::i;:::-;5993:16;;;;:::i;:::-;5983:26;-1:-1:-1;6024:7:0;6066:4;6055:7;6060:2;;6055:7;:::i;:::-;6054:16;;;;:::i;:::-;6047:4;6036:7;6041:2;;6036:7;:::i;:::-;6035:16;;;;:::i;:::-;:35;;;;:::i;:::-;6024:47;-1:-1:-1;6103:4:0;6093:7;6024:47;6093:2;:7;:::i;:::-;:14;;;;:::i;:::-;6086:21;;;;;;;;5866:326;6164:5;6168:1;6164;:5;:::i;:::-;6157:12;;5866:326;5753:446;;;;;;;:::o;1139:688::-;1204:4;;1221:580;1242:3;1238:1;:7;1221:580;;;1281:1;1267:11;1306:9;1309:2;1281:1;1306:2;:9::i;:::-;1297:18;;1338:2;1334:1;:6;1330:212;;;1361:7;1385:9;1388:2;1392:1;1385:2;:9::i;:::-;1372:6;1377:1;1372:2;:6;:::i;:::-;1371:13;;1380:4;1371:13;:::i;:::-;:23;;;;:::i;:::-;1361:33;-1:-1:-1;1417:6:0;1361:33;1417:1;:6;:::i;:::-;1413:10;;1342:97;1330:212;;;1464:7;1488:9;1491:2;1495:1;1488:2;:9::i;:::-;1475:6;1479:2;1475:1;:6;:::i;:::-;1474:13;;1483:4;1474:13;:::i;:::-;:23;;;;:::i;:::-;1464:33;-1:-1:-1;1520:6:0;1464:33;1520:1;:6;:::i;:::-;1516:10;;1445:97;1330:212;1564:6;1560:1;:10;1556:234;;;1609:1;1595:10;1599:6;1595:1;:10;:::i;:::-;:15;1591:72;;1642:1;1635:8;;;;;;;1591:72;1556:234;;;1721:1;1707:10;1716:1;1707:6;:10;:::i;:::-;:15;1703:72;;1754:1;1747:8;;;;;;;1703:72;1252:549;;1247:3;;;;;:::i;:::-;;;;1221:580;;;;1818:1;1811:8;;1139:688;;;;;;:::o;861:137::-;913:4;986;984:1;986:4;975:2;986:4;964:5;975:2;;964:5;:::i;:::-;:10;;;;:::i;:::-;:13;;;;:::i;:::-;:18;;;;:::i;:::-;963:22;;;;:::i;:::-;:27;;;;:::i;:::-;958:4;;950:1;958:4;941:3;950:1;;941:3;:::i;:::-;:8;;;;:::i;:::-;:10;;;;:::i;:::-;:15;;;;:::i;:::-;937:20;;:2;:20;:::i;:::-;:25;;;;:::i;:::-;:53;;;;:::i;:::-;930:60;;861:137;;;;;:::o;1006:125::-;1058:4;1118;1115:2;1118:4;1104:5;1115:2;;1104:5;:::i;:::-;:10;;;;:::i;:::-;:13;;;;:::i;:::-;:18;;;;:::i;:::-;1098:4;;1088:3;1090:1;;1088:3;:::i;:::-;:8;;;;:::i;:::-;1082:4;1084:2;1082:1;:4;:::i;:::-;:15;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:118::-;236:5;229:13;222:21;215:5;212:32;202:60;;258:1;255;248:12;273:734;365:6;373;381;389;397;450:3;438:9;429:7;425:23;421:33;418:53;;;467:1;464;457:12;418:53;503:9;490:23;480:33;;563:2;552:9;548:18;535:32;576:31;601:5;576:31;:::i;:::-;626:5;-1:-1:-1;683:2:1;668:18;;655:32;696:33;655:32;696:33;:::i;:::-;748:7;-1:-1:-1;807:2:1;792:18;;779:32;820:30;779:32;820:30;:::i;:::-;869:7;-1:-1:-1;928:3:1;913:19;;900:33;942;900;942;:::i;:::-;994:7;984:17;;;273:734;;;;;;;;:::o;1265:127::-;1326:10;1321:3;1317:20;1314:1;1307:31;1357:4;1354:1;1347:15;1381:4;1378:1;1371:15;1397:275;1468:2;1462:9;1533:2;1514:13;;-1:-1:-1;;1510:27:1;1498:40;;1568:18;1553:34;;1589:22;;;1550:62;1547:88;;;1615:18;;:::i;:::-;1651:2;1644:22;1397:275;;-1:-1:-1;1397:275:1:o;1677:183::-;1737:4;1770:18;1762:6;1759:30;1756:56;;;1792:18;;:::i;:::-;-1:-1:-1;1837:1:1;1833:14;1849:4;1829:25;;1677:183::o;1865:662::-;1919:5;1972:3;1965:4;1957:6;1953:17;1949:27;1939:55;;1990:1;1987;1980:12;1939:55;2026:6;2013:20;2052:4;2076:60;2092:43;2132:2;2092:43;:::i;:::-;2076:60;:::i;:::-;2170:15;;;2256:1;2252:10;;;;2240:23;;2236:32;;;2201:12;;;;2280:15;;;2277:35;;;2308:1;2305;2298:12;2277:35;2344:2;2336:6;2332:15;2356:142;2372:6;2367:3;2364:15;2356:142;;;2438:17;;2426:30;;2476:12;;;;2389;;2356:142;;;-1:-1:-1;2516:5:1;1865:662;-1:-1:-1;;;;;;1865:662:1:o;2532:737::-;2586:5;2639:3;2632:4;2624:6;2620:17;2616:27;2606:55;;2657:1;2654;2647:12;2606:55;2693:6;2680:20;2719:4;2743:60;2759:43;2799:2;2759:43;:::i;2743:60::-;2837:15;;;2923:1;2919:10;;;;2907:23;;2903:32;;;2868:12;;;;2947:15;;;2944:35;;;2975:1;2972;2965:12;2944:35;3011:2;3003:6;2999:15;3023:217;3039:6;3034:3;3031:15;3023:217;;;3119:3;3106:17;3136:31;3161:5;3136:31;:::i;:::-;3180:18;;3218:12;;;;3056;;3023:217;;3274:731;3325:5;3378:3;3371:4;3363:6;3359:17;3355:27;3345:55;;3396:1;3393;3386:12;3345:55;3432:6;3419:20;3458:4;3482:60;3498:43;3538:2;3498:43;:::i;3482:60::-;3576:15;;;3662:1;3658:10;;;;3646:23;;3642:32;;;3607:12;;;;3686:15;;;3683:35;;;3714:1;3711;3704:12;3683:35;3750:2;3742:6;3738:15;3762:214;3778:6;3773:3;3770:15;3762:214;;;3858:3;3845:17;3875:28;3897:5;3875:28;:::i;:::-;3916:18;;3954:12;;;;3795;;3762:214;;4010:1269;4227:6;4235;4243;4251;4259;4312:3;4300:9;4291:7;4287:23;4283:33;4280:53;;;4329:1;4326;4319:12;4280:53;4369:9;4356:23;4398:18;4439:2;4431:6;4428:14;4425:34;;;4455:1;4452;4445:12;4425:34;4478:61;4531:7;4522:6;4511:9;4507:22;4478:61;:::i;:::-;4468:71;;4592:2;4581:9;4577:18;4564:32;4548:48;;4621:2;4611:8;4608:16;4605:36;;;4637:1;4634;4627:12;4605:36;4660:63;4715:7;4704:8;4693:9;4689:24;4660:63;:::i;:::-;4650:73;;4776:2;4765:9;4761:18;4748:32;4732:48;;4805:2;4795:8;4792:16;4789:36;;;4821:1;4818;4811:12;4789:36;4844:63;4899:7;4888:8;4877:9;4873:24;4844:63;:::i;:::-;4834:73;;4960:2;4949:9;4945:18;4932:32;4916:48;;4989:2;4979:8;4976:16;4973:36;;;5005:1;5002;4995:12;4973:36;5028:60;5080:7;5069:8;5058:9;5054:24;5028:60;:::i;:::-;5018:70;;5141:3;5130:9;5126:19;5113:33;5097:49;;5171:2;5161:8;5158:16;5155:36;;;5187:1;5184;5177:12;5155:36;;5210:63;5265:7;5254:8;5243:9;5239:24;5210:63;:::i;:::-;5200:73;;;4010:1269;;;;;;;;:::o;5284:435::-;5337:3;5375:5;5369:12;5402:6;5397:3;5390:19;5428:4;5457:2;5452:3;5448:12;5441:19;;5494:2;5487:5;5483:14;5515:1;5525:169;5539:6;5536:1;5533:13;5525:169;;;5600:13;;5588:26;;5634:12;;;;5669:15;;;;5561:1;5554:9;5525:169;;;-1:-1:-1;5710:3:1;;5284:435;-1:-1:-1;;;;;5284:435:1:o;5724:465::-;5981:2;5970:9;5963:21;5944:4;6007:56;6059:2;6048:9;6044:18;6036:6;6007:56;:::i;:::-;6111:9;6103:6;6099:22;6094:2;6083:9;6079:18;6072:50;6139:44;6176:6;6168;6139:44;:::i;6194:456::-;6271:6;6279;6287;6340:2;6328:9;6319:7;6315:23;6311:32;6308:52;;;6356:1;6353;6346:12;6308:52;6392:9;6379:23;6369:33;;6452:2;6441:9;6437:18;6424:32;6465:31;6490:5;6465:31;:::i;:::-;6515:5;-1:-1:-1;6572:2:1;6557:18;;6544:32;6585:33;6544:32;6585:33;:::i;:::-;6637:7;6627:17;;;6194:456;;;;;:::o;7126:251::-;7196:6;7249:2;7237:9;7228:7;7224:23;7220:32;7217:52;;;7265:1;7262;7255:12;7217:52;7297:9;7291:16;7316:31;7341:5;7316:31;:::i;7382:761::-;7503:6;7511;7519;7527;7535;7543;7551;7604:3;7592:9;7583:7;7579:23;7575:33;7572:53;;;7621:1;7618;7611:12;7572:53;7650:9;7644:16;7634:26;;7700:2;7689:9;7685:18;7679:25;7669:35;;7744:2;7733:9;7729:18;7723:25;7713:35;;7788:2;7777:9;7773:18;7767:25;7757:35;;7835:3;7824:9;7820:19;7814:26;7849:28;7871:5;7849:28;:::i;:::-;7946:3;7931:19;;7925:26;7896:5;;-1:-1:-1;7960:33:1;7925:26;7960:33;:::i;:::-;8064:3;8049:19;;8043:26;8012:7;;-1:-1:-1;8078:33:1;8043:26;8078:33;:::i;:::-;8130:7;8120:17;;;7382:761;;;;;;;;;;:::o;8148:127::-;8209:10;8204:3;8200:20;8197:1;8190:31;8240:4;8237:1;8230:15;8264:4;8261:1;8254:15;8280:168;8353:9;;;8384;;8401:15;;;8395:22;;8381:37;8371:71;;8422:18;;:::i;8453:217::-;8493:1;8519;8509:132;;8563:10;8558:3;8554:20;8551:1;8544:31;8598:4;8595:1;8588:15;8626:4;8623:1;8616:15;8509:132;-1:-1:-1;8655:9:1;;8453:217::o;8675:127::-;8736:10;8731:3;8727:20;8724:1;8717:31;8767:4;8764:1;8757:15;8791:4;8788:1;8781:15;8807:197;8845:3;8873:6;8914:2;8907:5;8903:14;8941:2;8932:7;8929:15;8926:41;;8947:18;;:::i;:::-;8996:1;8983:15;;8807:197;-1:-1:-1;;;8807:197:1:o;9009:125::-;9074:9;;;9095:10;;;9092:36;;;9108:18;;:::i;9139:128::-;9206:9;;;9227:11;;;9224:37;;;9241:18;;:::i;9272:135::-;9311:3;9332:17;;;9329:43;;9352:18;;:::i;:::-;-1:-1:-1;9399:1:1;9388:13;;9272:135::o

Swarm Source

ipfs://0370a0034e22085474a96564912d9ddf2c5610c746cb23ee1998b05585741290

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.