84 txs
132 calls
constructor
constructor(address _owner, address _signer, address _teamWallet, uint8[3] _rewardSplit, address _quoteToken)
functions
baseFee
viewfunction baseFee() view returns (uint256)
calcFee
viewfunction calcFee(uint256 _collateral) view returns (uint256)
calculatePNL
viewfunction calculatePNL(address _market, uint8 _dir) view returns (uint256 positionNotional, int256 unrealizedPnl)
defaultQuoteReserve
viewfunction defaultQuoteReserve() view returns (uint256)
defaultSupply
viewfunction defaultSupply() view returns (uint256)
getSettlementValue
viewfunction getSettlementValue(address _market, uint8 _dir) view returns (uint256)
marketHashes
viewfunction marketHashes(bytes32) view returns (bool)
markets
viewfunction markets(address) view returns (string name, string description, string category, uint256 endTime, address creator, uint256 pendingFees, uint256 oracleReward, uint256 creatorFee, uint8 result, uint8 state)
owner
viewfunction owner() view returns (address)
positions
viewfunction positions(address, address, uint8) view returns (uint8 dir, uint256 shares, uint256 collateral)
precision
viewfunction precision() view returns (uint256)
pubhouseFactory
viewfunction pubhouseFactory() view returns (address)
pubhouseResolver
viewfunction pubhouseResolver() view returns (address)
quoteToken
viewfunction quoteToken() view returns (address)
rewardPercentageSplit
viewfunction rewardPercentageSplit(uint256) view returns (uint8)
SIGNER
viewfunction SIGNER() view returns (address)
teamWallet
viewfunction teamWallet() view returns (address)
buyShares
nonpayablefunction buyShares(address _market, uint8 _dir, uint256 _collateral, uint256 _sharesLimit)
claimCreatorFee
nonpayablefunction claimCreatorFee(address _market)
claimOracleReward
nonpayablefunction claimOracleReward(address _market, address _disputer)
createNewMarket
nonpayablefunction createNewMarket(bytes _encodedData, bytes _signature) returns (address market)
renounceOwnership
nonpayablefunction renounceOwnership()
sellShares
nonpayablefunction sellShares(address _market, uint8 _dir, uint256 _shares, uint256 _stakeOutputLimit)
setMarketParams
nonpayablefunction setMarketParams(uint256 _initialSupply, uint256 _initialQuoteReserve)
setPeriphery
nonpayablefunction setPeriphery(address _factory)
setSigner
nonpayablefunction setSigner(address newSigner)
settleMarket
nonpayablefunction settleMarket(address _market, uint256 _price)
settlePosition
nonpayablefunction settlePosition(address _market, uint8 _dir)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CreatorFeeClaimed
event CreatorFeeClaimed(address indexed market, uint256 creatorFee)
FeesDistributed
event FeesDistributed(address indexed market, uint256 rewardPoolFee, uint256 creatorFee, uint256 oracleFee)
MarketCreation
event MarketCreation(address indexed market, address indexed creator, string name, string ticker, string description, string resolutionCriteria, string category, uint256 endTime, uint256 defaultSupply, uint256 defaultQuoteReserve)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PositionChanged
event PositionChanged(address indexed trader, address indexed market, uint8 indexed dir, uint8 change, int256 sharesDelta, uint256 shares, int256 collateralDelta, uint256 collateral, uint256 payout)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
NotAdmin
error NotAdmin(address user)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052620f4240600655600654633b9aca0061001d919061036c565b60075560065461c350610030919061036c565b600855612710600955348015610044575f5ffd5b506040516156f53803806156f583398181016040528101906100669190610588565b845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100d7575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100ce919061060e565b60405180910390fd5b6100e6816101c360201b60201c565b508360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a906003610178929190610284565b508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050610627565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b826003601f0160209004810192821561030a579160200282015f5b838211156102dc57835183826101000a81548160ff021916908360ff16021790555092602001926001016020815f0104928301926001030261029f565b80156103085782816101000a81549060ff02191690556001016020815f010492830192600103026102dc565b505b509050610317919061031b565b5090565b5b80821115610332575f815f90555060010161031c565b5090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61037682610336565b915061038183610336565b925082820261038f81610336565b915082820484148315176103a6576103a561033f565b5b5092915050565b5f604051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103e3826103ba565b9050919050565b6103f3816103d9565b81146103fd575f5ffd5b50565b5f8151905061040e816103ea565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61045e82610418565b810181811067ffffffffffffffff8211171561047d5761047c610428565b5b80604052505050565b5f61048f6103ad565b905061049b8282610455565b919050565b5f67ffffffffffffffff8211156104ba576104b9610428565b5b602082029050919050565b5f5ffd5b5f60ff82169050919050565b6104de816104c9565b81146104e8575f5ffd5b50565b5f815190506104f9816104d5565b92915050565b5f61051161050c846104a0565b610486565b9050806020840283018581111561052b5761052a6104c5565b5b835b81811015610554578061054088826104eb565b84526020840193505060208101905061052d565b5050509392505050565b5f82601f83011261057257610571610414565b5b600361057f8482856104ff565b91505092915050565b5f5f5f5f5f60e086880312156105a1576105a06103b6565b5b5f6105ae88828901610400565b95505060206105bf88828901610400565b94505060406105d088828901610400565b93505060606105e18882890161055e565b92505060c06105f288828901610400565b9150509295509295909350565b610608816103d9565b82525050565b5f6020820190506106215f8301846105ff565b92915050565b6150c1806106345f395ff3fe6080604052600436106101c5575f3560e01c80636ef25c3a116100f65780639c1766f911610094578063de83080711610063578063de83080714610664578063e58ee4481461068e578063e9555277146106b6578063f2fde38b146106de576101cc565b80639c1766f9146105c05780639d193cd4146105e8578063aeb2293414610612578063d3b5dc3b1461063a576101cc565b806383cd5cce116100d057806383cd5cce146105015780638da5cb5b146105295780638e8f294b1461055357806397a1db2614610598576101cc565b80636ef25c3a14610485578063715018a6146104af57806375dc7d8c146104c5576101cc565b80633477c20811610163578063582abd121161013d578063582abd12146103cc57806359927044146103f65780636c19e783146104205780636dfaa75514610448576101cc565b80633477c2081461032a57806334e228381461036657806347c1b61014610390576101cc565b8063232bfdc41161019f578063232bfdc41461025e57806323aedd091461029c578063245bd7d6146102c657806328f3488914610302576101cc565b8063188ffc5a146101d0578063205fcbd01461020c578063217a4b7014610234576101cc565b366101cc57005b5f5ffd5b3480156101db575f5ffd5b506101f660048036038101906101f19190613589565b610706565b60405161020391906135df565b60405180910390f35b348015610217575f5ffd5b50610232600480360381019061022d91906135f8565b610bb0565b005b34801561023f575f5ffd5b50610248610d19565b6040516102559190613691565b60405180910390f35b348015610269575f5ffd5b50610284600480360381019061027f91906136aa565b610d3e565b6040516102939392919061376d565b60405180910390f35b3480156102a7575f5ffd5b506102b0610d86565b6040516102bd91906137b1565b60405180910390f35b3480156102d1575f5ffd5b506102ec60048036038101906102e7919061382b565b610dab565b6040516102f991906137b1565b60405180910390f35b34801561030d575f5ffd5b50610328600480360381019061032391906138d3565b610e0b565b005b348015610335575f5ffd5b50610350600480360381019061034b9190613937565b610ed3565b60405161035d919061397d565b60405180910390f35b348015610371575f5ffd5b5061037a610efc565b60405161038791906135df565b60405180910390f35b34801561039b575f5ffd5b506103b660048036038101906103b191906139c9565b610f02565b6040516103c39190613a0e565b60405180910390f35b3480156103d7575f5ffd5b506103e0610f1f565b6040516103ed91906137b1565b60405180910390f35b348015610401575f5ffd5b5061040a610f44565b60405161041791906137b1565b60405180910390f35b34801561042b575f5ffd5b5061044660048036038101906104419190613a27565b610f69565b005b348015610453575f5ffd5b5061046e60048036038101906104699190613589565b610fb4565b60405161047c929190613a6a565b60405180910390f35b348015610490575f5ffd5b5061049961117d565b6040516104a691906135df565b60405180910390f35b3480156104ba575f5ffd5b506104c3611183565b005b3480156104d0575f5ffd5b506104eb60048036038101906104e69190613937565b611196565b6040516104f891906135df565b60405180910390f35b34801561050c575f5ffd5b5061052760048036038101906105229190613a27565b6111b3565b005b348015610534575f5ffd5b5061053d611406565b60405161054a91906137b1565b60405180910390f35b34801561055e575f5ffd5b5061057960048036038101906105749190613a27565b61142d565b60405161058f9a99989796959493929190613b8d565b60405180910390f35b3480156105a3575f5ffd5b506105be60048036038101906105b99190613c3c565b611647565b005b3480156105cb575f5ffd5b506105e660048036038101906105e191906138d3565b611661565b005b3480156105f3575f5ffd5b506105fc61177a565b60405161060991906135df565b60405180910390f35b34801561061d575f5ffd5b5061063860048036038101906106339190613a27565b611780565b005b348015610645575f5ffd5b5061064e611888565b60405161065b91906135df565b60405180910390f35b34801561066f575f5ffd5b5061067861188e565b60405161068591906137b1565b60405180910390f35b348015610699575f5ffd5b506106b460048036038101906106af9190613c7a565b6118b3565b005b3480156106c1575f5ffd5b506106dc60048036038101906106d79190613589565b611bf8565b005b3480156106e9575f5ffd5b5061070460048036038101906106ff9190613a27565b611f7d565b005b5f5f600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f846001811115610794576107936136fa565b5b60018111156107a6576107a56136fa565b5b81526020019081526020015f206040518060600160405290815f82015f9054906101000a900460ff1660018111156107e1576107e06136fa565b5b60018111156107f3576107f26136fa565b5b81526020016001820154815260200160028201548152505090505f816020015103610821575f915050610baa565b5f600180811115610835576108346136fa565b5b600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060080160019054906101000a900460ff166001811115610895576108946136fa565b5b146108a0575f6108a3565b60015b90505f8573ffffffffffffffffffffffffffffffffffffffff1663de2927896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109139190613cdb565b905081156109e1576001600381111561092f5761092e6136fa565b5b816003811115610942576109416136fa565b5b148015610972575060018081111561095d5761095c6136fa565b5b8560018111156109705761096f6136fa565b5b145b806109d057506002600381111561098c5761098b6136fa565b5b81600381111561099f5761099e6136fa565b5b1480156109cf57505f60018111156109ba576109b96136fa565b5b8560018111156109cd576109cc6136fa565b5b145b5b156109e0575f9350505050610baa565b5b5f6003808111156109f5576109f46136fa565b5b826003811115610a0857610a076136fa565b5b14610af4578673ffffffffffffffffffffffffffffffffffffffff1663651d69865f6001811115610a3c57610a3b6136fa565b5b886001811115610a4f57610a4e6136fa565b5b14600b5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060050154866040518463ffffffff1660e01b8152600401610ab093929190613d06565b602060405180830381865afa158015610acb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aef9190613d65565b610b62565b8673ffffffffffffffffffffffffffffffffffffffff1663e349ba596040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b3d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b619190613d65565b5b90505f610b7c82866020015161200190919063ffffffff16565b90505f610b9686604001518361202290919063ffffffff16565b9050610ba18161203c565b96505050505050505b92915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3690613e00565b60405180910390fd5b5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206006015490505f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060060181905550610d14828260055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120669092919063ffffffff16565b505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c602052825f5260405f20602052815f5260405f20602052805f5260405f205f925092505050805f015f9054906101000a900460ff16908060010154908060020154905083565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610db8858585856120e5565b610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613e68565b60405180910390fd5b610e0185856121d3565b9050949350505050565b835f6001811115610e1f57610e1e6136fa565b5b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060080160019054906101000a900460ff166001811115610e7f57610e7e6136fa565b5b14610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690613ed0565b60405180910390fd5b610ecc8533868686612597565b5050505050565b600a8160038110610ee2575f80fd5b60209182820401919006915054906101000a900460ff1681565b60085481565b600d602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f716128a5565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f5f5f600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f856001811115611043576110426136fa565b5b6001811115611055576110546136fa565b5b81526020019081526020015f206040518060600160405290815f82015f9054906101000a900460ff1660018111156110905761108f6136fa565b5b60018111156110a2576110a16136fa565b5b81526020016001820154815260200160028201548152505090505f816020015190505f826040015190505f82036110e1575f5f94509450505050611176565b8673ffffffffffffffffffffffffffffffffffffffff16634170cd5e87846040518363ffffffff1660e01b815260040161111c929190613eee565b602060405180830381865afa158015611137573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115b9190613f29565b9450611170818661292c90919063ffffffff16565b93505050505b9250929050565b60095481565b61118b6128a5565b6111945f612946565b565b5f6111ac60095483612a0790919063ffffffff16565b9050919050565b600b5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206004015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790613fc4565b60405180910390fd5b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206007015490505f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600701819055506113b4600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206004015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120669092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fb0941a79b0a1d2dc32262e01138093b93ba4e92878c9b282875850dec054f009826040516113fa91906135df565b60405180910390a25050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b602052805f5260405f205f91509050805f01805461144c9061400f565b80601f01602080910402602001604051908101604052809291908181526020018280546114789061400f565b80156114c35780601f1061149a576101008083540402835291602001916114c3565b820191905f5260205f20905b8154815290600101906020018083116114a657829003601f168201915b5050505050908060010180546114d89061400f565b80601f01602080910402602001604051908101604052809291908181526020018280546115049061400f565b801561154f5780601f106115265761010080835404028352916020019161154f565b820191905f5260205f20905b81548152906001019060200180831161153257829003601f168201915b5050505050908060020180546115649061400f565b80601f01602080910402602001604051908101604052809291908181526020018280546115909061400f565b80156115db5780601f106115b2576101008083540402835291602001916115db565b820191905f5260205f20905b8154815290600101906020018083116115be57829003601f168201915b505050505090806003015490806004015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806005015490806006015490806007015490806008015f9054906101000a900460ff16908060080160019054906101000a900460ff1690508a565b61164f6128a5565b81600781905550806008819055505050565b835f6001811115611675576116746136fa565b5b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060080160019054906101000a900460ff1660018111156116d5576116d46136fa565b5b14611715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170c90613ed0565b60405180910390fd5b6006546001611724919061406c565b831015611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d9061411d565b60405180910390fd5b6117738533868686612a28565b5050505050565b60075481565b6117886128a5565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161184492919061413b565b6020604051808303815f875af1158015611860573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611884919061418c565b5050565b60065481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990613e00565b60405180910390fd5b6001600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060080160016101000a81548160ff021916908360018111156119a6576119a56136fa565b5b02179055505f670de0b6b3a764000082146119d9576706f05b59d3b2000082146119d15760026119d4565b60035b6119dc565b60015b90505f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600501549050611a6e848260055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120669092919063ffffffff16565b6706f05b59d3b200008314611b77575f8473ffffffffffffffffffffffffffffffffffffffff1663f0912a66846040518263ffffffff1660e01b8152600401611ab791906141b7565b6020604051808303815f875af1158015611ad3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af79190613f29565b90505f811115611b7157611b708560045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cbf909392919063ffffffff16565b5b50611bf2565b8373ffffffffffffffffffffffffffffffffffffffff1663f0912a66836040518263ffffffff1660e01b8152600401611bb091906141b7565b6020604051808303815f875af1158015611bcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf09190613f29565b505b50505050565b600180811115611c0b57611c0a6136fa565b5b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060080160019054906101000a900460ff166001811115611c6b57611c6a6136fa565b5b14611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290614240565b60405180910390fd5b5f600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f836001811115611d3857611d376136fa565b5b6001811115611d4a57611d496136fa565b5b81526020019081526020015f206040518060600160405290815f82015f9054906101000a900460ff166001811115611d8557611d846136fa565b5b6001811115611d9757611d966136fa565b5b81526020016001820154815260200160028201548152505090505f611dbc8484610706565b9050600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f846001811115611e4a57611e496136fa565b5b6001811115611e5c57611e5b6136fa565b5b81526020019081526020015f205f5f82015f6101000a81549060ff0219169055600182015f9055600282015f90555050826001811115611e9f57611e9e6136fa565b5b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6753b24771bdbea2e5e3d2bc83ba12ffed315cadbd98022ce63445473f9a612060038660200151611efe9061425e565b5f8860400151611f0d9061425e565b5f89604051611f2196959493929190614323565b60405180910390a4611f7784338360055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cbf909392919063ffffffff16565b50505050565b611f856128a5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ff5575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611fec91906137b1565b60405180910390fd5b611ffe81612946565b50565b5f5f6120168385612d4190919063ffffffff16565b90508091505092915050565b5f5f82846120309190614382565b90508091505092915050565b5f5f5f83121561205957825f61205291906143c3565b905061205d565b8290505b80915050919050565b6120e0838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161209992919061413b565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d56565b505050565b5f5f85856040516120f792919061443f565b604051809103902060405160200161210f91906144cb565b6040516020818303038152906040528051906020012090505f6121758286868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050612df1565b905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161492505050949350505050565b5f5f83836040516121e592919061443f565b60405180910390209050600d5f8281526020019081526020015f205f9054906101000a900460ff161561224d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122449061453a565b60405180910390fd5b5f5f5f5f5f5f89898101906122629190614672565b9550955095509550955095505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309bf5e063060075460085489876040518663ffffffff1660e01b81526004016122d5959493929190614787565b6020604051808303815f875af11580156122f1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231591906147f3565b90506040518061014001604052808881526020018681526020018481526020018381526020013373ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f600381111561237c5761237b6136fa565b5b81526020015f6001811115612394576123936136fa565b5b815250600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0190816123e791906149b5565b5060208201518160010190816123fd91906149b5565b50604082015181600201908161241391906149b5565b50606082015181600301556080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015f6101000a81548160ff021916908360038111156124ad576124ac6136fa565b5b02179055506101208201518160080160016101000a81548160ff021916908360018111156124de576124dd6136fa565b5b02179055509050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f6f1e682dc60840b1b4fb5b1e4a168ddc221819bf6bee4309bbbfc2eb116b7180898989898989600754600854604051612555989796959493929190614a84565b60405180910390a36001600d5f8a81526020019081526020015f205f6101000a81548160ff021916908315150217905550809850505050505050505092915050565b5f600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f856001811115612624576126236136fa565b5b6001811115612636576126356136fa565b5b81526020019081526020015f209050828160010154101561268c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268390614b93565b60405180910390fd5b5f8673ffffffffffffffffffffffffffffffffffffffff16633667a0388686866040518463ffffffff1660e01b81526004016126ca9392919061376d565b6020604051808303815f875af11580156126e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061270a9190613f29565b90505f61271682611196565b90505f61272c8284612e1b90919063ffffffff16565b9050612738828a612e35565b5f6127668560010154612758898860020154612a0790919063ffffffff16565b61316090919063ffffffff16565b90505f8786600101546127799190614bb1565b90505f82876002015461278c9190614bb1565b90508087600201819055508187600101819055505f5f83146127af5760016127b2565b60025b90506128028d8d8760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cbf909392919063ffffffff16565b8a6001811115612815576128146136fa565b5b8d73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f6753b24771bdbea2e5e3d2bc83ba12ffed315cadbd98022ce63445473f9a6120848e61286f9061425e565b888a61287a9061425e565b898d60405161288e96959493929190614be4565b60405180910390a450505050505050505050505050565b6128ad613181565b73ffffffffffffffffffffffffffffffffffffffff166128cb611406565b73ffffffffffffffffffffffffffffffffffffffff161461292a576128ee613181565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161292191906137b1565b60405180910390fd5b565b5f5f828461293a91906143c3565b90508091505092915050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5f612a1c838561318890919063ffffffff16565b90508091505092915050565b612a7684868460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cbf909392919063ffffffff16565b5f612a8083611196565b9050612a958184612e1b90919063ffffffff16565b9250612aa18187612e35565b5f8673ffffffffffffffffffffffffffffffffffffffff1663463a98d98686866040518463ffffffff1660e01b8152600401612adf9392919061376d565b6020604051808303815f875af1158015612afb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b1f9190613f29565b90505f600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f876001811115612bae57612bad6136fa565b5b6001811115612bc057612bbf6136fa565b5b81526020019081526020015f2090505f828260010154612be09190614c43565b90505f868360020154612bf39190614c43565b905087835f015f6101000a81548160ff02191690836001811115612c1a57612c196136fa565b5b0217905550818360010181905550808360020181905550876001811115612c4457612c436136fa565b5b8a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f6753b24771bdbea2e5e3d2bc83ba12ffed315cadbd98022ce63445473f9a61205f88878d885f604051612cab96959493929190614c76565b60405180910390a450505050505050505050565b612d3b848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612cf493929190614cd5565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612d56565b50505050565b5f612d4e8383600661319d565b905092915050565b5f5f60205f8451602086015f885af180612d75576040513d5f823e3d81fd5b3d92505f519150505f8214612d8e576001811415612da9565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b15612deb57836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612de291906137b1565b60405180910390fd5b50505050565b5f5f5f5f612dff86866131c6565b925092509250612e0f828261321b565b82935050505092915050565b5f5f8284612e299190614bb1565b90508091505092915050565b5f6064600a5f60038110612e4c57612e4b614d0a565b5b602091828204019190069054906101000a900460ff1660ff1684612e70919061406c565b612e7a9190614d64565b90505f6064600a600160038110612e9457612e93614d0a565b5b602091828204019190069054906101000a900460ff1660ff1685612eb8919061406c565b612ec29190614d64565b90505f6064600a600260038110612edc57612edb614d0a565b5b602091828204019190069054906101000a900460ff1660ff1686612f00919061406c565b612f0a9190614d64565b90505f81848488612f1b9190614bb1565b612f259190614bb1565b612f2f9190614bb1565b9050612fa08560045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cbf909392919063ffffffff16565b6130048530838587612fb29190614c43565b612fbc9190614c43565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612cbf909392919063ffffffff16565b82600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206005015f8282546130539190614c43565b9250508190555081600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206006015f8282546130a99190614c43565b9250508190555080600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206007015f8282546130ff9190614c43565b925050819055508473ffffffffffffffffffffffffffffffffffffffff167f4c41dd034da8150bccdeba2e484837eb447e0a3840b3e02a54e9bd6eb883210e84838560405161315093929190614d94565b60405180910390a2505050505050565b5f5f613175838561337d90919063ffffffff16565b90508091505092915050565b5f33905090565b5f61319583836006613392565b905092915050565b5f6131a7826133bb565b83856131b39190614dc9565b6131bd9190614e3f565b90509392505050565b5f5f5f6041845103613206575f5f5f602087015192506040870151915060608701515f1a90506131f8888285856133d3565b955095509550505050613214565b5f600285515f1b9250925092505b9250925092565b5f600381111561322e5761322d6136fa565b5b826003811115613241576132406136fa565b5b0315613379576001600381111561325b5761325a6136fa565b5b82600381111561326e5761326d6136fa565b5b036132a5576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156132b9576132b86136fa565b5b8260038111156132cc576132cb6136fa565b5b0361331057805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161330791906135df565b60405180910390fd5b600380811115613323576133226136fa565b5b826003811115613336576133356136fa565b5b0361337857806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161336f9190614eb6565b60405180910390fd5b5b5050565b5f61338a838360066134ba565b905092915050565b5f61339c826134e3565b83856133a8919061406c565b6133b29190614d64565b90509392505050565b5f8160ff16600a6133cc9190614ffe565b9050919050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c111561340f575f6003859250925092506134b0565b5f6001888888886040515f81526020016040526040516134329493929190615048565b6020604051602081039080840390855afa158015613452573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036134a3575f60015f5f1b935093509350506134b0565b805f5f5f1b935093509350505b9450945094915050565b5f826134c5836134e3565b856134d0919061406c565b6134da9190614d64565b90509392505050565b5f8160ff16600a6134f49190614ffe565b9050919050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135358261350c565b9050919050565b6135458161352b565b811461354f575f5ffd5b50565b5f813590506135608161353c565b92915050565b60028110613572575f5ffd5b50565b5f8135905061358381613566565b92915050565b5f5f6040838503121561359f5761359e613504565b5b5f6135ac85828601613552565b92505060206135bd85828601613575565b9150509250929050565b5f819050919050565b6135d9816135c7565b82525050565b5f6020820190506135f25f8301846135d0565b92915050565b5f5f6040838503121561360e5761360d613504565b5b5f61361b85828601613552565b925050602061362c85828601613552565b9150509250929050565b5f819050919050565b5f61365961365461364f8461350c565b613636565b61350c565b9050919050565b5f61366a8261363f565b9050919050565b5f61367b82613660565b9050919050565b61368b81613671565b82525050565b5f6020820190506136a45f830184613682565b92915050565b5f5f5f606084860312156136c1576136c0613504565b5b5f6136ce86828701613552565b93505060206136df86828701613552565b92505060406136f086828701613575565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110613738576137376136fa565b5b50565b5f81905061374882613727565b919050565b5f6137578261373b565b9050919050565b6137678161374d565b82525050565b5f6060820190506137805f83018661375e565b61378d60208301856135d0565b61379a60408301846135d0565b949350505050565b6137ab8161352b565b82525050565b5f6020820190506137c45f8301846137a2565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126137eb576137ea6137ca565b5b8235905067ffffffffffffffff811115613808576138076137ce565b5b602083019150836001820283011115613824576138236137d2565b5b9250929050565b5f5f5f5f6040858703121561384357613842613504565b5b5f85013567ffffffffffffffff8111156138605761385f613508565b5b61386c878288016137d6565b9450945050602085013567ffffffffffffffff81111561388f5761388e613508565b5b61389b878288016137d6565b925092505092959194509250565b6138b2816135c7565b81146138bc575f5ffd5b50565b5f813590506138cd816138a9565b92915050565b5f5f5f5f608085870312156138eb576138ea613504565b5b5f6138f887828801613552565b945050602061390987828801613575565b935050604061391a878288016138bf565b925050606061392b878288016138bf565b91505092959194509250565b5f6020828403121561394c5761394b613504565b5b5f613959848285016138bf565b91505092915050565b5f60ff82169050919050565b61397781613962565b82525050565b5f6020820190506139905f83018461396e565b92915050565b5f819050919050565b6139a881613996565b81146139b2575f5ffd5b50565b5f813590506139c38161399f565b92915050565b5f602082840312156139de576139dd613504565b5b5f6139eb848285016139b5565b91505092915050565b5f8115159050919050565b613a08816139f4565b82525050565b5f602082019050613a215f8301846139ff565b92915050565b5f60208284031215613a3c57613a3b613504565b5b5f613a4984828501613552565b91505092915050565b5f819050919050565b613a6481613a52565b82525050565b5f604082019050613a7d5f8301856135d0565b613a8a6020830184613a5b565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613ad382613a91565b613add8185613a9b565b9350613aed818560208601613aab565b613af681613ab9565b840191505092915050565b60048110613b1257613b116136fa565b5b50565b5f819050613b2282613b01565b919050565b5f613b3182613b15565b9050919050565b613b4181613b27565b82525050565b60028110613b5857613b576136fa565b5b50565b5f819050613b6882613b47565b919050565b5f613b7782613b5b565b9050919050565b613b8781613b6d565b82525050565b5f610140820190508181035f830152613ba6818d613ac9565b90508181036020830152613bba818c613ac9565b90508181036040830152613bce818b613ac9565b9050613bdd606083018a6135d0565b613bea60808301896137a2565b613bf760a08301886135d0565b613c0460c08301876135d0565b613c1160e08301866135d0565b613c1f610100830185613b38565b613c2d610120830184613b7e565b9b9a5050505050505050505050565b5f5f60408385031215613c5257613c51613504565b5b5f613c5f858286016138bf565b9250506020613c70858286016138bf565b9150509250929050565b5f5f60408385031215613c9057613c8f613504565b5b5f613c9d85828601613552565b9250506020613cae858286016138bf565b9150509250929050565b60048110613cc4575f5ffd5b50565b5f81519050613cd581613cb8565b92915050565b5f60208284031215613cf057613cef613504565b5b5f613cfd84828501613cc7565b91505092915050565b5f606082019050613d195f8301866139ff565b613d2660208301856135d0565b613d3360408301846139ff565b949350505050565b613d4481613a52565b8114613d4e575f5ffd5b50565b5f81519050613d5f81613d3b565b92915050565b5f60208284031215613d7a57613d79613504565b5b5f613d8784828501613d51565b91505092915050565b7f54726164696e673a206f6e6c7920666163746f72792063616e2063616c6c20745f8201527f6869730000000000000000000000000000000000000000000000000000000000602082015250565b5f613dea602383613a9b565b9150613df582613d90565b604082019050919050565b5f6020820190508181035f830152613e1781613dde565b9050919050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f613e52601183613a9b565b9150613e5d82613e1e565b602082019050919050565b5f6020820190508181035f830152613e7f81613e46565b9050919050565b7f54726164696e673a206d61726b6574206e6f74206f70656e00000000000000005f82015250565b5f613eba601883613a9b565b9150613ec582613e86565b602082019050919050565b5f6020820190508181035f830152613ee781613eae565b9050919050565b5f604082019050613f015f83018561375e565b613f0e60208301846135d0565b9392505050565b5f81519050613f23816138a9565b92915050565b5f60208284031215613f3e57613f3d613504565b5b5f613f4b84828501613f15565b91505092915050565b7f54726164696e673a206f6e6c792063726561746f722063616e2063616c6c20745f8201527f6869730000000000000000000000000000000000000000000000000000000000602082015250565b5f613fae602383613a9b565b9150613fb982613f54565b604082019050919050565b5f6020820190508181035f830152613fdb81613fa2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061402657607f821691505b60208210810361403957614038613fe2565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614076826135c7565b9150614081836135c7565b925082820261408f816135c7565b915082820484148315176140a6576140a561403f565b5b5092915050565b7f54726164696e673a20636f6c6c61746572616c206d75737420626520677265615f8201527f746572207468616e203120555344430000000000000000000000000000000000602082015250565b5f614107602f83613a9b565b9150614112826140ad565b604082019050919050565b5f6020820190508181035f830152614134816140fb565b9050919050565b5f60408201905061414e5f8301856137a2565b61415b60208301846135d0565b9392505050565b61416b816139f4565b8114614175575f5ffd5b50565b5f8151905061418681614162565b92915050565b5f602082840312156141a1576141a0613504565b5b5f6141ae84828501614178565b91505092915050565b5f6020820190506141ca5f830184613b38565b92915050565b7f54726164696e673a206d61726b6574206e6f7420736574746c656d656e7420735f8201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b5f61422a602483613a9b565b9150614235826141d0565b604082019050919050565b5f6020820190508181035f8301526142578161421e565b9050919050565b5f61426882613a52565b91507f8000000000000000000000000000000000000000000000000000000000000000820361429a5761429961403f565b5b815f039050919050565b600481106142b5576142b46136fa565b5b50565b5f8190506142c5826142a4565b919050565b5f6142d4826142b8565b9050919050565b6142e4816142ca565b82525050565b5f819050919050565b5f61430d614308614303846142ea565b613636565b6135c7565b9050919050565b61431d816142f3565b82525050565b5f60c0820190506143365f8301896142db565b6143436020830188613a5b565b6143506040830187614314565b61435d6060830186613a5b565b61436a6080830185614314565b61437760a08301846135d0565b979650505050505050565b5f61438c82613a52565b915061439783613a52565b92508282019050828112155f8312168382125f8412151617156143bd576143bc61403f565b5b92915050565b5f6143cd82613a52565b91506143d883613a52565b925082820390508181125f8412168282135f8512151617156143fd576143fc61403f565b5b92915050565b5f81905092915050565b828183375f83830152505050565b5f6144268385614403565b935061443383858461440d565b82840190509392505050565b5f61444b82848661441b565b91508190509392505050565b5f81905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f614495601c83614457565b91506144a082614461565b601c82019050919050565b5f819050919050565b6144c56144c082613996565b6144ab565b82525050565b5f6144d582614489565b91506144e182846144b4565b60208201915081905092915050565b7f4d61726b6574206861736820616c7265616479207573656400000000000000005f82015250565b5f614524601883613a9b565b915061452f826144f0565b602082019050919050565b5f6020820190508181035f83015261455181614518565b9050919050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61459282613ab9565b810181811067ffffffffffffffff821117156145b1576145b061455c565b5b80604052505050565b5f6145c36134fb565b90506145cf8282614589565b919050565b5f67ffffffffffffffff8211156145ee576145ed61455c565b5b6145f782613ab9565b9050602081019050919050565b5f614616614611846145d4565b6145ba565b90508281526020810184848401111561463257614631614558565b5b61463d84828561440d565b509392505050565b5f82601f830112614659576146586137ca565b5b8135614669848260208601614604565b91505092915050565b5f5f5f5f5f5f60c0878903121561468c5761468b613504565b5b5f87013567ffffffffffffffff8111156146a9576146a8613508565b5b6146b589828a01614645565b965050602087013567ffffffffffffffff8111156146d6576146d5613508565b5b6146e289828a01614645565b955050604087013567ffffffffffffffff81111561470357614702613508565b5b61470f89828a01614645565b945050606087013567ffffffffffffffff8111156147305761472f613508565b5b61473c89828a01614645565b935050608087013567ffffffffffffffff81111561475d5761475c613508565b5b61476989828a01614645565b92505060a061477a89828a016138bf565b9150509295509295509295565b5f60a08201905061479a5f8301886137a2565b6147a760208301876135d0565b6147b460408301866135d0565b81810360608301526147c68185613ac9565b90506147d560808301846135d0565b9695505050505050565b5f815190506147ed8161353c565b92915050565b5f6020828403121561480857614807613504565b5b5f614815848285016147df565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261487a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261483f565b614884868361483f565b95508019841693508086168417925050509392505050565b5f6148b66148b16148ac846135c7565b613636565b6135c7565b9050919050565b5f819050919050565b6148cf8361489c565b6148e36148db826148bd565b84845461484b565b825550505050565b5f5f905090565b6148fa6148eb565b6149058184846148c6565b505050565b5b818110156149285761491d5f826148f2565b60018101905061490b565b5050565b601f82111561496d5761493e8161481e565b61494784614830565b81016020851015614956578190505b61496a61496285614830565b83018261490a565b50505b505050565b5f82821c905092915050565b5f61498d5f1984600802614972565b1980831691505092915050565b5f6149a5838361497e565b9150826002028217905092915050565b6149be82613a91565b67ffffffffffffffff8111156149d7576149d661455c565b5b6149e1825461400f565b6149ec82828561492c565b5f60209050601f831160018114614a1d575f8415614a0b578287015190505b614a15858261499a565b865550614a7c565b601f198416614a2b8661481e565b5f5b82811015614a5257848901518255600182019150602085019450602081019050614a2d565b86831015614a6f5784890151614a6b601f89168261497e565b8355505b6001600288020188555050505b505050505050565b5f610100820190508181035f830152614a9d818b613ac9565b90508181036020830152614ab1818a613ac9565b90508181036040830152614ac58189613ac9565b90508181036060830152614ad98188613ac9565b90508181036080830152614aed8187613ac9565b9050614afc60a08301866135d0565b614b0960c08301856135d0565b614b1660e08301846135d0565b9998505050505050505050565b7f54726164696e673a206e6f7420656e6f7567682073686172657320746f2073655f8201527f6c6c000000000000000000000000000000000000000000000000000000000000602082015250565b5f614b7d602283613a9b565b9150614b8882614b23565b604082019050919050565b5f6020820190508181035f830152614baa81614b71565b9050919050565b5f614bbb826135c7565b9150614bc6836135c7565b9250828203905081811115614bde57614bdd61403f565b5b92915050565b5f60c082019050614bf75f8301896142db565b614c046020830188613a5b565b614c1160408301876135d0565b614c1e6060830186613a5b565b614c2b60808301856135d0565b614c3860a08301846135d0565b979650505050505050565b5f614c4d826135c7565b9150614c58836135c7565b9250828201905080821115614c7057614c6f61403f565b5b92915050565b5f60c082019050614c895f8301896142db565b614c966020830188613a5b565b614ca360408301876135d0565b614cb06060830186613a5b565b614cbd60808301856135d0565b614cca60a0830184614314565b979650505050505050565b5f606082019050614ce85f8301866137a2565b614cf560208301856137a2565b614d0260408301846135d0565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614d6e826135c7565b9150614d79836135c7565b925082614d8957614d88614d37565b5b828204905092915050565b5f606082019050614da75f8301866135d0565b614db460208301856135d0565b614dc160408301846135d0565b949350505050565b5f614dd382613a52565b9150614dde83613a52565b9250828202614dec81613a52565b91507f800000000000000000000000000000000000000000000000000000000000000084145f84121615614e2357614e2261403f565b5b8282058414831517614e3857614e3761403f565b5b5092915050565b5f614e4982613a52565b9150614e5483613a52565b925082614e6457614e63614d37565b5b60015f0383147f800000000000000000000000000000000000000000000000000000000000000083141615614e9c57614e9b61403f565b5b828205905092915050565b614eb081613996565b82525050565b5f602082019050614ec95f830184614ea7565b92915050565b5f8160011c9050919050565b5f5f8291508390505b6001851115614f2457808604811115614f0057614eff61403f565b5b6001851615614f0f5780820291505b8081029050614f1d85614ecf565b9450614ee4565b94509492505050565b5f82614f3c5760019050614ff7565b81614f49575f9050614ff7565b8160018114614f5f5760028114614f6957614f98565b6001915050614ff7565b60ff841115614f7b57614f7a61403f565b5b8360020a915084821115614f9257614f9161403f565b5b50614ff7565b5060208310610133831016604e8410600b8410161715614fcd5782820a905083811115614fc857614fc761403f565b5b614ff7565b614fda8484846001614edb565b92509050818404811115614ff157614ff061403f565b5b81810290505b9392505050565b5f615008826135c7565b9150615013836135c7565b92506150407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614f2d565b905092915050565b5f60808201905061505b5f830187614ea7565b615068602083018661396e565b6150756040830185614ea7565b6150826060830184614ea7565b9594505050505056fea26469706673582212200d18f4fb2db84867f085054acf9e2b325d82f1d6ef338734cb26cd34c1f4e0ac64736f6c634300081c003300000000000000000000000030ef5100f6363daf9efffef474968778f8f0512c000000000000000000000000173e0505b63f1e41c1c6318494377981680b836e00000000000000000000000030ef5100f6363daf9efffef474968778f8f0512c000000000000000000000000000000000000000000000000000000000000002700000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000001000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913