UNPKG

blackbull-sdk

Version:

An SDK for building applications on top of Blackbullswap

736 lines 101 kB
{ "_format": "hh-sol-artifact-1", "contractName": "GovernorAlpha", "sourceName": "contracts/GovernorAlpha.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "timelock_", "type": "address" }, { "internalType": "address", "name": "png_", "type": "address" }, { "internalType": "address", "name": "guardian_", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ProposalCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "proposer", "type": "address" }, { "indexed": false, "internalType": "address[]", "name": "targets", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "indexed": false, "internalType": "string[]", "name": "signatures", "type": "string[]" }, { "indexed": false, "internalType": "bytes[]", "name": "calldatas", "type": "bytes[]" }, { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "description", "type": "string" } ], "name": "ProposalCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "ProposalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "eta", "type": "uint256" } ], "name": "ProposalQueued", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "startBlock", "type": "uint256" } ], "name": "StartBlockSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "voter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "support", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "votes", "type": "uint256" } ], "name": "VoteCast", "type": "event" }, { "constant": true, "inputs": [], "name": "BALLOT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "__abdicate", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "__acceptAdmin", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "newPendingAdmin", "type": "address" }, { "internalType": "uint256", "name": "eta", "type": "uint256" } ], "name": "__executeSetTimelockPendingAdmin", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "newPendingAdmin", "type": "address" }, { "internalType": "uint256", "name": "eta", "type": "uint256" } ], "name": "__queueSetTimelockPendingAdmin", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "cancel", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "bool", "name": "support", "type": "bool" } ], "name": "castVote", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "bool", "name": "support", "type": "bool" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "castVoteBySig", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "execute", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "getActions", "outputs": [ { "internalType": "address[]", "name": "targets", "type": "address[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "string[]", "name": "signatures", "type": "string[]" }, { "internalType": "bytes[]", "name": "calldatas", "type": "bytes[]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "address", "name": "voter", "type": "address" } ], "name": "getReceipt", "outputs": [ { "components": [ { "internalType": "bool", "name": "hasVoted", "type": "bool" }, { "internalType": "bool", "name": "support", "type": "bool" }, { "internalType": "uint96", "name": "votes", "type": "uint96" } ], "internalType": "struct GovernorAlpha.Receipt", "name": "", "type": "tuple" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "guardian", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "latestProposalIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "png", "outputs": [ { "internalType": "contract PngInterface", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "proposalCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "proposalMaxOperations", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [], "name": "proposalThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "proposals", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "address", "name": "proposer", "type": "address" }, { "internalType": "uint256", "name": "eta", "type": "uint256" }, { "internalType": "uint256", "name": "startTime", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "uint256", "name": "startBlock", "type": "uint256" }, { "internalType": "uint256", "name": "forVotes", "type": "uint256" }, { "internalType": "uint256", "name": "againstVotes", "type": "uint256" }, { "internalType": "bool", "name": "canceled", "type": "bool" }, { "internalType": "bool", "name": "executed", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address[]", "name": "targets", "type": "address[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "string[]", "name": "signatures", "type": "string[]" }, { "internalType": "bytes[]", "name": "calldatas", "type": "bytes[]" }, { "internalType": "string", "name": "description", "type": "string" } ], "name": "propose", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "queue", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "state", "outputs": [ { "internalType": "enum GovernorAlpha.ProposalState", "name": "", "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "timelock", "outputs": [ { "internalType": "contract TimelockInterface", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "votingDelay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" }, { "constant": true, "inputs": [], "name": "votingPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "pure", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b506040516200543838038062005438833981810160405262000037919081019062000119565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001bd565b6000815190506200011381620001a3565b92915050565b6000806000606084860312156200012f57600080fd5b60006200013f8682870162000102565b9350506020620001528682870162000102565b9250506040620001658682870162000102565b9150509250925092565b60006200017c8262000183565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620001ae816200016f565b8114620001ba57600080fd5b50565b61526b80620001cd6000396000f3fe6080604052600436106101815760003560e01c80635f775678116100d1578063d33219b41161008a578063ddf0b00911610064578063ddf0b0091461056c578063deaaa7cc14610595578063e23a9a52146105c0578063fe0d94c1146105fd57610181565b8063d33219b4146104d9578063da35c66414610504578063da95691a1461052f57610181565b80635f77567814610401578063760fbc131461042c5780637bdbe4d014610443578063915006711461046e578063b58131b014610497578063b9a61961146104c257610181565b806321f43e421161013e5780633e4f49e6116101185780633e4f49e61461034757806340e58ee514610384578063452a9320146103ad5780634634c61f146103d857610181565b806321f43e42146102b3578063328dd982146102dc5780633932abb11461031c57610181565b8063013cf08b1461018657806302a251a3146101cc57806306fdde03146101f757806315373e3d1461022257806317977c611461024b57806320606b7014610288575b600080fd5b34801561019257600080fd5b506101ad60048036036101a89190810190613330565b610619565b6040516101c39a99989796959493929190614c2b565b60405180910390f35b3480156101d857600080fd5b506101e16106a7565b6040516101ee9190614b60565b60405180910390f35b34801561020357600080fd5b5061020c6106b2565b6040516102199190614883565b60405180910390f35b34801561022e57600080fd5b50610249600480360361024491908101906133be565b6106eb565b005b34801561025757600080fd5b50610272600480360361026d9190810190613149565b6106fa565b60405161027f9190614b60565b60405180910390f35b34801561029457600080fd5b5061029d610712565b6040516102aa9190614756565b60405180910390f35b3480156102bf57600080fd5b506102da60048036036102d59190810190613172565b610729565b005b3480156102e857600080fd5b5061030360048036036102fe9190810190613330565b6108b6565b60405161031394939291906146f5565b60405180910390f35b34801561032857600080fd5b50610331610b93565b60405161033e9190614b60565b60405180910390f35b34801561035357600080fd5b5061036e60048036036103699190810190613330565b610b9e565b60405161037b9190614868565b60405180910390f35b34801561039057600080fd5b506103ab60048036036103a69190810190613330565b610d6b565b005b3480156103b957600080fd5b506103c26110af565b6040516103cf9190614522565b60405180910390f35b3480156103e457600080fd5b506103ff60048036036103fa91908101906133fa565b6110d5565b005b34801561040d57600080fd5b506104166112a4565b6040516104239190614832565b60405180910390f35b34801561043857600080fd5b506104416112ca565b005b34801561044f57600080fd5b5061045861139e565b6040516104659190614b60565b60405180910390f35b34801561047a57600080fd5b5061049560048036036104909190810190613172565b6113a7565b005b3480156104a357600080fd5b506104ac61152f565b6040516104b99190614b60565b60405180910390f35b3480156104ce57600080fd5b506104d7611541565b005b3480156104e557600080fd5b506104ee611654565b6040516104fb919061484d565b60405180910390f35b34801561051057600080fd5b50610519611679565b6040516105269190614b60565b60405180910390f35b34801561053b57600080fd5b50610556600480360361055191908101906131ae565b61167f565b6040516105639190614b60565b60405180910390f35b34801561057857600080fd5b50610593600480360361058e9190810190613330565b611c6e565b005b3480156105a157600080fd5b506105aa611fbd565b6040516105b79190614756565b60405180910390f35b3480156105cc57600080fd5b506105e760048036036105e29190810190613382565b611fd4565b6040516105f49190614b45565b60405180910390f35b61061760048036036106129190810190613330565b6120b6565b005b60046020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600701549080600801549080600901549080600a01549080600b01549080600c0160009054906101000a900460ff169080600c0160019054906101000a900460ff1690508a565b60006203f480905090565b6040518060400160405280601781526020017f50616e676f6c696e20476f7665726e6f7220416c70686100000000000000000081525081565b6106f6338383612303565b5050565b60056020528060005260406000206000915090505481565b60405161071e906144f8565b604051809103902081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b090614905565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560405160200161082b9190614522565b604051602081830303815290604052856040518563ffffffff1660e01b815260040161085a9493929190614566565b600060405180830381600087803b15801561087457600080fd5b505af1158015610888573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506108b191908101906132ef565b505050565b6060806060806000600460008781526020019081526020016000209050806003018160040182600501836006018380548060200260200160405190810160405280929190818152602001828054801561096457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161091a575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156109b657602002820191906000526020600020905b8154815260200190600101908083116109a2575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b82821015610a9a578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a865780601f10610a5b57610100808354040283529160200191610a86565b820191906000526020600020905b815481529060010190602001808311610a6957829003601f168201915b5050505050815260200190600101906109de565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610b7d578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b695780601f10610b3e57610100808354040283529160200191610b69565b820191906000526020600020905b815481529060010190602001808311610b4c57829003601f168201915b505050505081526020019060010190610ac1565b5050505090509450945094509450509193509193565b600062015180905090565b60008160035410158015610bb25750600082115b610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890614925565b60405180910390fd5b600060046000848152602001908152602001600020905080600c0160009054906101000a900460ff1615610c29576002915050610d66565b80600701544211610c3e576000915050610d66565b80600801544211610c53576001915050610d66565b80600b015481600a015411610c6c576003915050610d66565b600081600201541415610c83576004915050610d66565b80600c0160019054906101000a900460ff1615610ca4576007915050610d66565b610d5081600201546000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1a287e26040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d4b9190810190613359565b612625565b4210610d60576006915050610d66565b60059150505b919050565b6000610d7682610b9e565b9050600780811115610d8457fe5b816007811115610d9057fe5b1415610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890614ac5565b60405180910390fd5b6000600460008481526020019081526020016000209050610df061152f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610e5e43600161267a565b6040518363ffffffff1660e01b8152600401610e7b9291906145c5565b60206040518083038186803b158015610e9357600080fd5b505afa158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ecb9190810190613471565b6bffffffffffffffffffffffff1610610f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1090614a05565b60405180910390fd5b600181600c0160006101000a81548160ff02191690831515021790555060008090505b8160030180549050811015611072576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663591fcdfe836003018381548110610f9757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018481548110610fd157fe5b9060005260206000200154856005018581548110610feb57fe5b9060005260206000200186600601868154811061100457fe5b9060005260206000200187600201546040518663ffffffff1660e01b8152600401611033959493929190614694565b600060405180830381600087803b15801561104d57600080fd5b505af1158015611061573d6000803e3d6000fd5b505050508080600101915050610f3c565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c836040516110a29190614b60565b60405180910390a1505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040516110e3906144f8565b60405180910390206040518060400160405280601781526020017f50616e676f6c696e20476f7665726e6f7220416c706861000000000000000000815250805190602001206111306126ca565b306040516020016111449493929190614771565b604051602081830303815290604052805190602001209050600060405161116a9061450d565b60405180910390208787604051602001611186939291906147b6565b604051602081830303815290604052805190602001209050600082826040516020016111b39291906144c1565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516111f094939291906147ed565b6020604051602081039080840390855afa158015611212573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128590614a85565b60405180910390fd5b611299818a8a612303565b505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135190614b25565b60405180910390fd5b6000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90614985565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f9016000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000856040516020016114a99190614522565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016114d89493929190614566565b602060405180830381600087803b1580156114f257600080fd5b505af1158015611506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061152a91908101906132c6565b505050565b600069d3c21bcecceda1000000905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c8906148a5565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e18b6816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561163a57600080fd5b505af115801561164e573d6000803e3d6000fd5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600061168961152f565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe1336116d343600161267a565b6040518363ffffffff1660e01b81526004016116f092919061453d565b60206040518083038186803b15801561170857600080fd5b505afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117409190810190613471565b6bffffffffffffffffffffffff161161178e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178590614a65565b60405180910390fd5b845186511480156117a0575083518651145b80156117ad575082518651145b6117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e3906149e5565b60405180910390fd5b600086511415611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890614a45565b60405180910390fd5b61183961139e565b8651111561187c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611873906149a5565b60405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811461198b5760006118d382610b9e565b9050600160078111156118e257fe5b8160078111156118ee57fe5b141561192f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192690614aa5565b60405180910390fd5b6000600781111561193c57fe5b81600781111561194857fe5b1415611989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198090614965565b60405180910390fd5b505b600061199e42611999610b93565b612625565b905060006119c3426119be6119b16106a7565b6119b9610b93565b612625565b612625565b90506003600081548092919060010191905055506119df6128ab565b604051806101c0016040528060035481526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018b81526020018a81526020018981526020018881526020018481526020018381526020016000815260200160008152602001600081526020016000151581526020016000151581525090508060046000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003019080519060200190611af0929190612934565b506080820151816004019080519060200190611b0d9291906129be565b5060a0820151816005019080519060200190611b2a929190612a0b565b5060c0820151816006019080519060200190611b47929190612a6b565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c0160006101000a81548160ff0219169083151502179055506101a082015181600c0160016101000a81548160ff021916908315150217905550905050806000015160056000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338c8c8c8c89898e604051611c5299989796959493929190614b7b565b60405180910390a1806000015194505050505095945050505050565b60046007811115611c7b57fe5b611c8482610b9e565b6007811115611c8f57fe5b14611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc6906148c5565b60405180910390fd5b60006004600083815260200190815260200160002090506000611d90426000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b815260040160206040518083038186803b158015611d5357600080fd5b505afa158015611d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d8b9190810190613359565b612625565b905060008090505b8260030180549050811015611f7557611f68836003018281548110611db957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846004018381548110611df357fe5b9060005260206000200154856005018481548110611e0d57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611eab5780601f10611e8057610100808354040283529160200191611eab565b820191906000526020600020905b815481529060010190602001808311611e8e57829003601f168201915b5050505050866006018581548110611ebf57fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f5d5780601f10611f3257610100808354040283529160200191611f5d565b820191906000526020600020905b815481529060010190602001808311611f4057829003601f168201915b5050505050866126d7565b8080600101915050611d98565b508082600201819055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051611fb0929190614cc7565b60405180910390a1505050565b604051611fc99061450d565b604051809103902081565b611fdc612acb565b60046000848152602001908152602001600020600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff161515151581526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b600560078111156120c357fe5b6120cc82610b9e565b60078111156120d757fe5b14612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e906148e5565b60405180910390fd5b6000600460008381526020019081526020016000209050600181600c0160016101000a81548160ff02191690831515021790555060008090505b81600301805490508110156122c7576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630825f38f8360040183815481106121ac57fe5b90600052602060002001548460030184815481106121c657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600401858154811061220057fe5b906000526020600020015486600501868154811061221a57fe5b9060005260206000200187600601878154811061223357fe5b9060005260206000200188600201546040518763ffffffff1660e01b8152600401612262959493929190614694565b6000604051808303818588803b15801561227b57600080fd5b505af115801561228f573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052506122b991908101906132ef565b508080600101915050612151565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f826040516122f79190614b60565b60405180910390a15050565b6001600781111561231057fe5b61231983610b9e565b600781111561232457fe5b14612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b90614ae5565b60405180910390fd5b60006004600084815260200190815260200160002090506000816009015414156123ce576001430381600901819055507f0d1e02ccd52fe49c19093261ba25ca959463e72ed10577de6069a95c14cd04ee83436040516123c5929190614cc7565b60405180910390a15b600081600d0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600015158160000160009054906101000a900460ff1615151461246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290614945565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663782d6fe18785600901546040518363ffffffff1660e01b81526004016124ce9291906145c5565b60206040518083038186803b1580156124e657600080fd5b505afa1580156124fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061251e9190810190613471565b9050831561254f5761254283600a0154826bffffffffffffffffffffffff16612625565b83600a0181905550612574565b61256b83600b0154826bffffffffffffffffffffffff16612625565b83600b01819055505b60018260000160006101000a81548160ff021916908315150217905550838260000160016101000a81548160ff021916908315150217905550808260000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055507f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c468686868460405161261594939291906145ee565b60405180910390a1505050505050565b600080828401905083811015612670576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612667906149c5565b60405180910390fd5b8091505092915050565b6000828211156126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b690614b05565b60405180910390fd5b818303905092915050565b6000804690508091505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2b06537868686868660405160200161272d959493929190614633565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161275f9190614756565b60206040518083038186803b15801561277757600080fd5b505afa15801561278b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127af919081019061329d565b156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e690614a25565b60405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a66f90186868686866040518663ffffffff1660e01b8152600401612851959493929190614633565b602060405180830381600087803b15801561286b57600080fd5b505af115801561287f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128a391908101906132c6565b505050505050565b604051806101c0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b8280548282559060005260206000209081019282156129ad579160200282015b828111156129ac5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612954565b5b5090506129ba9190612afe565b5090565b8280548282559060005260206000209081019282156129fa579160200282015b828111156129f95782518255916020019190600101906129de565b5b509050612a079190612b41565b5090565b828054828255906000526020600020908101928215612a5a579160200282015b82811115612a59578251829080519060200190612a49929190612b66565b5091602001919060010190612a2b565b5b509050612a679190612be6565b5090565b828054828255906000526020600020908101928215612aba579160200282015b82811115612ab9578251829080519060200190612aa9929190612c12565b5091602001919060010190612a8b565b5b509050612ac79190612c92565b5090565b604051806060016040528060001515815260200160001515815260200160006bffffffffffffffffffffffff1681525090565b612b3e91905b80821115612b3a57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612b04565b5090565b90565b612b6391905b80821115612b5f576000816000905550600101612b47565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612ba757805160ff1916838001178555612bd5565b82800160010185558215612bd5579182015b82811115612bd4578251825591602001919060010190612bb9565b5b509050612be29190612b41565b5090565b612c0f91905b80821115612c0b5760008181612c029190612cbe565b50600101612bec565b5090565b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612c5357805160ff1916838001178555612c81565b82800160010185558215612c81579182015b82811115612c80578251825591602001919060010190612c65565b5b509050612c8e9190612b41565b5090565b612cbb91905b80821115612cb75760008181612cae9190612d06565b50600101612c98565b5090565b90565b50805460018160011615610100020316600290046000825580601f10612ce45750612d03565b601f016020900490600052602060002090810190612d029190612b41565b5b50565b50805460018160011615610100020316600290046000825580601f10612d2c5750612d4b565b601f016020900490600052602060002090810190612d4a9190612b41565b5b50565b600081359050612d5d8161519e565b92915050565b600082601f830112612d7457600080fd5b8135612d87612d8282614d1d565b614cf0565b91508181835260208401935060208101905083856020840282011115612dac57600080fd5b60005b83811015612ddc5781612dc28882612d4e565b845260208401935060208301925050600181019050612daf565b5050505092915050565b600082601f830112612df757600080fd5b8135612e0a612e0582614d45565b614cf0565b9150818183526020840193506020810190508360005b83811015612e505781358601612e368882612fa5565b845260208401935060208301925050600181019050612e20565b5050505092915050565b600082601f830112612e6b57600080fd5b8135612e7e612e7982614d6d565b614cf0565b9150818183526020840193506020810190508360005b83811015612ec45781358601612eaa888261304d565b845260208401935060208301925050600181019050612e94565b5050505092915050565b600082601f830112612edf57600080fd5b8135612ef2612eed82614d95565b614cf0565b91508181835260208401935060208101905083856020840282011115612f1757600080fd5b60005b83811015612f475781612f2d88826130f5565b845260208401935060208301925050600181019050612f1a565b5050505092915050565b600081359050612f60816151b5565b92915050565b600081519050612f75816151b5565b92915050565b600081359050612f8a816151cc565b92915050565b600081519050612f9f816151cc565b92915050565b600082601f830112612fb657600080fd5b8135612fc9612fc482614dbd565b614cf0565b91508082526020830160208301858383011115612fe557600080fd5b612ff0838284615134565b50505092915050565b600082601f83011261300a57600080fd5b815161301d61301882614de9565b614cf0565b9150808252602083016020830185838301111561303957600080fd5b613044838284615143565b50505092915050565b600082601f83011261305e57600080fd5b813561307161306c82614e15565b614cf0565b9150808252602083016020830185838301111561308d57600080fd5b613098838284615134565b50505092915050565b600082601f8301126130b257600080fd5b81356130c56130c082614e41565b614cf0565b915080825260208301602083018583830111156130e157600080fd5b6130ec838284615134565b50505092915050565b600081359050613104816151e3565b92915050565b600081519050613119816151e3565b92915050565b60008135905061312e816151fa565b92915050565b60008151905061314381615211565b92915050565b60006020828403121561315b57600080fd5b600061316984828501612d4e565b91505092915050565b6000806040838503121561318557600080fd5b600061319385828601612d4e565b92505060206131a4858286016130f5565b9150509250929050565b600080600080600060a086880312156131c657600080fd5b600086013567ffffffffffffffff8111156131e057600080fd5b6131ec88828901612d63565b955050602086013567ffffffffffffffff81111561320957600080fd5b61321588828901612ece565b945050604086013567ffffffffffffffff81111561323257600080fd5b61323e88828901612e5a565b935050606086013567ffffffffffffffff81111561325b57600080fd5b61326788828901612de6565b925050608086013567ffffffffffffffff81111561328457600080fd5b613290888289016130a1565b9150509295509295909350565b6000602082840312156132af57600080fd5b60006132bd84828501612f66565b91505092915050565b6000602082840312156132d857600080fd5b60006132e684828501612f90565b91505092915050565b60006020828403121561330157600080fd5b600082015167ffffffffffffffff81111561331b57600080fd5b61332784828501612ff9565b91505092915050565b60006020828403121561334257600080fd5b6000613350848285016130f5565b91505092915050565b60006020828403121561336b57600080fd5b60006133798482850161310a565b91505092915050565b6000806040838503121561339557600080fd5b60006133a3858286016130f5565b92505060206133b485828601612d4e565b9150509250929050565b600080604083850312156133d157600080fd5b60006133df858286016130f5565b92505060206133f085828601612f51565b9150509250929050565b600080600080600060a0868803121561341257600080fd5b6000613420888289016130f5565b955050602061343188828901612f51565b94505060406134428882890161311f565b935050606061345388828901612f7b565b925050608061346488828901612f7b565b9150509295509295909350565b60006020828403121561348357600080fd5b600061349184828501613134565b91505092915050565b60006134a68383613501565b60208301905092915050565b60006134be8383613742565b905092915050565b60006134d2838361387f565b905092915050565b60006134e68383614476565b60208301905092915050565b6134fb81615080565b82525050565b61350a81614ff6565b82525050565b61351981614ff6565b82525050565b600061352a82614ed7565b6135348185614f63565b935061353f83614e6d565b8060005b83811015613570578151613557888261349a565b975061356283614f2f565b925050600181019050613543565b5085935050505092915050565b600061358882614ee2565b6135928185614f74565b9350836020820285016135a485614e7d565b8060005b858110156135e057848403895281516135c185826134b2565b94506135cc83614f3c565b925060208a019950506001810190506135a8565b50829750879550505050505092915050565b60006135fd82614eed565b6136078185614f85565b93508360208202850161361985614e8d565b8060005b85811015613655578484038952815161363685826134c6565b945061364183614f49565b925060208a0199505060018101905061361d565b50829750879550505050505092915050565b600061367282614ef8565b61367c8185614f96565b935061368783614e9d565b8060005b838110156136b857815161369f88826134da565b97506136aa83614f56565b92505060018101905061368b565b5085935050505092915050565b6136ce81615008565b82525050565b6136dd81615008565b82525050565b6136ec81615014565b82525050565b6137036136fe82615014565b615176565b82525050565b600061371482614f0e565b61371e8185614fb8565b935061372e818560208601615143565b61373781615180565b840191505092915050565b600061374d82614f03565b6137578185614fa7565b9350613767818560208601615143565b61377081615180565b840191505092915050565b60008154600181166000811461379857600181146137be57613802565b607f60028304166137a98187614fb8565b955060ff198316865260208601935050613802565b600282046137cc8187614fb8565b95506137d785614ead565b60005b828110156137f9578154818901526001820191506020810190506137da565b80880195505050505b505092915050565b61381381615092565b82525050565b613822816150b6565b82525050565b613831816150da565b82525050565b613840816150ec565b82525050565b600061385182614f24565b61385b8185614fda565b935061386b818560208601615143565b61387481615180565b840191505092915050565b600061388a82614f19565b6138948185614fc9565b93506138a4818560208601615143565b6138ad81615180565b840191505092915050565b60006138c382614f19565b6138cd8185614fda565b93506138dd818560208601615143565b6138e681615180565b840191505092915050565b60008154600181166000811461390e576001811461393457613978565b607f600283041661391f8187614fda565b955060ff198316865260208601935050613978565b600282046139428187614fda565b955061394d85614ec2565b60005b8281101561396f57815481890152600182019150602081019050613950565b80880195505050505b505092915050565b600061398d603983614fda565b91507f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736560008301527f6e646572206d75737420626520676f7620677561726469616e000000000000006020830152604082019050919050565b60006139f3604483614fda565b91507f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206360008301527f616e206f6e6c792062652071756575656420696620697420697320737563636560208301527f65646564000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613a7f604583614fda565b91507f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c60008301527f2063616e206f6e6c79206265206578656375746564206966206974206973207160208301527f75657565640000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000613b0b600283614feb565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000613b4b604c83614fda565b91507f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c60008301527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208301527f676f7620677561726469616e00000000000000000000000000000000000000006040830152606082019050919050565b6000613bd7601883614fda565b91507f73657450656e64696e6741646d696e28616464726573732900000000000000006000830152602082019050919050565b6000613c17602983614fda565b91507f476f7665726e6f72416c7068613a3a73746174653a20696e76616c696420707260008301527f6f706f73616c20696400000000000000000000000000000000000000000000006020830152604082019050919050565b6000613c7d602d83614fda565b91507f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722060008301527f616c726561647920766f746564000000000000000000000000000000000000006020830152604082019050919050565b6000613ce3605983614fda565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766560008301527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208301527f20616c72656164792070656e64696e672070726f706f73616c000000000000006040830152606082019050919050565b6000613d6f604a83614fda565b91507f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6360008301527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f60208301527f7620677561726469616e000000000000000000000000000000000000000000006040830152606082019050919050565b6000613dfb602883614fda565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7960008301527f20616374696f6e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e61601183614fda565b91507f6164646974696f6e206f766572666c6f770000000000000000000000000000006000830152602082019050919050565b6000613ea1604383614feb565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000613f2d602783614feb565b91507f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c207360008301527f7570706f727429000000000000000000000000000000000000000000000000006020830152602782019050919050565b6000613f93604483614fda565b91507f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c60008301527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d60208301527f61746368000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600061401f602f83614fda565b91507f476f7665726e6f72416c7068613a3a63616e63656c3a2070726f706f7365722060008301527f61626f7665207468726573686f6c6400000000000000000000000000000000006020830152604082019050919050565b6000614085604483614fda565b91507f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207060008301527f726f706f73616c20616374696f6e20616c72656164792071756575656420617460208301527f20657461000000000000000000000000000000000