ocean-subgraph/abis/FixedRateExchange.json

918 lines
72 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "FixedRateExchange",
"sourceName": "contracts/pools/fixedRate/FixedRateExchange.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_router",
"type": "address"
},
{
"internalType": "address",
"name": "_opfCollector",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
}
],
"name": "ExchangeActivated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"name": "ExchangeAllowedSwapperChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "dataToken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fixedRate",
"type": "uint256"
}
],
"name": "ExchangeCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
}
],
"name": "ExchangeDeactivated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "withMint",
"type": "bool"
}
],
"name": "ExchangeMintStateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newRate",
"type": "uint256"
}
],
"name": "ExchangeRateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "feeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "feeAmount",
"type": "uint256"
}
],
"name": "MarketFeeCollected",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "feeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "feeAmount",
"type": "uint256"
}
],
"name": "OceanFeeCollected",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "baseTokenSwappedAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "dataTokenSwappedAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "tokenOutAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "marketFeeAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oceanFeeAmount",
"type": "uint256"
}
],
"name": "Swapped",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TokenCollected",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "dataTokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBaseTokenAmount",
"type": "uint256"
}
],
"name": "buyDT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "dataTokenAmount",
"type": "uint256"
}
],
"name": "calcBaseInGivenOutDT",
"outputs": [
{
"internalType": "uint256",
"name": "baseTokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "baseTokenAmountBeforeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oceanFeeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "marketFeeAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "dataTokenAmount",
"type": "uint256"
}
],
"name": "calcBaseOutGivenInDT",
"outputs": [
{
"internalType": "uint256",
"name": "baseTokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "baseTokenAmountBeforeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oceanFeeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "marketFeeAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectBT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectDT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectMarketFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectOceanFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dataToken",
"type": "address"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
}
],
"name": "createWithDecimals",
"outputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"internalType": "address",
"name": "dataToken",
"type": "address"
},
{
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
}
],
"name": "generateExchangeId",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getAllowedSwapper",
"outputs": [
{
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getBTSupply",
"outputs": [
{
"internalType": "uint256",
"name": "supply",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getDTSupply",
"outputs": [
{
"internalType": "uint256",
"name": "supply",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getExchange",
"outputs": [
{
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"internalType": "address",
"name": "dataToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "dtDecimals",
"type": "uint256"
},
{
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "btDecimals",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fixedRate",
"type": "uint256"
},
{
"internalType": "bool",
"name": "active",
"type": "bool"
},
{
"internalType": "uint256",
"name": "dtSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "btSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dtBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "btBalance",
"type": "uint256"
},
{
"internalType": "bool",
"name": "withMint",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExchanges",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getFeesInfo",
"outputs": [
{
"internalType": "uint256",
"name": "marketFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "marketFeeCollector",
"type": "address"
},
{
"internalType": "uint256",
"name": "opfFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "marketFeeAvailable",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oceanFeeAvailable",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNumberOfExchanges",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "basetokenAddress",
"type": "address"
}
],
"name": "getOPFFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "opfCollector",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "router",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "dataTokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minBaseTokenAmount",
"type": "uint256"
}
],
"name": "sellDT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "newAllowedSwapper",
"type": "address"
}
],
"name": "setAllowedSwapper",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "newRate",
"type": "uint256"
}
],
"name": "setRate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "toggleExchangeState",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "withMint",
"type": "bool"
}
],
"name": "toggleMintState",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_newMarketFee",
"type": "uint256"
}
],
"name": "updateMarketFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_newMarketCollector",
"type": "address"
}
],
"name": "updateMarketFeeCollector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b506040516200337b3803806200337b833981016040819052620000349162000153565b6001600160a01b038216620000a05760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a2057726f6e6720526f75746572206044820152666164647265737360c81b60648201526084015b60405180910390fd5b6001600160a01b038116620001045760405162461bcd60e51b8152602060048201526024808201527f46697865645261746545786368616e67653a2057726f6e67204f5046206164646044820152637265737360e01b606482015260840162000097565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556200018b565b80516001600160a01b03811681146200014e57600080fd5b919050565b600080604083850312156200016757600080fd5b620001728362000136565b9150620001826020840162000136565b90509250929050565b6131e0806200019b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063825b5cd6116100f9578063b686bcaf11610097578063c99733a711610071578063c99733a714610575578063f532129e14610588578063f8154aee1461059b578063f887ea40146105ae57600080fd5b8063b686bcaf1461053c578063c1f6572e1461054f578063c66274ea1461056257600080fd5b806388823872116100d357806388823872146104eb578063a28f78f1146104fe578063b32b56f914610511578063b42414291461053457600080fd5b8063825b5cd6146103c5578063855058dd146103d857806385fcbc2f146104d857600080fd5b80635c36901c116101665780636e4c6269116101405780636e4c62691461035957806371dc14b21461036c57806379dd28361461039f5780637c82ebe9146103b257600080fd5b80635c36901c1461030057806360311e9514610333578063680819eb1461034657600080fd5b806324cb477e116101a257806324cb477e14610247578063450dccc31461025c5780634c87087d1461026f5780635acfedc7146102ed57600080fd5b8063012c3275146101c95780630b3b430d146101ef5780631e2e3a6b14610232575b600080fd5b6101dc6101d7366004612b7e565b6105c1565b6040519081526020015b60405180910390f35b6102026101fd366004612c74565b610d31565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101e6565b61023a610e3b565b6040516101e69190612d74565b61025a610255366004612c74565b610e93565b005b61025a61026a366004612c74565b610f72565b61028261027d366004612c74565b6110bb565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101e6565b61025a6102fb366004612c74565b6111e4565b61032361030e366004612c74565b60009081526002602052604090205460ff1690565b60405190151581526020016101e6565b61025a610341366004612c8d565b6112e0565b61025a610354366004612ce9565b611382565b61025a610367366004612d0b565b61146f565b61037f61037a366004612ce9565b6118cd565b6040805194855260208501939093529183015260608201526080016101e6565b61025a6103ad366004612cb9565b611a3c565b61025a6103c0366004612c8d565b611ace565b61025a6103d3366004612d0b565b611b61565b6104c06103e6366004612c74565b60009081526002602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652938201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6040516001600160a01b0390911681526020016101e6565b6101dc6104e6366004612c74565b6120d6565b61025a6104f9366004612ce9565b61227d565b6001546104c0906001600160a01b031681565b6101dc61051f366004612c74565b60009081526002602052604090206003015490565b6003546101dc565b61025a61054a366004612c74565b6122f4565b6101dc61055d366004612b3b565b6123eb565b6101dc610570366004612c74565b612436565b61037f610583366004612ce9565b61279e565b61025a610596366004612c74565b6128a2565b6101dc6105a9366004612b20565b6129e2565b6000546104c0906001600160a01b031681565b600080546001600160a01b031633146106215760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061063f5761063f61316d565b60200260200101516001600160a01b031614156106ba5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b6001600160a01b03841661072c5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b836001600160a01b0316836000815181106107495761074961316d565b60200260200101516001600160a01b031614156107ce5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365746f6b656e0000000000000000006064820152608401610618565b816002815181106107e1576107e161316d565b6020026020010151600014156108505760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610618565b61088f836000815181106108665761086661316d565b602002602001015185856001815181106108825761088261316d565b60200260200101516123eb565b600081815260026020526040902060030154909150156109055760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610618565b6000600190508260048151811061091e5761091e61316d565b602002602001015160001415610932575060005b604051806101e001604052806001151581526020018560018151811061095a5761095a61316d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109925761099261316d565b60200260200101516001600160a01b03168152602001846002815181106109bb576109bb61316d565b60200260200101518152602001846001815181106109db576109db61316d565b60200260200101518152602001846000815181106109fb576109fb61316d565b60200260200101518152602001600081526020016000815260200184600381518110610a2957610a2961316d565b6020026020010151815260200185600281518110610a4957610a4961316d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610a8857610a8861316d565b6020908102919091018101516001600160a01b0390811690925260008581526002808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a01519584018054968a1696831696909617909555608089015160038085019190915560a08a0151600485015560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9092018490558551908716918691610bf457610bf461316d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c3a57610c3a61316d565b602002602001015187600281518110610c5557610c5561316d565b6020026020010151604051610c7f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610c9a57610c9a61316d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610ceb57610ceb61316d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260026020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095528387015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e1f906129e2565b9350806101600151925080610180015191505091939590929450565b60606003805480602002602001604051908101604052809291908181526020018280548015610e8957602002820191906000526020600020905b815481526020019060010190808311610e75575b5050505050905090565b600081815260026020526040902054819061010090046001600160a01b03163314610ed05760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604090205460ff1615610f2b57600082815260026020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260026020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260026020526040902054819061010090046001600160a01b03163314610faf5760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604080822060068101805493905560018101549054915163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052169063a9059cbb90604401602060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110549190612c57565b506000838152600260209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a4505050565b600081815260026020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905297850154881660608501819052600386015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548c16610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a0880152949093049098166101c08501529597949691959194909281908190819081906111b08e612436565b95506111bb8e6120d6565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b6000818152600260208190526040808320600b8101805494905590910154600154915163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561124e57600080fd5b505af1158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a35050565b600082815260026020526040902054829061010090046001600160a01b0316331461131d5760405162461bcd60e51b815260040161061890612e59565b600083815260026020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260026020526040902054829061010090046001600160a01b031633146113bf5760405162461bcd60e51b815260040161061890612e59565b816114185760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610618565b6000838152600260205260409081902060030183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114629086815260200190565b60405180910390a3505050565b600083815260026020526040902054839060ff1615156001146114a45760405162461bcd60e51b815260040161061890612e0e565b826114c15760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611524576000848152600260205260409020600c015461010090046001600160a01b031633146115245760405162461bcd60e51b815260040161061890612db8565b60008060008061153488886118cd565b93509350935093508584101561159b5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610618565b6000888152600260205260409020600b01546115b79083612a60565b6000898152600260205260409020600b810191909155600a01546115db9082612a60565b60008981526002602052604090819020600a81019290925560019091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd9061162990339030908c90600401612d50565b602060405180830381600087803b15801561164357600080fd5b505af1158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190612c57565b6116975760405162461bcd60e51b815260040161061890612f00565b6000888152600260205260409020600601546116b39088612a60565b60008981526002602052604090206006810191909155600701548411156117955760008881526002602081905260409182902090810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd9261172292610100909204169033908990600401612d50565b602060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117749190612c57565b6117905760405162461bcd60e51b815260040161061890612ea2565b611852565b6000888152600260205260409020600701546117b19084612a73565b60008981526002602081905260409182902060078101939093559190910154905163a9059cbb60e01b8152336004820152602481018690526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190612c57565b505b6000888152600260208181526040928390209091015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a35050505050505050565b600082815260026020526040812054819081908190869060ff1615156001146119085760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546119819061192990600a613079565b6000898152600260205260409020600501546119759061194a90600a613079565b60008b81526002602052604090206003015461197b90670de0b6b3a764000090611975908d90612a7f565b90612a8b565b90612a7f565b600088815260026020819052604090912001549094506119a9906001600160a01b03166129e2565b156119ef57600087815260026020819052604090912001546119ec90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b8790612a7f565b92505b600087815260026020526040902060080154611a1a90670de0b6b3a764000090611975908790612a7f565b9150611a3083611a2a8685612a73565b90612a73565b94505092959194509250565b600082815260026020526040902054829061010090046001600160a01b03163314611a795760405162461bcd60e51b815260040161061890612e59565b600083815260026020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611462565b6000828152600260205260409020600901546001600160a01b03163314611b305760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260026020526040902054839060ff161515600114611b965760405162461bcd60e51b815260040161061890612e0e565b82611bb35760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611c16576000848152600260205260409020600c015461010090046001600160a01b03163314611c165760405162461bcd60e51b815260040161061890612db8565b600080600080611c26888861279e565b935093509350935085841115611c8e5760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610618565b6000888152600260205260409020600b0154611caa9083612a60565b6000898152600260205260409020600b810191909155600a0154611cce9082612a60565b600089815260026020819052604091829020600a810193909355919091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd90611d1d90339030908990600401612d50565b602060405180830381600087803b158015611d3757600080fd5b505af1158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190612c57565b611d8b5760405162461bcd60e51b815260040161061890612ea2565b600088815260026020526040902060070154611da79084612a60565b6000898152600260205260409020600781019190915560060154871115611fad576000888152600260205260409020600c015460ff168015611e6f5750600088815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b158015611e3757600080fd5b505afa158015611e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6f9190612c57565b15611eed57600088815260026020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611ed057600080fd5b505af1158015611ee4573d6000803e3d6000fd5b50505050612069565b600088815260026020526040908190206001810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd92611f3a92610100909204169033908c90600401612d50565b602060405180830381600087803b158015611f5457600080fd5b505af1158015611f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8c9190612c57565b611fa85760405162461bcd60e51b815260040161061890612f00565b612069565b600088815260026020526040902060060154611fc99088612a73565b600089815260026020526040908190206006810192909255600190910154905163a9059cbb60e01b8152336004820152602481018990526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120679190612c57565b505b6000888152600260209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016118bb565b60008181526002602052604081205460ff166120f457506000919050565b600082815260026020819052604080832091820154915490516370a0823160e01b81526001600160a01b03610100909204821660048201529116906370a082319060240160206040518083038186803b15801561215057600080fd5b505afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190612d37565b60008481526002602081905260408083209182015491549051636eb1769f60e11b81526101009091046001600160a01b0390811660048301523060248301529394509192169063dd62ed3e9060440160206040518083038186803b1580156121ef57600080fd5b505afa158015612203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122279190612d37565b9050808210156122555760008481526002602052604090206007015461224e908390612a60565b9250612275565b600084815260026020526040902060070154612272908290612a60565b92505b50505b919050565b6000828152600260205260409020600901546001600160a01b031633146122df5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060080155565b6000818152600260208190526040808320600a8101805494905591820154600990920154905163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123999190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d6407905591016112d4565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090509392505050565b60008181526002602052604081205460ff1661245457506000919050565b6000828152600260205260409020600c015460ff16151560011480156125005750600082815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b1580156124c857600080fd5b505afa1580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612c57565b15612629576000828152600260209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd926004808301939192829003018186803b15801561255757600080fd5b505afa15801561256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258f9190612d37565b600083815260026020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea926004808301939192829003018186803b1580156125e157600080fd5b505afa1580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126199190612d37565b6126239190613140565b92915050565b6000828152600260205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a082319060240160206040518083038186803b15801561268457600080fd5b505afa158015612698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bc9190612d37565b600084815260026020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e9060440160206040518083038186803b15801561272257600080fd5b505afa158015612736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275a9190612d37565b9050808210156127815760008481526002602052604090206006015461224e908390612a60565b600084815260026020526040902060060154612272908290612a60565b600082815260026020526040812054819081908190869060ff1615156001146127d95760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546127fa9061192990600a613079565b60008881526002602081905260409091200154909450612822906001600160a01b03166129e2565b15612861576000878152600260208190526040909120015461285e90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b92505b60008781526002602052604090206008015461288c90670de0b6b3a764000090611975908790612a7f565b9150611a308361289c8685612a60565b90612a60565b600081815260026020526040902054819061010090046001600160a01b031633146128df5760405162461bcd60e51b815260040161061890612e59565b6000828152600260208190526040808320600781018054949055918201549154905163a9059cbb60e01b81526001600160a01b03610100909204821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561294d57600080fd5b505af1158015612961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129859190612c57565b5060008381526002602081815260409283902091820154915492518481526001600160a01b039283169361010090049092169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691016110ae565b60008054604051637c0aa57760e11b81526001600160a01b0384811660048301529091169063f8154aee9060240160206040518083038186803b158015612a2857600080fd5b505afa158015612a3c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190612d37565b6000612a6c8284612ffc565b9392505050565b6000612a6c8284613140565b6000612a6c8284613121565b6000612a6c8284613014565b80356001600160a01b038116811461227857600080fd5b600082601f830112612abf57600080fd5b81356020612ad4612acf83612fd8565b612fa7565b80838252828201915082860187848660051b8901011115612af457600080fd5b60005b85811015612b1357813584529284019290840190600101612af7565b5090979650505050505050565b600060208284031215612b3257600080fd5b612a6c82612a97565b600080600060608486031215612b5057600080fd5b612b5984612a97565b9250612b6760208501612a97565b9150612b7560408501612a97565b90509250925092565b600080600060608486031215612b9357600080fd5b612b9c84612a97565b925060208085013567ffffffffffffffff80821115612bba57600080fd5b818701915087601f830112612bce57600080fd5b8135612bdc612acf82612fd8565b8082825285820191508585018b878560051b8801011115612bfc57600080fd5b600095505b83861015612c2657612c1281612a97565b835260019590950194918601918601612c01565b50965050506040870135925080831115612c3f57600080fd5b5050612c4d86828701612aae565b9150509250925092565b600060208284031215612c6957600080fd5b8151612a6c81613199565b600060208284031215612c8657600080fd5b5035919050565b60008060408385031215612ca057600080fd5b82359150612cb060208401612a97565b90509250929050565b60008060408385031215612ccc57600080fd5b823591506020830135612cde81613199565b809150509250929050565b60008060408385031215612cfc57600080fd5b50508035926020909101359150565b600080600060608486031215612d2057600080fd5b505081359360208301359350604090920135919050565b600060208284031215612d4957600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b81811015612dac57835183529284019291840191600101612d90565b50909695505050505050565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652062617365546f6b656e20636f6e7472616374606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652064617461546f6b656e20636f6e7472616374606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a207a65726f206461746120746f6b604082015268195b88185b5bdd5b9d60ba1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612fd057612fd0613183565b604052919050565b600067ffffffffffffffff821115612ff257612ff2613183565b5060051b60200190565b6000821982111561300f5761300f613157565b500190565b60008261303157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561307157816000190482111561305757613057613157565b8085161561306457918102915b93841c939080029061303b565b509250929050565b6000612a6c838360008261308f57506001612623565b8161309c57506000612623565b81600181146130b257600281146130bc576130d8565b6001915050612623565b60ff8411156130cd576130cd613157565b50506001821b612623565b5060208310610133831016604e8410600b84101617156130fb575081810a612623565b6131058383613036565b806000190482111561311957613119613157565b029392505050565b600081600019048311821515161561313b5761313b613157565b500290565b60008282101561315257613152613157565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146131a757600080fd5b5056fea2646970667358221220ce5268baa624f044ea145410a459d6d1e6ca8dbfb90eb82914fc12914514595664736f6c63430008070033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063825b5cd6116100f9578063b686bcaf11610097578063c99733a711610071578063c99733a714610575578063f532129e14610588578063f8154aee1461059b578063f887ea40146105ae57600080fd5b8063b686bcaf1461053c578063c1f6572e1461054f578063c66274ea1461056257600080fd5b806388823872116100d357806388823872146104eb578063a28f78f1146104fe578063b32b56f914610511578063b42414291461053457600080fd5b8063825b5cd6146103c5578063855058dd146103d857806385fcbc2f146104d857600080fd5b80635c36901c116101665780636e4c6269116101405780636e4c62691461035957806371dc14b21461036c57806379dd28361461039f5780637c82ebe9146103b257600080fd5b80635c36901c1461030057806360311e9514610333578063680819eb1461034657600080fd5b806324cb477e116101a257806324cb477e14610247578063450dccc31461025c5780634c87087d1461026f5780635acfedc7146102ed57600080fd5b8063012c3275146101c95780630b3b430d146101ef5780631e2e3a6b14610232575b600080fd5b6101dc6101d7366004612b7e565b6105c1565b6040519081526020015b60405180910390f35b6102026101fd366004612c74565b610d31565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101e6565b61023a610e3b565b6040516101e69190612d74565b61025a610255366004612c74565b610e93565b005b61025a61026a366004612c74565b610f72565b61028261027d366004612c74565b6110bb565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101e6565b61025a6102fb366004612c74565b6111e4565b61032361030e366004612c74565b60009081526002602052604090205460ff1690565b60405190151581526020016101e6565b61025a610341366004612c8d565b6112e0565b61025a610354366004612ce9565b611382565b61025a610367366004612d0b565b61146f565b61037f61037a366004612ce9565b6118cd565b6040805194855260208501939093529183015260608201526080016101e6565b61025a6103ad366004612cb9565b611a3c565b61025a6103c0366004612c8d565b611ace565b61025a6103d3366004612d0b565b611b61565b6104c06103e6366004612c74565b60009081526002602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652938201548316606082015260038201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6040516001600160a01b0390911681526020016101e6565b6101dc6104e6366004612c74565b6120d6565b61025a6104f9366004612ce9565b61227d565b6001546104c0906001600160a01b031681565b6101dc61051f366004612c74565b60009081526002602052604090206003015490565b6003546101dc565b61025a61054a366004612c74565b6122f4565b6101dc61055d366004612b3b565b6123eb565b6101dc610570366004612c74565b612436565b61037f610583366004612ce9565b61279e565b61025a610596366004612c74565b6128a2565b6101dc6105a9366004612b20565b6129e2565b6000546104c0906001600160a01b031681565b600080546001600160a01b031633146106215760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061063f5761063f61316d565b60200260200101516001600160a01b031614156106ba5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b6001600160a01b03841661072c5760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610618565b836001600160a01b0316836000815181106107495761074961316d565b60200260200101516001600160a01b031614156107ce5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365746f6b656e0000000000000000006064820152608401610618565b816002815181106107e1576107e161316d565b6020026020010151600014156108505760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610618565b61088f836000815181106108665761086661316d565b602002602001015185856001815181106108825761088261316d565b60200260200101516123eb565b600081815260026020526040902060030154909150156109055760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610618565b6000600190508260048151811061091e5761091e61316d565b602002602001015160001415610932575060005b604051806101e001604052806001151581526020018560018151811061095a5761095a61316d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109925761099261316d565b60200260200101516001600160a01b03168152602001846002815181106109bb576109bb61316d565b60200260200101518152602001846001815181106109db576109db61316d565b60200260200101518152602001846000815181106109fb576109fb61316d565b60200260200101518152602001600081526020016000815260200184600381518110610a2957610a2961316d565b6020026020010151815260200185600281518110610a4957610a4961316d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610a8857610a8861316d565b6020908102919091018101516001600160a01b0390811690925260008581526002808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a01519584018054968a1696831696909617909555608089015160038085019190915560a08a0151600485015560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9092018490558551908716918691610bf457610bf461316d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c3a57610c3a61316d565b602002602001015187600281518110610c5557610c5561316d565b6020026020010151604051610c7f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610c9a57610c9a61316d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610ceb57610ceb61316d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260026020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095528387015485166060840181905260038501546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e1f906129e2565b9350806101600151925080610180015191505091939590929450565b60606003805480602002602001604051908101604052809291908181526020018280548015610e8957602002820191906000526020600020905b815481526020019060010190808311610e75575b5050505050905090565b600081815260026020526040902054819061010090046001600160a01b03163314610ed05760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604090205460ff1615610f2b57600082815260026020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260026020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260026020526040902054819061010090046001600160a01b03163314610faf5760405162461bcd60e51b815260040161061890612e59565b60008281526002602052604080822060068101805493905560018101549054915163a9059cbb60e01b81526101009092046001600160a01b03908116600484015260248301849052169063a9059cbb90604401602060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110549190612c57565b506000838152600260209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a4505050565b600081815260026020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905297850154881660608501819052600386015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548c16610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a0880152949093049098166101c08501529597949691959194909281908190819081906111b08e612436565b95506111bb8e6120d6565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b6000818152600260208190526040808320600b8101805494905590910154600154915163a9059cbb60e01b81526001600160a01b0392831660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561124e57600080fd5b505af1158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a35050565b600082815260026020526040902054829061010090046001600160a01b0316331461131d5760405162461bcd60e51b815260040161061890612e59565b600083815260026020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260026020526040902054829061010090046001600160a01b031633146113bf5760405162461bcd60e51b815260040161061890612e59565b816114185760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610618565b6000838152600260205260409081902060030183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114629086815260200190565b60405180910390a3505050565b600083815260026020526040902054839060ff1615156001146114a45760405162461bcd60e51b815260040161061890612e0e565b826114c15760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611524576000848152600260205260409020600c015461010090046001600160a01b031633146115245760405162461bcd60e51b815260040161061890612db8565b60008060008061153488886118cd565b93509350935093508584101561159b5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610618565b6000888152600260205260409020600b01546115b79083612a60565b6000898152600260205260409020600b810191909155600a01546115db9082612a60565b60008981526002602052604090819020600a81019290925560019091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd9061162990339030908c90600401612d50565b602060405180830381600087803b15801561164357600080fd5b505af1158015611657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167b9190612c57565b6116975760405162461bcd60e51b815260040161061890612f00565b6000888152600260205260409020600601546116b39088612a60565b60008981526002602052604090206006810191909155600701548411156117955760008881526002602081905260409182902090810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd9261172292610100909204169033908990600401612d50565b602060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117749190612c57565b6117905760405162461bcd60e51b815260040161061890612ea2565b611852565b6000888152600260205260409020600701546117b19084612a73565b60008981526002602081905260409182902060078101939093559190910154905163a9059cbb60e01b8152336004820152602481018690526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190612c57565b505b6000888152600260208181526040928390209091015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a35050505050505050565b600082815260026020526040812054819081908190869060ff1615156001146119085760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546119819061192990600a613079565b6000898152600260205260409020600501546119759061194a90600a613079565b60008b81526002602052604090206003015461197b90670de0b6b3a764000090611975908d90612a7f565b90612a8b565b90612a7f565b600088815260026020819052604090912001549094506119a9906001600160a01b03166129e2565b156119ef57600087815260026020819052604090912001546119ec90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b8790612a7f565b92505b600087815260026020526040902060080154611a1a90670de0b6b3a764000090611975908790612a7f565b9150611a3083611a2a8685612a73565b90612a73565b94505092959194509250565b600082815260026020526040902054829061010090046001600160a01b03163314611a795760405162461bcd60e51b815260040161061890612e59565b600083815260026020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611462565b6000828152600260205260409020600901546001600160a01b03163314611b305760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260026020526040902054839060ff161515600114611b965760405162461bcd60e51b815260040161061890612e0e565b82611bb35760405162461bcd60e51b815260040161061890612f5e565b6000848152600260205260409020600c015461010090046001600160a01b031615611c16576000848152600260205260409020600c015461010090046001600160a01b03163314611c165760405162461bcd60e51b815260040161061890612db8565b600080600080611c26888861279e565b935093509350935085841115611c8e5760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610618565b6000888152600260205260409020600b0154611caa9083612a60565b6000898152600260205260409020600b810191909155600a0154611cce9082612a60565b600089815260026020819052604091829020600a810193909355919091015490516323b872dd60e01b81526001600160a01b03909116906323b872dd90611d1d90339030908990600401612d50565b602060405180830381600087803b158015611d3757600080fd5b505af1158015611d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6f9190612c57565b611d8b5760405162461bcd60e51b815260040161061890612ea2565b600088815260026020526040902060070154611da79084612a60565b6000898152600260205260409020600781019190915560060154871115611fad576000888152600260205260409020600c015460ff168015611e6f5750600088815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b158015611e3757600080fd5b505afa158015611e4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6f9190612c57565b15611eed57600088815260026020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611ed057600080fd5b505af1158015611ee4573d6000803e3d6000fd5b50505050612069565b600088815260026020526040908190206001810154905491516323b872dd60e01b81526001600160a01b03918216926323b872dd92611f3a92610100909204169033908c90600401612d50565b602060405180830381600087803b158015611f5457600080fd5b505af1158015611f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8c9190612c57565b611fa85760405162461bcd60e51b815260040161061890612f00565b612069565b600088815260026020526040902060060154611fc99088612a73565b600089815260026020526040908190206006810192909255600190910154905163a9059cbb60e01b8152336004820152602481018990526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120679190612c57565b505b6000888152600260209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016118bb565b60008181526002602052604081205460ff166120f457506000919050565b600082815260026020819052604080832091820154915490516370a0823160e01b81526001600160a01b03610100909204821660048201529116906370a082319060240160206040518083038186803b15801561215057600080fd5b505afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190612d37565b60008481526002602081905260408083209182015491549051636eb1769f60e11b81526101009091046001600160a01b0390811660048301523060248301529394509192169063dd62ed3e9060440160206040518083038186803b1580156121ef57600080fd5b505afa158015612203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122279190612d37565b9050808210156122555760008481526002602052604090206007015461224e908390612a60565b9250612275565b600084815260026020526040902060070154612272908290612a60565b92505b50505b919050565b6000828152600260205260409020600901546001600160a01b031633146122df5760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610618565b60009182526002602052604090912060080155565b6000818152600260208190526040808320600a8101805494905591820154600990920154905163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561236157600080fd5b505af1158015612375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123999190612c57565b506000828152600260208181526040928390209091015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d6407905591016112d4565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090509392505050565b60008181526002602052604081205460ff1661245457506000919050565b6000828152600260205260409020600c015460ff16151560011480156125005750600082815260026020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a9060240160206040518083038186803b1580156124c857600080fd5b505afa1580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125009190612c57565b15612629576000828152600260209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd926004808301939192829003018186803b15801561255757600080fd5b505afa15801561256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258f9190612d37565b600083815260026020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea926004808301939192829003018186803b1580156125e157600080fd5b505afa1580156125f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126199190612d37565b6126239190613140565b92915050565b6000828152600260205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a082319060240160206040518083038186803b15801561268457600080fd5b505afa158015612698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bc9190612d37565b600084815260026020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e9060440160206040518083038186803b15801561272257600080fd5b505afa158015612736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275a9190612d37565b9050808210156127815760008481526002602052604090206006015461224e908390612a60565b600084815260026020526040902060060154612272908290612a60565b600082815260026020526040812054819081908190869060ff1615156001146127d95760405162461bcd60e51b815260040161061890612e0e565b6000878152600260205260409020600401546127fa9061192990600a613079565b60008881526002602081905260409091200154909450612822906001600160a01b03166129e2565b15612861576000878152600260208190526040909120015461285e90670de0b6b3a764000090611975906119e5906001600160a01b03166129e2565b92505b60008781526002602052604090206008015461288c90670de0b6b3a764000090611975908790612a7f565b9150611a308361289c8685612a60565b90612a60565b600081815260026020526040902054819061010090046001600160a01b031633146128df5760405162461bcd60e51b815260040161061890612e59565b6000828152600260208190526040808320600781018054949055918201549154905163a9059cbb60e01b81526001600160a01b03610100909204821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b15801561294d57600080fd5b505af1158015612961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129859190612c57565b5060008381526002602081815260409283902091820154915492518481526001600160a01b039283169361010090049092169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691016110ae565b60008054604051637c0aa57760e11b81526001600160a01b0384811660048301529091169063f8154aee9060240160206040518083038186803b158015612a2857600080fd5b505afa158015612a3c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190612d37565b6000612a6c8284612ffc565b9392505050565b6000612a6c8284613140565b6000612a6c8284613121565b6000612a6c8284613014565b80356001600160a01b038116811461227857600080fd5b600082601f830112612abf57600080fd5b81356020612ad4612acf83612fd8565b612fa7565b80838252828201915082860187848660051b8901011115612af457600080fd5b60005b85811015612b1357813584529284019290840190600101612af7565b5090979650505050505050565b600060208284031215612b3257600080fd5b612a6c82612a97565b600080600060608486031215612b5057600080fd5b612b5984612a97565b9250612b6760208501612a97565b9150612b7560408501612a97565b90509250925092565b600080600060608486031215612b9357600080fd5b612b9c84612a97565b925060208085013567ffffffffffffffff80821115612bba57600080fd5b818701915087601f830112612bce57600080fd5b8135612bdc612acf82612fd8565b8082825285820191508585018b878560051b8801011115612bfc57600080fd5b600095505b83861015612c2657612c1281612a97565b835260019590950194918601918601612c01565b50965050506040870135925080831115612c3f57600080fd5b5050612c4d86828701612aae565b9150509250925092565b600060208284031215612c6957600080fd5b8151612a6c81613199565b600060208284031215612c8657600080fd5b5035919050565b60008060408385031215612ca057600080fd5b82359150612cb060208401612a97565b90509250929050565b60008060408385031215612ccc57600080fd5b823591506020830135612cde81613199565b809150509250929050565b60008060408385031215612cfc57600080fd5b50508035926020909101359150565b600080600060608486031215612d2057600080fd5b505081359360208301359350604090920135919050565b600060208284031215612d4957600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b81811015612dac57835183529284019291840191600101612d90565b50909695505050505050565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652062617365546f6b656e20636f6e7472616374606082015260800190565b602080825260409082018190527f46697865645261746545786368616e67653a207472616e7366657246726f6d20908201527f6661696c656420696e207468652064617461546f6b656e20636f6e7472616374606082015260800190565b60208082526029908201527f46697865645261746545786368616e67653a207a65726f206461746120746f6b604082015268195b88185b5bdd5b9d60ba1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612fd057612fd0613183565b604052919050565b600067ffffffffffffffff821115612ff257612ff2613183565b5060051b60200190565b6000821982111561300f5761300f613157565b500190565b60008261303157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561307157816000190482111561305757613057613157565b8085161561306457918102915b93841c939080029061303b565b509250929050565b6000612a6c838360008261308f57506001612623565b8161309c57506000612623565b81600181146130b257600281146130bc576130d8565b6001915050612623565b60ff8411156130cd576130cd613157565b50506001821b612623565b5060208310610133831016604e8410600b84101617156130fb575081810a612623565b6131058383613036565b806000190482111561311957613119613157565b029392505050565b600081600019048311821515161561313b5761313b613157565b500290565b60008282101561315257613152613157565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146131a757600080fd5b5056fea2646970667358221220ce5268baa624f044ea145410a459d6d1e6ca8dbfb90eb82914fc12914514595664736f6c63430008070033",
"linkReferences": {},
"deployedLinkReferences": {}
}