Amoy Testnet

Token

DWC (DWC)
ERC-20

Overview

Max Total Supply

32,500,000 DWC

Holders

10

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
31,889,773.800651653878195025 DWC
0x3bb195603e1ec562cfe406047b2718b4226cfa2a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
DWCChina

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at amoy.polygonscan.com on 2024-12-06
*/

// SPDX-License-Identifier: UNLISCENSED
pragma solidity ^0.6.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract DWCChina  {
    IERC20 public dai;
    string public name = "DWC";
    string public symbol = "DWC";
    uint256 public totalSupply =32500000*10**18; // 325 lakh tokens
    uint8 public decimals = 18;
    struct User {
        uint id;        
        address referrer;
        uint partnersCount;        
        uint256 teamCount;    
        address[] directIds;    
        uint256 totalDeposit;  
        uint256 lastDeposit;
        uint256 directBusiness; 
        uint256 reward;
        uint256 levelincome;
        uint256 roraltyincome;
        uint256 maturityincome;
        uint256 totalreward;
        uint256 totalwithdraw;     
         
    }
    struct OrderInfo {
        uint256 amount; 
        uint256 holdingbonus;
        uint256 deposit_time;
        uint256 freeze_time;
        uint256 reward_time;
        bool ishelp;
        bool iswithdraw;
        bool isactive;
        bool isdai;
        uint256 dayRewardPercents;
        uint256 withdraw_time;
        uint withno;
    }
    struct Rank
    {
        uint id;
        uint activedirect;
        uint activeteam;
    }
    struct UserRank
    {
        uint rank;
    }
    struct UserCapping
    {
        uint256 totalCapping;
        uint256 useCapping;
    }
    mapping(address => User) public users;
    mapping(address => UserRank) public userranks;
    mapping(address => UserCapping) public userscapping;
    mapping(address => OrderInfo[]) public orderInfos;
    mapping(uint=>Rank) public map_ranks;
    uint256 private constant minDeposit = 100e18;
    uint256 private constant  maxDeposit=10000e18;
    uint256 public liquidityPool_tokenAmount;
    uint256 public liquidityPool_daiAmount;
    uint256 public _burnToken;
    address public id1=0x9Ed2CFa3ebdE315FdbfC60859f093E07a52d131f;
    address public communityHoldingFund=0x3BB195603e1ec562CfE406047b2718B4226cfa2A;
    address public dwctokenPool=0x5427F55e590f70bE2967A891EA119e66c20262fF;    
    address public liquidityPool=0xd9845cEE17F9aA07C507b6ad55eB93A9ad2221Bc;
    address public extraPool=0xd9845cEE17F9aA07C507b6ad55eB93A9ad2221Bc;
    address public creater;
    address[5] public feewallet=[0x53888f004F49e78a41acE9261104956fE8c1199a,0x91D1eBdEBa71A59661C914C849F9dF45C812CFAf,0xfecc9357583a2F0b8Dc62335447e62f5A882477A];
    uint256[5] private feePercents = [300,50,50,50,50];
    uint public lastUserId = 2;
    uint256 private constant referDepth = 21;
    uint256 private constant interval=10*60;
    uint256 private constant timeStepdaily=interval;
    uint256 private timeLiquidityLock;
    uint256 private dayRewardPercents = 1;
    uint256[21] private levelPercents = [500,200,100,50,25,25,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20];
    uint256[21] private levelwPercents = [1000,100,100,100,100,100,100,100,100,100,100,50,50,50,50,50,50,50,50,50,50];
    uint256[21] private levelRank = [0,1,1,2,2,3,3,3,4,4,5,5,5,5,5,6,6,6,6,6,6];
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner,address indexed _spender,uint256 _value);

    event Deposit(address indexed addr, uint256 amount, uint256 token);
    event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);   
    event Transaction(address indexed user,address indexed from,uint256 value, uint8 level,uint8 Type);
    event Withdraw(address indexed user,uint256 value);
    event Swap(address indexed user,uint256 token,uint256 value);
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;    
     
    constructor(address _daiAddr) public {
        creater=msg.sender;
        dai = IERC20(_daiAddr);   
        balanceOf[dwctokenPool] =100000*10**18;
        balanceOf[communityHoldingFund] =31890000*10**18;
        balanceOf[liquidityPool] =10000*10**18;
        balanceOf[extraPool] =500000*10**18;
        emit Transfer(address(0), dwctokenPool, 100000*10**18);
        emit Transfer(address(0), communityHoldingFund, 31890000*10**18);
        emit Transfer(address(0), liquidityPool, 10000*10**18);
        emit Transfer(address(0), extraPool, 500000*10**18);
        User memory user = User({
            id: 1,            
            referrer: address(0),
            partnersCount: 0,
            teamCount: 0,
            directIds:new address[](0),
            directBusiness:0,
            totalDeposit:500e18,
            lastDeposit:500e18,
            reward:0,
            levelincome:0,
            roraltyincome:0,
            maturityincome:0,
            totalreward:0,
            totalwithdraw:0
            
        }); 
        users[id1] = user;
        userranks[id1].rank = 6;
        userscapping[id1].totalCapping =500e18; 
        orderInfos[id1].push(OrderInfo(
            500e18, 
            0,
            block.timestamp, 
            block.timestamp+15*interval, 
            block.timestamp,
            false,
            false,
            true,true,100,block.timestamp+20*interval,2
        ));
        map_ranks[1] = Rank({id:1,activedirect:5,activeteam:0}); 
        map_ranks[2] = Rank({id:2,activedirect:2,activeteam:35}); 
        map_ranks[3] = Rank({id:3,activedirect:4,activeteam:80}); 
        map_ranks[4] = Rank({id:4,activedirect:6,activeteam:350}); 
        map_ranks[5] = Rank({id:5,activedirect:8,activeteam:1000}); 
        map_ranks[6] = Rank({id:6,activedirect:10,activeteam:5000});
        liquidityPool_tokenAmount=10000e18;
        liquidityPool_daiAmount=10000e18;
        timeLiquidityLock=block.timestamp;
    } 
    function register(address referrerAddress) external  {        
        registration(msg.sender, referrerAddress);
    }
    function registration(address userAddress, address referrerAddress) private {
        require(!isUserExists(userAddress), "user exists");
        require(isUserExists(referrerAddress), "referrer not exists");
        User memory user = User({
            id: lastUserId,            
            referrer: referrerAddress,
            partnersCount: 0,
            teamCount: 0,
            directIds:new address[](0),
            directBusiness:0,
            totalDeposit:0,
            lastDeposit:0,
            reward:0,
            levelincome:0,
            roraltyincome:0,
            maturityincome:0,
            totalreward:0,
            totalwithdraw:0
        });        
        users[userAddress] = user;
        users[userAddress].referrer = referrerAddress;
        lastUserId++;        
        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    function deposit(uint256 _amount) external {
        dai.transferFrom(msg.sender,address(this),_amount);
        _amount=_amount*2;
        require(_amount >= users[msg.sender].lastDeposit && _amount >= minDeposit && _amount%minDeposit == 0 && _amount <= maxDeposit, "less than min");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        inactivedHolding(msg.sender);  
        _deposit(msg.sender,_amount);
    }
    function depositdwc(uint256 _amount) external {
        uint256 _token=_daiToTokens(_amount);
        _transfer(msg.sender,communityHoldingFund,_token);
        _amount=_amount*2;
        require(_amount >= users[msg.sender].lastDeposit && _amount >= minDeposit && _amount%minDeposit == 0 && _amount <= maxDeposit, "less than min");
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        inactivedHolding(msg.sender);  
        _depositdwc(msg.sender,_amount);
    }
    function deposit2(uint rewardindex) external {
        require(isUserExists(msg.sender), "user is not exists. Register first.");
        inactivedHolding(msg.sender); 
        bool _flag=false; 
        OrderInfo storage order = orderInfos[msg.sender][rewardindex];		 
		if(!order.ishelp)
        {
			if(block.timestamp>=order.freeze_time && block.timestamp<order.freeze_time+2*interval) { 
                _flag=true;
		    }
			else {
                _flag=false;
            }
            dai.transferFrom(msg.sender, address(this), order.amount/2);
            orderInfos[msg.sender][rewardindex].ishelp=true;
            uint256 _token=_daiToTokens(order.amount/2);
            liquidityPool_daiAmount+=order.amount/2;
            if(balanceOf[dwctokenPool]>=_token) {
                liquidityPool_tokenAmount+=_token*90/100;        
                _transfer(dwctokenPool,communityHoldingFund, _token*10/100); 
                _transfer(dwctokenPool,liquidityPool, _token*90/100);
            }
            else {
                liquidityPool_tokenAmount-=_token;  
                _transfer(liquidityPool,communityHoldingFund, _token);
            }
            if(!_flag){
                order.reward_time=block.timestamp;
                order.isactive=true;
            }
		}
    }
   
    function _deposit(address userAddress,uint256 _amount) private {        
        
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);            
            _updateTeamNum(msg.sender,1);
        }  
        else {
            _updateTeamNum(msg.sender,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;
        uint256 _rate=coinRate();
        uint256 _token=_daiToTokens(_amount/2);
        liquidityPool_daiAmount+=_amount/2;
        if(balanceOf[dwctokenPool]>=_token) {
            liquidityPool_tokenAmount+=_token*90/100;        
            _transfer(dwctokenPool,communityHoldingFund, _token*10/100); 
            _transfer(dwctokenPool,liquidityPool, _token*90/100);
        }
        else {
            liquidityPool_tokenAmount-=_token;  
            _transfer(liquidityPool,communityHoldingFund, _token);
        }
        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp, 
            block.timestamp+15*interval, 
            block.timestamp,
            false,
            false,
            true,
            true,100,block.timestamp+20*interval,2
        ));
		_unfreezeReward(msg.sender, _amount);
        for(uint i=0;i<5;i++)
        {
            _transfer(communityHoldingFund,feewallet[i], _token*2*feePercents[i]/10000); 
        }
        _distributelevelreward(userAddress,_amount,_rate); 
        _distributeroyaltyreward(userAddress,_amount,_rate);        
        emit Deposit(userAddress,_amount,_token*2);
        
    }
    function _depositdwc(address userAddress,uint256 _amount) private {        
        
        address referrerAddress= users[userAddress].referrer;
        users[referrerAddress].directBusiness+=_amount;        
        if(users[userAddress].totalDeposit==0)        
        {
            users[referrerAddress].partnersCount++;
            users[referrerAddress].directIds.push(userAddress);
            _updateTeamNum(msg.sender,1);
        }  
        else {
            _updateTeamNum(msg.sender,0);
        }
        users[userAddress].totalDeposit +=_amount; 
        userscapping[userAddress].totalCapping +=_amount;  
        uint256 _rate=coinRate();        
        uint256 _token=_daiToTokens(_amount/2);

        users[userAddress].lastDeposit=_amount;
        orderInfos[userAddress].push(OrderInfo(
            _amount, 0,
            block.timestamp, 
            block.timestamp+15*interval, 
            block.timestamp,
            false,
            false,
            true,
            false,100,block.timestamp+20*interval,2
        ));
		_unfreezeReward(msg.sender, _amount);
        for(uint i=0;i<5;i++)
        {
            _transfer(communityHoldingFund,feewallet[i], _token*2*feePercents[i]/10000); 
        } 
        _distributelevelreward(userAddress,_amount,_rate); 
        _distributeroyaltyreward(userAddress,_amount,_rate);        
        emit Deposit(userAddress,_amount,_token*2);
        
    }
    function _distributelevelreward(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        for(uint8 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(userranks[upline].rank>=levelRank[i])
                {
                    if(users[upline].totalDeposit>0)
                    {                        
                        uint256 reward=_amount*levelPercents[i]/10000;                        
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].levelincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),2); 
                        }
                    }
                }
                upline = users[upline].referrer;                
            }else{
                break;
            }
        }
    }
    function _distributeroyaltyreward(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        uint levelranks=0;
        uint isbreak=0;
        uint256 differentincome=0;
        uint256 secondlevelincome=0;
        for(uint8 i = 0; i < 50; i++){            
            if(upline != address(0)){
                if(userranks[upline].rank==5 || userranks[upline].rank==6) {
                    if(levelranks==0)
                    {
                        if(userranks[upline].rank==6) {                   
                            differentincome=2;
                            secondlevelincome=1;
                            levelranks=5;
                        }
                        else {
                            differentincome=1;
                            secondlevelincome=2;
                            levelranks=6;
                        }
                    }
                    else {
                        if(userranks[upline].rank==levelranks) {                   
                            differentincome=secondlevelincome;
                            isbreak=1;                        
                        }
                    }
                    if(differentincome>0){
                        uint256 reward=_amount*differentincome/100;  
                        differentincome=0;                      
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].roraltyincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),3); 
                        }
                        if(isbreak==1 || upline == id1) break;
                    }
                }
                upline = users[upline].referrer;    
                        
            }else{
                break;
            }
        }
    }
    function _distributelevelwithdraw(address _user, uint256 _amount,uint256 _rate) private {
        address upline = users[_user].referrer;
        for(uint8 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(userranks[upline].rank>=levelRank[i])
                {
                    if(users[upline].totalDeposit>0)
                    {                        
                        uint256 reward=_amount*levelwPercents[i]/10000;                        
                        uint256 _remainingCapping=this.maxPayoutOf(upline);  
                        if(_remainingCapping>0)
                        {
                            if(_remainingCapping<reward){
                                reward=_remainingCapping;                        
                            }
                            users[upline].levelincome +=reward;                       
                            users[upline].totalreward +=reward; 
                            userscapping[upline].useCapping +=reward;
                            _transfer(communityHoldingFund,upline,reward*1e18/_rate);
                            emit Transaction(upline,_user,reward,(i+1),2); 
                        }
                    }
                }
                upline = users[upline].referrer;                
            }else{
                break;
            }
        }
    }
    function _calLevelNow(address _user) private {        
        uint256 totaldirect  = users[_user].partnersCount;
        uint256 directBusiness  = users[_user].directBusiness;
        uint currentRank = userranks[_user].rank;
        if(currentRank>=1 && currentRank<6){            
            uint nextRank = currentRank+1;
            (, uint256 otherTeam) = getTeamCount(_user);
            uint activedirect=getActiveCount(_user,1);
            if(activedirect>=map_ranks[nextRank].activedirect && otherTeam>=map_ranks[nextRank].activeteam){
                userranks[_user].rank = nextRank;
            }
            
        }else if(totaldirect>=5 && directBusiness>=1000e18 && currentRank==0){
            userranks[_user].rank=1;
        }
    }
    function getTeamCount(address _user) public view returns(uint256, uint256){        
        uint256 maxTeam;
        uint256 otherTeam;
        uint256 totalTeam;
        for(uint256 i = 0; i < users[_user].directIds.length; i++){
            uint256 userTotalTeam =users[users[_user].directIds[i]].teamCount+1;            
            totalTeam+=userTotalTeam;
            if(userTotalTeam > maxTeam){
                maxTeam = userTotalTeam;
            }
        }
        otherTeam = totalTeam-maxTeam;
        return(maxTeam, otherTeam);
    }
    function getActiveCount(address _user,uint _rank) public view returns(uint256){        
        uint256 activedirect=0;
        for(uint256 i = 0; i < users[_user].directIds.length; i++){
            if(userranks[users[_user].directIds[i]].rank >= _rank){
                activedirect += 1;
            }
        }
        return activedirect;
    }
    function _updateTeamNum(address _user,uint isnew) private {
        address upline = users[_user].referrer;
        for(uint256 i = 0; i < referDepth; i++){
            if(upline != address(0)){
                if(isnew==1)
                    users[upline].teamCount = users[upline].teamCount+1;
                _calLevelNow(upline);
                if(upline == id1) break;
                upline = users[upline].referrer;
            }else{
                break;
            }
        }
    }
	function _unfreezeReward(address _user, uint256 _amount) private {
        for(uint256 i = 0; i < orderInfos[_user].length; i++){
            OrderInfo storage order = orderInfos[_user][i];
            if(order.ishelp && order.isactive && _amount>= order.amount){
                if(_amount >= order.amount){
                    _amount -= order.amount;
					order.iswithdraw=true;
                }else{
                    _amount = 0;
					break;
                }
            }
        }
    }
    function _daiToTokens(uint256 _daiamount) public view returns(uint256)
    {
        return _daiamount*1e18/coinRate();      
    }
    function _tokensTodai(uint _tokenAmount) public view returns(uint)
    {
        return _tokenAmount*coinRate()/1e18;
    }
    
    function coinRate() public view returns(uint)
    {
        return liquidityPool_daiAmount*1e18/liquidityPool_tokenAmount;
    }
    function maxPayoutOf(address _user) external returns(uint256) {    
        inactivedHolding(_user);    
        if(userranks[_user].rank==0 || userranks[_user].rank==1)
            return (userscapping[_user].totalCapping*2-userscapping[_user].useCapping);
        else if(userranks[_user].rank==2 || userranks[_user].rank==3)
            return (userscapping[_user].totalCapping*3-userscapping[_user].useCapping);
        else if(userranks[_user].rank==4 || userranks[_user].rank==5)
            return (userscapping[_user].totalCapping*4-userscapping[_user].useCapping);
        else 
            return (userscapping[_user].totalCapping*5-userscapping[_user].useCapping);
    }
    function maxCapppingOf(address _user,uint256 _amount) view external returns(uint256) {        
        if(userranks[_user].rank==0 || userranks[_user].rank==1)
            return _amount*2;
        else if(userranks[_user].rank==2 || userranks[_user].rank==3)
            return _amount*3;
        else if(userranks[_user].rank==4 || userranks[_user].rank==5)
            return _amount*4;
        else 
            return _amount*5;
    }
    function inactivedHolding(address _user) public {
        for(uint256 i = 0; i < orderInfos[_user].length; i++){
    	    OrderInfo storage order = orderInfos[_user][i];
            if(!order.ishelp && order.isactive)
            {
    	    	if(block.timestamp>order.freeze_time+2*interval)
    	        {
    	    	    order.isactive=false;    
                    userscapping[_user].totalCapping-=order.amount;
                    uint256 maxcapping=this.maxCapppingOf(_user,order.amount);
                    if(userscapping[_user].useCapping>maxcapping){
                        userscapping[_user].useCapping=userscapping[_user].useCapping-maxcapping;
                    }
                    else {
                        userscapping[_user].useCapping=0;
                    }
                }  
    	    }
        }   
    }     
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }    
    function getOrderLength(address _user) external view returns(uint256) {
        return orderInfos[_user].length;
    }  
    function dailyPayoutOf(address _user,uint rewardindex) private returns(uint256) {
        
		uint256 reward=0;
        OrderInfo storage order = orderInfos[_user][rewardindex];
        uint256 _remainingCapping = this.maxPayoutOf(_user);             
        if(_remainingCapping>0)
        {
            uint period=(block.timestamp - order.reward_time) / timeStepdaily;
            if(period>200)
            period=200;
            uint256 dailypayout =(order.amount*order.dayRewardPercents*period / 10000); 
            if(_remainingCapping<dailypayout){
                dailypayout = _remainingCapping;                            
            }
            if(dailypayout>0)
            { 
                reward=dailypayout;
            }                    
        }
        else {
            order.isactive=false;
            userscapping[msg.sender].totalCapping-=order.amount;
        }
		return (reward);
    }
    function rewardWithdraw(uint rewardindex) public
    {
		OrderInfo storage order = orderInfos[msg.sender][rewardindex];
		if(order.isactive && order.iswithdraw && order.withdraw_time<block.timestamp){
            (uint256 dailypayout)=dailyPayoutOf(msg.sender,rewardindex); 
            uint256 _rate=coinRate();
		    users[msg.sender].reward +=dailypayout;
		    users[msg.sender].totalreward +=dailypayout;
            emit Transaction(msg.sender,msg.sender,dailypayout,1,1); 
			order.withdraw_time+=(order.withno)*10*interval;    
            order.withno+=1;
            order.holdingbonus=dailypayout;              
            users[msg.sender].totalwithdraw+=dailypayout;
            _transfer(communityHoldingFund,msg.sender,dailypayout*1e18/_rate);
            _distributelevelreward(msg.sender,dailypayout,_rate);
            
            emit Withdraw(msg.sender,dailypayout);
		}
    }
    function tokenSwap(uint256 _tokenAmount) public
    {
        require(msg.sender != dwctokenPool && msg.sender != communityHoldingFund && msg.sender != liquidityPool,"Access Denied");
        uint256 _dai;
		require(balanceOf[msg.sender]>=_tokenAmount, "Insufficient token balance!"); 
        uint256 deduction=_tokenAmount*2/100;
        if((_burnToken+deduction)>10000000e18){
            deduction=10000000e18-_burnToken;
        }
        if(deduction>0){      
            uint256 tokenAmount=_tokenAmount-deduction; 
            _dai=_tokensTodai(tokenAmount);
            liquidityPool_tokenAmount+=tokenAmount;
            liquidityPool_daiAmount-=_dai;
            _dai=_tokensTodai(tokenAmount);
            _transfer(msg.sender,liquidityPool,tokenAmount);
            dai.transfer(msg.sender, _dai); 
            _burnToken+=deduction;
            _burn(msg.sender,deduction);
            emit Transfer(msg.sender,address(0), deduction);
        }
        else {
            _dai=_tokensTodai(_tokenAmount);
            liquidityPool_tokenAmount+=_tokenAmount;
            liquidityPool_daiAmount-=_dai;
            _dai=_tokensTodai(_tokenAmount);
            _transfer(msg.sender,liquidityPool,_tokenAmount);
            dai.transfer(msg.sender, _dai);            
        }
        emit Swap(msg.sender,_tokenAmount,_dai);
    }
    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(msg.sender != dwctokenPool && msg.sender != communityHoldingFund && msg.sender != liquidityPool,"Access Denied");
        _transfer(msg.sender,_to,_value);
        return true;
    }
    function _transfer(address _from,address _to, uint256 _value) internal {
        require(balanceOf[_from] >= _value);
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(_from, _to, _value);
    }
    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }    
    function transferFrom(address _from,address _to,uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);
        _transfer(msg.sender,_to,_value);
        allowance[_from][msg.sender] -= _value;
        return true;
    }
    
    function burn(uint256 amount,address account) public returns (bool) {
        if (msg.sender != dwctokenPool) {revert("Access Denied");}
        _burn(account, amount);
        return true;
    }
    function _burn(address account, uint256 amount) internal virtual 
    {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = balanceOf[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        require(totalSupply>=amount, "Invalid amount of tokens!");
        balanceOf[account] = accountBalance - amount;        
        totalSupply -= amount;
    }
    function afterTenthYears(uint256 _amount) public
    {
        require(msg.sender==creater,"Only contract owner"); 
        require(block.timestamp>(timeLiquidityLock+3650 days),"Liquidity Locked for 10 years"); 
        require(_amount>0, "Insufficient reward to withdraw!");
        dai.transfer(msg.sender, _amount);  
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_daiAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"uint256","name":"userId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referrerId","type":"uint256"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"token","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"level","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Type","type":"uint8"}],"name":"Transaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_burnToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_daiamount","type":"uint256"}],"name":"_daiToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"_tokensTodai","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"afterTenthYears","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityHoldingFund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creater","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"deposit2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositdwc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dwctokenPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feewallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_rank","type":"uint256"}],"name":"getActiveCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getOrderLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getTeamCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"id1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"inactivedHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isUserExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUserId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool_daiAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool_tokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_ranks","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"activedirect","type":"uint256"},{"internalType":"uint256","name":"activeteam","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"maxCapppingOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"maxPayoutOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"orderInfos","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"holdingbonus","type":"uint256"},{"internalType":"uint256","name":"deposit_time","type":"uint256"},{"internalType":"uint256","name":"freeze_time","type":"uint256"},{"internalType":"uint256","name":"reward_time","type":"uint256"},{"internalType":"bool","name":"ishelp","type":"bool"},{"internalType":"bool","name":"iswithdraw","type":"bool"},{"internalType":"bool","name":"isactive","type":"bool"},{"internalType":"bool","name":"isdai","type":"bool"},{"internalType":"uint256","name":"dayRewardPercents","type":"uint256"},{"internalType":"uint256","name":"withdraw_time","type":"uint256"},{"internalType":"uint256","name":"withno","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardindex","type":"uint256"}],"name":"rewardWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"tokenSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userranks","outputs":[{"internalType":"uint256","name":"rank","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"partnersCount","type":"uint256"},{"internalType":"uint256","name":"teamCount","type":"uint256"},{"internalType":"uint256","name":"totalDeposit","type":"uint256"},{"internalType":"uint256","name":"lastDeposit","type":"uint256"},{"internalType":"uint256","name":"directBusiness","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"levelincome","type":"uint256"},{"internalType":"uint256","name":"roraltyincome","type":"uint256"},{"internalType":"uint256","name":"maturityincome","type":"uint256"},{"internalType":"uint256","name":"totalreward","type":"uint256"},{"internalType":"uint256","name":"totalwithdraw","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userscapping","outputs":[{"internalType":"uint256","name":"totalCapping","type":"uint256"},{"internalType":"uint256","name":"useCapping","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c0604052600360808190526244574360e81b60a090815262000026916001919062000b99565b506040805180820190915260038082526244574360e81b6020909201918252620000539160029162000b99565b506a1ae22487c1042af080000060039081556004805460ff19166012179055600d80546001600160a01b0319908116739ed2cfa3ebde315fdbfc60859f093e07a52d131f17909155600e80548216733bb195603e1ec562cfe406047b2718b4226cfa2a179055600f80548216735427f55e590f70be2967a891ea119e66c20262ff17905560108054821673d9845cee17f9aa07c507b6ad55eb93a9ad2221bc90811790915560118054909216179055604080516060810182527353888f004f49e78a41ace9261104956fe8c1199a81527391d1ebdeba71a59661c914c849f9df45c812cfaf602082015273fecc9357583a2f0b8dc62335447e62f5a882477a9181019190915262000168916013919062000c1e565b506040805160a08101825261012c8152603260208201819052918101829052606081018290526080810191909152620001a690601890600562000c77565b506002601d556001601f55604080516102a0810182526101f4815260c86020808301919091526064928201929092526032606082015260196080820181905260a0820152601460c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e0820181905261020082018190526102208201819052610240820181905261026082018190526102808201526200026e9190601562000cae565b50604080516102a0810182526103e88152606460208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526032610160820181905261018082018190526101a082018190526101c082018190526101e0820181905261020082018190526102208201819052610240820181905261026082018190526102808201526200032a90603590601562000cae565b50604080516102a08101825260008152600160208201819052918101919091526002606082018190526080820152600360a0820181905260c0820181905260e08201526004610100820181905261012082015260056101408201819052610160820181905261018082018190526101a082018190526101c082015260066101e082018190526102008201819052610220820181905261024082018190526102608201819052610280820152620003e590604a90601562000ce4565b50348015620003f357600080fd5b506040516200431638038062004316833981810160405260208110156200041957600080fd5b5051601280546001600160a01b03199081163317909155600080546001600160a01b0380851691909316178155600f805483168252605f6020908152604080842069152d02c7e14af680000090819055600e54861685528185206a1a60f85d30f2ae7740000090556010548616855281852069021e19e0c9bab24000009055601154861685528185206969e10de76676d08000009055925481519384529051941693600080516020620042f68339815191529281900390910190a3600e54604080516a1a60f85d30f2ae77400000815290516001600160a01b0390921691600091600080516020620042f6833981519152919081900360200190a36010546040805169021e19e0c9bab2400000815290516001600160a01b0390921691600091600080516020620042f6833981519152919081900360200190a3601154604080516969e10de76676d0800000815290516001600160a01b0390921691600091600080516020620042f6833981519152919081900360200190a36200059c62000d1a565b604051806101c001604052806001815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160401b0381118015620005e557600080fd5b5060405190808252806020026020018201604052801562000610578160200160208202803683370190505b508152681b1ae4d6e2ef500000602080830182905260408084019290925260006060808501829052608080860183905260a0860183905260c0860183905260e086018390526101008601839052610120909501829052600d546001600160a01b039081168352600584529184902086518155868401516001820180546001600160a01b031916919094161790925592850151600282015591840151600383015591830151805193945084939192620006d19260048501929091019062000d92565b5060a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d01559050506006806000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060000181905550681b1ae4d6e2ef50000060076000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000018190555060086000600d60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020604051806101800160405280681b1ae4d6e2ef500000815260200160008152602001428152602001610258600f0242018152602001428152602001600015158152602001600015158152602001600115158152602001600115158152602001606481526020016102586014024201815260200160028152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff02191690831515021790555061012082015181600601556101408201518160070155610160820151816008015550506040518060600160405280600181526020016005815260200160008152506009600060018152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060028152602001600281526020016023815250600960006002815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505060405180606001604052806003815260200160048152602001605081525060096000600381526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050506040518060600160405280600481526020016006815260200161015e8152506009600060048152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060058152602001600881526020016103e88152506009600060058152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050604051806060016040528060068152602001600a8152602001611388815250600960006006815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505069021e19e0c9bab2400000600a8190555069021e19e0c9bab2400000600b8190555042601e81905550505062000e21565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000bdc57805160ff191683800117855562000c0c565b8280016001018555821562000c0c579182015b8281111562000c0c57825182559160200191906001019062000bef565b5062000c1a92915062000de9565b5090565b826005810192821562000c69579160200282015b8281111562000c6957825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000c32565b5062000c1a92915062000e00565b826005810192821562000c0c579160200282015b8281111562000c0c578251829061ffff1690559160200191906001019062000c8b565b826015810192821562000c0c579160200282018281111562000c0c578251829061ffff1690559160200191906001019062000c8b565b826015810192821562000c0c579160200282015b8281111562000c0c578251829060ff1690559160200191906001019062000cf8565b604051806101c001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b82805482825590600052602060002090810192821562000c69579160200282018281111562000c6957825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000c32565b5b8082111562000c1a576000815560010162000dea565b5b8082111562000c1a5780546001600160a01b031916815560010162000e01565b6134c58062000e316000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c8063517999bc11610151578063a87430ba116100c3578063dd62ed3e11610087578063dd62ed3e14610823578063de6b8a2e14610851578063f4b9fa7514610877578063f571545b1461087f578063fa96bd9c14610887578063fcd3533c146108ad57610274565b8063a87430ba14610704578063a9059cbb14610797578063b6b55f25146107c3578063b842f3b6146107e0578063d9f01b7d146107fd57610274565b806371c757ec1161011557806371c757ec146106645780637fe0c526146106a35780639351a77a146106cf57806395d89b41146106d75780639e1c7a9f146106df578063a8365d16146106fc57610274565b8063517999bc1461058257806358cbcb7c1461058a57806360a1cbd7146105a7578063665a11ca1461063657806370a082311461063e57610274565b80632f057729116101ea57806345653a6d116101ae57806345653a6d146104f25780634a3be163146104fa5780634bdf3bf2146105265780634c0cc3661461054c5780634d79348a14610554578063509222cd1461055c57610274565b80632f05772914610463578063313ce56714610480578063348d44871461049e57806338c87f1a146104a65780634420e486146104cc57610274565b806310d931011161023c57806310d93101146103c457806318160ddd146103e157806320bdc7c7146103e9578063222f6182146103f15780632280b7a81461041057806323b872dd1461042d57610274565b806302fd7a031461027957806306fdde03146102a8578063095ea7b31461032557806309be8468146103655780630f322373146103a0575b600080fd5b6102966004803603602081101561028f57600080fd5b50356108d9565b60408051918252519081900360200190f35b6102b06108fe565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ea5781810151838201526020016102d2565b50505050905090810190601f1680156103175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103516004803603604081101561033b57600080fd5b506001600160a01b03813516906020013561098b565b604080519115158252519081900360200190f35b6103826004803603602081101561037b57600080fd5b50356109f2565b60408051938452602084019290925282820152519081900360600190f35b6103a8610a13565b604080516001600160a01b039092168252519081900360200190f35b6103a8600480360360208110156103da57600080fd5b5035610a22565b610296610a3f565b610296610a45565b61040e6004803603602081101561040757600080fd5b5035610a4b565b005b61040e6004803603602081101561042657600080fd5b5035610cbe565b6103516004803603606081101561044357600080fd5b506001600160a01b03813581169160208101359091169060400135610fed565b61040e6004803603602081101561047957600080fd5b503561105c565b61048861117a565b6040805160ff9092168252519081900360200190f35b610296611183565b61040e600480360360208110156104bc57600080fd5b50356001600160a01b0316611189565b61040e600480360360208110156104e257600080fd5b50356001600160a01b031661132e565b6103a861133b565b6102966004803603604081101561051057600080fd5b506001600160a01b03813516906020013561134a565b6102966004803603602081101561053c57600080fd5b50356001600160a01b031661143c565b6102966115b5565b6102966115bb565b6103516004803603602081101561057257600080fd5b50356001600160a01b03166115c1565b6103a86115de565b610296600480360360208110156105a057600080fd5b50356115ed565b6105d3600480360360408110156105bd57600080fd5b506001600160a01b038135169060200135611609565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955292151560a089015290151560c0880152151560e0870152151561010086015261012085015261014084015261016083015251908190036101800190f35b6103a8611691565b6102966004803603602081101561065457600080fd5b50356001600160a01b03166116a0565b61068a6004803603602081101561067a57600080fd5b50356001600160a01b03166116b2565b6040805192835260208301919091528051918290030190f35b610296600480360360408110156106b957600080fd5b506001600160a01b038135169060200135611761565b6103a86117f8565b6102b0611807565b61040e600480360360208110156106f557600080fd5b503561185f565b6103a86119e4565b61072a6004803603602081101561071a57600080fd5b50356001600160a01b03166119f3565b604080519d8e526001600160a01b03909c1660208e01528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b610351600480360360408110156107ad57600080fd5b506001600160a01b038135169060200135611a64565b61040e600480360360208110156107d957600080fd5b5035611af9565b61040e600480360360208110156107f657600080fd5b5035611c74565b6102966004803603602081101561081357600080fd5b50356001600160a01b0316611e06565b6102966004803603604081101561083957600080fd5b506001600160a01b0381358116916020013516611e18565b6102966004803603602081101561086757600080fd5b50356001600160a01b0316611e35565b6103a8611e50565b610296611e5f565b61068a6004803603602081101561089d57600080fd5b50356001600160a01b0316611e7e565b610351600480360360408110156108c357600080fd5b50803590602001356001600160a01b0316611e97565b60006108e3611e5f565b82670de0b6b3a764000002816108f557fe5b0490505b919050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b505050505081565b3360008181526060602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60096020526000908152604090208054600182015460029092015490919083565b6011546001600160a01b031681565b60138160058110610a2f57fe5b01546001600160a01b0316905081565b60035481565b600c5481565b610a54336115c1565b610a8f5760405162461bcd60e51b815260040180806020018281038252602381526020018061346d6023913960400191505060405180910390fd5b610a9833611189565b336000908152600860205260408120805482919084908110610ab657fe5b60009182526020909120600990910201600581015490915060ff16610cb95780600301544210158015610af0575060038101546104b00142105b15610afe5760019150610b03565b600091505b600080548254604080516323b872dd60e01b815233600482015230602482015260029092046044830152516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b505033600090815260086020526040902080546001919085908110610bad57fe5b60009182526020822060099190910201600501805460ff1916921515929092179091558154610be0906002905b046108d9565b8254600b805460029092049091019055600f546001600160a01b03166000908152605f60205260409020549091508111610c7257600a80546064605a84028190049091018255600f54600e54610c4b936001600160a01b039283169392909116919085025b04611ef3565b600f54601054610c6d916001600160a01b0390811691166064605a8502610c45565b610c98565b600a80548290039055601054600e54610c98916001600160a01b03908116911683611ef3565b82610cb75742600483015560058201805462ff00001916620100001790555b505b505050565b600f546001600160a01b03163314801590610ce45750600e546001600160a01b03163314155b8015610cfb57506010546001600160a01b03163314155b610d3c576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b336000908152605f6020526040812054821115610da0576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015290519081900360640190fd5b600c5460646002840204906a084595161401484a0000009082011115610dd25750600c546a084595161401484a000000035b8015610eec57808303610de4816115ed565b600a805483019055600b805482900390559250610e00816115ed565b601054909350610e1b9033906001600160a01b031683611ef3565b600080546040805163a9059cbb60e01b81523360048201526024810187905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610e7057600080fd5b505af1158015610e84573d6000803e3d6000fd5b505050506040513d6020811015610e9a57600080fd5b5050600c805483019055610eae3383611f84565b60408051838152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350610fae565b610ef5836115ed565b600a805485019055600b805482900390559150610f11836115ed565b601054909250610f2c9033906001600160a01b031685611ef3565b600080546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b505050506040513d6020811015610fab57600080fd5b50505b6040805184815260208101849052815133927f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a758928290030190a2505050565b6001600160a01b038316600090815260606020908152604080832033845290915281205482111561101d57600080fd5b611028338484611ef3565b506001600160a01b038316600090815260606020908152604080832033845290915290208054829003905560019392505050565b6000611067826108d9565b600e549091506110829033906001600160a01b031683611ef3565b3360009081526005602052604090206006015460029092029182108015906110b3575068056bc75e2d631000008210155b80156110c8575068056bc75e2d631000008206155b80156110de575069021e19e0c9bab24000008211155b61111f576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611128336115c1565b6111635760405162461bcd60e51b815260040180806020018281038252602381526020018061346d6023913960400191505060405180910390fd5b61116c33611189565b61117633836120a4565b5050565b60045460ff1681565b601d5481565b60005b6001600160a01b038216600090815260086020526040902054811015611176576001600160a01b03821660009081526008602052604081208054839081106111d057fe5b60009182526020909120600990910201600581015490915060ff161580156112025750600581015462010000900460ff165b156113255760038101546104b0014211156113255760058101805462ff00001916905580546001600160a01b038416600081815260076020908152604080832080549590950390945584548451634a3be16360e01b815260048101949094526024840152925190923092634a3be1639260448083019392829003018186803b15801561128d57600080fd5b505afa1580156112a1573d6000803e3d6000fd5b505050506040513d60208110156112b757600080fd5b50516001600160a01b038516600090815260076020526040902060010154909150811015611306576001600160a01b038416600090815260076020526040902060010180548290039055611323565b6001600160a01b0384166000908152600760205260408120600101555b505b5060010161118c565b6113383382612422565b50565b6012546001600160a01b031681565b6001600160a01b038216600090815260066020526040812054158061138757506001600160a01b0383166000908152600660205260409020546001145b156113965750600281026109ec565b6001600160a01b038316600090815260066020526040902054600214806113d557506001600160a01b0383166000908152600660205260409020546003145b156113e45750600381026109ec565b6001600160a01b0383166000908152600660205260409020546004148061142357506001600160a01b0383166000908152600660205260409020546005145b156114325750600481026109ec565b50600581026109ec565b600061144782611189565b6001600160a01b038216600090815260066020526040902054158061148457506001600160a01b0382166000908152600660205260409020546001145b156114b257506001600160a01b038116600090815260076020526040902060018101549054600202036108f9565b6001600160a01b038216600090815260066020526040902054600214806114f157506001600160a01b0382166000908152600660205260409020546003145b1561151f57506001600160a01b038116600090815260076020526040902060018101549054600302036108f9565b6001600160a01b0382166000908152600660205260409020546004148061155e57506001600160a01b0382166000908152600660205260409020546005145b1561158c57506001600160a01b038116600090815260076020526040902060018101549054600402036108f9565b506001600160a01b038116600090815260076020526040902060018101549054600502036108f9565b600b5481565b600a5481565b6001600160a01b0316600090815260056020526040902054151590565b600d546001600160a01b031681565b6000670de0b6b3a7640000611600611e5f565b8302816108f557fe5b6008602052816000526040600020818154811061162257fe5b600091825260209091206009909102018054600182015460028301546003840154600485015460058601546006870154600788015460089098015496995094975092959194909360ff80851694610100810482169462010000820483169463010000009092049092169291908c565b6010546001600160a01b031681565b605f6020526000908152604090205481565b600080808080805b6001600160a01b038716600090815260056020526040902060040154811015611752576001600160a01b0387166000908152600560208190526040822060040180548391908590811061170957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003015492830160019081019301905084811115611749578094505b506001016116ba565b50919350508290039050915091565b600080805b6001600160a01b0385166000908152600560205260409020600401548110156117f0576001600160a01b0385166000908152600560205260408120600401805486926006929091859081106117b757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054106117e8576001820191505b600101611766565b509392505050565b600f546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156109835780601f1061095857610100808354040283529160200191610983565b6012546001600160a01b031633146118b4576040805162461bcd60e51b815260206004820152601360248201527227b7363c9031b7b73a3930b1ba1037bbb732b960691b604482015290519081900360640190fd5b601e546312cc0300014211611910576040805162461bcd60e51b815260206004820152601d60248201527f4c6971756964697479204c6f636b656420666f72203130207965617273000000604482015290519081900360640190fd5b60008111611965576040805162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742072657761726420746f20776974686472617721604482015290519081900360640190fd5b600080546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505050506040513d6020811015610cb957600080fd5b600e546001600160a01b031681565b60056020819052600091825260409091208054600182015460028301546003840154948401546006850154600786015460088701546009880154600a890154600b8a0154600c8b0154600d909b0154999b6001600160a01b039099169a97999697959694959394929391929091908d565b600f546000906001600160a01b03163314801590611a8d5750600e546001600160a01b03163314155b8015611aa457506010546001600160a01b03163314155b611ae5576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611af0338484611ef3565b50600192915050565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015611b5457600080fd5b505af1158015611b68573d6000803e3d6000fd5b505050506040513d6020811015611b7e57600080fd5b5050336000908152600560205260409020600601546002909102908110801590611bb1575068056bc75e2d631000008110155b8015611bc6575068056bc75e2d631000008106155b8015611bdc575069021e19e0c9bab24000008111155b611c1d576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611c26336115c1565b611c615760405162461bcd60e51b815260040180806020018281038252602381526020018061346d6023913960400191505060405180910390fd5b611c6a33611189565b61133833826126eb565b336000908152600860205260408120805483908110611c8f57fe5b906000526020600020906009020190508060050160029054906101000a900460ff168015611cc657506005810154610100900460ff165b8015611cd55750428160070154105b15611176576000611ce63384612a8c565b90506000611cf2611e5f565b3360008181526005602090815260409182902060088101805488019055600c0180548701905581518681526001918101829052808301919091529051929350909182917fd37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb712919081900360600190a3600883018054600785018054611770830201905560019081019091558301829055336000818152600560205260409020600d01805484019055600e54611dbf916001600160a01b039091169083670de0b6b3a7640000860281610c4557fe5b611dca338383612bc9565b60408051838152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a250505050565b60066020526000908152604090205481565b606060209081526000928352604080842090915290825290205481565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b031681565b6000600a54600b54670de0b6b3a76400000281611e7857fe5b04905090565b6007602052600090815260409020805460019091015482565b600f546000906001600160a01b03163314611ee9576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611af08284611f84565b6001600160a01b0383166000908152605f6020526040902054811115611f1857600080fd5b6001600160a01b038084166000818152605f6020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050565b6001600160a01b038216611fc95760405162461bcd60e51b815260040180806020018281038252602181526020018061344c6021913960400191505060405180910390fd5b6001600160a01b0382166000908152605f6020526040902054818110156120215760405162461bcd60e51b815260040180806020018281038252602281526020018061342a6022913960400191505060405180910390fd5b816003541015612078576040805162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015290519081900360640190fd5b6001600160a01b039092166000908152605f602052604090209181900390915560038054919091039055565b6001600160a01b0380831660008181526005602081905260408083206001810154909516808452908320600701805487019055929091529190910154612147576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612142903390612dfa565b612152565b612152336000612dfa565b6001600160a01b038316600090815260056020818152604080842090920180548601905560079052812080548401905561218a611e5f565b90506000612199600285610bda565b90508360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b0316815260200190815260200160002060405180610180016040528086815260200160008152602001428152602001610258600f0242018152602001428152602001600015158152602001600015158152602001600115158152602001600015158152602001606481526020016102586014024201815260200160028152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff02191690831515021790555061012082015181600601556101408201518160070155610160820151816008015550506123653385612eb7565b60005b60058110156123bf57600e546123b7906001600160a01b03166013836005811061238e57fe5b01546001600160a01b0316612710601885600581106123a957fe5b0154866002020281610c4557fe5b600101612368565b506123cb858584612bc9565b6123d6858584612f78565b6040805185815260028302602082015281516001600160a01b038816927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a25050505050565b61242b826115c1565b1561246b576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b612474816115c1565b6124bb576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6124c361332d565b604051806101c00160405280601d548152602001836001600160a01b031681526020016000815260200160008152602001600067ffffffffffffffff8111801561250c57600080fd5b50604051908082528060200260200182016040528015612536578160200160208202803683370190505b5081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090508060056000856001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003015560808201518160040190805190602001906126089291906133a5565b5060a082015160058281019190915560c0830151600683015560e0830151600783015561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a090920151600d909101556001600160a01b03848116600081815260209384526040808220600180820180546001600160a01b031916968a169687179055601d805490910190555484835291819020548151908152905191947f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a92918290030190a4505050565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461278e576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612789903390612dfa565b612799565b612799336000612dfa565b6001600160a01b03831660009081526005602081815260408084209092018054860190556007905281208054840190556127d1611e5f565b905060006127e0600285610bda565b600b805460028704019055600f546001600160a01b03166000908152605f6020526040902054909150811161286b57600a80546064605a84028190049091018255600f54600e54612844936001600160a01b03928316939290911691908502610c45565b600f54601054612866916001600160a01b0390811691166064605a8502610c45565b612891565b600a80548290039055601054600e54612891916001600160a01b03908116911683611ef3565b8360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b0316815260200190815260200160002060405180610180016040528086815260200160008152602001428152602001610258600f0242018152602001428152602001600015158152602001600015158152602001600115158152602001600115158152602001606481526020016102586014024201815260200160028152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160060155610140820151816007015561016082015181600801555050612a5b3385612eb7565b60005b60058110156123bf57600e54612a84906001600160a01b03166013836005811061238e57fe5b600101612a5e565b6001600160a01b038216600090815260086020526040812080548291829185908110612ab457fe5b906000526020600020906009020190506000306001600160a01b0316634bdf3bf2876040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612b1557600080fd5b505af1158015612b29573d6000803e3d6000fd5b505050506040513d6020811015612b3f57600080fd5b505190508015612b975760006102588360040154420381612b5c57fe5b04905060c8811115612b6c575060c85b60068301548354612710910282020480831015612b865750815b8015612b90578094505b5050612bbf565b60058201805462ff000019169055815433600090815260076020526040902080549190910390555b5090949350505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015612df3576001600160a01b03821615612de657604a8160ff1660158110612c1657fe5b01546001600160a01b03831660009081526006602052604090205410612dc0576001600160a01b0382166000908152600560208190526040909120015415612dc057600061271060208360ff1660158110612c6d57fe5b0154860281612c7857fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050506040513d6020811015612cf657600080fd5b505190508015612dbd5781811015612d0c578091505b6001600160a01b03808516600090815260056020908152604080832060098101805488019055600c0180548701905560079091529020600101805484019055600e54612d6791168587670de0b6b3a7640000860281610c4557fe5b6040805183815260ff6001860116602082015260028183015290516001600160a01b03808a1692908716917fd37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb7129181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690612deb565b612df3565b600101612beb565b5050505050565b6001600160a01b03808316600090815260056020526040812060010154909116905b6015811015610cb7576001600160a01b03821615612eaa578260011415612e60576001600160a01b0382166000908152600560205260409020600301805460010190555b612e6982613223565b600d546001600160a01b0383811691161415612e8457610cb7565b6001600160a01b0391821660009081526005602052604090206001015490911690612eaf565b610cb7565b600101612e1c565b60005b6001600160a01b038316600090815260086020526040902054811015610cb9576001600160a01b0383166000908152600860205260408120805483908110612efe57fe5b60009182526020909120600990910201600581015490915060ff168015612f2f5750600581015462010000900460ff165b8015612f3c575080548310155b15612f6f5780548310612f6557805460058201805461ff00191661010017905590920391612f6f565b6000925050610cb9565b50600101612eba565b6001600160a01b0380841660009081526005602052604081206001015490911690808080805b60328160ff161015613218576001600160a01b0386161561320b576001600160a01b03861660009081526006602052604090205460051480612ff957506001600160a01b038616600090815260066020819052604090912054145b156131e55784613048576001600160a01b038616600090815260066020819052604090912054141561303657600292506001915060059450613043565b6001925060029150600694505b613070565b6001600160a01b03861660009081526006602052604090205485141561307057819250600193505b82156131e557604080516325ef9df960e11b81526001600160a01b038816600482015290516000946064908b02049185913091634bdf3bf291602480830192602092919082900301818787803b1580156130c957600080fd5b505af11580156130dd573d6000803e3d6000fd5b505050506040513d60208110156130f357600080fd5b5051905080156131ba5781811015613109578091505b6001600160a01b038089166000908152600560209081526040808320600a8101805488019055600c0180548701905560079091529020600101805484019055600e546131649116898b670de0b6b3a7640000860281610c4557fe5b6040805183815260ff6001860116602082015260038183015290516001600160a01b03808e1692908b16917fd37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb7129181900360600190a35b85600114806131d65750600d546001600160a01b038981169116145b156131e2575050613218565b50505b6001600160a01b0395861660009081526005602052604090206001015490951694613210565b613218565b600101612f9e565b505050505050505050565b6001600160a01b038116600090815260056020908152604080832060028101546007909101546006909352922054600181108015906132625750600681105b156132e457600181016000613276866116b2565b9150506000613286876001611761565b60008481526009602052604090206001015490915081108015906132bb57506000838152600960205260409020600201548210155b156132dc576001600160a01b03871660009081526006602052604090208390555b505050610cb7565b600583101580156132fe5750683635c9adc5dea000008210155b8015613308575080155b15610cb7575050506001600160a01b0316600090815260066020526040902060019055565b604051806101c001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156133fa579160200282015b828111156133fa57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906133c5565b5061340692915061340a565b5090565b5b808211156134065780546001600160a01b031916815560010161340b56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737375736572206973206e6f74206578697374732e2052656769737465722066697273742ea2646970667358221220d1b30db76a05626de940949403e3297dee9294740dabc7a51a34ffd59c392eb964736f6c634300060c0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102745760003560e01c8063517999bc11610151578063a87430ba116100c3578063dd62ed3e11610087578063dd62ed3e14610823578063de6b8a2e14610851578063f4b9fa7514610877578063f571545b1461087f578063fa96bd9c14610887578063fcd3533c146108ad57610274565b8063a87430ba14610704578063a9059cbb14610797578063b6b55f25146107c3578063b842f3b6146107e0578063d9f01b7d146107fd57610274565b806371c757ec1161011557806371c757ec146106645780637fe0c526146106a35780639351a77a146106cf57806395d89b41146106d75780639e1c7a9f146106df578063a8365d16146106fc57610274565b8063517999bc1461058257806358cbcb7c1461058a57806360a1cbd7146105a7578063665a11ca1461063657806370a082311461063e57610274565b80632f057729116101ea57806345653a6d116101ae57806345653a6d146104f25780634a3be163146104fa5780634bdf3bf2146105265780634c0cc3661461054c5780634d79348a14610554578063509222cd1461055c57610274565b80632f05772914610463578063313ce56714610480578063348d44871461049e57806338c87f1a146104a65780634420e486146104cc57610274565b806310d931011161023c57806310d93101146103c457806318160ddd146103e157806320bdc7c7146103e9578063222f6182146103f15780632280b7a81461041057806323b872dd1461042d57610274565b806302fd7a031461027957806306fdde03146102a8578063095ea7b31461032557806309be8468146103655780630f322373146103a0575b600080fd5b6102966004803603602081101561028f57600080fd5b50356108d9565b60408051918252519081900360200190f35b6102b06108fe565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ea5781810151838201526020016102d2565b50505050905090810190601f1680156103175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103516004803603604081101561033b57600080fd5b506001600160a01b03813516906020013561098b565b604080519115158252519081900360200190f35b6103826004803603602081101561037b57600080fd5b50356109f2565b60408051938452602084019290925282820152519081900360600190f35b6103a8610a13565b604080516001600160a01b039092168252519081900360200190f35b6103a8600480360360208110156103da57600080fd5b5035610a22565b610296610a3f565b610296610a45565b61040e6004803603602081101561040757600080fd5b5035610a4b565b005b61040e6004803603602081101561042657600080fd5b5035610cbe565b6103516004803603606081101561044357600080fd5b506001600160a01b03813581169160208101359091169060400135610fed565b61040e6004803603602081101561047957600080fd5b503561105c565b61048861117a565b6040805160ff9092168252519081900360200190f35b610296611183565b61040e600480360360208110156104bc57600080fd5b50356001600160a01b0316611189565b61040e600480360360208110156104e257600080fd5b50356001600160a01b031661132e565b6103a861133b565b6102966004803603604081101561051057600080fd5b506001600160a01b03813516906020013561134a565b6102966004803603602081101561053c57600080fd5b50356001600160a01b031661143c565b6102966115b5565b6102966115bb565b6103516004803603602081101561057257600080fd5b50356001600160a01b03166115c1565b6103a86115de565b610296600480360360208110156105a057600080fd5b50356115ed565b6105d3600480360360408110156105bd57600080fd5b506001600160a01b038135169060200135611609565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955292151560a089015290151560c0880152151560e0870152151561010086015261012085015261014084015261016083015251908190036101800190f35b6103a8611691565b6102966004803603602081101561065457600080fd5b50356001600160a01b03166116a0565b61068a6004803603602081101561067a57600080fd5b50356001600160a01b03166116b2565b6040805192835260208301919091528051918290030190f35b610296600480360360408110156106b957600080fd5b506001600160a01b038135169060200135611761565b6103a86117f8565b6102b0611807565b61040e600480360360208110156106f557600080fd5b503561185f565b6103a86119e4565b61072a6004803603602081101561071a57600080fd5b50356001600160a01b03166119f3565b604080519d8e526001600160a01b03909c1660208e01528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b610351600480360360408110156107ad57600080fd5b506001600160a01b038135169060200135611a64565b61040e600480360360208110156107d957600080fd5b5035611af9565b61040e600480360360208110156107f657600080fd5b5035611c74565b6102966004803603602081101561081357600080fd5b50356001600160a01b0316611e06565b6102966004803603604081101561083957600080fd5b506001600160a01b0381358116916020013516611e18565b6102966004803603602081101561086757600080fd5b50356001600160a01b0316611e35565b6103a8611e50565b610296611e5f565b61068a6004803603602081101561089d57600080fd5b50356001600160a01b0316611e7e565b610351600480360360408110156108c357600080fd5b50803590602001356001600160a01b0316611e97565b60006108e3611e5f565b82670de0b6b3a764000002816108f557fe5b0490505b919050565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109835780601f1061095857610100808354040283529160200191610983565b820191906000526020600020905b81548152906001019060200180831161096657829003601f168201915b505050505081565b3360008181526060602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60096020526000908152604090208054600182015460029092015490919083565b6011546001600160a01b031681565b60138160058110610a2f57fe5b01546001600160a01b0316905081565b60035481565b600c5481565b610a54336115c1565b610a8f5760405162461bcd60e51b815260040180806020018281038252602381526020018061346d6023913960400191505060405180910390fd5b610a9833611189565b336000908152600860205260408120805482919084908110610ab657fe5b60009182526020909120600990910201600581015490915060ff16610cb95780600301544210158015610af0575060038101546104b00142105b15610afe5760019150610b03565b600091505b600080548254604080516323b872dd60e01b815233600482015230602482015260029092046044830152516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b505033600090815260086020526040902080546001919085908110610bad57fe5b60009182526020822060099190910201600501805460ff1916921515929092179091558154610be0906002905b046108d9565b8254600b805460029092049091019055600f546001600160a01b03166000908152605f60205260409020549091508111610c7257600a80546064605a84028190049091018255600f54600e54610c4b936001600160a01b039283169392909116919085025b04611ef3565b600f54601054610c6d916001600160a01b0390811691166064605a8502610c45565b610c98565b600a80548290039055601054600e54610c98916001600160a01b03908116911683611ef3565b82610cb75742600483015560058201805462ff00001916620100001790555b505b505050565b600f546001600160a01b03163314801590610ce45750600e546001600160a01b03163314155b8015610cfb57506010546001600160a01b03163314155b610d3c576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b336000908152605f6020526040812054821115610da0576040805162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015290519081900360640190fd5b600c5460646002840204906a084595161401484a0000009082011115610dd25750600c546a084595161401484a000000035b8015610eec57808303610de4816115ed565b600a805483019055600b805482900390559250610e00816115ed565b601054909350610e1b9033906001600160a01b031683611ef3565b600080546040805163a9059cbb60e01b81523360048201526024810187905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610e7057600080fd5b505af1158015610e84573d6000803e3d6000fd5b505050506040513d6020811015610e9a57600080fd5b5050600c805483019055610eae3383611f84565b60408051838152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350610fae565b610ef5836115ed565b600a805485019055600b805482900390559150610f11836115ed565b601054909250610f2c9033906001600160a01b031685611ef3565b600080546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b505050506040513d6020811015610fab57600080fd5b50505b6040805184815260208101849052815133927f77f92a1b6a1a11de8ca49515ad4c1fad45632dd3442167d74b90b304a3c7a758928290030190a2505050565b6001600160a01b038316600090815260606020908152604080832033845290915281205482111561101d57600080fd5b611028338484611ef3565b506001600160a01b038316600090815260606020908152604080832033845290915290208054829003905560019392505050565b6000611067826108d9565b600e549091506110829033906001600160a01b031683611ef3565b3360009081526005602052604090206006015460029092029182108015906110b3575068056bc75e2d631000008210155b80156110c8575068056bc75e2d631000008206155b80156110de575069021e19e0c9bab24000008211155b61111f576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611128336115c1565b6111635760405162461bcd60e51b815260040180806020018281038252602381526020018061346d6023913960400191505060405180910390fd5b61116c33611189565b61117633836120a4565b5050565b60045460ff1681565b601d5481565b60005b6001600160a01b038216600090815260086020526040902054811015611176576001600160a01b03821660009081526008602052604081208054839081106111d057fe5b60009182526020909120600990910201600581015490915060ff161580156112025750600581015462010000900460ff165b156113255760038101546104b0014211156113255760058101805462ff00001916905580546001600160a01b038416600081815260076020908152604080832080549590950390945584548451634a3be16360e01b815260048101949094526024840152925190923092634a3be1639260448083019392829003018186803b15801561128d57600080fd5b505afa1580156112a1573d6000803e3d6000fd5b505050506040513d60208110156112b757600080fd5b50516001600160a01b038516600090815260076020526040902060010154909150811015611306576001600160a01b038416600090815260076020526040902060010180548290039055611323565b6001600160a01b0384166000908152600760205260408120600101555b505b5060010161118c565b6113383382612422565b50565b6012546001600160a01b031681565b6001600160a01b038216600090815260066020526040812054158061138757506001600160a01b0383166000908152600660205260409020546001145b156113965750600281026109ec565b6001600160a01b038316600090815260066020526040902054600214806113d557506001600160a01b0383166000908152600660205260409020546003145b156113e45750600381026109ec565b6001600160a01b0383166000908152600660205260409020546004148061142357506001600160a01b0383166000908152600660205260409020546005145b156114325750600481026109ec565b50600581026109ec565b600061144782611189565b6001600160a01b038216600090815260066020526040902054158061148457506001600160a01b0382166000908152600660205260409020546001145b156114b257506001600160a01b038116600090815260076020526040902060018101549054600202036108f9565b6001600160a01b038216600090815260066020526040902054600214806114f157506001600160a01b0382166000908152600660205260409020546003145b1561151f57506001600160a01b038116600090815260076020526040902060018101549054600302036108f9565b6001600160a01b0382166000908152600660205260409020546004148061155e57506001600160a01b0382166000908152600660205260409020546005145b1561158c57506001600160a01b038116600090815260076020526040902060018101549054600402036108f9565b506001600160a01b038116600090815260076020526040902060018101549054600502036108f9565b600b5481565b600a5481565b6001600160a01b0316600090815260056020526040902054151590565b600d546001600160a01b031681565b6000670de0b6b3a7640000611600611e5f565b8302816108f557fe5b6008602052816000526040600020818154811061162257fe5b600091825260209091206009909102018054600182015460028301546003840154600485015460058601546006870154600788015460089098015496995094975092959194909360ff80851694610100810482169462010000820483169463010000009092049092169291908c565b6010546001600160a01b031681565b605f6020526000908152604090205481565b600080808080805b6001600160a01b038716600090815260056020526040902060040154811015611752576001600160a01b0387166000908152600560208190526040822060040180548391908590811061170957fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206003015492830160019081019301905084811115611749578094505b506001016116ba565b50919350508290039050915091565b600080805b6001600160a01b0385166000908152600560205260409020600401548110156117f0576001600160a01b0385166000908152600560205260408120600401805486926006929091859081106117b757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054106117e8576001820191505b600101611766565b509392505050565b600f546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156109835780601f1061095857610100808354040283529160200191610983565b6012546001600160a01b031633146118b4576040805162461bcd60e51b815260206004820152601360248201527227b7363c9031b7b73a3930b1ba1037bbb732b960691b604482015290519081900360640190fd5b601e546312cc0300014211611910576040805162461bcd60e51b815260206004820152601d60248201527f4c6971756964697479204c6f636b656420666f72203130207965617273000000604482015290519081900360640190fd5b60008111611965576040805162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742072657761726420746f20776974686472617721604482015290519081900360640190fd5b600080546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b1580156119ba57600080fd5b505af11580156119ce573d6000803e3d6000fd5b505050506040513d6020811015610cb957600080fd5b600e546001600160a01b031681565b60056020819052600091825260409091208054600182015460028301546003840154948401546006850154600786015460088701546009880154600a890154600b8a0154600c8b0154600d909b0154999b6001600160a01b039099169a97999697959694959394929391929091908d565b600f546000906001600160a01b03163314801590611a8d5750600e546001600160a01b03163314155b8015611aa457506010546001600160a01b03163314155b611ae5576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611af0338484611ef3565b50600192915050565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015611b5457600080fd5b505af1158015611b68573d6000803e3d6000fd5b505050506040513d6020811015611b7e57600080fd5b5050336000908152600560205260409020600601546002909102908110801590611bb1575068056bc75e2d631000008110155b8015611bc6575068056bc75e2d631000008106155b8015611bdc575069021e19e0c9bab24000008111155b611c1d576040805162461bcd60e51b815260206004820152600d60248201526c3632b9b9903a3430b71036b4b760991b604482015290519081900360640190fd5b611c26336115c1565b611c615760405162461bcd60e51b815260040180806020018281038252602381526020018061346d6023913960400191505060405180910390fd5b611c6a33611189565b61133833826126eb565b336000908152600860205260408120805483908110611c8f57fe5b906000526020600020906009020190508060050160029054906101000a900460ff168015611cc657506005810154610100900460ff165b8015611cd55750428160070154105b15611176576000611ce63384612a8c565b90506000611cf2611e5f565b3360008181526005602090815260409182902060088101805488019055600c0180548701905581518681526001918101829052808301919091529051929350909182917fd37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb712919081900360600190a3600883018054600785018054611770830201905560019081019091558301829055336000818152600560205260409020600d01805484019055600e54611dbf916001600160a01b039091169083670de0b6b3a7640000860281610c4557fe5b611dca338383612bc9565b60408051838152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a250505050565b60066020526000908152604090205481565b606060209081526000928352604080842090915290825290205481565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b031681565b6000600a54600b54670de0b6b3a76400000281611e7857fe5b04905090565b6007602052600090815260409020805460019091015482565b600f546000906001600160a01b03163314611ee9576040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc811195b9a5959609a1b604482015290519081900360640190fd5b611af08284611f84565b6001600160a01b0383166000908152605f6020526040902054811115611f1857600080fd5b6001600160a01b038084166000818152605f6020908152604080832080548790039055938616808352918490208054860190558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050565b6001600160a01b038216611fc95760405162461bcd60e51b815260040180806020018281038252602181526020018061344c6021913960400191505060405180910390fd5b6001600160a01b0382166000908152605f6020526040902054818110156120215760405162461bcd60e51b815260040180806020018281038252602281526020018061342a6022913960400191505060405180910390fd5b816003541015612078576040805162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015290519081900360640190fd5b6001600160a01b039092166000908152605f602052604090209181900390915560038054919091039055565b6001600160a01b0380831660008181526005602081905260408083206001810154909516808452908320600701805487019055929091529190910154612147576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612142903390612dfa565b612152565b612152336000612dfa565b6001600160a01b038316600090815260056020818152604080842090920180548601905560079052812080548401905561218a611e5f565b90506000612199600285610bda565b90508360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b0316815260200190815260200160002060405180610180016040528086815260200160008152602001428152602001610258600f0242018152602001428152602001600015158152602001600015158152602001600115158152602001600015158152602001606481526020016102586014024201815260200160028152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff02191690831515021790555061012082015181600601556101408201518160070155610160820151816008015550506123653385612eb7565b60005b60058110156123bf57600e546123b7906001600160a01b03166013836005811061238e57fe5b01546001600160a01b0316612710601885600581106123a957fe5b0154866002020281610c4557fe5b600101612368565b506123cb858584612bc9565b6123d6858584612f78565b6040805185815260028302602082015281516001600160a01b038816927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a25050505050565b61242b826115c1565b1561246b576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b612474816115c1565b6124bb576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b6124c361332d565b604051806101c00160405280601d548152602001836001600160a01b031681526020016000815260200160008152602001600067ffffffffffffffff8111801561250c57600080fd5b50604051908082528060200260200182016040528015612536578160200160208202803683370190505b5081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090508060056000856001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201556060820151816003015560808201518160040190805190602001906126089291906133a5565b5060a082015160058281019190915560c0830151600683015560e0830151600783015561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a090920151600d909101556001600160a01b03848116600081815260209384526040808220600180820180546001600160a01b031916968a169687179055601d805490910190555484835291819020548151908152905191947f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a92918290030190a4505050565b6001600160a01b038083166000818152600560208190526040808320600181015490951680845290832060070180548701905592909152919091015461278e576001600160a01b03818116600090815260056020908152604082206002810180546001908101909155600490910180548083018255908452919092200180546001600160a01b03191692861692909217909155612789903390612dfa565b612799565b612799336000612dfa565b6001600160a01b03831660009081526005602081815260408084209092018054860190556007905281208054840190556127d1611e5f565b905060006127e0600285610bda565b600b805460028704019055600f546001600160a01b03166000908152605f6020526040902054909150811161286b57600a80546064605a84028190049091018255600f54600e54612844936001600160a01b03928316939290911691908502610c45565b600f54601054612866916001600160a01b0390811691166064605a8502610c45565b612891565b600a80548290039055601054600e54612891916001600160a01b03908116911683611ef3565b8360056000876001600160a01b03166001600160a01b031681526020019081526020016000206006018190555060086000866001600160a01b03166001600160a01b0316815260200190815260200160002060405180610180016040528086815260200160008152602001428152602001610258600f0242018152602001428152602001600015158152602001600015158152602001600115158152602001600115158152602001606481526020016102586014024201815260200160028152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e08201518160050160026101000a81548160ff0219169083151502179055506101008201518160050160036101000a81548160ff0219169083151502179055506101208201518160060155610140820151816007015561016082015181600801555050612a5b3385612eb7565b60005b60058110156123bf57600e54612a84906001600160a01b03166013836005811061238e57fe5b600101612a5e565b6001600160a01b038216600090815260086020526040812080548291829185908110612ab457fe5b906000526020600020906009020190506000306001600160a01b0316634bdf3bf2876040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612b1557600080fd5b505af1158015612b29573d6000803e3d6000fd5b505050506040513d6020811015612b3f57600080fd5b505190508015612b975760006102588360040154420381612b5c57fe5b04905060c8811115612b6c575060c85b60068301548354612710910282020480831015612b865750815b8015612b90578094505b5050612bbf565b60058201805462ff000019169055815433600090815260076020526040902080549190910390555b5090949350505050565b6001600160a01b03808416600090815260056020526040812060010154909116905b60158160ff161015612df3576001600160a01b03821615612de657604a8160ff1660158110612c1657fe5b01546001600160a01b03831660009081526006602052604090205410612dc0576001600160a01b0382166000908152600560208190526040909120015415612dc057600061271060208360ff1660158110612c6d57fe5b0154860281612c7857fe5b0490506000306001600160a01b0316634bdf3bf2856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505050506040513d6020811015612cf657600080fd5b505190508015612dbd5781811015612d0c578091505b6001600160a01b03808516600090815260056020908152604080832060098101805488019055600c0180548701905560079091529020600101805484019055600e54612d6791168587670de0b6b3a7640000860281610c4557fe5b6040805183815260ff6001860116602082015260028183015290516001600160a01b03808a1692908716917fd37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb7129181900360600190a35b50505b6001600160a01b0391821660009081526005602052604090206001015490911690612deb565b612df3565b600101612beb565b5050505050565b6001600160a01b03808316600090815260056020526040812060010154909116905b6015811015610cb7576001600160a01b03821615612eaa578260011415612e60576001600160a01b0382166000908152600560205260409020600301805460010190555b612e6982613223565b600d546001600160a01b0383811691161415612e8457610cb7565b6001600160a01b0391821660009081526005602052604090206001015490911690612eaf565b610cb7565b600101612e1c565b60005b6001600160a01b038316600090815260086020526040902054811015610cb9576001600160a01b0383166000908152600860205260408120805483908110612efe57fe5b60009182526020909120600990910201600581015490915060ff168015612f2f5750600581015462010000900460ff165b8015612f3c575080548310155b15612f6f5780548310612f6557805460058201805461ff00191661010017905590920391612f6f565b6000925050610cb9565b50600101612eba565b6001600160a01b0380841660009081526005602052604081206001015490911690808080805b60328160ff161015613218576001600160a01b0386161561320b576001600160a01b03861660009081526006602052604090205460051480612ff957506001600160a01b038616600090815260066020819052604090912054145b156131e55784613048576001600160a01b038616600090815260066020819052604090912054141561303657600292506001915060059450613043565b6001925060029150600694505b613070565b6001600160a01b03861660009081526006602052604090205485141561307057819250600193505b82156131e557604080516325ef9df960e11b81526001600160a01b038816600482015290516000946064908b02049185913091634bdf3bf291602480830192602092919082900301818787803b1580156130c957600080fd5b505af11580156130dd573d6000803e3d6000fd5b505050506040513d60208110156130f357600080fd5b5051905080156131ba5781811015613109578091505b6001600160a01b038089166000908152600560209081526040808320600a8101805488019055600c0180548701905560079091529020600101805484019055600e546131649116898b670de0b6b3a7640000860281610c4557fe5b6040805183815260ff6001860116602082015260038183015290516001600160a01b03808e1692908b16917fd37adea57de2e02e4fdb7fee1f759f58571fbe14c10408e0d894042689edb7129181900360600190a35b85600114806131d65750600d546001600160a01b038981169116145b156131e2575050613218565b50505b6001600160a01b0395861660009081526005602052604090206001015490951694613210565b613218565b600101612f9e565b505050505050505050565b6001600160a01b038116600090815260056020908152604080832060028101546007909101546006909352922054600181108015906132625750600681105b156132e457600181016000613276866116b2565b9150506000613286876001611761565b60008481526009602052604090206001015490915081108015906132bb57506000838152600960205260409020600201548210155b156132dc576001600160a01b03871660009081526006602052604090208390555b505050610cb7565b600583101580156132fe5750683635c9adc5dea000008210155b8015613308575080155b15610cb7575050506001600160a01b0316600090815260066020526040902060019055565b604051806101c001604052806000815260200160006001600160a01b031681526020016000815260200160008152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156133fa579160200282015b828111156133fa57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906133c5565b5061340692915061340a565b5090565b5b808211156134065780546001600160a01b031916815560010161340b56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737375736572206973206e6f74206578697374732e2052656769737465722066697273742ea2646970667358221220d1b30db76a05626de940949403e3297dee9294740dabc7a51a34ffd59c392eb964736f6c634300060c0033

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

000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f

-----Decoded View---------------
Arg [0] : _daiAddr (address): 0x567C50F9571EC31eFC9C02d3B9a7510195A9976F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000567c50f9571ec31efc9c02d3b9a7510195a9976f


Deployed Bytecode Sourcemap

743:28584:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21343:134;;;;;;;;;;;;;;;;-1:-1:-1;21343:134:0;;:::i;:::-;;;;;;;;;;;;;;;;793:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27812:216;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27812:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2268:36;;;;;;;;;;;;;;;;-1:-1:-1;2268:36:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2850:67;;;:::i;:::-;;;;-1:-1:-1;;;;;2850:67:0;;;;;;;;;;;;;;2953:158;;;;;;;;;;;;;;;;-1:-1:-1;2953:158:0;;:::i;861:43::-;;;:::i;2506:25::-;;;:::i;8552:1326::-;;;;;;;;;;;;;;;;-1:-1:-1;8552:1326:0;;:::i;:::-;;25899:1373;;;;;;;;;;;;;;;;-1:-1:-1;25899:1373:0;;:::i;28038:274::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28038:274:0;;;;;;;;;;;;;;;;;:::i;8037:509::-;;;;;;;;;;;;;;;;-1:-1:-1;8037:509:0;;:::i;930:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3175;;;:::i;22909:855::-;;;;;;;;;;;;;;;;-1:-1:-1;22909:855:0;-1:-1:-1;;;;;22909:855:0;;:::i;6500:121::-;;;;;;;;;;;;;;;;-1:-1:-1;6500:121:0;-1:-1:-1;;;;;6500:121:0;;:::i;2924:22::-;;;:::i;22455:448::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22455:448:0;;;;;;;;:::i;21758:691::-;;;;;;;;;;;;;;;;-1:-1:-1;21758:691:0;-1:-1:-1;;;;;21758:691:0;;:::i;2461:38::-;;;:::i;2414:40::-;;;:::i;23775:110::-;;;;;;;;;;;;;;;;-1:-1:-1;23775:110:0;-1:-1:-1;;;;;23775:110:0;;:::i;2538:61::-;;;:::i;21483:126::-;;;;;;;;;;;;;;;;-1:-1:-1;21483:126:0;;:::i;2212:49::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2212:49:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2772:71;;;:::i;4335:44::-;;;;;;;;;;;;;;;;-1:-1:-1;4335:44:0;-1:-1:-1;;;;;4335:44:0;;:::i;19385:561::-;;;;;;;;;;;;;;;;-1:-1:-1;19385:561:0;-1:-1:-1;;;;;19385:561:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19952:357;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19952:357:0;;;;;;;;:::i;2691:70::-;;;:::i;826:28::-;;;:::i;28991:333::-;;;;;;;;;;;;;;;;-1:-1:-1;28991:333:0;;:::i;2606:78::-;;;:::i;2058:37::-;;;;;;;;;;;;;;;;-1:-1:-1;2058:37:0;-1:-1:-1;;;;;2058:37:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2058:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27278:281;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27278:281:0;;;;;;;;:::i;7574:457::-;;;;;;;;;;;;;;;;-1:-1:-1;7574:457:0;;:::i;24976:917::-;;;;;;;;;;;;;;;;-1:-1:-1;24976:917:0;;:::i;2102:45::-;;;;;;;;;;;;;;;;-1:-1:-1;2102:45:0;-1:-1:-1;;;;;2102:45:0;;:::i;4386:64::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4386:64:0;;;;;;;;;;:::i;23895:120::-;;;;;;;;;;;;;;;;-1:-1:-1;23895:120:0;-1:-1:-1;;;;;23895:120:0;;:::i;769:17::-;;;:::i;21621:131::-;;;:::i;2154:51::-;;;;;;;;;;;;;;;;-1:-1:-1;2154:51:0;-1:-1:-1;;;;;2154:51:0;;:::i;28324:199::-;;;;;;;;;;;;;;;;-1:-1:-1;28324:199:0;;;;;;-1:-1:-1;;;;;28324:199:0;;:::i;21343:134::-;21405:7;21453:10;:8;:10::i;:::-;21437;21448:4;21437:15;:26;;;;;;21430:33;;21343:134;;;;:::o;793:26::-;;;;;;;;;;;;;;;-1:-1:-1;;793:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27812:216::-;27914:10;27879:12;27904:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;27904:31:0;;;;;;;;;;;:40;;;27960:38;;;;;;;27879:12;;27904:31;;27914:10;;27960:38;;;;;;;;-1:-1:-1;28016:4:0;27812:216;;;;;:::o;2268:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2850:67::-;;;-1:-1:-1;;;;;2850:67:0;;:::o;2953:158::-;;;;;;;;;;;;-1:-1:-1;;;;;2953:158:0;;-1:-1:-1;2953:158:0;:::o;861:43::-;;;;:::o;2506:25::-;;;;:::o;8552:1326::-;8616:24;8629:10;8616:12;:24::i;:::-;8608:72;;;;-1:-1:-1;;;8608:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8691:28;8708:10;8691:16;:28::i;:::-;8796:10;8731;8785:22;;;:10;:22;;;;;:35;;8731:10;;8785:22;8808:11;;8785:35;;;;;;;;;;;;;;;;;;;8832:12;;;;8785:35;;-1:-1:-1;8832:12:0;;8828:1043;;8881:5;:17;;;8864:15;:34;;:82;;;;-1:-1:-1;8918:17:0;;;;8936:10;8918:28;8902:15;:44;8864:82;8861:183;;;8974:4;8968:10;;8861:183;;;9023:5;9017:11;;8861:183;9058:3;;;9102:12;;9058:59;;;-1:-1:-1;;;9058:59:0;;9075:10;9058:59;;;;9095:4;9058:59;;;;9115:1;9102:14;;;9058:59;;;;;-1:-1:-1;;;;;9058:3:0;;;;:16;;:59;;;;;;;;;;;;;;;;;:3;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9143:10:0;9132:22;;;;:10;9058:59;9132:22;;;;:35;;9175:4;;9132:22;9155:11;;9132:35;;;;;;;;;;;;;;;;;;;:42;;:47;;-1:-1:-1;;9132:47:0;;;;;;;;;;;9222:12;;9209:28;;9235:1;;9222:14;;9209:12;:28::i;:::-;9277:12;;9252:23;:39;;9290:1;9277:14;;;9252:39;;;;;9319:12;;-1:-1:-1;;;;;9319:12:0;-1:-1:-1;9309:23:0;;;:9;:23;;;;;;9194:43;;-1:-1:-1;;;9306:430:0;;9361:25;:40;;9398:3;9395:2;9388:9;;:13;;;9361:40;;;;;9438:12;;9451:20;;9428:59;;-1:-1:-1;;;;;9438:12:0;;;;9451:20;;;;;9398:3;9473:9;;:13;;9428:9;:59::i;:::-;9517:12;;9530:13;;9507:52;;-1:-1:-1;;;;;9517:12:0;;;;9530:13;9555:3;9552:2;9545:9;;:13;;9507:52;9306:430;;;9613:25;:33;;;;;;;9677:13;;9691:20;;9667:53;;-1:-1:-1;;;;;9677:13:0;;;;9691:20;9640:6;9667:9;:53::i;:::-;9754:5;9750:116;;9797:15;9779:17;;;:33;9831:14;;;:19;;-1:-1:-1;;9831:19:0;;;;;9750:116;8828:1043;;8552:1326;;;:::o;25899:1373::-;25985:12;;-1:-1:-1;;;;;25985:12:0;25971:10;:26;;;;:64;;-1:-1:-1;26015:20:0;;-1:-1:-1;;;;;26015:20:0;26001:10;:34;;25971:64;:95;;;;-1:-1:-1;26053:13:0;;-1:-1:-1;;;;;26053:13:0;26039:10;:27;;25971:95;25963:120;;;;;-1:-1:-1;;;25963:120:0;;;;;;;;;;;;-1:-1:-1;;;25963:120:0;;;;;;;;;;;;;;;26129:10;26094:12;26119:21;;;:9;:21;;;;;;:35;-1:-1:-1;26119:35:0;26111:75;;;;;-1:-1:-1;;;26111:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26249:10;;26231:3;26229:1;26216:14;;:18;;26271:11;26249:20;;;26248:34;26245:97;;;-1:-1:-1;26320:10:0;;26308:11;:22;26245:97;26355:11;;26352:863;;26408:22;;;26451:25;26408:22;26451:12;:25::i;:::-;26491;:38;;;;;;26544:23;:29;;;;;;;26446:30;-1:-1:-1;26593:25:0;26518:11;26593:12;:25::i;:::-;26654:13;;26588:30;;-1:-1:-1;26633:47:0;;26643:10;;-1:-1:-1;;;;;26654:13:0;26668:11;26633:9;:47::i;:::-;26695:3;;;:30;;;-1:-1:-1;;;26695:30:0;;26708:10;26695:30;;;;;;;;;;;;-1:-1:-1;;;;;26695:3:0;;;;:12;;:30;;;;;;;;;;;;;;;;;:3;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26741:10:0;:21;;;;;;26777:27;26783:10;26753:9;26777:5;:27::i;:::-;26824:42;;;;;;;;26852:1;;26833:10;;26824:42;;;;;;;;;26352:863;;;;26913:26;26926:12;26913;:26::i;:::-;26954:25;:39;;;;;;27008:23;:29;;;;;;;26908:31;-1:-1:-1;27057:26:0;26981:12;27057;:26::i;:::-;27119:13;;27052:31;;-1:-1:-1;27098:48:0;;27108:10;;-1:-1:-1;;;;;27119:13:0;27133:12;27098:9;:48::i;:::-;27161:3;;;:30;;;-1:-1:-1;;;27161:30:0;;27174:10;27161:30;;;;;;;;;;;;-1:-1:-1;;;;;27161:3:0;;;;:12;;:30;;;;;;;;;;;;;;;;;:3;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26352:863:0;27230:34;;;;;;;;;;;;;;27235:10;;27230:34;;;;;;;;25899:1373;;;:::o;28038:274::-;-1:-1:-1;;;;;28161:16:0;;28118:12;28161:16;;;:9;:16;;;;;;;;28178:10;28161:28;;;;;;;;28151:38;;;28143:47;;;;;;28201:32;28211:10;28222:3;28226:6;28201:9;:32::i;:::-;-1:-1:-1;;;;;;28244:16:0;;;;;;:9;:16;;;;;;;;28261:10;28244:28;;;;;;;:38;;;;;;;-1:-1:-1;28038:274:0;;;;;:::o;8037:509::-;8094:14;8109:21;8122:7;8109:12;:21::i;:::-;8162:20;;8094:36;;-1:-1:-1;8141:49:0;;8151:10;;-1:-1:-1;;;;;8162:20:0;8094:36;8141:9;:49::i;:::-;8254:10;8248:17;;;;:5;:17;;;;;:29;;;8217:1;8209:9;;;;8237:40;;;;;:65;;;2349:6;8281:7;:21;;8237:65;:92;;;;-1:-1:-1;2349:6:0;8306:7;:18;:23;8237:92;:117;;;;;2399:8;8333:7;:21;;8237:117;8229:143;;;;;-1:-1:-1;;;8229:143:0;;;;;;;;;;;;-1:-1:-1;;;8229:143:0;;;;;;;;;;;;;;;8391:24;8404:10;8391:12;:24::i;:::-;8383:72;;;;-1:-1:-1;;;8383:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8466:28;8483:10;8466:16;:28::i;:::-;8507:31;8519:10;8530:7;8507:11;:31::i;:::-;8037:509;;:::o;930:26::-;;;;;;:::o;3175:::-;;;;:::o;22909:855::-;22972:9;22968:786;-1:-1:-1;;;;;22991:17:0;;;;;;:10;:17;;;;;:24;22987:28;;22968:786;;;-1:-1:-1;;;;;23059:17:0;;23033:23;23059:17;;;:10;:17;;;;;:20;;23077:1;;23059:20;;;;;;;;;;;;;;;;;;;23098:12;;;;23059:20;;-1:-1:-1;23098:12:0;;23097:13;:31;;;;-1:-1:-1;23114:14:0;;;;;;;;;23097:31;23094:649;;;23175:17;;;;23193:10;23175:28;23159:15;:44;23156:573;;;23236:14;;;:20;;-1:-1:-1;;23236:20:0;;;23317:12;;-1:-1:-1;;;;;23283:19:0;;23251:5;23283:19;;;:12;:19;;;;;;;;:46;;;;;;;;;23396:12;;23371:38;;-1:-1:-1;;;23371:38:0;;;;;;;;;;;;;;;23251:5;;23371:4;;:18;;:38;;;;;23283:19;23371:38;;;;;:4;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23371:38:0;-1:-1:-1;;;;;23435:19:0;;;;;;:12;23371:38;23435:19;;;;:30;;;23371:38;;-1:-1:-1;23435:41:0;-1:-1:-1;23432:278:0;;;-1:-1:-1;;;;;23535:19:0;;;;;;:12;:19;;;;;:30;;;;:41;;;23504:72;;23432:278;;;-1:-1:-1;;;;;23654:19:0;;23685:1;23654:19;;;:12;:19;;;;;:30;;:32;23432:278;23156:573;;-1:-1:-1;23017:3:0;;22968:786;;6500:121;6572:41;6585:10;6597:15;6572:12;:41::i;:::-;6500:121;:::o;2924:22::-;;;-1:-1:-1;;;;;2924:22:0;;:::o;22455:448::-;-1:-1:-1;;;;;22562:16:0;;22531:7;22562:16;;;:9;:16;;;;;:21;:24;;:52;;-1:-1:-1;;;;;;22590:16:0;;;;;;:9;:16;;;;;:21;22613:1;22590:24;22562:52;22559:336;;;-1:-1:-1;22644:1:0;22636:9;;22629:16;;22559:336;-1:-1:-1;;;;;22664:16:0;;;;;;:9;:16;;;;;:21;22687:1;22664:24;;:52;;-1:-1:-1;;;;;;22692:16:0;;;;;;:9;:16;;;;;:21;22715:1;22692:24;22664:52;22661:234;;;-1:-1:-1;22746:1:0;22738:9;;22731:16;;22661:234;-1:-1:-1;;;;;22766:16:0;;;;;;:9;:16;;;;;:21;22789:1;22766:24;;:52;;-1:-1:-1;;;;;;22794:16:0;;;;;;:9;:16;;;;;:21;22817:1;22794:24;22766:52;22763:132;;;-1:-1:-1;22848:1:0;22840:9;;22833:16;;22763:132;-1:-1:-1;22894:1:0;22886:9;;22879:16;;21758:691;21811:7;21835:23;21852:5;21835:16;:23::i;:::-;-1:-1:-1;;;;;21876:16:0;;;;;;:9;:16;;;;;:21;:24;;:52;;-1:-1:-1;;;;;;21904:16:0;;;;;;:9;:16;;;;;:21;21927:1;21904:24;21876:52;21873:568;;;-1:-1:-1;;;;;;21986:19:0;;;;;;:12;:19;;;;;:30;;;;21951:32;;21984:1;21951:34;:65;21943:74;;21873:568;-1:-1:-1;;;;;22036:16:0;;;;;;:9;:16;;;;;:21;22059:1;22036:24;;:52;;-1:-1:-1;;;;;;22064:16:0;;;;;;:9;:16;;;;;:21;22087:1;22064:24;22036:52;22033:408;;;-1:-1:-1;;;;;;22146:19:0;;;;;;:12;:19;;;;;:30;;;;22111:32;;22144:1;22111:34;:65;22103:74;;22033:408;-1:-1:-1;;;;;22196:16:0;;;;;;:9;:16;;;;;:21;22219:1;22196:24;;:52;;-1:-1:-1;;;;;;22224:16:0;;;;;;:9;:16;;;;;:21;22247:1;22224:24;22196:52;22193:248;;;-1:-1:-1;;;;;;22306:19:0;;;;;;:12;:19;;;;;:30;;;;22271:32;;22304:1;22271:34;:65;22263:74;;22193:248;-1:-1:-1;;;;;;22410:19:0;;;;;;:12;:19;;;;;:30;;;;22375:32;;22408:1;22375:34;:65;22367:74;;2461:38;;;;:::o;2414:40::-;;;;:::o;23775:110::-;-1:-1:-1;;;;;23857:11:0;23832:4;23857:11;;;:5;:11;;;;;:14;:19;;;23775:110::o;2538:61::-;;;-1:-1:-1;;;;;2538:61:0;;:::o;21483:126::-;21544:4;21597;21586:10;:8;:10::i;:::-;21573:12;:23;:28;;;;2212:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2212:49:0;;-1:-1:-1;2212:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2772:71::-;;;-1:-1:-1;;;;;2772:71:0;;:::o;4335:44::-;;;;;;;;;;;;;:::o;19385:561::-;19442:7;;;;;;19560:302;-1:-1:-1;;;;;19583:12:0;;;;;;:5;:12;;;;;:22;;:29;19579:33;;19560:302;;;-1:-1:-1;;;;;19662:12:0;;19633:21;19662:12;;;19656:5;19662:12;;;;;;;:22;;:25;;19633:21;;19662:22;19685:1;;19662:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19662:25:0;19656:32;;;;;;;;;;;;:42;;;19727:24;;;19662:25;19727:24;;;;19656:44;;-1:-1:-1;19769:23:0;;;19766:85;;;19822:13;19812:23;;19766:85;-1:-1:-1;19614:3:0;;19560:302;;;-1:-1:-1;19894:7:0;;-1:-1:-1;;19884:17:0;;;;-1:-1:-1;19385:561:0;;;:::o;19952:357::-;20022:7;;;20082:190;-1:-1:-1;;;;;20105:12:0;;;;;;:5;:12;;;;;:22;;:29;20101:33;;20082:190;;;-1:-1:-1;;;;;20168:12:0;;20158:36;20168:12;;;:5;:12;;;;;:22;;:25;;20203:5;;20158:9;;:36;;20191:1;;20168:25;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20168:25:0;20158:36;;;;;;;;;;;;:41;:50;20155:106;;20244:1;20228:17;;;;20155:106;20136:3;;20082:190;;;-1:-1:-1;20289:12:0;19952:357;-1:-1:-1;;;19952:357:0:o;2691:70::-;;;-1:-1:-1;;;;;2691:70:0;;:::o;826:28::-;;;;;;;;;;;;;;-1:-1:-1;;826:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28991:333;29076:7;;-1:-1:-1;;;;;29076:7:0;29064:10;:19;29056:50;;;;;-1:-1:-1;;;29056:50:0;;;;;;;;;;;;-1:-1:-1;;;29056:50:0;;;;;;;;;;;;;;;29143:17;;29161:9;29143:27;29126:15;:45;29118:86;;;;;-1:-1:-1;;;29118:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29232:1;29224:7;:9;29216:54;;;;;-1:-1:-1;;;29216:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29281:3;;;:33;;;-1:-1:-1;;;29281:33:0;;29294:10;29281:33;;;;;;;;;;;;-1:-1:-1;;;;;29281:3:0;;;;:12;;:33;;;;;;;;;;;;;;;;;:3;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:78;;;-1:-1:-1;;;;;2606:78:0;;:::o;2058:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2058:37:0;;;;;;;;;;;;;;;;;;;;;;:::o;27278:281::-;27388:12;;27341;;-1:-1:-1;;;;;27388:12:0;27374:10;:26;;;;:64;;-1:-1:-1;27418:20:0;;-1:-1:-1;;;;;27418:20:0;27404:10;:34;;27374:64;:95;;;;-1:-1:-1;27456:13:0;;-1:-1:-1;;;;;27456:13:0;27442:10;:27;;27374:95;27366:120;;;;;-1:-1:-1;;;27366:120:0;;;;;;;;;;;;-1:-1:-1;;;27366:120:0;;;;;;;;;;;;;;;27497:32;27507:10;27518:3;27522:6;27497:9;:32::i;:::-;-1:-1:-1;27547:4:0;27278:281;;;;:::o;7574:457::-;7628:3;;;:50;;;-1:-1:-1;;;7628:50:0;;7645:10;7628:50;;;;7664:4;7628:50;;;;;;;;;;;;-1:-1:-1;;;;;7628:3:0;;;;:16;;:50;;;;;;;;;;;;;;;;;:3;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7742:10:0;7736:17;;;;:5;7628:50;7736:17;;;;:29;;;7705:1;7697:9;;;;7725:40;;;;;:65;;;2349:6;7769:7;:21;;7725:65;:92;;;;-1:-1:-1;2349:6:0;7794:7;:18;:23;7725:92;:117;;;;;2399:8;7821:7;:21;;7725:117;7717:143;;;;;-1:-1:-1;;;7717:143:0;;;;;;;;;;;;-1:-1:-1;;;7717:143:0;;;;;;;;;;;;;;;7879:24;7892:10;7879:12;:24::i;:::-;7871:72;;;;-1:-1:-1;;;7871:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7954:28;7971:10;7954:16;:28::i;:::-;7995;8004:10;8015:7;7995:8;:28::i;24976:917::-;25072:10;25035:23;25061:22;;;:10;:22;;;;;:35;;25084:11;;25061:35;;;;;;;;;;;;;;;;25035:61;;25104:5;:14;;;;;;;;;;;;:34;;;;-1:-1:-1;25122:16:0;;;;;;;;;25104:34;:73;;;;;25162:15;25142:5;:19;;;:35;25104:73;25101:785;;;25194:19;25215:37;25229:10;25240:11;25215:13;:37::i;:::-;25193:59;;25268:13;25282:10;:8;:10::i;:::-;25307;25301:17;;;;:5;:17;;;;;;;;;:24;;;:38;;;;;;25348:29;;:43;;;;;;25411:50;;;;;-1:-1:-1;25411:50:0;;;;;;;;;;;;;;;25268:24;;-1:-1:-1;25307:10:0;;;;25411:50;;;;;;;;;;25490:12;;;;;25468:19;;;:47;;25489:26;;;25468:47;;;-1:-1:-1;25534:15:0;;;;;;25564:18;;:30;;;25629:10;-1:-1:-1;25623:17:0;;;:5;:17;;;;;:31;;:44;;;;;;25692:20;;25682:65;;-1:-1:-1;;;;;25692:20:0;;;;25741:5;25736:4;25724:16;;25741:5;25724:22;;;25682:65;25762:52;25785:10;25796:11;25808:5;25762:22;:52::i;:::-;25848:32;;;;;;;;25857:10;;25848:32;;;;;;;;;;25101:785;;24976:917;;:::o;2102:45::-;;;;;;;;;;;;;:::o;4386:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;23895:120::-;-1:-1:-1;;;;;23983:17:0;23956:7;23983:17;;;:10;:17;;;;;:24;;23895:120::o;769:17::-;;;-1:-1:-1;;;;;769:17:0;;:::o;21621:131::-;21661:4;21719:25;;21690:23;;21714:4;21690:28;:54;;;;;;21683:61;;21621:131;:::o;2154:51::-;;;;;;;;;;;;;;;;;;;:::o;28324:199::-;28421:12;;28386:4;;-1:-1:-1;;;;;28421:12:0;28407:10;:26;28403:58;;28436:23;;;-1:-1:-1;;;28436:23:0;;;;;;;;;;;;-1:-1:-1;;;28436:23:0;;;;;;;;;;;;;;28403:58;28471:22;28477:7;28486:6;28471:5;:22::i;27565:241::-;-1:-1:-1;;;;;27655:16:0;;;;;;:9;:16;;;;;;:26;-1:-1:-1;27655:26:0;27647:35;;;;;;-1:-1:-1;;;;;27693:16:0;;;;;;;:9;:16;;;;;;;;:26;;;;;;;27730:14;;;;;;;;;;:24;;;;;;27770:28;;;;;;;27730:14;;27770:28;;;;;;;;;;;27565:241;;;:::o;28529:456::-;-1:-1:-1;;;;;28619:21:0;;28611:67;;;;-1:-1:-1;;;28611:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28714:18:0;;28689:22;28714:18;;;:9;:18;;;;;;28751:24;;;;28743:71;;;;-1:-1:-1;;;28743:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28846:6;28833:11;;:19;;28825:57;;;;;-1:-1:-1;;;28825:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28893:18:0;;;;;;;:9;:18;;;;;28914:23;;;;28893:44;;;28956:11;:21;;;;;;;;28529:456::o;11814:1471::-;-1:-1:-1;;;;;11934:18:0;;;11909:23;11934:18;;;:5;:18;;;;;;;;:27;;;;;;;11972:22;;;;;;:37;;:46;;;;;;12040:18;;;;:31;;;;;12037:301;;-1:-1:-1;;;;;12108:22:0;;;;;;;:5;:22;;;;;;;:36;;;:38;;;;;;;;;12161:32;;;;:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12161:50:0;;;;;;;;;;;12226:28;;12241:10;;12226:14;:28::i;:::-;12037:301;;;12298:28;12313:10;12324:1;12298:14;:28::i;:::-;-1:-1:-1;;;;;12348:18:0;;;;;;:5;:18;;;;;;;;:31;;;:41;;;;;;12401:12;:25;;;;:48;;;;;;12476:10;:8;:10::i;:::-;12462:24;-1:-1:-1;12505:14:0;12520:23;12541:1;12533:7;:9;;12520:23;12505:38;;12587:7;12556:5;:18;12562:11;-1:-1:-1;;;;;12556:18:0;-1:-1:-1;;;;;12556:18:0;;;;;;;;;;;;:30;;:38;;;;12605:10;:23;12616:11;-1:-1:-1;;;;;12605:23:0;-1:-1:-1;;;;;12605:23:0;;;;;;;;;;;;12634:262;;;;;;;;12658:7;12634:262;;;;12667:1;12634:262;;;;12683:15;12634:262;;;;3289:5;12730:2;:11;12714:15;:27;12634:262;;;;12757:15;12634:262;;;;12787:5;12634:262;;;;;;12807:5;12634:262;;;;;;12827:4;12634:262;;;;;;12846:5;12634:262;;;;;;12852:3;12634:262;;;;3289:5;12872:2;:11;12856:15;:27;12634:262;;;;12884:1;12634:262;;;12605:292;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12902:36;12918:10;12930:7;12902:15;:36::i;:::-;12953:6;12949:134;12964:1;12962;:3;12949:134;;;13005:20;;12995:75;;-1:-1:-1;;;;;13005:20:0;13026:9;13036:1;13026:12;;;;;;;;;-1:-1:-1;;;;;13026:12:0;13064:5;13049:11;13061:1;13049:14;;;;;;;;;13040:6;13047:1;13040:8;:23;:29;;;;12995:75;12966:3;;12949:134;;;;13094:49;13117:11;13129:7;13137:5;13094:22;:49::i;:::-;13155:51;13180:11;13192:7;13200:5;13155:24;:51::i;:::-;13230:37;;;;;;13265:1;13258:8;;13230:37;;;;;;-1:-1:-1;;;;;13230:37:0;;;;;;;;;;;11814:1471;;;;;:::o;6627:941::-;6723:25;6736:11;6723:12;:25::i;:::-;6722:26;6714:50;;;;;-1:-1:-1;;;6714:50:0;;;;;;;;;;;;-1:-1:-1;;;6714:50:0;;;;;;;;;;;;;;;6783:29;6796:15;6783:12;:29::i;:::-;6775:61;;;;;-1:-1:-1;;;6775:61:0;;;;;;;;;;;;-1:-1:-1;;;6775:61:0;;;;;;;;;;;;;;;6847:16;;:::i;:::-;6866:455;;;;;;;;6890:10;;6866:455;;;;6937:15;-1:-1:-1;;;;;6866:455:0;;;;;6982:1;6866:455;;;;7009:1;6866:455;;;;7049:1;7035:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7035:16:0;;6866:455;;;;7110:1;6866:455;;;;7138:1;6866:455;;;;7081:1;6866:455;;;;7161:1;6866:455;;;;7189:1;6866:455;;;;7219:1;6866:455;;;;7250:1;6866:455;;;;7278:1;6866:455;;;;7308:1;6866:455;;;6847:474;;7361:4;7340:5;:18;7346:11;-1:-1:-1;;;;;7340:18:0;-1:-1:-1;;;;;7340:18:0;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7340:25:0;;;;;-1:-1:-1;;;;;7340:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7340:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7376:18:0;;;-1:-1:-1;7376:18:0;;;;;;;;;;;:27;;;;:45;;-1:-1:-1;;;;;;7376:45:0;;;;;;;;;7432:10;:12;;;;;;;7511:21;7534:22;;;;;;;:25;7468:92;;;;;;;7511:21;;7468:92;;;;;;;;;6627:941;;;:::o;9889:1919::-;-1:-1:-1;;;;;10006:18:0;;;9981:23;10006:18;;;:5;:18;;;;;;;;:27;;;;;;;10044:22;;;;;;:37;;:46;;;;;;10112:18;;;;:31;;;;;10109:313;;-1:-1:-1;;;;;10180:22:0;;;;;;;:5;:22;;;;;;;:36;;;:38;;;;;;;;;10233:32;;;;:50;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10233:50:0;;;;;;;;;;;10310:28;;10325:10;;10310:14;:28::i;:::-;10109:313;;;10382:28;10397:10;10408:1;10382:14;:28::i;:::-;-1:-1:-1;;;;;10432:18:0;;;;;;:5;:18;;;;;;;;:31;;;:41;;;;;;10485:12;:25;;;;:48;;;;;;10558:10;:8;:10::i;:::-;10544:24;-1:-1:-1;10579:14:0;10594:23;10615:1;10607:7;:9;;10594:23;10628;:34;;10661:1;10653:9;;10628:34;;;10686:12;;-1:-1:-1;;;;;10686:12:0;-1:-1:-1;10676:23:0;;;:9;:23;;;;;;10579:38;;-1:-1:-1;;;10673:398:0;;10724:25;:40;;10761:3;10758:2;10751:9;;:13;;;10724:40;;;;;10797:12;;10810:20;;10787:59;;-1:-1:-1;;;;;10797:12:0;;;;10810:20;;;;;10761:3;10832:9;;:13;;10787:59;10872:12;;10885:13;;10862:52;;-1:-1:-1;;;;;10872:12:0;;;;10885:13;10910:3;10907:2;10900:9;;:13;;10862:52;10673:398;;;10956:25;:33;;;;;;;11016:13;;11030:20;;11006:53;;-1:-1:-1;;;;;11016:13:0;;;;11030:20;10983:6;11006:9;:53::i;:::-;11112:7;11081:5;:18;11087:11;-1:-1:-1;;;;;11081:18:0;-1:-1:-1;;;;;11081:18:0;;;;;;;;;;;;:30;;:38;;;;11130:10;:23;11141:11;-1:-1:-1;;;;;11130:23:0;-1:-1:-1;;;;;11130:23:0;;;;;;;;;;;;11159:261;;;;;;;;11183:7;11159:261;;;;11192:1;11159:261;;;;11208:15;11159:261;;;;3289:5;11255:2;:11;11239:15;:27;11159:261;;;;11282:15;11159:261;;;;11312:5;11159:261;;;;;;11332:5;11159:261;;;;;;11352:4;11159:261;;;;;;11371:4;11159:261;;;;;;11376:3;11159:261;;;;3289:5;11396:2;:11;11380:15;:27;11159:261;;;;11408:1;11159:261;;;11130:291;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11426:36;11442:10;11454:7;11426:15;:36::i;:::-;11477:6;11473:134;11488:1;11486;:3;11473:134;;;11529:20;;11519:75;;-1:-1:-1;;;;;11529:20:0;11550:9;11560:1;11550:12;;;;;;11519:75;11490:3;;11473:134;;24023:947;-1:-1:-1;;;;;24171:17:0;;24094:7;24171:17;;;:10;:17;;;;;:30;;24094:7;;;;24189:11;;24171:30;;;;;;;;;;;;;;;;24145:56;;24212:25;24240:4;-1:-1:-1;;;;;24240:16:0;;24257:5;24240:23;;;;;;;;;;;;;-1:-1:-1;;;;;24240:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24240:23:0;;-1:-1:-1;24290:19:0;;24287:656;;24335:11;3289:5;24366;:17;;;24348:15;:35;24347:53;;;;;;24335:65;;24425:3;24418:6;:10;24415:38;;;-1:-1:-1;24450:3:0;24415:38;24503:23;;;;24490:12;;24536:5;24490:36;;:43;;:51;24561:29;;;24558:127;;;-1:-1:-1;24624:17:0;24558:127;24702:13;;24699:85;;24757:11;24750:18;;24699:85;24287:656;;;;;24845:14;;;:20;;-1:-1:-1;;24845:20:0;;;24919:12;;24893:10;24860:5;24880:24;;;:12;:24;;;;;:51;;;;;;;;24287:656;-1:-1:-1;24955:6:0;;24023:947;-1:-1:-1;;;;24023:947:0:o;13291:1426::-;-1:-1:-1;;;;;13405:12:0;;;13388:14;13405:12;;;:5;:12;;;;;:21;;;;;;;13437:1273;3246:2;13454:1;:14;;;13437:1273;;;-1:-1:-1;;;;;13492:20:0;;;13489:1210;;13559:9;13569:1;13559:12;;;;;;;;;;;-1:-1:-1;;;;;13535:17:0;;;;;;:9;:17;;;;;:22;:36;13532:1042;;-1:-1:-1;;;;;13616:13:0;;13643:1;13616:13;;;:5;:13;;;;;;;;:26;;:28;13613:942;;13718:14;13758:5;13741:13;13755:1;13741:16;;;;;;;;;;;13733:7;:24;:30;;;;;;13718:45;;13814:25;13840:4;-1:-1:-1;;;;;13840:16:0;;13857:6;13840:24;;;;;;;;;;;;;-1:-1:-1;;;;;13840:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13840:24:0;;-1:-1:-1;13896:19:0;;13893:639;;13994:6;13976:17;:24;13973:143;;;14043:17;14036:24;;13973:143;-1:-1:-1;;;;;14146:13:0;;;;;;;:5;:13;;;;;;;;:25;;;:34;;;;;;14234:25;;:34;;;;;;14300:12;:20;;;;;-1:-1:-1;14300:31:0;:40;;;;;;14381:20;;14371:56;;14381:20;14152:6;14421:5;14416:4;14409:11;;14421:5;14409:17;;;14371:56;14463:40;;;;;;;14498:1;14496:3;;14463:40;;;;;14501:1;14463:40;;;;;;-1:-1:-1;;;;;14463:40:0;;;;;;;;;;;;;;;;;13893:639;13613:942;;;-1:-1:-1;;;;;14601:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;13489:1210;;;14678:5;;13489:1210;13470:3;;13437:1273;;;;13291:1426;;;;:::o;20315:509::-;-1:-1:-1;;;;;20401:12:0;;;20384:14;20401:12;;;:5;:12;;;;;:21;;;;;;;20433:384;3246:2;20452:1;:14;20433:384;;;-1:-1:-1;;;;;20490:20:0;;;20487:319;;20533:5;20540:1;20533:8;20530:85;;;-1:-1:-1;;;;;20590:13:0;;;;;;:5;:13;;;;;:23;;;;20614:1;20590:25;20564:51;;20530:85;20634:20;20647:6;20634:12;:20::i;:::-;20686:3;;-1:-1:-1;;;;;20676:13:0;;;20686:3;;20676:13;20673:23;;;20691:5;;20673:23;-1:-1:-1;;;;;20724:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;20487:319;;;20785:5;;20487:319;20468:3;;20433:384;;20827:510;20907:9;20903:427;-1:-1:-1;;;;;20926:17:0;;;;;;:10;:17;;;;;:24;20922:28;;20903:427;;;-1:-1:-1;;;;;20997:17:0;;20971:23;20997:17;;;:10;:17;;;;;:20;;21015:1;;20997:20;;;;;;;;;;;;;;;;;;;21035:12;;;;20997:20;;-1:-1:-1;21035:12:0;;:30;;;;-1:-1:-1;21051:14:0;;;;;;;;;21035:30;:56;;;;-1:-1:-1;21079:12:0;;21069:22;;;21035:56;21032:287;;;21125:12;;21114:23;;21111:193;;21172:12;;21192:16;;;:21;;-1:-1:-1;;21192:21:0;;;;;21161:23;;;;21111:193;;;21270:1;21260:11;;21279:5;;;21111:193;-1:-1:-1;20952:3:0;;20903:427;;14723:2444;-1:-1:-1;;;;;14839:12:0;;;14822:14;14839:12;;;:5;:12;;;;;:21;;;;;;;14822:14;;;;14998:2162;15019:2;15015:1;:6;;;14998:2162;;;-1:-1:-1;;;;;15057:20:0;;;15054:2095;;-1:-1:-1;;;;;15100:17:0;;;;;;:9;:17;;;;;:22;15124:1;15100:25;;:54;;-1:-1:-1;;;;;;15129:17:0;;;;;;:9;:17;;;;;;;;:22;:25;15100:54;15097:1913;;;15182:13;15179:798;;-1:-1:-1;;;;;15248:17:0;;;;;;:9;:17;;;;;;;;:22;:25;15245:418;;;15341:1;15325:17;;15391:1;15373:19;;15434:1;15423:12;;15245:418;;;15541:1;15525:17;;15591:1;15573:19;;15634:1;15623:12;;15245:418;15179:798;;;-1:-1:-1;;;;;15743:17:0;;;;;;:9;:17;;;;;:22;:34;;15740:214;;;15845:17;15829:33;;15901:1;15893:9;;15740:214;16002:17;;15999:992;;16210:24;;;-1:-1:-1;;;16210:24:0;;-1:-1:-1;;;;;16210:24:0;;;;;;;;16047:14;;16086:3;16062:23;;;:27;;16047:14;;16210:4;;:16;;:24;;;;;;;;;;;;;;16047:14;16210:4;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16210:24:0;;-1:-1:-1;16266:19:0;;16263:641;;16364:6;16346:17;:24;16343:143;;;16413:17;16406:24;;16343:143;-1:-1:-1;;;;;16516:13:0;;;;;;;:5;:13;;;;;;;;:27;;;:36;;;;;;16606:25;;:34;;;;;;16672:12;:20;;;;;-1:-1:-1;16672:31:0;:40;;;;;;16753:20;;16743:56;;16753:20;16522:6;16793:5;16788:4;16781:11;;16793:5;16781:17;;;16743:56;16835:40;;;;;;;16870:1;16868:3;;16835:40;;;;;16873:1;16835:40;;;;;;-1:-1:-1;;;;;16835:40:0;;;;;;;;;;;;;;;;;16263:641;16933:7;16942:1;16933:10;:27;;;-1:-1:-1;16957:3:0;;-1:-1:-1;;;;;16947:13:0;;;16957:3;;16947:13;16933:27;16930:37;;;16962:5;;;;16930:37;15999:992;;;-1:-1:-1;;;;;17037:13:0;;;;;;;:5;:13;;;;;:22;;;;;;;15054:2095;;;17128:5;;15054:2095;15023:3;;14998:2162;;;;14723:2444;;;;;;;;:::o;18608:771::-;-1:-1:-1;;;;;18695:12:0;;18672:19;18695:12;;;:5;:12;;;;;;;;:26;;;;18758:27;;;;;18815:9;:16;;;;;:21;18863:1;18850:14;;;;;:31;;;18880:1;18868:11;:13;18850:31;18847:525;;;18937:1;18925:13;;18909;18977:19;18990:5;18977:12;:19::i;:::-;18953:43;;;19011:17;19029:23;19044:5;19050:1;19029:14;:23::i;:::-;19084:19;;;;:9;:19;;;;;:32;;;19011:41;;-1:-1:-1;19070:46:0;;;;;:91;;-1:-1:-1;19131:19:0;;;;:9;:19;;;;;:30;;;19120:41;;;19070:91;19067:162;;;-1:-1:-1;;;;;19181:16:0;;;;;;:9;:16;;;;;:32;;;19067:162;18847:525;;;;;;19275:1;19262:11;:14;;:41;;;;;19296:7;19280:14;:23;;19262:41;:59;;;;-1:-1:-1;19307:14:0;;19262:59;19259:113;;;-1:-1:-1;;;;;;;;19337:16:0;;;;;:9;:16;;;;;19359:1;19337:23;;18608:771::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://d1b30db76a05626de940949403e3297dee9294740dabc7a51a34ffd59c392eb9
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.