{
  "contractName": "BeaconRewards",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_operatorContract",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_stakingContract",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "keep",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RewardReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountTransferred",
          "type": "uint256"
        }
      ],
      "name": "UpgradeFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "newRewardsContract",
          "type": "address"
        }
      ],
      "name": "UpgradeInitiated",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "allocateRewards",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "dispensedRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_keep",
          "type": "bytes32"
        }
      ],
      "name": "eligibleButTerminated",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_keep",
          "type": "bytes32"
        }
      ],
      "name": "eligibleForReward",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "groupIndex",
          "type": "uint256"
        }
      ],
      "name": "eligibleForReward",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "endOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "finalizeRewardsUpgrade",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "firstIntervalStart",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "funded",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "getAllocatedRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getIntervalCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "getIntervalWeight",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_newRewardsContract",
          "type": "address"
        }
      ],
      "name": "initiateRewardsUpgrade",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "intervalKeepsProcessed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "intervalOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "intervalWeights",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "isAllocated",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "isFinished",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "groupIndex",
          "type": "uint256"
        }
      ],
      "name": "isTerminated",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "keepsInInterval",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "markAsFunded",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minimumKeepsPerInterval",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "newRewardsContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "receiveApproval",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "keepIdentifier",
          "type": "bytes32"
        }
      ],
      "name": "receiveReward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "groupIndex",
          "type": "uint256"
        }
      ],
      "name": "receiveReward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "keepIdentifiers",
          "type": "bytes32[]"
        }
      ],
      "name": "receiveRewards",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "groupIndices",
          "type": "uint256[]"
        }
      ],
      "name": "receiveRewards",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "keepIdentifier",
          "type": "bytes32"
        }
      ],
      "name": "reportTermination",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "groupIndex",
          "type": "uint256"
        }
      ],
      "name": "reportTermination",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "groupIndices",
          "type": "uint256[]"
        }
      ],
      "name": "reportTerminations",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "keepIdentifiers",
          "type": "bytes32[]"
        }
      ],
      "name": "reportTerminations",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_keep",
          "type": "bytes32"
        }
      ],
      "name": "rewardClaimed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "interval",
          "type": "uint256"
        }
      ],
      "name": "startOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "termLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract KeepToken",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "unallocatedRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "upgradeFinalizedTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "upgradeInitiatedTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x600d805460ff1916905561038060405260046080908152600860a052600a60c052600c60e052600f6101008190526101208190526101408190526101608190526101808190526101a08190526101c08190526101e08190526102008190526102208190526102408190526102608190526102808190526102a08190526102c08190526102e081905261030081905261032081905261034081905261036052620000ad90601190601862000227565b50348015620000bb57600080fd5b5060405162002ed438038062002ed483398181016040526060811015620000e157600080fd5b508051602080830151604093840151601180548651818602810186019097528087529495929491938693635f6be180939092918301828280156200014557602002820191906000526020600020905b81548152602001906001019080831162000130575b505050505062278d006002620001606200022260201b60201c565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b0319166001600160a01b03871617905560088490558251620001dd9060029060208601906200027c565b506003919091556004555050601280546001600160a01b039485166001600160a01b031991821617909155601380549390941692169190911790915550620002d79050565b335b90565b8280548282559060005260206000209081019282156200026a579160200282015b828111156200026a578251829060ff1690559160200191906001019062000248565b5062000278929150620002ba565b5090565b8280548282559060005260206000209081019282156200026a579160200282015b828111156200026a5782518255916020019190600101906200029d565b6200022491905b80821115620002785760008155600101620002c1565b612bed80620002e76000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c806392672b3511610151578063b965933e116100c3578063e1fcd5e811610087578063e1fcd5e8146108b9578063e27000e7146108c1578063e8ba6509146108c9578063f2fde38b146108e6578063f3a504f21461090c578063fc0c546a1461091457610274565b8063b965933e14610849578063c70cee6a14610866578063ce21d8cf1461086e578063ce2830ad14610894578063ce2b3e3c146108b157610274565b8063ab7239c011610115578063ab7239c014610717578063ad36d6cc146107b8578063ae10d5ea146107d5578063aeae364d146107f2578063b369af711461080f578063b41e7f471461082c57610274565b806392672b35146106b057806395131526146106cd57806395aeca48146106d557806397a1e434146106dd578063aa5c63a9146106fa57610274565b806368ec9c42116101ea57806379b18cd1116101ae57806379b18cd11461059457806381b83c331461059c57806386d954c0146105c05780638da5cb5b146105dd5780638f32d59b146105e55780638f4ffcb1146105ed57610274565b806368ec9c42146104105780636a8238781461042d5780636c21aba71461044a578063715018a6146104eb57806373c6d862146104f357610274565b806328fc33c71161023c57806328fc33c7146102f35780632b6fdc7e1461031057806335c9ef7114610318578063365449511461033557806345016312146103525780634611ae04146103f357610274565b80630a1bb1b1146102795780630da8882f146102aa5780630e15561a146102b457806312f57063146102ce578063183affa1146102eb575b600080fd5b6102966004803603602081101561028f57600080fd5b503561091c565b604080519115158252519081900360200190f35b6102b2610927565b005b6102bc61097d565b60408051918252519081900360200190f35b610296600480360360208110156102e457600080fd5b5035610983565b6102bc6109b6565b6102b26004803603602081101561030957600080fd5b50356109bc565b6102bc610b3f565b6102bc6004803603602081101561032e57600080fd5b5035610b45565b6102bc6004803603602081101561034b57600080fd5b5035610bbd565b6102b26004803603602081101561036857600080fd5b810190602081018135600160201b81111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460208302840111600160201b831117156103b557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bfb945050505050565b6102966004803603602081101561040957600080fd5b5035610c2f565b6102b26004803603602081101561042657600080fd5b5035610c3a565b6102bc6004803603602081101561044357600080fd5b5035610d4c565b6102b26004803603602081101561046057600080fd5b810190602081018135600160201b81111561047a57600080fd5b82018360208201111561048c57600080fd5b803590602001918460208302840111600160201b831117156104ad57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d5e945050505050565b6102b2610de0565b6102b26004803603602081101561050957600080fd5b810190602081018135600160201b81111561052357600080fd5b82018360208201111561053557600080fd5b803590602001918460208302840111600160201b8311171561055657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e71945050505050565b6102bc610eee565b6105a4610ef4565b604080516001600160a01b039092168252519081900360200190f35b6102b2600480360360208110156105d657600080fd5b5035610f03565b6105a4611013565b610296611022565b6102b26004803603608081101561060357600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b81111561063c57600080fd5b82018360208201111561064e57600080fd5b803590602001918460018302840111600160201b8311171561066f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611046945050505050565b6102bc600480360360208110156106c657600080fd5b50356111e0565b6102bc6111fe565b6102bc611204565b610296600480360360208110156106f357600080fd5b503561120a565b6102b26004803603602081101561071057600080fd5b5035611225565b6102b26004803603602081101561072d57600080fd5b810190602081018135600160201b81111561074757600080fd5b82018360208201111561075957600080fd5b803590602001918460208302840111600160201b8311171561077a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611231945050505050565b610296600480360360208110156107ce57600080fd5b5035611261565b6102b2600480360360208110156107eb57600080fd5b503561126c565b6102bc6004803603602081101561080857600080fd5b5035611275565b6102bc6004803603602081101561082557600080fd5b5035611298565b6102bc6004803603602081101561084257600080fd5b50356112e5565b6102bc6004803603602081101561085f57600080fd5b503561130e565b6102bc611329565b6102b26004803603602081101561088457600080fd5b50356001600160a01b031661132f565b610296600480360360208110156108aa57600080fd5b50356113d4565b6102bc6113e9565b6102bc6113ef565b6102b26113f5565b610296600480360360208110156108df57600080fd5b50356116c6565b6102b2600480360360208110156108fc57600080fd5b50356001600160a01b03166116da565b61029661172a565b6105a4611733565b60095481105b919050565b61092f611022565b61096e576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b600d805460ff19166001179055565b60055481565b600061098e82611742565b801561099e575061099e82611754565b80156109b057506109ae826113d4565b155b92915050565b60025490565b806109c6816116c6565b610a13576040805162461bcd60e51b8152602060048201526019602482015278125b9d195c9d985b081a185cdb89dd08195b991959081e595d603a1b604482015290519081900360640190fd5b600d5460ff16610a6a576040805162461bcd60e51b815260206004820181905260248201527f436f6e747261637420686173206e6f74206265656e2066756e64656420796574604482015290519081900360640190fd5b60095480831015610ac2576040805162461bcd60e51b815260206004820152601a60248201527f496e74657276616c20616c726561647920616c6c6f6361746564000000000000604482015290519081900360640190fd5b80831115610ae357610ae3610ade84600163ffffffff61198216565b6109bc565b6000610aee846119cb565b600654909150610b04908263ffffffff61198216565b600655600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155505050565b60065481565b6009546000908210610b9e576040805162461bcd60e51b815260206004820152601a60248201527f496e74657276616c206e6f7420616c6c6f636174656420796574000000000000604482015290519081900360640190fd5b60098281548110610bab57fe5b90600052602060002001549050919050565b600254600090821015610be95760028281548110610bd757fe5b90600052602060002001549050610922565b600280546000198101908110610bd757fe5b60005b8151811015610c2b57610c23828281518110610c1657fe5b6020026020010151610c3a565b600101610bfe565b5050565b60006109b082610983565b80610c4481611742565b610c95576040805162461bcd60e51b815260206004820152601e60248201527f4b656570206e6f74207265636f676e697a656420627920666163746f72790000604482015290519081900360640190fd5b81610c9f816113d4565b15610ceb576040805162461bcd60e51b815260206004820152601760248201527614995dd85c991cc8185b1c9958591e4818db185a5b5959604a1b604482015290519081900360640190fd5b82610cf581611754565b610d3b576040805162461bcd60e51b815260206004820152601260248201527112d9595c081a5cc81b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b610d46600185611a3f565b50505050565b600c6020526000908152604090205481565b8051604080518281526020808402820101909152606090828015610d8c578160200160208202803883390190505b50905060005b8351811015610dd157838181518110610da757fe5b602002602001015160001b828281518110610dbe57fe5b6020908102919091010152600101610d92565b50610ddb81611231565b505050565b610de8611022565b610e27576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b8051604080518281526020808402820101909152606090828015610e9f578160200160208202803883390190505b50905060005b8351811015610ee457838181518110610eba57fe5b602002602001015160001b828281518110610ed157fe5b6020908102919091010152600101610ea5565b50610ddb81610bfb565b60035481565b6010546001600160a01b031681565b80610f0d81611742565b610f5e576040805162461bcd60e51b815260206004820152601e60248201527f4b656570206e6f74207265636f676e697a656420627920666163746f72790000604482015290519081900360640190fd5b81610f68816113d4565b15610fb4576040805162461bcd60e51b815260206004820152601760248201527614995dd85c991cc8185b1c9958591e4818db185a5b5959604a1b604482015290519081900360640190fd5b82610fbe81611b66565b611008576040805162461bcd60e51b815260206004820152601660248201527512d9595c081a5cc81b9bdd081d195c9b5a5b985d195960521b604482015290519081900360640190fd5b610d46600085611a3f565b6000546001600160a01b031690565b600080546001600160a01b0316611037611be4565b6001600160a01b031614905090565b6001546001600160a01b0383811691161461109c576040805162461bcd60e51b81526020600482015260116024820152702ab739bab83837b93a32b2103a37b5b2b760791b604482015290519081900360640190fd5b6001546110ba906001600160a01b031685308663ffffffff611be816565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d602081101561112f57600080fd5b505160075460055491925060009161114c9163ffffffff61198216565b9050808210156111a3576040805162461bcd60e51b815260206004820152601f60248201527f52657761726420636f6e747261637420686173206c6f737420746f6b656e7300604482015290519081900360640190fd5b60006111b5838363ffffffff61198216565b6005549091506111cb908263ffffffff611c4216565b6005556111d781611c9c565b50505050505050565b600281815481106111ed57fe5b600091825260209091200154905081565b600e5481565b60085481565b600061121582611742565b80156109b057506109b082611b66565b61122e81610f03565b50565b60005b8151811015610c2b5761125982828151811061124c57fe5b6020026020010151610f03565b600101611234565b60006109b08261120a565b61122e81610c3a565b60006109b061128383611de0565b61128c84611e0f565b9063ffffffff61198216565b60085460035460009190818410156112b557600092505050610922565b60006112c7858463ffffffff61198216565b905060006112db828463ffffffff611ebb16565b9695505050505050565b60006109b06112ff60035484611efd90919063ffffffff16565b6008549063ffffffff611c4216565b60006109b061132483600163ffffffff611c4216565b6112e5565b60045481565b611337611022565b611376576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b42600e55601080546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f4508cb0974b8dda93dec7c130aa186db2705fcee58bc00d1334726761835aca1916020908290030190a150565b6000908152600a602052604090205460ff1690565b600f5481565b60075481565b6113fd611022565b61143c576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b600e54611488576040805162461bcd60e51b8152602060048201526015602482015274155c19dc985919481b9bdd081a5b9a5d1a585d1959605a1b604482015290519081900360640190fd5b600061149342611298565b905060006114a2600e54611298565b90508082116114e25760405162461bcd60e51b815260040180806020018281038252603c815260200180612b7d603c913960400191505060405180910390fd5b6114fb6114f683600163ffffffff61198216565b61091c565b61151357611513610ade83600163ffffffff61198216565b600654600554611529908263ffffffff61198216565b60055560006006556040805182815290517f89f5b857dbf5a32a4fa55162349dc1146850c9b76ff05bedf3a47b3f14095c0a9181900360200190a160015460105460408051602081018083526000808352925163cae9ca5160e01b81526001600160a01b0394851660048201818152602483018990526060604484019081528551606485015285519698979097169663cae9ca519692958a95909492939192608401918083838d5b838110156115e95781810151838201526020016115d1565b50505050905090810190601f1680156116165780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561163757600080fd5b505af115801561164b573d6000803e3d6000fd5b505050506040513d602081101561166157600080fd5b50519050806116b7576040805162461bcd60e51b815260206004820152601b60248201527f557067726164652066696e616c697a6174696f6e206661696c65640000000000604482015290519081900360640190fd5b50506000600e55505042600f55565b60006116d18261130e565b42101592915050565b6116e2611022565b611721576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b61122e81611f56565b600d5460ff1681565b6001546001600160a01b031681565b60008161174d611ff6565b1192915050565b600061175f82611b66565b1561176c57506000610922565b60125460408051633bdf23e760e21b81526004810185905290516060926001600160a01b03169163ef7c8f9c916024808301926000929190829003018186803b1580156117b857600080fd5b505afa1580156117cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156117f557600080fd5b8101908080516040519392919084600160201b82111561181457600080fd5b90830190602082018581111561182957600080fd5b8251600160201b81118282018810171561184257600080fd5b82525081516020918201929091019080838360005b8381101561186f578181015183820152602001611857565b50505050905090810190601f16801561189c5780820380516001836020036101000a031916815260200191505b506040819052601254632d6f8f3160e01b82526020600483018181528751602485015287519798506001600160a01b0390921696632d6f8f3196508895509193508392604401919085019080838360005b838110156119055781810151838201526020016118ed565b50505050905090810190601f1680156119325780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561194f57600080fd5b505afa158015611963573d6000803e3d6000fd5b505050506040513d602081101561197957600080fd5b50519392505050565b60006119c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061206c565b9392505050565b6000806119d783612103565b9050806119e8576000915050610922565b60006119f384611275565b90506000611a0382600454612132565b905080611a165760009350505050610922565b611a3681611a2a858563ffffffff611efd16565b9063ffffffff611ebb16565b95945050505050565b6000611a4a82612149565b90506000611a5782611298565b9050611a628161091c565b611a6f57611a6f816109bc565b600060098281548110611a7e57fe5b906000526020600020015490506000611a9683611275565b90506000611aaa838363ffffffff611ebb16565b6000878152600a60209081526040808320805460ff19166001908117909155888452600c90925290912054919250611ae8919063ffffffff611c4216565b6000858152600c60205260409020558615611b5d57600754611b10908263ffffffff611c4216565b600755611b1d8682612195565b604080518781526020810183905281517ff8fcbb083cc485f0dc726d4235dbec7c9c5c03af58254f353627503577216170929181900390910190a16111d7565b6111d781611c9c565b60125460408051632217008160e21b81526004810184905290516000926001600160a01b03169163885c0204916024808301926020929190829003018186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d6020811015611bdc57600080fd5b505192915050565b3390565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610d46908590612618565b6000828201838110156119c4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600f5415611dc75760015460105460408051602081018083526000808352925163cae9ca5160e01b81526001600160a01b0394851660048201818152602483018990526060604484019081528551606485015285519698979097169663cae9ca519692958a95909492939192608401918083838d5b83811015611d29578181015183820152602001611d11565b50505050905090810190601f168015611d565780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611d7757600080fd5b505af1158015611d8b573d6000803e3d6000fd5b505050506040513d6020811015611da157600080fd5b5051905080611dc157600654611dbd908363ffffffff611c4216565b6006555b5061122e565b600654611dda908263ffffffff611c4216565b60065550565b600081611def57506000610922565b611e08611e0383600163ffffffff61198216565b611e0f565b9050610922565b600081611e1b816116c6565b611e68576040805162461bcd60e51b8152602060048201526019602482015278125b9d195c9d985b081a185cdb89dd08195b991959081e595d603a1b604482015290519081900360640190fd5b6000838152600b602052604090205480611eb0576000611e8f611e8a8661130e565b6127d0565b90508015611ea9576000858152600b602052604090208190555b9250611eb4565b8092505b5050919050565b60006119c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128bd565b600082611f0c575060006109b0565b82820282848281611f1957fe5b04146119c45760405162461bcd60e51b8152600401808060200182810382526021815260200180612b126021913960400191505060405180910390fd5b6001600160a01b038116611f9b5760405162461bcd60e51b8152600401808060200182810382526026815260200180612aec6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6012546040805163fdd18b1360e01b815290516000926001600160a01b03169163fdd18b13916004808301926020929190829003018186803b15801561203b57600080fd5b505afa15801561204f573d6000803e3d6000fd5b505050506040513d602081101561206557600080fd5b5051905090565b600081848411156120fb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c05781810151838201526020016120a8565b50505050905090810190601f1680156120ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6006546000908161211384610bbd565b905061212a6064611a2a848463ffffffff611efd16565b949350505050565b60008183101561214257816119c4565b5090919050565b60125460408051635ec60d6160e01b81526004810184905290516000926001600160a01b031691635ec60d61916024808301926020929190829003018186803b158015611bb257600080fd5b60125460408051633bdf23e760e21b81526004810185905290516060926001600160a01b03169163ef7c8f9c916024808301926000929190829003018186803b1580156121e157600080fd5b505afa1580156121f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561221e57600080fd5b8101908080516040519392919084600160201b82111561223d57600080fd5b90830190602082018581111561225257600080fd5b8251600160201b81118282018810171561226b57600080fd5b82525081516020918201929091019080838360005b83811015612298578181015183820152602001612280565b50505050905090810190601f1680156122c55780820380516001836020036101000a031916815260200191505b50604081905260125463d12f5e6960e01b82526020600483018181528751602485015287519798506060976001600160a01b03909316965063d12f5e69955088945092839260449091019185019080838360005b83811015612331578181015183820152602001612319565b50505050905090810190601f16801561235e5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156123b857600080fd5b8101908080516040519392919084600160201b8211156123d757600080fd5b9083019060208201858111156123ec57600080fd5b82518660208202830111600160201b8211171561240857600080fd5b82525081516020918201928201910280838360005b8381101561243557818101518382015260200161241d565b5050505091909101604052505082519293506000915061245d9050858363ffffffff611ebb16565b905080156125355760005b6001830381101561253357601354845161252b916001600160a01b03169063ba7bffd39087908590811061249857fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124e657600080fd5b505afa1580156124fa573d6000803e3d6000fd5b505050506040513d602081101561251057600080fd5b50516001546001600160a01b0316908463ffffffff61292216565b600101612468565b505b6000612547868463ffffffff61297416565b60135485519192506111d7916001600160a01b039091169063ba7bffd3908790600019880190811061257557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156125c357600080fd5b505afa1580156125d7573d6000803e3d6000fd5b505050506040513d60208110156125ed57600080fd5b50516125ff848463ffffffff611c4216565b6001546001600160a01b0316919063ffffffff61292216565b61262a826001600160a01b03166129b6565b61267b576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106126b95780518252601f19909201916020918201910161269a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461271b576040519150601f19603f3d011682016040523d82523d6000602084013e612720565b606091505b509150915081612777576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610d465780806020019051602081101561279357600080fd5b5051610d465760405162461bcd60e51b815260040180806020018281038252602a815260200180612b53602a913960400191505060405180910390fd5b600042821115612827576040805162461bcd60e51b815260206004820152601960248201527f696e74657276616c206861736e277420656e6465642079657400000000000000604482015290519081900360640190fd5b6000612831611ff6565b905080612842576000915050610922565b600080612856612851826129ed565b612149565b905084811061286b5760009350505050610922565b600061287e84600163ffffffff61198216565b9050600061288e612851836129ed565b9050868110156128a5578495505050505050610922565b6128b2848484848b6129f0565b979650505050505050565b6000818361290c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120c05781810151838201526020016120a8565b50600083858161291857fe5b0495945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ddb908490612618565b60006119c483836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612a89565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470811580159061212a5750141592915050565b90565b60008585858584612a07838663ffffffff61198216565b90505b6001811115612a7a576000612a36612a2983600263ffffffff611ebb16565b879063ffffffff611c4216565b90506000612a46612851836129ed565b9050888110612a5a57819450809350612a61565b8196508095505b612a71858863ffffffff61198216565b92505050612a0a565b50909998505050505050505050565b60008183612ad85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120c05781810151838201526020016120a8565b50828481612ae257fe5b0694935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564496e74657276616c2061742077686963682074686520757067726164652077617320696e69746961746564206861736e277420656e64656420796574a265627a7a72315820019bbd71ce239f3c351e19c9d710644a857b00b5aa04af3dd2c622d4b34beeb264736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102745760003560e01c806392672b3511610151578063b965933e116100c3578063e1fcd5e811610087578063e1fcd5e8146108b9578063e27000e7146108c1578063e8ba6509146108c9578063f2fde38b146108e6578063f3a504f21461090c578063fc0c546a1461091457610274565b8063b965933e14610849578063c70cee6a14610866578063ce21d8cf1461086e578063ce2830ad14610894578063ce2b3e3c146108b157610274565b8063ab7239c011610115578063ab7239c014610717578063ad36d6cc146107b8578063ae10d5ea146107d5578063aeae364d146107f2578063b369af711461080f578063b41e7f471461082c57610274565b806392672b35146106b057806395131526146106cd57806395aeca48146106d557806397a1e434146106dd578063aa5c63a9146106fa57610274565b806368ec9c42116101ea57806379b18cd1116101ae57806379b18cd11461059457806381b83c331461059c57806386d954c0146105c05780638da5cb5b146105dd5780638f32d59b146105e55780638f4ffcb1146105ed57610274565b806368ec9c42146104105780636a8238781461042d5780636c21aba71461044a578063715018a6146104eb57806373c6d862146104f357610274565b806328fc33c71161023c57806328fc33c7146102f35780632b6fdc7e1461031057806335c9ef7114610318578063365449511461033557806345016312146103525780634611ae04146103f357610274565b80630a1bb1b1146102795780630da8882f146102aa5780630e15561a146102b457806312f57063146102ce578063183affa1146102eb575b600080fd5b6102966004803603602081101561028f57600080fd5b503561091c565b604080519115158252519081900360200190f35b6102b2610927565b005b6102bc61097d565b60408051918252519081900360200190f35b610296600480360360208110156102e457600080fd5b5035610983565b6102bc6109b6565b6102b26004803603602081101561030957600080fd5b50356109bc565b6102bc610b3f565b6102bc6004803603602081101561032e57600080fd5b5035610b45565b6102bc6004803603602081101561034b57600080fd5b5035610bbd565b6102b26004803603602081101561036857600080fd5b810190602081018135600160201b81111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460208302840111600160201b831117156103b557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bfb945050505050565b6102966004803603602081101561040957600080fd5b5035610c2f565b6102b26004803603602081101561042657600080fd5b5035610c3a565b6102bc6004803603602081101561044357600080fd5b5035610d4c565b6102b26004803603602081101561046057600080fd5b810190602081018135600160201b81111561047a57600080fd5b82018360208201111561048c57600080fd5b803590602001918460208302840111600160201b831117156104ad57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d5e945050505050565b6102b2610de0565b6102b26004803603602081101561050957600080fd5b810190602081018135600160201b81111561052357600080fd5b82018360208201111561053557600080fd5b803590602001918460208302840111600160201b8311171561055657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e71945050505050565b6102bc610eee565b6105a4610ef4565b604080516001600160a01b039092168252519081900360200190f35b6102b2600480360360208110156105d657600080fd5b5035610f03565b6105a4611013565b610296611022565b6102b26004803603608081101561060357600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b81111561063c57600080fd5b82018360208201111561064e57600080fd5b803590602001918460018302840111600160201b8311171561066f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611046945050505050565b6102bc600480360360208110156106c657600080fd5b50356111e0565b6102bc6111fe565b6102bc611204565b610296600480360360208110156106f357600080fd5b503561120a565b6102b26004803603602081101561071057600080fd5b5035611225565b6102b26004803603602081101561072d57600080fd5b810190602081018135600160201b81111561074757600080fd5b82018360208201111561075957600080fd5b803590602001918460208302840111600160201b8311171561077a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611231945050505050565b610296600480360360208110156107ce57600080fd5b5035611261565b6102b2600480360360208110156107eb57600080fd5b503561126c565b6102bc6004803603602081101561080857600080fd5b5035611275565b6102bc6004803603602081101561082557600080fd5b5035611298565b6102bc6004803603602081101561084257600080fd5b50356112e5565b6102bc6004803603602081101561085f57600080fd5b503561130e565b6102bc611329565b6102b26004803603602081101561088457600080fd5b50356001600160a01b031661132f565b610296600480360360208110156108aa57600080fd5b50356113d4565b6102bc6113e9565b6102bc6113ef565b6102b26113f5565b610296600480360360208110156108df57600080fd5b50356116c6565b6102b2600480360360208110156108fc57600080fd5b50356001600160a01b03166116da565b61029661172a565b6105a4611733565b60095481105b919050565b61092f611022565b61096e576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b600d805460ff19166001179055565b60055481565b600061098e82611742565b801561099e575061099e82611754565b80156109b057506109ae826113d4565b155b92915050565b60025490565b806109c6816116c6565b610a13576040805162461bcd60e51b8152602060048201526019602482015278125b9d195c9d985b081a185cdb89dd08195b991959081e595d603a1b604482015290519081900360640190fd5b600d5460ff16610a6a576040805162461bcd60e51b815260206004820181905260248201527f436f6e747261637420686173206e6f74206265656e2066756e64656420796574604482015290519081900360640190fd5b60095480831015610ac2576040805162461bcd60e51b815260206004820152601a60248201527f496e74657276616c20616c726561647920616c6c6f6361746564000000000000604482015290519081900360640190fd5b80831115610ae357610ae3610ade84600163ffffffff61198216565b6109bc565b6000610aee846119cb565b600654909150610b04908263ffffffff61198216565b600655600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155505050565b60065481565b6009546000908210610b9e576040805162461bcd60e51b815260206004820152601a60248201527f496e74657276616c206e6f7420616c6c6f636174656420796574000000000000604482015290519081900360640190fd5b60098281548110610bab57fe5b90600052602060002001549050919050565b600254600090821015610be95760028281548110610bd757fe5b90600052602060002001549050610922565b600280546000198101908110610bd757fe5b60005b8151811015610c2b57610c23828281518110610c1657fe5b6020026020010151610c3a565b600101610bfe565b5050565b60006109b082610983565b80610c4481611742565b610c95576040805162461bcd60e51b815260206004820152601e60248201527f4b656570206e6f74207265636f676e697a656420627920666163746f72790000604482015290519081900360640190fd5b81610c9f816113d4565b15610ceb576040805162461bcd60e51b815260206004820152601760248201527614995dd85c991cc8185b1c9958591e4818db185a5b5959604a1b604482015290519081900360640190fd5b82610cf581611754565b610d3b576040805162461bcd60e51b815260206004820152601260248201527112d9595c081a5cc81b9bdd0818db1bdcd95960721b604482015290519081900360640190fd5b610d46600185611a3f565b50505050565b600c6020526000908152604090205481565b8051604080518281526020808402820101909152606090828015610d8c578160200160208202803883390190505b50905060005b8351811015610dd157838181518110610da757fe5b602002602001015160001b828281518110610dbe57fe5b6020908102919091010152600101610d92565b50610ddb81611231565b505050565b610de8611022565b610e27576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b8051604080518281526020808402820101909152606090828015610e9f578160200160208202803883390190505b50905060005b8351811015610ee457838181518110610eba57fe5b602002602001015160001b828281518110610ed157fe5b6020908102919091010152600101610ea5565b50610ddb81610bfb565b60035481565b6010546001600160a01b031681565b80610f0d81611742565b610f5e576040805162461bcd60e51b815260206004820152601e60248201527f4b656570206e6f74207265636f676e697a656420627920666163746f72790000604482015290519081900360640190fd5b81610f68816113d4565b15610fb4576040805162461bcd60e51b815260206004820152601760248201527614995dd85c991cc8185b1c9958591e4818db185a5b5959604a1b604482015290519081900360640190fd5b82610fbe81611b66565b611008576040805162461bcd60e51b815260206004820152601660248201527512d9595c081a5cc81b9bdd081d195c9b5a5b985d195960521b604482015290519081900360640190fd5b610d46600085611a3f565b6000546001600160a01b031690565b600080546001600160a01b0316611037611be4565b6001600160a01b031614905090565b6001546001600160a01b0383811691161461109c576040805162461bcd60e51b81526020600482015260116024820152702ab739bab83837b93a32b2103a37b5b2b760791b604482015290519081900360640190fd5b6001546110ba906001600160a01b031685308663ffffffff611be816565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d602081101561112f57600080fd5b505160075460055491925060009161114c9163ffffffff61198216565b9050808210156111a3576040805162461bcd60e51b815260206004820152601f60248201527f52657761726420636f6e747261637420686173206c6f737420746f6b656e7300604482015290519081900360640190fd5b60006111b5838363ffffffff61198216565b6005549091506111cb908263ffffffff611c4216565b6005556111d781611c9c565b50505050505050565b600281815481106111ed57fe5b600091825260209091200154905081565b600e5481565b60085481565b600061121582611742565b80156109b057506109b082611b66565b61122e81610f03565b50565b60005b8151811015610c2b5761125982828151811061124c57fe5b6020026020010151610f03565b600101611234565b60006109b08261120a565b61122e81610c3a565b60006109b061128383611de0565b61128c84611e0f565b9063ffffffff61198216565b60085460035460009190818410156112b557600092505050610922565b60006112c7858463ffffffff61198216565b905060006112db828463ffffffff611ebb16565b9695505050505050565b60006109b06112ff60035484611efd90919063ffffffff16565b6008549063ffffffff611c4216565b60006109b061132483600163ffffffff611c4216565b6112e5565b60045481565b611337611022565b611376576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b42600e55601080546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f4508cb0974b8dda93dec7c130aa186db2705fcee58bc00d1334726761835aca1916020908290030190a150565b6000908152600a602052604090205460ff1690565b600f5481565b60075481565b6113fd611022565b61143c576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b600e54611488576040805162461bcd60e51b8152602060048201526015602482015274155c19dc985919481b9bdd081a5b9a5d1a585d1959605a1b604482015290519081900360640190fd5b600061149342611298565b905060006114a2600e54611298565b90508082116114e25760405162461bcd60e51b815260040180806020018281038252603c815260200180612b7d603c913960400191505060405180910390fd5b6114fb6114f683600163ffffffff61198216565b61091c565b61151357611513610ade83600163ffffffff61198216565b600654600554611529908263ffffffff61198216565b60055560006006556040805182815290517f89f5b857dbf5a32a4fa55162349dc1146850c9b76ff05bedf3a47b3f14095c0a9181900360200190a160015460105460408051602081018083526000808352925163cae9ca5160e01b81526001600160a01b0394851660048201818152602483018990526060604484019081528551606485015285519698979097169663cae9ca519692958a95909492939192608401918083838d5b838110156115e95781810151838201526020016115d1565b50505050905090810190601f1680156116165780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561163757600080fd5b505af115801561164b573d6000803e3d6000fd5b505050506040513d602081101561166157600080fd5b50519050806116b7576040805162461bcd60e51b815260206004820152601b60248201527f557067726164652066696e616c697a6174696f6e206661696c65640000000000604482015290519081900360640190fd5b50506000600e55505042600f55565b60006116d18261130e565b42101592915050565b6116e2611022565b611721576040805162461bcd60e51b81526020600482018190526024820152600080516020612b33833981519152604482015290519081900360640190fd5b61122e81611f56565b600d5460ff1681565b6001546001600160a01b031681565b60008161174d611ff6565b1192915050565b600061175f82611b66565b1561176c57506000610922565b60125460408051633bdf23e760e21b81526004810185905290516060926001600160a01b03169163ef7c8f9c916024808301926000929190829003018186803b1580156117b857600080fd5b505afa1580156117cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156117f557600080fd5b8101908080516040519392919084600160201b82111561181457600080fd5b90830190602082018581111561182957600080fd5b8251600160201b81118282018810171561184257600080fd5b82525081516020918201929091019080838360005b8381101561186f578181015183820152602001611857565b50505050905090810190601f16801561189c5780820380516001836020036101000a031916815260200191505b506040819052601254632d6f8f3160e01b82526020600483018181528751602485015287519798506001600160a01b0390921696632d6f8f3196508895509193508392604401919085019080838360005b838110156119055781810151838201526020016118ed565b50505050905090810190601f1680156119325780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801561194f57600080fd5b505afa158015611963573d6000803e3d6000fd5b505050506040513d602081101561197957600080fd5b50519392505050565b60006119c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061206c565b9392505050565b6000806119d783612103565b9050806119e8576000915050610922565b60006119f384611275565b90506000611a0382600454612132565b905080611a165760009350505050610922565b611a3681611a2a858563ffffffff611efd16565b9063ffffffff611ebb16565b95945050505050565b6000611a4a82612149565b90506000611a5782611298565b9050611a628161091c565b611a6f57611a6f816109bc565b600060098281548110611a7e57fe5b906000526020600020015490506000611a9683611275565b90506000611aaa838363ffffffff611ebb16565b6000878152600a60209081526040808320805460ff19166001908117909155888452600c90925290912054919250611ae8919063ffffffff611c4216565b6000858152600c60205260409020558615611b5d57600754611b10908263ffffffff611c4216565b600755611b1d8682612195565b604080518781526020810183905281517ff8fcbb083cc485f0dc726d4235dbec7c9c5c03af58254f353627503577216170929181900390910190a16111d7565b6111d781611c9c565b60125460408051632217008160e21b81526004810184905290516000926001600160a01b03169163885c0204916024808301926020929190829003018186803b158015611bb257600080fd5b505afa158015611bc6573d6000803e3d6000fd5b505050506040513d6020811015611bdc57600080fd5b505192915050565b3390565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610d46908590612618565b6000828201838110156119c4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600f5415611dc75760015460105460408051602081018083526000808352925163cae9ca5160e01b81526001600160a01b0394851660048201818152602483018990526060604484019081528551606485015285519698979097169663cae9ca519692958a95909492939192608401918083838d5b83811015611d29578181015183820152602001611d11565b50505050905090810190601f168015611d565780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611d7757600080fd5b505af1158015611d8b573d6000803e3d6000fd5b505050506040513d6020811015611da157600080fd5b5051905080611dc157600654611dbd908363ffffffff611c4216565b6006555b5061122e565b600654611dda908263ffffffff611c4216565b60065550565b600081611def57506000610922565b611e08611e0383600163ffffffff61198216565b611e0f565b9050610922565b600081611e1b816116c6565b611e68576040805162461bcd60e51b8152602060048201526019602482015278125b9d195c9d985b081a185cdb89dd08195b991959081e595d603a1b604482015290519081900360640190fd5b6000838152600b602052604090205480611eb0576000611e8f611e8a8661130e565b6127d0565b90508015611ea9576000858152600b602052604090208190555b9250611eb4565b8092505b5050919050565b60006119c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128bd565b600082611f0c575060006109b0565b82820282848281611f1957fe5b04146119c45760405162461bcd60e51b8152600401808060200182810382526021815260200180612b126021913960400191505060405180910390fd5b6001600160a01b038116611f9b5760405162461bcd60e51b8152600401808060200182810382526026815260200180612aec6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6012546040805163fdd18b1360e01b815290516000926001600160a01b03169163fdd18b13916004808301926020929190829003018186803b15801561203b57600080fd5b505afa15801561204f573d6000803e3d6000fd5b505050506040513d602081101561206557600080fd5b5051905090565b600081848411156120fb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c05781810151838201526020016120a8565b50505050905090810190601f1680156120ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6006546000908161211384610bbd565b905061212a6064611a2a848463ffffffff611efd16565b949350505050565b60008183101561214257816119c4565b5090919050565b60125460408051635ec60d6160e01b81526004810184905290516000926001600160a01b031691635ec60d61916024808301926020929190829003018186803b158015611bb257600080fd5b60125460408051633bdf23e760e21b81526004810185905290516060926001600160a01b03169163ef7c8f9c916024808301926000929190829003018186803b1580156121e157600080fd5b505afa1580156121f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561221e57600080fd5b8101908080516040519392919084600160201b82111561223d57600080fd5b90830190602082018581111561225257600080fd5b8251600160201b81118282018810171561226b57600080fd5b82525081516020918201929091019080838360005b83811015612298578181015183820152602001612280565b50505050905090810190601f1680156122c55780820380516001836020036101000a031916815260200191505b50604081905260125463d12f5e6960e01b82526020600483018181528751602485015287519798506060976001600160a01b03909316965063d12f5e69955088945092839260449091019185019080838360005b83811015612331578181015183820152602001612319565b50505050905090810190601f16801561235e5780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156123b857600080fd5b8101908080516040519392919084600160201b8211156123d757600080fd5b9083019060208201858111156123ec57600080fd5b82518660208202830111600160201b8211171561240857600080fd5b82525081516020918201928201910280838360005b8381101561243557818101518382015260200161241d565b5050505091909101604052505082519293506000915061245d9050858363ffffffff611ebb16565b905080156125355760005b6001830381101561253357601354845161252b916001600160a01b03169063ba7bffd39087908590811061249857fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156124e657600080fd5b505afa1580156124fa573d6000803e3d6000fd5b505050506040513d602081101561251057600080fd5b50516001546001600160a01b0316908463ffffffff61292216565b600101612468565b505b6000612547868463ffffffff61297416565b60135485519192506111d7916001600160a01b039091169063ba7bffd3908790600019880190811061257557fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156125c357600080fd5b505afa1580156125d7573d6000803e3d6000fd5b505050506040513d60208110156125ed57600080fd5b50516125ff848463ffffffff611c4216565b6001546001600160a01b0316919063ffffffff61292216565b61262a826001600160a01b03166129b6565b61267b576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106126b95780518252601f19909201916020918201910161269a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461271b576040519150601f19603f3d011682016040523d82523d6000602084013e612720565b606091505b509150915081612777576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610d465780806020019051602081101561279357600080fd5b5051610d465760405162461bcd60e51b815260040180806020018281038252602a815260200180612b53602a913960400191505060405180910390fd5b600042821115612827576040805162461bcd60e51b815260206004820152601960248201527f696e74657276616c206861736e277420656e6465642079657400000000000000604482015290519081900360640190fd5b6000612831611ff6565b905080612842576000915050610922565b600080612856612851826129ed565b612149565b905084811061286b5760009350505050610922565b600061287e84600163ffffffff61198216565b9050600061288e612851836129ed565b9050868110156128a5578495505050505050610922565b6128b2848484848b6129f0565b979650505050505050565b6000818361290c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120c05781810151838201526020016120a8565b50600083858161291857fe5b0495945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ddb908490612618565b60006119c483836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612a89565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470811580159061212a5750141592915050565b90565b60008585858584612a07838663ffffffff61198216565b90505b6001811115612a7a576000612a36612a2983600263ffffffff611ebb16565b879063ffffffff611c4216565b90506000612a46612851836129ed565b9050888110612a5a57819450809350612a61565b8196508095505b612a71858863ffffffff61198216565b92505050612a0a565b50909998505050505050505050565b60008183612ad85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120c05781810151838201526020016120a8565b50828481612ae257fe5b0694935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564496e74657276616c2061742077686963682074686520757067726164652077617320696e69746961746564206861736e277420656e64656420796574a265627a7a72315820019bbd71ce239f3c351e19c9d710644a857b00b5aa04af3dd2c622d4b34beeb264736f6c63430005110032",
  "networks": {
    "1": {
      "events": {
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xf8fcbb083cc485f0dc726d4235dbec7c9c5c03af58254f353627503577216170": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "keep",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "name": "RewardReceived",
          "type": "event"
        },
        "0x89f5b857dbf5a32a4fa55162349dc1146850c9b76ff05bedf3a47b3f14095c0a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountTransferred",
              "type": "uint256"
            }
          ],
          "name": "UpgradeFinalized",
          "type": "event"
        },
        "0x4508cb0974b8dda93dec7c130aa186db2705fcee58bc00d1334726761835aca1": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "newRewardsContract",
              "type": "address"
            }
          ],
          "name": "UpgradeInitiated",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xBF51807ACb3394B8550f0554FB9098856Ef5F491",
      "transactionHash": "0x968f25ae51321eb287cba2520af6215fbc1542009dcf75a0f9490d4a85115e46"
    }
  },
  "schemaVersion": "3.1.0",
  "updatedAt": "2020-11-04T20:33:51.237Z",
  "networkType": "ethereum"
}