245 txs
6.9k calls
constructor
constructor(address initialCrapps, address initialAchievements, uint256 initialMinimumBets, (uint128 factor, uint256 maxLevel) initialLeveling)
functions
achievements
viewfunction achievements() view returns (address)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
crapps
viewfunction crapps() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
level
viewfunction level() view returns (uint256)
leveling
viewfunction leveling() view returns (tuple)
levelOf
viewfunction levelOf(address owner) view returns (uint256)
minimumBets
viewfunction minimumBets() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
toNextLevel
viewfunction toNextLevel() view returns (uint256)
toNextLevelOf
viewfunction toNextLevelOf(address owner) view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
levelUp
nonpayablefunction levelUp()
redeem
nonpayablefunction redeem()
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setAchievements
nonpayablefunction setAchievements(address newAchievements)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setCrapps
nonpayablefunction setCrapps(address newCrapps)
setLeveling
nonpayablefunction setLeveling(tuple newLeveling)
setMinimumBets
nonpayablefunction setMinimumBets(uint256 newMinimum)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
CrappyCousinsAchievementsChanged
event CrappyCousinsAchievementsChanged(address indexed previousCrush, address indexed newCrush)
CrappyCousinsCrappsChanged
event CrappyCousinsCrappsChanged(address indexed previousCrapps, address indexed newCrapps)
CrappyCousinsLevelingChanged
event CrappyCousinsLevelingChanged((uint128 factor, uint256 maxLevel) previousLeveling, (uint128 factor, uint256 maxLevel) newLeveling)
CrappyCousinsLevelUp
event CrappyCousinsLevelUp(address owner, uint256 level)
CrappyCousinsMinimumBetsChanged
event CrappyCousinsMinimumBetsChanged(uint256 previousMinimum, uint256 newMinimum)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
CrappyCousinsCousinInvalidLevel
error CrappyCousinsCousinInvalidLevel(uint256 actual, uint256 expected)
CrappyCousinsNotEnoughBets
error CrappyCousinsNotEnoughBets(uint256 placedBets, uint256 minimum)
CrappyCousinsTransferUnavailable
error CrappyCousinsTransferUnavailable()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040523480156200001157600080fd5b5060405162003d2e38038062003d2e8339818101604052810190620000379190620004ff565b620000476200024260201b60201c565b6040518060400160405280600d81526020017f437261707079436f7573696e73000000000000000000000000000000000000008152506040518060400160405280600481526020017f4343555a000000000000000000000000000000000000000000000000000000008152508160009081620000c49190620007b2565b508060019081620000d69190620007b2565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200014e5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001459190620008aa565b60405180910390fd5b6200015f816200024a60201b60201c565b5083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160098190555080600a60008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506020820151816001015590505050505050620008c7565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200034c826200031f565b9050919050565b6200035e816200033f565b81146200036a57600080fd5b50565b6000815190506200037e8162000353565b92915050565b6000819050919050565b620003998162000384565b8114620003a557600080fd5b50565b600081519050620003b9816200038e565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200040f82620003c4565b810181811067ffffffffffffffff82111715620004315762000430620003d5565b5b80604052505050565b60006200044662000310565b905062000454828262000404565b919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b620004808162000459565b81146200048c57600080fd5b50565b600081519050620004a08162000475565b92915050565b600060408284031215620004bf57620004be620003bf565b5b620004cb60406200043a565b90506000620004dd848285016200048f565b6000830152506020620004f384828501620003a8565b60208301525092915050565b60008060008060a085870312156200051c576200051b6200031a565b5b60006200052c878288016200036d565b94505060206200053f878288016200036d565b93505060406200055287828801620003a8565b92505060606200056587828801620004a6565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005c457607f821691505b602082108103620005da57620005d96200057c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000605565b62000650868362000605565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620006936200068d620006878462000384565b62000668565b62000384565b9050919050565b6000819050919050565b620006af8362000672565b620006c7620006be826200069a565b84845462000612565b825550505050565b600090565b620006de620006cf565b620006eb818484620006a4565b505050565b5b81811015620007135762000707600082620006d4565b600181019050620006f1565b5050565b601f82111562000762576200072c81620005e0565b6200073784620005f5565b8101602085101562000747578190505b6200075f6200075685620005f5565b830182620006f0565b50505b505050565b600082821c905092915050565b6000620007876000198460080262000767565b1980831691505092915050565b6000620007a2838362000774565b9150826002028217905092915050565b620007bd8262000571565b67ffffffffffffffff811115620007d957620007d8620003d5565b5b620007e58254620005ab565b620007f282828562000717565b600060209050601f8311600181146200082a576000841562000815578287015190505b62000821858262000794565b86555062000891565b601f1984166200083a86620005e0565b60005b8281101562000864578489015182556001820191506020850194506020810190506200083d565b8683101562000884578489015162000880601f89168262000774565b8355505b6001600288020188555050505b505050505050565b620008a4816200033f565b82525050565b6000602082019050620008c1600083018462000899565b92915050565b61345780620008d76000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636fd5ae151161010f578063c25e1917116100a2578063e985e9c511610071578063e985e9c514610546578063eb36824e14610576578063ec9d1c6214610594578063f2fde38b146105b0576101e5565b8063c25e1917146104aa578063c87b56dd146104c8578063d5a1b392146104f8578063d5e406ba14610528576101e5565b806395d89b41116100de57806395d89b411461044a578063a22cb46514610468578063b88d4fde14610484578063be040fb0146104a0576101e5565b80636fd5ae15146103d457806370a08231146103f2578063715018a6146104225780638da5cb5b1461042c576101e5565b806342842e0e1161018757806355d272fe1161015657806355d272fe1461033c5780635c138c9d146103585780636352211e14610388578063662fc8f4146103b8576101e5565b806342842e0e146102dc578063462fd5aa146102f85780634cb3088d146103145780634ea1ecf914610332576101e5565b8063095ea7b3116101c3578063095ea7b3146102685780630b61e7881461028457806318160ddd146102a257806323b872dd146102c0576101e5565b806301ffc9a7146101ea57806306fdde031461021a578063081812fc14610238575b600080fd5b61020460048036038101906101ff91906125ce565b6105cc565b6040516102119190612616565b60405180910390f35b6102226106ae565b60405161022f91906126c1565b60405180910390f35b610252600480360381019061024d9190612719565b610740565b60405161025f9190612787565b60405180910390f35b610282600480360381019061027d91906127ce565b61075c565b005b61028c610772565b604051610299919061281d565b60405180910390f35b6102aa61077c565b6040516102b7919061281d565b60405180910390f35b6102da60048036038101906102d59190612838565b610786565b005b6102f660048036038101906102f19190612838565b610888565b005b610312600480360381019061030d91906128af565b6108a8565b005b61031c6109d6565b604051610329919061293b565b60405180910390f35b61033a610a00565b005b61035660048036038101906103519190612719565b610bd2565b005b610372600480360381019061036d9190612956565b610c30565b60405161037f919061281d565b60405180910390f35b6103a2600480360381019061039d9190612719565b610c42565b6040516103af9190612787565b60405180910390f35b6103d260048036038101906103cd9190612956565b610c54565b005b6103dc610d79565b6040516103e9919061281d565b60405180910390f35b61040c60048036038101906104079190612956565b610d90565b604051610419919061281d565b60405180910390f35b61042a610e4a565b005b610434610e5e565b6040516104419190612787565b60405180910390f35b610452610e88565b60405161045f91906126c1565b60405180910390f35b610482600480360381019061047d91906129af565b610f1a565b005b61049e60048036038101906104999190612b24565b610f30565b005b6104a8610f55565b005b6104b2611111565b6040516104bf919061281d565b60405180910390f35b6104e260048036038101906104dd9190612719565b611128565b6040516104ef91906126c1565b60405180910390f35b610512600480360381019061050d9190612956565b611191565b60405161051f919061281d565b60405180910390f35b6105306111a3565b60405161053d9190612c10565b60405180910390f35b610560600480360381019061055b9190612c2b565b611211565b60405161056d9190612616565b60405180910390f35b61057e6112a5565b60405161058b9190612c8c565b60405180910390f35b6105ae60048036038101906105a99190612956565b6112cf565b005b6105ca60048036038101906105c59190612956565b6113f4565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061069757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106a757506106a68261147a565b5b9050919050565b6060600080546106bd90612cd6565b80601f01602080910402602001604051908101604052809291908181526020018280546106e990612cd6565b80156107365780601f1061070b57610100808354040283529160200191610736565b820191906000526020600020905b81548152906001019060200180831161071957829003601f168201915b5050505050905090565b600061074b826114e4565b506107558261156c565b9050919050565b61076e82826107696115a9565b6115b1565b5050565b6000600954905090565b6000600c54905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107f85760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016107ef9190612787565b60405180910390fd5b600061080c83836108076115a9565b6115c3565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610882578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161087993929190612d07565b60405180910390fd5b50505050565b6108a383838360405180602001604052806000815250610f30565b505050565b6108b0611646565b8060000160208101906108c39190612d6a565b6fffffffffffffffffffffffffffffffff16600a60000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1614801561091e57508060200135600a60010154145b6109d3576000600a6040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001600182015481525050905081600a81816109969190612f28565b9050507e699be0a01036c6e86dd93d3508a3108d97ebf15fbae8d45b24a4a33c6f572281836040516109c9929190612fa3565b60405180910390a1505b50565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610a12610a0d6115a9565b6116cd565b90506000610a1f826116ed565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac610a676115a9565b836040518363ffffffff1660e01b8152600401610a85929190612fcc565b600060405180830381600087803b158015610a9f57600080fd5b505af1158015610ab3573d6000803e3d6000fd5b50505050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631bb65193610afd6115a9565b6003846040518463ffffffff1660e01b8152600401610b1e9392919061306c565b600060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506001600d60008481526020019081526020016000206000828254610b7491906130d2565b925050819055507f3f33e8ee88dbeec312c0c93b94ea6e565c79598a24458e3893769ef82a3d0723610ba46115a9565b600d600085815260200190815260200160002054604051610bc6929190612fcc565b60405180910390a15050565b610bda611646565b806009540315610c2d5760006009549050816009819055507f11d0de90d1068091e957226b03c53b086f1f02cf0e46ee8c9e257e65fee221bf8183604051610c23929190613106565b60405180910390a1505b50565b6000610c3b826117fd565b9050919050565b6000610c4d826114e4565b9050919050565b610c5c611646565b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610d76576000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f48958cd21174aca56fa002ea9f060e316b292efe474754d197ac3a3adaee37af60405160405180910390a3505b50565b6000610d8b610d866115a9565b6117fd565b905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e035760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610dfa9190612787565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e52611646565b610e5c6000611822565b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610e9790612cd6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390612cd6565b8015610f105780601f10610ee557610100808354040283529160200191610f10565b820191906000526020600020905b815481529060010190602001808311610ef357829003601f168201915b5050505050905090565b610f2c610f256115a9565b83836118e8565b5050565b610f3b848484610786565b610f4f610f466115a9565b85858585611a57565b50505050565b6000610f67610f626115a9565b6116cd565b90506000600d60008381526020019081526020016000205414610fd757600d60008281526020019081526020016000205460006040517fe8b71cd4000000000000000000000000000000000000000000000000000000008152600401610fce92919061316a565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed322ec161101f6115a9565b6040518263ffffffff1660e01b815260040161103b9190612787565b602060405180830381865afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c91906131a8565b90506009548110156110c957806009546040517f5cb703640000000000000000000000000000000000000000000000000000000081526004016110c0929190613106565b60405180910390fd5b6110da6110d46115a9565b83611c08565b6001600d6000848152602001908152602001600020819055506001600c600082825461110691906130d2565b925050819055505050565b600061112361111e6115a9565b611c26565b905090565b6060611133826114e4565b50600061113e611c40565b9050600081511161115e5760405180602001604052806000815250611189565b8061116884611c57565b604051602001611179929190613211565b6040516020818303038152906040525b915050919050565b600061119c82611c26565b9050919050565b6111ab612536565b600a6040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001600182015481525050905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112d7611646565b8073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156113f1576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fbc5a459d7406b36dee3167cbd7ca48a6e03e0ee4f9320940625e3561efefb23160405160405180910390a3505b50565b6113fc611646565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361146e5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016114659190612787565b60405180910390fd5b61147781611822565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000806114f083611d25565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361156357826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161155a919061281d565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6115be8383836001611d62565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166115e584611d25565b73ffffffffffffffffffffffffffffffffffffffff1614611632576040517f1b4d6d4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61163d848484611f27565b90509392505050565b61164e6115a9565b73ffffffffffffffffffffffffffffffffffffffff1661166c610e5e565b73ffffffffffffffffffffffffffffffffffffffff16146116cb5761168f6115a9565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116c29190612787565b60405180910390fd5b565b60008173ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600d60008481526020019081526020016000205490506000810361174f57600060016040517fe8b71cd4000000000000000000000000000000000000000000000000000000008152600401611746929190613270565b60405180910390fd5b600a6001015481106117ab57806001600a6001015461176e9190613299565b6040517fe8b71cd40000000000000000000000000000000000000000000000000000000081526004016117a2929190613106565b60405180910390fd5b8081600a60000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166117eb91906132cd565b6117f591906132cd565b915050919050565b6000600d600061180c846116cd565b8152602001908152602001600020549050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361195957816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016119509190612787565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a4a9190612616565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611c01578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401611ab69493929190613364565b6020604051808303816000875af1925050508015611af257506040513d601f19601f82011682018060405250810190611aef91906133c5565b60015b611b76573d8060008114611b22576040519150601f19603f3d011682016040523d82523d6000602084013e611b27565b606091505b506000815103611b6e57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611b659190612787565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611bff57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611bf69190612787565b60405180910390fd5b505b5050505050565b611c22828260405180602001604052806000815250612141565b5050565b6000611c39611c34836116cd565b6116ed565b9050919050565b606060405180602001604052806000815250905090565b606060006001611c6684612165565b01905060008167ffffffffffffffff811115611c8557611c846129f9565b5b6040519080825280601f01601f191660200182016040528015611cb75781602001600182028036833780820191505090505b509050600082602001820190505b600115611d1a578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611d0e57611d0d6133f2565b5b04945060008503611cc5575b819350505050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611d9b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ecf576000611dab846114e4565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e1657508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611e295750611e278184611211565b155b15611e6b57826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611e629190612787565b60405180910390fd5b8115611ecd57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600080611f3384611d25565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f7557611f748184866122b8565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461200657611fb7600085600080611d62565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612089576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b61214b838361237c565b6121606121566115a9565b6000858585611a57565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106121c3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816121b9576121b86133f2565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612200576d04ee2d6d415b85acef810000000083816121f6576121f56133f2565b5b0492506020810190505b662386f26fc10000831061222f57662386f26fc100008381612225576122246133f2565b5b0492506010810190505b6305f5e1008310612258576305f5e100838161224e5761224d6133f2565b5b0492506008810190505b612710831061227d576127108381612273576122726133f2565b5b0492506004810190505b606483106122a05760648381612296576122956133f2565b5b0492506002810190505b600a83106122af576001810190505b80915050919050565b6122c3838383612475565b61237757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361233857806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161232f919061281d565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161236e929190612fcc565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123ee5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016123e59190612787565b60405180910390fd5b60006123fc838360006115c3565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146124705760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016124679190612787565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806124ee57506124ed8484611211565b5b8061252c57508273ffffffffffffffffffffffffffffffffffffffff166125148361156c565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b604051806040016040528060006fffffffffffffffffffffffffffffffff168152602001600081525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125ab81612576565b81146125b657600080fd5b50565b6000813590506125c8816125a2565b92915050565b6000602082840312156125e4576125e361256c565b5b60006125f2848285016125b9565b91505092915050565b60008115159050919050565b612610816125fb565b82525050565b600060208201905061262b6000830184612607565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561266b578082015181840152602081019050612650565b60008484015250505050565b6000601f19601f8301169050919050565b600061269382612631565b61269d818561263c565b93506126ad81856020860161264d565b6126b681612677565b840191505092915050565b600060208201905081810360008301526126db8184612688565b905092915050565b6000819050919050565b6126f6816126e3565b811461270157600080fd5b50565b600081359050612713816126ed565b92915050565b60006020828403121561272f5761272e61256c565b5b600061273d84828501612704565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061277182612746565b9050919050565b61278181612766565b82525050565b600060208201905061279c6000830184612778565b92915050565b6127ab81612766565b81146127b657600080fd5b50565b6000813590506127c8816127a2565b92915050565b600080604083850312156127e5576127e461256c565b5b60006127f3858286016127b9565b925050602061280485828601612704565b9150509250929050565b612817816126e3565b82525050565b6000602082019050612832600083018461280e565b92915050565b6000806000606084860312156128515761285061256c565b5b600061285f868287016127b9565b9350506020612870868287016127b9565b925050604061288186828701612704565b9150509250925092565b600080fd5b6000604082840312156128a6576128a561288b565b5b81905092915050565b6000604082840312156128c5576128c461256c565b5b60006128d384828501612890565b91505092915050565b6000819050919050565b60006129016128fc6128f784612746565b6128dc565b612746565b9050919050565b6000612913826128e6565b9050919050565b600061292582612908565b9050919050565b6129358161291a565b82525050565b6000602082019050612950600083018461292c565b92915050565b60006020828403121561296c5761296b61256c565b5b600061297a848285016127b9565b91505092915050565b61298c816125fb565b811461299757600080fd5b50565b6000813590506129a981612983565b92915050565b600080604083850312156129c6576129c561256c565b5b60006129d4858286016127b9565b92505060206129e58582860161299a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a3182612677565b810181811067ffffffffffffffff82111715612a5057612a4f6129f9565b5b80604052505050565b6000612a63612562565b9050612a6f8282612a28565b919050565b600067ffffffffffffffff821115612a8f57612a8e6129f9565b5b612a9882612677565b9050602081019050919050565b82818337600083830152505050565b6000612ac7612ac284612a74565b612a59565b905082815260208101848484011115612ae357612ae26129f4565b5b612aee848285612aa5565b509392505050565b600082601f830112612b0b57612b0a6129ef565b5b8135612b1b848260208601612ab4565b91505092915050565b60008060008060808587031215612b3e57612b3d61256c565b5b6000612b4c878288016127b9565b9450506020612b5d878288016127b9565b9350506040612b6e87828801612704565b925050606085013567ffffffffffffffff811115612b8f57612b8e612571565b5b612b9b87828801612af6565b91505092959194509250565b60006fffffffffffffffffffffffffffffffff82169050919050565b612bcc81612ba7565b82525050565b612bdb816126e3565b82525050565b604082016000820151612bf76000850182612bc3565b506020820151612c0a6020850182612bd2565b50505050565b6000604082019050612c256000830184612be1565b92915050565b60008060408385031215612c4257612c4161256c565b5b6000612c50858286016127b9565b9250506020612c61858286016127b9565b9150509250929050565b6000612c7682612908565b9050919050565b612c8681612c6b565b82525050565b6000602082019050612ca16000830184612c7d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cee57607f821691505b602082108103612d0157612d00612ca7565b5b50919050565b6000606082019050612d1c6000830186612778565b612d29602083018561280e565b612d366040830184612778565b949350505050565b612d4781612ba7565b8114612d5257600080fd5b50565b600081359050612d6481612d3e565b92915050565b600060208284031215612d8057612d7f61256c565b5b6000612d8e84828501612d55565b91505092915050565b60008135612da481612d3e565b80915050919050565b60008160001b9050919050565b60006fffffffffffffffffffffffffffffffff612dd684612dad565b9350801983169250808416831791505092915050565b6000612e07612e02612dfd84612ba7565b6128dc565b612ba7565b9050919050565b6000819050919050565b612e2182612dec565b612e34612e2d82612e0e565b8354612dba565b8255505050565b60008135612e48816126ed565b80915050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e7d84612dad565b9350801983169250808416831791505092915050565b6000612eae612ea9612ea4846126e3565b6128dc565b6126e3565b9050919050565b6000819050919050565b612ec882612e93565b612edb612ed482612eb5565b8354612e51565b8255505050565b600081016000830180612ef481612d97565b9050612f008184612e18565b505050600181016020830180612f1581612e3b565b9050612f218184612ebf565b5050505050565b612f328282612ee2565b5050565b6000612f456020840184612d55565b905092915050565b6000612f5c6020840184612704565b905092915050565b60408201612f756000830183612f36565b612f826000850182612bc3565b50612f906020830183612f4d565b612f9d6020850182612bd2565b50505050565b6000608082019050612fb86000830185612be1565b612fc56040830184612f64565b9392505050565b6000604082019050612fe16000830185612778565b612fee602083018461280e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6009811061303557613034612ff5565b5b50565b600081905061304682613024565b919050565b600061305682613038565b9050919050565b6130668161304b565b82525050565b60006060820190506130816000830186612778565b61308e602083018561305d565b61309b604083018461280e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130dd826126e3565b91506130e8836126e3565b9250828201905080821115613100576130ff6130a3565b5b92915050565b600060408201905061311b600083018561280e565b613128602083018461280e565b9392505050565b6000819050919050565b600061315461314f61314a8461312f565b6128dc565b6126e3565b9050919050565b61316481613139565b82525050565b600060408201905061317f600083018561280e565b61318c602083018461315b565b9392505050565b6000815190506131a2816126ed565b92915050565b6000602082840312156131be576131bd61256c565b5b60006131cc84828501613193565b91505092915050565b600081905092915050565b60006131eb82612631565b6131f581856131d5565b935061320581856020860161264d565b80840191505092915050565b600061321d82856131e0565b915061322982846131e0565b91508190509392505050565b6000819050919050565b600061325a61325561325084613235565b6128dc565b6126e3565b9050919050565b61326a8161323f565b82525050565b6000604082019050613285600083018561315b565b6132926020830184613261565b9392505050565b60006132a4826126e3565b91506132af836126e3565b92508282039050818111156132c7576132c66130a3565b5b92915050565b60006132d8826126e3565b91506132e3836126e3565b92508282026132f1816126e3565b91508282048414831517613308576133076130a3565b5b5092915050565b600081519050919050565b600082825260208201905092915050565b60006133368261330f565b613340818561331a565b935061335081856020860161264d565b61335981612677565b840191505092915050565b60006080820190506133796000830187612778565b6133866020830186612778565b613393604083018561280e565b81810360608301526133a5818461332b565b905095945050505050565b6000815190506133bf816125a2565b92915050565b6000602082840312156133db576133da61256c565b5b60006133e9848285016133b0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122034c40d0b79cdffc997f1faf2cf63f530aa94fbb510c69a4e690a62219d5fc4cd64736f6c634300081500330000000000000000000000003d6127b92871136c345ac0918a61ab5a253d760f0000000000000000000000008e746e48641e8f9a7713c3c06e526dbe20590dd2000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000002d