tokenboost-solidity-erc20sale
Version:
Solidity contracts for TokenBoost (ERC20Sale)
837 lines • 156 kB
JSON
{
"contractName": "RenderableERC20Sale",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "_interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "numberOfStrategies",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "activate",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "strategyAt",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_projectName",
"type": "string"
},
{
"name": "_projectSummary",
"type": "string"
},
{
"name": "_projectDescription",
"type": "string"
},
{
"name": "_logoUrl",
"type": "string"
},
{
"name": "_coverImageUrl",
"type": "string"
},
{
"name": "_websiteUrl",
"type": "string"
},
{
"name": "_whitepaperUrl",
"type": "string"
},
{
"name": "_videoUrl",
"type": "string"
},
{
"name": "_name",
"type": "string"
}
],
"name": "update",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "activated",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_ERC165",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "started",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_ERC20Sale",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "whitepaperUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "numberOfActivatedStrategies",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdraw",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "weiRaised",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "activatedStrategyAt",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "numberOfPurchasers",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_weiAmount",
"type": "uint256"
}
],
"name": "purchasable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "template",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "videoUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "projectDescription",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_template",
"type": "address"
},
{
"name": "_bytecode",
"type": "bytes"
}
],
"name": "addStrategy",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "renderer",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_index",
"type": "uint256"
}
],
"name": "purchaserAt",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_purchaser",
"type": "address"
}
],
"name": "tokenAmountOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "logoUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "projectName",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "successful",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "projectSummary",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "websiteUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "claimRefund",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "finished",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_weiAmount",
"type": "uint256"
}
],
"name": "getTokenAmount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "withdrawn",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_projectName",
"type": "string"
},
{
"name": "_projectSummary",
"type": "string"
},
{
"name": "_projectDescription",
"type": "string"
},
{
"name": "_logoUrl",
"type": "string"
},
{
"name": "_coverImageUrl",
"type": "string"
},
{
"name": "_websiteUrl",
"type": "string"
},
{
"name": "_whitepaperUrl",
"type": "string"
},
{
"name": "_videoUrl",
"type": "string"
},
{
"name": "_name",
"type": "string"
},
{
"name": "_token",
"type": "address"
}
],
"name": "update",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_purchaser",
"type": "address"
}
],
"name": "paymentOf",
"outputs": [
{
"name": "weiAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_Sale",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "coverImageUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_Contract",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "token",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_projectName",
"type": "string"
},
{
"name": "_name",
"type": "string"
},
{
"name": "_token",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "purchaser",
"type": "address"
},
{
"indexed": false,
"name": "weiAmount",
"type": "uint256"
},
{
"indexed": false,
"name": "tokenAmount",
"type": "uint256"
}
],
"name": "TokenPurchase",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
}
],
"name": "OwnershipRenounced",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"name": "_locale",
"type": "string"
}
],
"name": "adminWidgets",
"outputs": [
{
"name": "jsonObject",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_locale",
"type": "string"
}
],
"name": "userWidgets",
"outputs": [
{
"name": "jsonObject",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_locale",
"type": "string"
}
],
"name": "inputs",
"outputs": [
{
"name": "jsonArray",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b50604051620029f7380380620029f78339810160409081528151602083015191830151606084015160008054600160a060020a03191633179055919392830192019083838383838383826200008f7f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b600160a060020a0381161515620000a557600080fd5b6002805433600160a060020a03199182161790915560008054909116600160a060020a038316179055620001027f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b5081516200011890600390602085019062000249565b5080516200012e90600b90602084019062000249565b50620001637f5efbb02200000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b505050600160a060020a03811615156200017c57600080fd5b60138054600160a060020a031916600160a060020a038316179055620001cb7f90e2f49400000000000000000000000000000000000000000000000000000000640100000000620001d9810204565b5050505050505050620002ee565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200020957600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600160208190526040909120805460ff19169091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028c57805160ff1916838001178555620002bc565b82800160010185558215620002bc579182015b82811115620002bc5782518255916020019190600101906200029f565b50620002ca929150620002ce565b5090565b620002eb91905b80821115620002ca5760008155600101620002d5565b90565b6126f980620002fe6000396000f30060806040526004361061020b5763ffffffff60e060020a60003504166301bd341181146102ef57806301ffc9a7146103bd57806306fdde03146104085780630956e5a61461041d5780630f15f4c0146104445780630fc8c0b614610459578063184efbb01461048d578063186601ca146106d857806319fa8f50146106ed5780631f2698ab1461073457806327f6c75a146107495780632c7a72f81461075e578063334ff632146107735780633ccfd60b146107885780634042b66f1461079d5780635027a916146107b2578063580c2ae9146107ca578063655ded03146107df5780636f2ddd93146107f7578063715018a61461080c57806373c9fbe214610821578063755f047b146108365780637aeedf2a1461084b5780638ada6b0f146108a55780638da5cb5b146108ba578063908ba648146108cf57806391c62b791461092857806397b150ca14610940578063993d77af146109615780639a33e300146109765780639a9e3fd81461098b5780639ec318bf146109a0578063a3a8fd2c146109b5578063abb5ca0914610a0e578063b5545a3c14610a23578063bef4876b14610a38578063c2507ac114610a4d578063c80ec52214610a65578063cdd5fce514610a7a578063cf7c2b3114610cce578063d04be2da14610cef578063dea53c2014610d04578063f2fde38b14610d19578063fbf964eb14610d3a578063fc0c546a14610d4f575b6000806000600260149054906101000a900460ff16151561022b57600080fd5b610233610d64565b1561023d57600080fd5b610245610e41565b151561025057600080fd5b61025934610f1d565b151561026457600080fd5b3392506102718334611009565b61027a34611135565b91506102868383611231565b610290838361127a565b905061029c8183611363565b15156102a757600080fd5b60408051348152602081018490528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050005b3480156102fb57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506114419650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038257818101518382015260200161036a565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c957600080fd5b506103f47bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166115aa565b604080519115158252519081900360200190f35b34801561041457600080fd5b506103486115de565b34801561042957600080fd5b5061043261166c565b60408051918252519081900360200190f35b34801561045057600080fd5b506103f4611673565b34801561046557600080fd5b506104716004356117ae565b60408051600160a060020a039092168252519081900360200190f35b34801561049957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506117da9650505050505050565b005b3480156106e457600080fd5b506103f46118c7565b3480156106f957600080fd5b506107026118d7565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561074057600080fd5b506103f4610e41565b34801561075557600080fd5b506107026118fb565b34801561076a57600080fd5b5061034861191f565b34801561077f57600080fd5b5061043261197a565b34801561079457600080fd5b506103f4611980565b3480156107a957600080fd5b50610432611a29565b3480156107be57600080fd5b50610471600435611a2f565b3480156107d657600080fd5b50610432611a40565b3480156107eb57600080fd5b506103f4600435610f1d565b34801561080357600080fd5b50610471611a46565b34801561081857600080fd5b506106d6611a55565b34801561082d57600080fd5b50610348611ac1565b34801561084257600080fd5b50610348611b1c565b60408051602060046024803582810135601f81018590048502860185019096528585526106d6958335600160a060020a0316953695604494919390910191908190840183828082843750949750611b779650505050505050565b3480156108b157600080fd5b50610471611eea565b3480156108c657600080fd5b50610471611f02565b3480156108db57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610348943694929360249392840191908190840183828082843750949750611f119650505050505050565b34801561093457600080fd5b50610471600435611f9e565b34801561094c57600080fd5b50610432600160a060020a0360043516611faf565b34801561096d57600080fd5b50610348611fca565b34801561098257600080fd5b50610348612025565b34801561099757600080fd5b506103f4612080565b3480156109ac57600080fd5b50610348612154565b3480156109c157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506121af9650505050505050565b348015610a1a57600080fd5b5061034861223c565b348015610a2f57600080fd5b506103f4612297565b348015610a4457600080fd5b506103f4610d64565b348015610a5957600080fd5b50610432600435611135565b348015610a7157600080fd5b506103f461233b565b348015610a8657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050509235600160a060020a0316935061234492505050565b348015610cda57600080fd5b50610432600160a060020a036004351661238d565b348015610cfb57600080fd5b506107026123a8565b348015610d1057600080fd5b506103486123cc565b348015610d2557600080fd5b506106d6600160a060020a0360043516612427565b348015610d4657600080fd5b5061070261244a565b348015610d5b57600080fd5b5061047161246e565b6000806000610d71610e41565b1515610d805760009250610e3c565b5060009050805b600f54811015610e38578180610e2e5750600f805482908110610da657fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506040513d6020811015610e2b57600080fd5b50515b9150600101610d87565b8192505b505090565b6000806000600260149054906101000a900460ff161515610e655760009250610e3c565b5060009050805b600f54811015610e38578180610f135750600f805482908110610e8b57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316631f2698ab6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d6020811015610f1057600080fd5b50515b9150600101610e6c565b6000600181805b600f54821015610ffd57600f805483908110610f3c57fe5b600091825260209091200154600160a060020a03169050828015610ff05750604080517f4f9a82d6000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a03831691634f9a82d69160448083019260209291908290030181600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506040513d6020811015610fed57600080fd5b50515b9250600190910190610f24565b8293505b505050919050565b6000611013610d64565b1561101d57600080fd5b611025610e41565b151561103057600080fd5b600160a060020a038316600090815260106020526040902054611059908363ffffffff61247d16565b600160a060020a038416600090815260106020526040902055600c54611085908363ffffffff61247d16565b600c555060005b6011548110156110d75782600160a060020a03166011828154811015156110af57fe5b600091825260209091200154600160a060020a031614156110cf57611130565b60010161108c565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b505050565b60008080805b600f5483101561122657600f80548490811061115357fe5b6000918252602080832090910154604080517f5589530e000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051600160a060020a0390921695508593635589530e9360448084019491939192918390030190829087803b1580156111cd57600080fd5b505af11580156111e1573d6000803e3d6000fd5b505050506040513d60208110156111f757600080fd5b50519050600081111561121b57611214858263ffffffff61249016565b9350611001565b60019092019161113b565b506000949350505050565b600160a060020a03821660009081526012602052604090205461125a908263ffffffff61247d16565b600160a060020a0390921660009081526012602052604090209190915550565b600080805b600f5482101561135757600f80548390811061129757fe5b6000918252602080832090910154604080517fe67c8646000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363e67c864693604480850194919392918390030190829087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50511561134c5780925061135b565b60019091019061127f565b8492505b505092915050565b600080805b600f5482101561122657600f80548390811061138057fe5b6000918252602080832090910154604080517f587775e8000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363587775e893604480850194919392918390030190829087803b1580156113fc57600080fd5b505af1158015611410573d6000803e3d6000fd5b505050506040513d602081101561142657600080fd5b505115611436576001925061135b565b600190910190611368565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363bf3bed549387939092918291606490910190602086019080838360005b838110156114cf5781810151838201526020016114b7565b50505050905090810190601f1680156114fc5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561151c57600080fd5b505af1158015611530573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561155957600080fd5b81019080805164010000000081111561157157600080fd5b8201602081018481111561158457600080fd5b815164010000000081118282018710171561159e57600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b820191906000526020600020905b81548152906001019060200180831161164757829003601f168201915b505050505081565b600e545b90565b6000805481908190600160a060020a0316331461168f57600080fd5b600091505b600e5482101561179f57600e8054839081106116ac57fe5b9060005260206000200160009054906101000a9004600160a060020a0316905080600160a060020a031663186601ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b50511561179457600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b600190910190611694565b6117a76124b9565b9250505090565b6000600e828154811015156117bf57fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a031633146117f157600080fd5b60025460a060020a900460ff161561180857600080fd5b885161181b9060039060208c019061263f565b50875161182f9060049060208b019061263f565b5086516118439060059060208a019061263f565b50855161185790600690602089019061263f565b50845161186b90600790602088019061263f565b50835161187f90600890602087019061263f565b50825161189390600990602086019061263f565b5081516118a790600a90602085019061263f565b5080516118bb90600b90602084019061263f565b50505050505050505050565b60025460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b7f90e2f4940000000000000000000000000000000000000000000000000000000081565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600f5490565b60008054600160a060020a0316331461199857600080fd5b60025460a060020a900460ff1615156119b057600080fd5b600d5460ff16156119c057600080fd5b6119c8610d64565b15156119d357600080fd5b6119db612080565b15156119e657600080fd5b600d805460ff19166001179055600c54604051339180156108fc02916000818181858888f19350505050158015611a21573d6000803e3d6000fd5b506001905090565b600c5481565b6000600f828154811015156117bf57fe5b60115490565b600254600160a060020a031681565b600054600160a060020a03163314611a6c57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6000805460609190600160a060020a03163314611b9357600080fd5b60025460a060020a900460ff1615611baa57600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000080825260048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611c0b57600080fd5b505af1158015611c1f573d6000803e3d6000fd5b505050506040513d6020811015611c3557600080fd5b50511515611c4257600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd48445ff0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611cc357600080fd5b505af1158015611cd7573d6000803e3d6000fd5b505050506040513d6020811015611ced57600080fd5b50511515611cfa57600080fd5b611d03846124e2565b1515611d0e57600080fd5b60408051336020808301919091523082840152825180830384018152606083018085527f6535b4a500000000000000000000000000000000000000000000000000000000905260648301938452865160a48401528651909550600160a060020a03881693636535b4a593349389938993928392608482019260c4909201919087019080838360005b83811015611dae578181015183820152602001611d96565b50505050905090810190601f168015611ddb5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611e0e578181015183820152602001611df6565b50505050905090810190601f168015611e3b5780820380516001836020036101000a031916815260200191505b509450505050506020604051808303818588803b158015611e5b57600080fd5b505af1158015611e6f573d6000803e3d6000fd5b50505050506040513d6020811015611e8657600080fd5b5051600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550505050565b735f5f455243323053616c6552656e64657265725f81565b600054600160a060020a031681565b604080517fe77cee3d000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363e77cee3d938793909291829160649091019060208601908083836000838110156114cf5781810151838201526020016114b7565b60006011828154811015156117bf57fe5b600160a060020a031660009081526012602052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600080600061208d610e41565b151561209c5760009250610e3c565b5060009050805b600f54811015610e3857818061214a5750600f8054829081106120c257fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316639a9e3fd86040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561211d57600080fd5b505af1158015612131573d6000803e3d6000fd5b505050506040513d602081101561214757600080fd5b50515b91506001016120a3565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b604080517fe9499555000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363e9499555938793909291829160649091019060208601908083836000838110156114cf5781810151838201526020016114b7565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600254600090819060a060020a900460ff1615156122b457600080fd5b6122bc610d64565b15156122c757600080fd5b6122cf612080565b156122d957600080fd5b50336000908152601060205260408120549081116122f657600080fd5b336000818152601060205260408082208290555183156108fc0291849190818181858888f19350505050158015612331573d6000803e3d6000fd5b50600191505b5090565b600d5460ff1681565b6123558a8a8a8a8a8a8a8a8a6117da565b6013805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055505050505050505050565b600160a060020a031660009081526010602052604090205490565b7f5efbb0220000000000000000000000000000000000000000000000000000000081565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b600054600160a060020a0316331461243e57600080fd5b612447816125c2565b50565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b601354600160a060020a031681565b8181018281101561248a57fe5b92915050565b60008215156124a15750600061248a565b508181028183828115156124b157fe5b041461248a57fe5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600080805b600e548210156125b657600e8054839081106124ff57fe5b9060005260206000200160009054906101000a9004600160a060020a0316905083600160a060020a031681600160a060020a0316636f2ddd936040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050506040513d602081101561259157600080fd5b5051600160a060020a031614156125ab57600092506125bb565b6001909101906124e7565b600192505b5050919050565b600160a060020a03811615156125d757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061268057805160ff19168380011785556126ad565b828001600101855582156126ad579182015b828111156126ad578251825591602001919060010190612692565b50612337926116709250905b8082111561233757600081556001016126b95600a165627a7a7230582042a0b28d86ef3799fd286d9d5386b2029a79a44bed5f3b694e9e9390612a19620029",
"deployedBytecode": "0x60806040526004361061020b5763ffffffff60e060020a60003504166301bd341181146102ef57806301ffc9a7146103bd57806306fdde03146104085780630956e5a61461041d5780630f15f4c0146104445780630fc8c0b614610459578063184efbb01461048d578063186601ca146106d857806319fa8f50146106ed5780631f2698ab1461073457806327f6c75a146107495780632c7a72f81461075e578063334ff632146107735780633ccfd60b146107885780634042b66f1461079d5780635027a916146107b2578063580c2ae9146107ca578063655ded03146107df5780636f2ddd93146107f7578063715018a61461080c57806373c9fbe214610821578063755f047b146108365780637aeedf2a1461084b5780638ada6b0f146108a55780638da5cb5b146108ba578063908ba648146108cf57806391c62b791461092857806397b150ca14610940578063993d77af146109615780639a33e300146109765780639a9e3fd81461098b5780639ec318bf146109a0578063a3a8fd2c146109b5578063abb5ca0914610a0e578063b5545a3c14610a23578063bef4876b14610a38578063c2507ac114610a4d578063c80ec52214610a65578063cdd5fce514610a7a578063cf7c2b3114610cce578063d04be2da14610cef578063dea53c2014610d04578063f2fde38b14610d19578063fbf964eb14610d3a578063fc0c546a14610d4f575b6000806000600260149054906101000a900460ff16151561022b57600080fd5b610233610d64565b1561023d57600080fd5b610245610e41565b151561025057600080fd5b61025934610f1d565b151561026457600080fd5b3392506102718334611009565b61027a34611135565b91506102868383611231565b610290838361127a565b905061029c8183611363565b15156102a757600080fd5b60408051348152602081018490528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050005b3480156102fb57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506114419650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038257818101518382015260200161036a565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103c957600080fd5b506103f47bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166115aa565b604080519115158252519081900360200190f35b34801561041457600080fd5b506103486115de565b34801561042957600080fd5b5061043261166c565b60408051918252519081900360200190f35b34801561045057600080fd5b506103f4611673565b34801561046557600080fd5b506104716004356117ae565b60408051600160a060020a039092168252519081900360200190f35b34801561049957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506117da9650505050505050565b005b3480156106e457600080fd5b506103f46118c7565b3480156106f957600080fd5b506107026118d7565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b34801561074057600080fd5b506103f4610e41565b34801561075557600080fd5b506107026118fb565b34801561076a57600080fd5b5061034861191f565b34801561077f57600080fd5b5061043261197a565b34801561079457600080fd5b506103f4611980565b3480156107a957600080fd5b50610432611a29565b3480156107be57600080fd5b50610471600435611a2f565b3480156107d657600080fd5b50610432611a40565b3480156107eb57600080fd5b506103f4600435610f1d565b34801561080357600080fd5b50610471611a46565b34801561081857600080fd5b506106d6611a55565b34801561082d57600080fd5b50610348611ac1565b34801561084257600080fd5b50610348611b1c565b60408051602060046024803582810135601f81018590048502860185019096528585526106d6958335600160a060020a0316953695604494919390910191908190840183828082843750949750611b779650505050505050565b3480156108b157600080fd5b50610471611eea565b3480156108c657600080fd5b50610471611f02565b3480156108db57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610348943694929360249392840191908190840183828082843750949750611f119650505050505050565b34801561093457600080fd5b50610471600435611f9e565b34801561094c57600080fd5b50610432600160a060020a0360043516611faf565b34801561096d57600080fd5b50610348611fca565b34801561098257600080fd5b50610348612025565b34801561099757600080fd5b506103f4612080565b3480156109ac57600080fd5b50610348612154565b3480156109c157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103489436949293602493928401919081908401838280828437509497506121af9650505050505050565b348015610a1a57600080fd5b5061034861223c565b348015610a2f57600080fd5b506103f4612297565b348015610a4457600080fd5b506103f4610d64565b348015610a5957600080fd5b50610432600435611135565b348015610a7157600080fd5b506103f461233b565b348015610a8657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526106d694369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050509235600160a060020a0316935061234492505050565b348015610cda57600080fd5b50610432600160a060020a036004351661238d565b348015610cfb57600080fd5b506107026123a8565b348015610d1057600080fd5b506103486123cc565b348015610d2557600080fd5b506106d6600160a060020a0360043516612427565b348015610d4657600080fd5b5061070261244a565b348015610d5b57600080fd5b5061047161246e565b6000806000610d71610e41565b1515610d805760009250610e3c565b5060009050805b600f54811015610e38578180610e2e5750600f805482908110610da657fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506040513d6020811015610e2b57600080fd5b50515b9150600101610d87565b8192505b505090565b6000806000600260149054906101000a900460ff161515610e655760009250610e3c565b5060009050805b600f54811015610e38578180610f135750600f805482908110610e8b57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316631f2698ab6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b505050506040513d6020811015610f1057600080fd5b50515b9150600101610e6c565b6000600181805b600f54821015610ffd57600f805483908110610f3c57fe5b600091825260209091200154600160a060020a03169050828015610ff05750604080517f4f9a82d6000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a03831691634f9a82d69160448083019260209291908290030181600087803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506040513d6020811015610fed57600080fd5b50515b9250600190910190610f24565b8293505b505050919050565b6000611013610d64565b1561101d57600080fd5b611025610e41565b151561103057600080fd5b600160a060020a038316600090815260106020526040902054611059908363ffffffff61247d16565b600160a060020a038416600090815260106020526040902055600c54611085908363ffffffff61247d16565b600c555060005b6011548110156110d75782600160a060020a03166011828154811015156110af57fe5b600091825260209091200154600160a060020a031614156110cf57611130565b60010161108c565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b505050565b60008080805b600f5483101561122657600f80548490811061115357fe5b6000918252602080832090910154604080517f5589530e000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051600160a060020a0390921695508593635589530e9360448084019491939192918390030190829087803b1580156111cd57600080fd5b505af11580156111e1573d6000803e3d6000fd5b505050506040513d60208110156111f757600080fd5b50519050600081111561121b57611214858263ffffffff61249016565b9350611001565b60019092019161113b565b506000949350505050565b600160a060020a03821660009081526012602052604090205461125a908263ffffffff61247d16565b600160a060020a0390921660009081526012602052604090209190915550565b600080805b600f5482101561135757600f80548390811061129757fe5b6000918252602080832090910154604080517fe67c8646000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363e67c864693604480850194919392918390030190829087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d602081101561133d57600080fd5b50511561134c5780925061135b565b60019091019061127f565b8492505b505092915050565b600080805b600f5482101561122657600f80548390811061138057fe5b6000918252602080832090910154604080517f587775e8000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363587775e893604480850194919392918390030190829087803b1580156113fc57600080fd5b505af1158015611410573d6000803e3d6000fd5b505050506040513d602081101561142657600080fd5b505115611436576001925061135b565b600190910190611368565b604080517fbf3bed54000000000000000000000000000000000000000000000000000000008152306024820181905260048201928352835160448301528351606093735f5f455243323053616c6552656e64657265725f9363bf3bed549387939092918291606490910190602086019080838360005b838110156114cf5781810151838201526020016114b7565b50505050905090810190601f1680156114fc5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561151c57600080fd5b505af1158015611530573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561155957600080fd5b81019080805164010000000081111561157157600080fd5b8201602081018481111561158457600080fd5b815164010000000081118282018710171561159e57600080fd5b50909695505050505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156116645780601f1061163957610100808354040283529160200191611664565b820191906000526020600020905b81548152906001019060200180831161164757829003601f168201915b505050505081565b600e545b90565b6000805481908190600160a060020a0316331461168f57600080fd5b600091505b600e5482101561179f57600e8054839081106116ac57fe5b9060005260206000200160009054906101000a9004600160a060020a0316905080600160a060020a031663186601ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b50511561179457600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b600190910190611694565b6117a76124b9565b9250505090565b6000600e828154811015156117bf57fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a031633146117f157600080fd5b60025460a060020a900460ff161561180857600080fd5b885161181b9060039060208c019061263f565b50875161182f9060049060208b019061263f565b5086516118439060059060208a019061263f565b50855161185790600690