@bitriel/selendra-presale
Version:
Pre-Sale Smart Contracts on Bitriel Protocol
489 lines • 50 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "Presale",
"sourceName": "contracts/Presale.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_priceFeed",
"type": "address"
},
{
"internalType": "uint256",
"name": "_notBeforeBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_notAfterBlock",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "lockOnBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "releaseOnBlock",
"type": "uint256"
}
],
"name": "LockTokens",
"type": "event"
},
{
"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": true,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "UnlockTokens",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "collect",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "fundsAddress",
"type": "address"
}
],
"name": "collectFunds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"name": "discountsLock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPrice",
"outputs": [
{
"internalType": "int256",
"name": "price",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "fundAddress",
"type": "address"
}
],
"name": "getPriceToken",
"outputs": [
{
"internalType": "int256",
"name": "price",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "investor",
"type": "address"
}
],
"name": "investorOrderIds",
"outputs": [
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minInvestment",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "notAfterBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "notBeforeBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "discountsRate",
"type": "uint8"
}
],
"name": "order",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "fundsAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "fundsAmount",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "discountsRate",
"type": "uint8"
}
],
"name": "orderToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "orders",
"outputs": [
{
"internalType": "address payable",
"name": "beneficiary",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "releaseOnBlock",
"type": "uint256"
},
{
"internalType": "bool",
"name": "claimed",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "orderId",
"type": "uint256"
}
],
"name": "redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "remainingTokens",
"outputs": [
{
"internalType": "uint256",
"name": "remainingToken",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minInvestment",
"type": "uint256"
}
],
"name": "setMinInvestment",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_priceFeed",
"type": "address"
}
],
"name": "setSupportedToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "supportedTokens",
"outputs": [
{
"internalType": "address",
"name": "priceFeed",
"type": "address"
},
{
"internalType": "int256",
"name": "rate",
"type": "int256"
},
{
"internalType": "uint8",
"name": "decimals",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "raisedAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token",
"outputs": [
{
"internalType": "contract IERC20Metadata",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalDistributed",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x61010060405260006006553480156200001757600080fd5b50604051620028b0380380620028b08339810160408190526200003a916200025b565b6200004533620001ee565b6001600160a01b038416158015906200006657506001600160a01b03831615155b620000b85760405162461bcd60e51b815260206004820152601860248201527f696e76616c696420636f6e74726163742061646472657373000000000000000060448201526064015b60405180910390fd5b428210158015620000c857508181115b620001165760405162461bcd60e51b815260206004820152601860248201527f696e76616c69642070726573616c65207363686564756c6500000000000000006044820152606401620000af565b6001600160601b0319606085811b821660805284901b1660a05260c082905260e0819052600a60005260016020526301e133807f2a32391a76c35a36352b711f9152c0d0a340cd686850c8ef25fbb11c71b89e7b8190556200017a906002620002a2565b601460005260016020527f467a5c61216cad3003bc3395c339807c735d5c3d989ca4bc0ef2a37e14ce267955620001b76301e133806003620002a2565b601e60005260016020527f68fb8e7cad479ccc9244a179d64897454189fd25db04e15d3a5135327a17597b5550620002ce92505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200025657600080fd5b919050565b6000806000806080858703121562000271578384fd5b6200027c856200023e565b93506200028c602086016200023e565b6040860151606090960151949790965092505050565b6000816000190483118215151615620002c957634e487b7160e01b81526011600452602481fd5b500290565b60805160601c60a05160601c60c05160e0516124fa620003b66000396000818161019301528181610548015281816106a101528181610c9801528181610dc60152818161105f015281816111f7015281816113f3015281816114a70152818161167401526119dd01526000818161014b015281816102950152818161066201528181610c5901528181611020015281816111b801526116350152600081816101e5015281816106e001526110b101526000818161063c015281816108f301528181610a07015281816116c901528181611c3401528181611cc50152611d0101526124fa6000f3fe6080604052600436106101445760003560e01c8063a85c38ef116100b6578063bf5839031161006f578063bf583903146105aa578063db006a75146105bf578063e5225381146105df578063efca2eed146105f4578063f2fde38b1461060a578063fc0c546a1461062a57600080fd5b8063a85c38ef1461046e578063aa604947146104e9578063aaded5a914610516578063b3f7949714610536578063ba7ed2ff1461056a578063be5a34b21461058a57600080fd5b8063715018a611610108578063715018a6146103c75780638ac2c680146103de5780638da5cb5b146103f4578063900716a31461042657806396c790391461044657806398d5fdca1461045957600080fd5b806305293137146102835780633af395f6146102ca5780635756eb4f146102f757806368c4ac261461031757806370a082311461039a57600080fd5b3661027e577f000000000000000000000000000000000000000000000000000000000000000042116101915760405162461bcd60e51b8152600401610188906121b0565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000042106101d05760405162461bcd60e51b8152600401610188906121e7565b60006101da61065e565b905061027b346012837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561023c57600080fd5b505afa158015610250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027491906120cc565b600a610774565b50005b600080fd5b34801561028f57600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156102d657600080fd5b506102b76102e53660046120b0565b60016020526000908152604090205481565b34801561030357600080fd5b506102b7610312366004611fd5565b610c55565b34801561032357600080fd5b50610368610332366004611fd5565b600260208190526000918252604090912080546001820154928201546003909201546001600160a01b03909116929160ff169084565b604080516001600160a01b039095168552602085019390935260ff9091169183019190915260608201526080016102c1565b3480156103a657600080fd5b506102b76103b5366004611fd5565b60036020526000908152604090205481565b3480156103d357600080fd5b506103dc610d64565b005b3480156103ea57600080fd5b506102b760085481565b34801561040057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c1565b34801561043257600080fd5b506103dc610441366004611fef565b610d9a565b6103dc6104543660046120b0565b61101e565b34801561046557600080fd5b506102b761065e565b34801561047a57600080fd5b506104bd610489366004612098565b60056020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff1684565b604080516001600160a01b039095168552602085019390935291830152151560608201526080016102c1565b3480156104f557600080fd5b50610509610504366004611fd5565b61114a565b6040516102c19190612104565b34801561052257600080fd5b506103dc610531366004612021565b6111b6565b34801561054257600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561057657600080fd5b506103dc610585366004612098565b6113c7565b34801561059657600080fd5b506103dc6105a5366004611fd5565b61147b565b3480156105b657600080fd5b506102b7611631565b3480156105cb57600080fd5b506103dc6105da366004612098565b611755565b3480156105eb57600080fd5b506103dc6119b1565b34801561060057600080fd5b506102b760075481565b34801561061657600080fd5b506103dc610625366004611fd5565b611a91565b34801561063657600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000421161069f5760405162461bcd60e51b8152600401610188906121b0565b7f000000000000000000000000000000000000000000000000000000000000000042106106de5760405162461bcd60e51b8152600401610188906121e7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190612080565b905090565b60085461079f6107848487612277565b61078f90600a612314565b6107998887611b2c565b90611b3f565b1015610815576040805162461bcd60e51b81526020600482015260248101919091527f74686520696e766573746d656e7420616d6f756e7420646f6573206e6f74207260448201527f6561636820746865206d696e696d756d20616d6f756e742072657175697265646064820152608401610188565b60ff81166000908152600160205260409020546301e133808110156108a25760405162461bcd60e51b815260206004820152603e60248201527f746865206c6f636b206475726174696f6e20646f6573206e6f7420726561636860448201527f20746865206d696e696d756d206475726174696f6e20726571756972656400006064820152608401610188565b60006108ae4283611b4b565b9050600060646108be858261241f565b6108cd9060ff1661012c6123bf565b6108d7919061229c565b61ffff16905060006108ed826107998b8a611b2c565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561094a57600080fd5b505afa15801561095e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098291906120cc565b61098d906004612277565b9050600061099b888b612277565b90508060ff168260ff16106109d0576109c96109b7828461241f565b6109c290600a612314565b8490611b2c565b92506109f2565b6109ef6109dd838361241f565b6109e890600a612314565b8490611b3f565b92505b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610a5157600080fd5b505afa158015610a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a899190612080565b83600754610a97919061225f565b1115610b005760405162461bcd60e51b815260206004820152603260248201527f7468657265206973206e6f7420656e6f75676820737570706c7920746f6b656e604482015271081d1bc8189948191a5cdd1c9a589d5d195960721b6064820152608401610188565b6040518060800160405280336001600160a01b031681526020018481526020018681526020016000151581525060056000600660008154610b409061246e565b918290555081526020808201929092526040908101600020835181546001600160a01b0319166001600160a01b0390911617815591830151600183015582015160028201556060909101516003909101805460ff1916911515919091179055600754610bac9084611b4b565b60075533600090815260036020526040902054610bc99084611b4b565b33600081815260036020908152604080832094909455600481528382206006805482546001810184559285529290932001555491517f1c0faff31a4ddddbe14119049530c0e55d7f79bedfd0e3a74b16098ac66e42e890610c4090879042908b909283526020830191909152604082015260600190565b60405180910390a35050505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000004211610c965760405162461bcd60e51b8152600401610188906121b0565b7f00000000000000000000000000000000000000000000000000000000000000004210610cd55760405162461bcd60e51b8152600401610188906121e7565b6001600160a01b038083166000908152600260209081526040918290205482516350d25bcd60e01b815292519316926350d25bcd926004808201939291829003018186803b158015610d2657600080fd5b505afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190612080565b92915050565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016101889061217b565b610d986000611b57565b565b6000546001600160a01b03163314610dc45760405162461bcd60e51b81526004016101889061217b565b7f00000000000000000000000000000000000000000000000000000000000000004210610e035760405162461bcd60e51b8152600401610188906121e7565b6001600160a01b038216610e515760405162461bcd60e51b8152602060048201526015602482015274696e76616c696420746f6b656e206164647265737360581b6044820152606401610188565b6001600160a01b038116610eb15760405162461bcd60e51b815260206004820152602160248201527f696e76616c6964206f7261636c652070726963652066656564206164647265736044820152607360f81b6064820152608401610188565b6001600160a01b0382811660009081526002602090815260409182902080546001600160a01b0319169385169384179055815163313ce56760e01b8152915163313ce567926004808201939291829003018186803b158015610f1257600080fd5b505afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a91906120cc565b60026000846001600160a01b03166001600160a01b0316815260200190815260200160002060020160006101000a81548160ff021916908360ff160217905550806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc357600080fd5b505afa158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190612080565b6001600160a01b0390921660009081526002602052604090206001019190915550565b7f0000000000000000000000000000000000000000000000000000000000000000421161105d5760405162461bcd60e51b8152600401610188906121b0565b7f0000000000000000000000000000000000000000000000000000000000000000421061109c5760405162461bcd60e51b8152600401610188906121e7565b60006110a661065e565b9050611146346012837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561110857600080fd5b505afa15801561111c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114091906120cc565b86610774565b5050565b6001600160a01b03811660009081526004602090815260408083208054825181850281018501909352808352606094938301828280156111a957602002820191906000526020600020905b815481526020019060010190808311611195575b5093979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000042116111f55760405162461bcd60e51b8152600401610188906121b0565b7f000000000000000000000000000000000000000000000000000000000000000042106112345760405162461bcd60e51b8152600401610188906121e7565b6001600160a01b0383166000908152600260205260409020826112995760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420746f6b656e20616d6f756e742076616c75650000000000006044820152606401610188565b80546001600160a01b03166112ff5760405162461bcd60e51b815260206004820152602660248201527f70757263686173696e67206f6620746f6b656e7320776173206e6f74207375706044820152651c1bdc9d195960d21b6064820152608401610188565b61130884610c55565b60018201556113226001600160a01b038516333086611ba7565b60038101546113319084611b4b565b81600301819055506113c183856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae91906120cc565b6001840154600285015460ff1686610774565b50505050565b6000546001600160a01b031633146113f15760405162461bcd60e51b81526004016101889061217b565b7f000000000000000000000000000000000000000000000000000000000000000042106114305760405162461bcd60e51b8152600401610188906121e7565b600081116114765760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420696e7075742076616c756560681b6044820152606401610188565b600855565b6000546001600160a01b031633146114a55760405162461bcd60e51b81526004016101889061217b565b7f000000000000000000000000000000000000000000000000000000000000000042116115105760405162461bcd60e51b81526020600482015260196024820152785072652d73616c65206973207374696c6c206f6e676f696e6760381b6044820152606401610188565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561155257600080fd5b505afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190612080565b9050600081116115ac5760405162461bcd60e51b81526004016101889061221e565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156115f457600080fd5b505af1158015611608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162c9190612060565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000042116116725760405162461bcd60e51b8152600401610188906121b0565b7f000000000000000000000000000000000000000000000000000000000000000042106116b15760405162461bcd60e51b8152600401610188906121e7565b6007546040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561171357600080fd5b505afa158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190612080565b61076f9190612408565b6006548111156117a75760405162461bcd60e51b815260206004820152601960248201527f746865206f7264657220494420697320696e636f7272656374000000000000006044820152606401610188565b600081815260056020526040902080546001600160a01b031633146118065760405162461bcd60e51b81526020600482015260156024820152746e6f74206f726465722062656e656669636961727960581b6044820152606401610188565b600081600101541161185a5760405162461bcd60e51b815260206004820152601e60248201527f696e73756666696369656e742072656465656d61626c6520746f6b656e7300006044820152606401610188565b80600201544210156118ae5760405162461bcd60e51b815260206004820152601760248201527f746f6b656e7320617265206265696e67206c6f636b65640000000000000000006044820152606401610188565b600381015460ff16156119035760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e732061726520726561647920746f20626520636c61696d656400006044820152606401610188565b80546001820154600091611922916001600160a01b0390911690611c12565b6003808401805460ff1916600117905533600090815260209190915260409020549091506119509082611d33565b3360009081526003602052604090819020919091558254905184916001600160a01b0316907fa9b22fc99b437cca7226a19e7018090ba9124753983abed4abc977f88a37eb56906119a49085815260200190565b60405180910390a3505050565b6000546001600160a01b031633146119db5760405162461bcd60e51b81526004016101889061217b565b7f00000000000000000000000000000000000000000000000000000000000000004211611a465760405162461bcd60e51b81526020600482015260196024820152785072652d73616c65206973207374696c6c206f6e676f696e6760381b6044820152606401610188565b4780611a645760405162461bcd60e51b81526004016101889061221e565b604051339082156108fc029083906000818181858888f19350505050158015611146573d6000803e3d6000fd5b6000546001600160a01b03163314611abb5760405162461bcd60e51b81526004016101889061217b565b6001600160a01b038116611b205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610188565b611b2981611b57565b50565b6000611b3882846123e9565b9392505050565b6000611b3882846122bd565b6000611b38828461225f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526113c19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d3f565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015611c7657600080fd5b505afa158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae9190612080565b905082811015611cf457611cec6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583611e11565b809150611d2c565b611d286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611e11565b8291505b5092915050565b6000611b388284612408565b6000611d94826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e419092919063ffffffff16565b80519091501561162c5780806020019051810190611db29190612060565b61162c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610188565b6040516001600160a01b03831660248201526044810182905261162c90849063a9059cbb60e01b90606401611bdb565b6060611e508484600085611e58565b949350505050565b606082471015611eb95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610188565b843b611f075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610188565b600080866001600160a01b03168587604051611f2391906120e8565b60006040518083038185875af1925050503d8060008114611f60576040519150601f19603f3d011682016040523d82523d6000602084013e611f65565b606091505b5091509150611f75828286611f80565b979650505050505050565b60608315611f8f575081611b38565b825115611f9f5782518084602001fd5b8160405162461bcd60e51b81526004016101889190612148565b80356001600160a01b0381168114611fd057600080fd5b919050565b600060208284031215611fe6578081fd5b611b3882611fb9565b60008060408385031215612001578081fd5b61200a83611fb9565b915061201860208401611fb9565b90509250929050565b600080600060608486031215612035578081fd5b61203e84611fb9565b9250602084013591506040840135612055816124b5565b809150509250925092565b600060208284031215612071578081fd5b81518015158114611b38578182fd5b600060208284031215612091578081fd5b5051919050565b6000602082840312156120a9578081fd5b5035919050565b6000602082840312156120c1578081fd5b8135611b38816124b5565b6000602082840312156120dd578081fd5b8151611b38816124b5565b600082516120fa818460208701612442565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561213c57835183529284019291840191600101612120565b50909695505050505050565b6020815260008251806020840152612167816040850160208701612442565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f5072652d73616c6520686173206e6f74206265656e2073746172746564000000604082015260600190565b6020808252601a908201527f5072652d73616c652068617320616c726561647920656e646564000000000000604082015260600190565b60208082526021908201527f696e73756666696369656e742066756e647320666f7220636f6c6c656374696f6040820152603760f91b606082015260800190565b6000821982111561227257612272612489565b500190565b600060ff821660ff84168060ff0382111561229457612294612489565b019392505050565b600061ffff808416806122b1576122b161249f565b92169190910492915050565b6000826122cc576122cc61249f565b500490565b600181815b8085111561230c5781600019048211156122f2576122f2612489565b808516156122ff57918102915b93841c93908002906122d6565b509250929050565b6000611b3860ff84168360008261232d57506001610d5e565b8161233a57506000610d5e565b8160018114612350576002811461235a57612376565b6001915050610d5e565b60ff84111561236b5761236b612489565b50506001821b610d5e565b5060208310610133831016604e8410600b8410161715612399575081810a610d5e565b6123a383836122d1565b80600019048211156123b7576123b7612489565b029392505050565b600061ffff808316818516818304811182151516156123e0576123e0612489565b02949350505050565b600081600019048311821515161561240357612403612489565b500290565b60008282101561241a5761241a612489565b500390565b600060ff821660ff84168082101561243957612439612489565b90039392505050565b60005b8381101561245d578181015183820152602001612445565b838111156113c15750506000910152565b600060001982141561248257612482612489565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60ff81168114611b2957600080fdfea26469706673582212209a56bcd7c4831c9e928b8c65d9e40ca4ab1c36a771200d1728cd347f54778f6d64736f6c63430008040033",
"deployedBytecode": "0x6080604052600436106101445760003560e01c8063a85c38ef116100b6578063bf5839031161006f578063bf583903146105aa578063db006a75146105bf578063e5225381146105df578063efca2eed146105f4578063f2fde38b1461060a578063fc0c546a1461062a57600080fd5b8063a85c38ef1461046e578063aa604947146104e9578063aaded5a914610516578063b3f7949714610536578063ba7ed2ff1461056a578063be5a34b21461058a57600080fd5b8063715018a611610108578063715018a6146103c75780638ac2c680146103de5780638da5cb5b146103f4578063900716a31461042657806396c790391461044657806398d5fdca1461045957600080fd5b806305293137146102835780633af395f6146102ca5780635756eb4f146102f757806368c4ac261461031757806370a082311461039a57600080fd5b3661027e577f000000000000000000000000000000000000000000000000000000000000000042116101915760405162461bcd60e51b8152600401610188906121b0565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000042106101d05760405162461bcd60e51b8152600401610188906121e7565b60006101da61065e565b905061027b346012837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561023c57600080fd5b505afa158015610250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027491906120cc565b600a610774565b50005b600080fd5b34801561028f57600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b3480156102d657600080fd5b506102b76102e53660046120b0565b60016020526000908152604090205481565b34801561030357600080fd5b506102b7610312366004611fd5565b610c55565b34801561032357600080fd5b50610368610332366004611fd5565b600260208190526000918252604090912080546001820154928201546003909201546001600160a01b03909116929160ff169084565b604080516001600160a01b039095168552602085019390935260ff9091169183019190915260608201526080016102c1565b3480156103a657600080fd5b506102b76103b5366004611fd5565b60036020526000908152604090205481565b3480156103d357600080fd5b506103dc610d64565b005b3480156103ea57600080fd5b506102b760085481565b34801561040057600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c1565b34801561043257600080fd5b506103dc610441366004611fef565b610d9a565b6103dc6104543660046120b0565b61101e565b34801561046557600080fd5b506102b761065e565b34801561047a57600080fd5b506104bd610489366004612098565b60056020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff1684565b604080516001600160a01b039095168552602085019390935291830152151560608201526080016102c1565b3480156104f557600080fd5b50610509610504366004611fd5565b61114a565b6040516102c19190612104565b34801561052257600080fd5b506103dc610531366004612021565b6111b6565b34801561054257600080fd5b506102b77f000000000000000000000000000000000000000000000000000000000000000081565b34801561057657600080fd5b506103dc610585366004612098565b6113c7565b34801561059657600080fd5b506103dc6105a5366004611fd5565b61147b565b3480156105b657600080fd5b506102b7611631565b3480156105cb57600080fd5b506103dc6105da366004612098565b611755565b3480156105eb57600080fd5b506103dc6119b1565b34801561060057600080fd5b506102b760075481565b34801561061657600080fd5b506103dc610625366004611fd5565b611a91565b34801561063657600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b60007f0000000000000000000000000000000000000000000000000000000000000000421161069f5760405162461bcd60e51b8152600401610188906121b0565b7f000000000000000000000000000000000000000000000000000000000000000042106106de5760405162461bcd60e51b8152600401610188906121e7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190612080565b905090565b60085461079f6107848487612277565b61078f90600a612314565b6107998887611b2c565b90611b3f565b1015610815576040805162461bcd60e51b81526020600482015260248101919091527f74686520696e766573746d656e7420616d6f756e7420646f6573206e6f74207260448201527f6561636820746865206d696e696d756d20616d6f756e742072657175697265646064820152608401610188565b60ff81166000908152600160205260409020546301e133808110156108a25760405162461bcd60e51b815260206004820152603e60248201527f746865206c6f636b206475726174696f6e20646f6573206e6f7420726561636860448201527f20746865206d696e696d756d206475726174696f6e20726571756972656400006064820152608401610188565b60006108ae4283611b4b565b9050600060646108be858261241f565b6108cd9060ff1661012c6123bf565b6108d7919061229c565b61ffff16905060006108ed826107998b8a611b2c565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561094a57600080fd5b505afa15801561095e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098291906120cc565b61098d906004612277565b9050600061099b888b612277565b90508060ff168260ff16106109d0576109c96109b7828461241f565b6109c290600a612314565b8490611b2c565b92506109f2565b6109ef6109dd838361241f565b6109e890600a612314565b8490611b3f565b92505b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610a5157600080fd5b505afa158015610a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a899190612080565b83600754610a97919061225f565b1115610b005760405162461bcd60e51b815260206004820152603260248201527f7468657265206973206e6f7420656e6f75676820737570706c7920746f6b656e604482015271081d1bc8189948191a5cdd1c9a589d5d195960721b6064820152608401610188565b6040518060800160405280336001600160a01b031681526020018481526020018681526020016000151581525060056000600660008154610b409061246e565b918290555081526020808201929092526040908101600020835181546001600160a01b0319166001600160a01b0390911617815591830151600183015582015160028201556060909101516003909101805460ff1916911515919091179055600754610bac9084611b4b565b60075533600090815260036020526040902054610bc99084611b4b565b33600081815260036020908152604080832094909455600481528382206006805482546001810184559285529290932001555491517f1c0faff31a4ddddbe14119049530c0e55d7f79bedfd0e3a74b16098ac66e42e890610c4090879042908b909283526020830191909152604082015260600190565b60405180910390a35050505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000004211610c965760405162461bcd60e51b8152600401610188906121b0565b7f00000000000000000000000000000000000000000000000000000000000000004210610cd55760405162461bcd60e51b8152600401610188906121e7565b6001600160a01b038083166000908152600260209081526040918290205482516350d25bcd60e01b815292519316926350d25bcd926004808201939291829003018186803b158015610d2657600080fd5b505afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190612080565b92915050565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016101889061217b565b610d986000611b57565b565b6000546001600160a01b03163314610dc45760405162461bcd60e51b81526004016101889061217b565b7f00000000000000000000000000000000000000000000000000000000000000004210610e035760405162461bcd60e51b8152600401610188906121e7565b6001600160a01b038216610e515760405162461bcd60e51b8152602060048201526015602482015274696e76616c696420746f6b656e206164647265737360581b6044820152606401610188565b6001600160a01b038116610eb15760405162461bcd60e51b815260206004820152602160248201527f696e76616c6964206f7261636c652070726963652066656564206164647265736044820152607360f81b6064820152608401610188565b6001600160a01b0382811660009081526002602090815260409182902080546001600160a01b0319169385169384179055815163313ce56760e01b8152915163313ce567926004808201939291829003018186803b158015610f1257600080fd5b505afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a91906120cc565b60026000846001600160a01b03166001600160a01b0316815260200190815260200160002060020160006101000a81548160ff021916908360ff160217905550806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc357600080fd5b505afa158015610fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffb9190612080565b6001600160a01b0390921660009081526002602052604090206001019190915550565b7f0000000000000000000000000000000000000000000000000000000000000000421161105d5760405162461bcd60e51b8152600401610188906121b0565b7f0000000000000000000000000000000000000000000000000000000000000000421061109c5760405162461bcd60e51b8152600401610188906121e7565b60006110a661065e565b9050611146346012837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561110857600080fd5b505afa15801561111c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114091906120cc565b86610774565b5050565b6001600160a01b03811660009081526004602090815260408083208054825181850281018501909352808352606094938301828280156111a957602002820191906000526020600020905b815481526020019060010190808311611195575b5093979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000042116111f55760405162461bcd60e51b8152600401610188906121b0565b7f000000000000000000000000000000000000000000000000000000000000000042106112345760405162461bcd60e51b8152600401610188906121e7565b6001600160a01b0383166000908152600260205260409020826112995760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420746f6b656e20616d6f756e742076616c75650000000000006044820152606401610188565b80546001600160a01b03166112ff5760405162461bcd60e51b815260206004820152602660248201527f70757263686173696e67206f6620746f6b656e7320776173206e6f74207375706044820152651c1bdc9d195960d21b6064820152608401610188565b61130884610c55565b60018201556113226001600160a01b038516333086611ba7565b60038101546113319084611b4b565b81600301819055506113c183856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561137657600080fd5b505afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae91906120cc565b6001840154600285015460ff1686610774565b50505050565b6000546001600160a01b031633146113f15760405162461bcd60e51b81526004016101889061217b565b7f000000000000000000000000000000000000000000000000000000000000000042106114305760405162461bcd60e51b8152600401610188906121e7565b600081116114765760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420696e7075742076616c756560681b6044820152606401610188565b600855565b6000546001600160a01b031633146114a55760405162461bcd60e51b81526004016101889061217b565b7f000000000000000000000000000000000000000000000000000000000000000042116115105760405162461bcd60e51b81526020600482015260196024820152785072652d73616c65206973207374696c6c206f6e676f696e6760381b6044820152606401610188565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561155257600080fd5b505afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190612080565b9050600081116115ac5760405162461bcd60e51b81526004016101889061221e565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156115f457600080fd5b505af1158015611608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162c9190612060565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000042116116725760405162461bcd60e51b8152600401610188906121b0565b7f000000000000000000000000000000000000000000000000000000000000000042106116b15760405162461bcd60e51b8152600401610188906121e7565b6007546040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561171357600080fd5b505afa158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190612080565b61076f9190612408565b6006548111156117a75760405162461bcd60e51b815260206004820152601960248201527f746865206f7264657220494420697320696e636f7272656374000000000000006044820152606401610188565b600081815260056020526040902080546001600160a01b031633146118065760405162461bcd60e51b81526020600482015260156024820152746e6f74206f726465722062656e656669636961727960581b6044820152606401610188565b600081600101541161185a5760405162461bcd60e51b815260206004820152601e60248201527f696e73756666696369656e742072656465656d61626c6520746f6b656e7300006044820152606401610188565b80600201544210156118ae5760405162461bcd60e51b815260206004820152601760248201527f746f6b656e7320617265206265696e67206c6f636b65640000000000000000006044820152606401610188565b600381015460ff16156119035760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e732061726520726561647920746f20626520636c61696d656400006044820152606401610188565b80546001820154600091611922916001600160a01b0390911690611c12565b6003808401805460ff1916600117905533600090815260209190915260409020549091506119509082611d33565b3360009081526003602052604090819020919091558254905184916001600160a01b0316907fa9b22fc99b437cca7226a19e7018090ba9124753983abed4abc977f88a37eb56906119a49085815260200190565b60405180910390a3505050565b6000546001600160a01b031633146119db5760405162461bcd60e51b81526004016101889061217b565b7f00000000000000000000000000000000000000000000000000000000000000004211611a465760405162461bcd60e51b81526020600482015260196024820152785072652d73616c65206973207374696c6c206f6e676f696e6760381b6044820152606401610188565b4780611a645760405162461bcd60e51b81526004016101889061221e565b604051339082156108fc029083906000818181858888f19350505050158015611146573d6000803e3d6000fd5b6000546001600160a01b03163314611abb5760405162461bcd60e51b81526004016101889061217b565b6001600160a01b038116611b205760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610188565b611b2981611b57565b50565b6000611b3882846123e9565b9392505050565b6000611b3882846122bd565b6000611b38828461225f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526113c19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d3f565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015611c7657600080fd5b505afa158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae9190612080565b905082811015611cf457611cec6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583611e11565b809150611d2c565b611d286001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611e11565b8291505b5092915050565b6000611b388284612408565b6000611d94826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e419092919063ffffffff16565b80519091501561162c5780806020019051810190611db29190612060565b61162c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610188565b6040516001600160a01b03831660248201526044810182905261162c90849063a9059cbb60e01b90606401611bdb565b6060611e508484600085611e58565b949350505050565b606082471015611eb95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610188565b843b611f075760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610188565b600080866001600160a01b03168587604051611f2391906120e8565b60006040518083038185875af1925050503d8060008114611f60576040519150601f19603f3d011682016040523d82523d6000602084013e611f65565b606091505b5091509150611f75828286611f80565b979650505050505050565b60608315611f8f575081611b38565b825115611f9f5782518084602001fd5b8160405162461bcd60e51b81526004016101889190612148565b80356001600160a01b0381168114611fd057600080fd5b919050565b600060208284031215611fe6578081fd5b611b3882611fb9565b60008060408385031215612001578081fd5b61200a83611fb9565b915061201860208401611fb9565b90509250929050565b600080600060608486031215612035578081fd5b61203e84611fb9565b9250602084013591506040840135612055816124b5565b809150509250925092565b600060208284031215612071578081fd5b81518015158114611b38578182fd5b600060208284031215612091578081fd5b5051919050565b6000602082840312156120a9578081fd5b5035919050565b6000602082840312156120c1578081fd5b8135611b38816124b5565b6000602082840312156120dd578081fd5b8151611b38816124b5565b600082516120fa818460208701612442565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561213c57835183529284019291840191600101612120565b50909695505050505050565b6020815260008251806020840152612167816040850160208701612442565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f5072652d73616c6520686173206e6f74206265656e2073746172746564000000604082015260600190565b6020808252601a908201527f5072652d73616c652068617320616c726561647920656e646564000000000000604082015260600190565b60208082526021908201527f696e73756666696369656e742066756e647320666f7220636f6c6c656374696f6040820152603760f91b606082015260800190565b6000821982111561227257612272612489565b500190565b600060ff821660ff84168060ff0382111561229457612294612489565b019392505050565b600061ffff808416806122b1576122b161249f565b92169190910492915050565b6000826122cc576122cc61249f565b500490565b600181815b8085111561230c5781600019048211156122f2576122f2612489565b808516156122ff57918102915b93841c93908002906122d6565b509250929050565b6000611b3860ff84168360008261232d57506001610d5e565b8161233a57506000610d5e565b8160018114612350576002811461235a57612376565b6001915050610d5e565b60ff84111561236b5761236b612489565b50506001821b610d5e565b5060208310610133831016604e8410600b8410161715612399575081810a610d5e565b6123a383836122d1565b80600019048211156123b7576123b7612489565b029392505050565b600061ffff808316818516818304811182151516156123e0576123e0612489565b02949350505050565b600081600019048311821515161561240357612403612489565b500290565b60008282101561241a5761241a612489565b500390565b600060ff821660ff84168082101561243957612439612489565b90039392505050565b60005b8381101561245d578181015183820152602001612445565b838111156113c15750506000910152565b600060001982141561248257612482612489565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60ff81168114611b2957600080fdfea26469706673582212209a56bcd7c4831c9e928b8c65d9e40ca4ab1c36a771200d1728cd347f54778f6d64736f6c63430008040033",
"linkReferences": {},
"deployedLinkRef