95 txs
109 calls
constructor
constructor(address owner_, address underlyingToken)
functions
active
viewfunction active() view returns (bool)
allowance
viewfunction allowance(address, address) view returns (uint256)
balanceOf
viewfunction balanceOf(address) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
maxRedeemable
viewfunction maxRedeemable(address owner_) view returns (uint256 redeemable)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
previewRedeemable
viewfunction previewRedeemable(address owner_) view returns (uint256 redeemable)
RECOVERY_TOKEN
viewfunction RECOVERY_TOKEN() view returns (address)
redeemablePerRTokenGlobal
viewfunction redeemablePerRTokenGlobal() view returns (uint256)
redeemablePerRTokenLast
viewfunction redeemablePerRTokenLast(address) view returns (uint256)
redeemed
viewfunction redeemed(address) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
terminationTimestamp
viewfunction terminationTimestamp() view returns (uint32)
totalSupply
viewfunction totalSupply() view returns (uint256)
transfer
purefunction transfer(address, uint256) pure returns (bool)
transferFrom
purefunction transferFrom(address, address, uint256) pure returns (bool)
UNDERLYING_TOKEN
viewfunction UNDERLYING_TOKEN() view returns (address)
activate
nonpayablefunction activate()
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
batchBurn
nonpayablefunction batchBurn(address[] froms, uint256[] amounts)
batchMint
nonpayablefunction batchMint(address[] tos, uint256[] amounts)
burn
nonpayablefunction burn(address from, uint256 amount)
depositUnderlying
nonpayablefunction depositUnderlying(uint256 amount)
finaliseTermination
nonpayablefunction finaliseTermination()
initiateTermination
nonpayablefunction initiateTermination()
mint
nonpayablefunction mint(address to, uint256 amount)
mintRecoveryTokens
nonpayablefunction mintRecoveryTokens(address to, uint256 amount)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeemUnderlying
nonpayablefunction redeemUnderlying(address owner_)
stakeRecoveryTokens
nonpayablefunction stakeRecoveryTokens(uint256 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstakeRecoveryTokens
nonpayablefunction unstakeRecoveryTokens(uint256 amount)
events
ActivationSet
event ActivationSet(bool active)
Approval
event Approval(address indexed owner, address indexed spender, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed user, address indexed newOwner)
Redeemed
event Redeemed(address indexed user, uint256 amount)
TerminationInitiated
event TerminationInitiated()
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
errors
Active
error Active()
ControllerTerminated
error ControllerTerminated()
LengthMismatch
error LengthMismatch()
NotActive
error NotActive()
NoTransfersAllowed
error NoTransfersAllowed()
TerminationCoolDownPeriodNotPassed
error TerminationCoolDownPeriodNotPassed()
ZeroAmount
error ZeroAmount()
creation bytecode
0x610120604052348015610010575f5ffd5b5060405161634c38038061634c833981810160405281019061003291906103c4565b816040518060400160405280601e81526020017f5374616b65642041726361646961205265636f7665727920546f6b656e7300008152506040518060400160405280600581526020017f73744152540000000000000000000000000000000000000000000000000000008152508373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100e8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010c9190610438565b825f908161011a91906106a0565b50816001908161012a91906106a0565b508060ff1660808160ff16815250504660a0818152505061014f6102cf60201b60201c565b60c081815250505050508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508073ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff16815250503060805160405161023990610359565b61024492919061078d565b604051809103905ff08015801561025d573d5f5f3e3d5ffd5b5073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250507fda8d093060d8bb4ec62c308766e6aff7be6a9a04c3d4a920517503311855b4ec5f6040516102c091906107ce565b60405180910390a15050610911565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516102ff9190610883565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200161033e9594939291906108c0565b60405160208183030381529060405280519060200120905090565b611e6f806144dd83390190565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6103938261036a565b9050919050565b6103a381610389565b81146103ad575f5ffd5b50565b5f815190506103be8161039a565b92915050565b5f5f604083850312156103da576103d9610366565b5b5f6103e7858286016103b0565b92505060206103f8858286016103b0565b9150509250929050565b5f60ff82169050919050565b61041781610402565b8114610421575f5ffd5b50565b5f815190506104328161040e565b92915050565b5f6020828403121561044d5761044c610366565b5b5f61045a84828501610424565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104de57607f821691505b6020821081036104f1576104f061049a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610518565b61055d8683610518565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105a161059c61059784610575565b61057e565b610575565b9050919050565b5f819050919050565b6105ba83610587565b6105ce6105c6826105a8565b848454610524565b825550505050565b5f5f905090565b6105e56105d6565b6105f08184846105b1565b505050565b5b81811015610613576106085f826105dd565b6001810190506105f6565b5050565b601f82111561065857610629816104f7565b61063284610509565b81016020851015610641578190505b61065561064d85610509565b8301826105f5565b50505b505050565b5f82821c905092915050565b5f6106785f198460080261065d565b1980831691505092915050565b5f6106908383610669565b9150826002028217905092915050565b6106a982610463565b67ffffffffffffffff8111156106c2576106c161046d565b5b6106cc82546104c7565b6106d7828285610617565b5f60209050601f831160018114610708575f84156106f6578287015190505b6107008582610685565b865550610767565b601f198416610716866104f7565b5f5b8281101561073d57848901518255600182019150602085019450602081019050610718565b8683101561075a5784890151610756601f891682610669565b8355505b6001600288020188555050505b505050505050565b61077881610389565b82525050565b61078781610402565b82525050565b5f6040820190506107a05f83018561076f565b6107ad602083018461077e565b9392505050565b5f8115159050919050565b6107c8816107b4565b82525050565b5f6020820190506107e15f8301846107bf565b92915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461080f816104c7565b61081981866107e7565b9450600182165f811461083357600181146108485761087a565b60ff198316865281151582028601935061087a565b610851856107f1565b5f5b8381101561087257815481890152600182019150602081019050610853565b838801955050505b50505092915050565b5f61088e8284610803565b915081905092915050565b5f819050919050565b6108ab81610899565b82525050565b6108ba81610575565b82525050565b5f60a0820190506108d35f8301886108a2565b6108e060208301876108a2565b6108ed60408301866108a2565b6108fa60608301856108b1565b610907608083018461076f565b9695505050505050565b60805160a05160c05160e05161010051613b2d6109b05f395f8181610bbf0152818161154e015281816115e601528181611e07015281816128610152818161290301526129d901525f8181610d4901528181610e97015281816112bb015281816117e801528181611ca601528181611e51015281816122110152818161265e015261294e01525f610c4201525f610c0e01525f610be90152613b2d5ff3fe608060405234801561000f575f5ffd5b506004361061020f575f3560e01c80636857310711610123578063a9059cbb116100ab578063dd62ed3e1161007a578063dd62ed3e146105db578063e47d2d001461060b578063e5ad693e14610627578063f2fde38b14610657578063fbecf3a1146106735761020f565b8063a9059cbb14610555578063b9f5be4114610585578063bdb1e340146105a1578063d505accf146105bf5761020f565b80638da5cb5b116100f25780638da5cb5b146104c357806395d89b41146104e157806398a8d41e146104ff5780639dc29fac146105095780639f4568ef146105255761020f565b806368573107146104175780636f9a31f41461043357806370a08231146104635780637ecebe00146104935761020f565b806329db1be6116101a657806340c10f191161017557806340c10f191461038957806349167ac8146103a55780634a6cc677146103c15780635af1e0c6146103dd5780635de8697d1461040d5761020f565b806329db1be6146103115780632c7392bb1461032f578063313ce5671461034d5780633644e5151461036b5761020f565b80630bbfc833116101e25780630bbfc8331461029b5780630f15f4c0146102b957806318160ddd146102c357806323b872dd146102e15761020f565b806302fb0c5e1461021357806303579dca1461023157806306fdde031461024d578063095ea7b31461026b575b5f5ffd5b61021b61068f565b6040516102289190612e75565b60405180910390f35b61024b60048036038101906102469190612ef0565b6106a2565b005b6102556108c1565b6040516102629190612f8b565b60405180910390f35b61028560048036038101906102809190612fde565b61094c565b6040516102929190612e75565b60405180910390f35b6102a3610a39565b6040516102b0919061303a565b60405180910390f35b6102c1610a4f565b005b6102cb610b84565b6040516102d89190613062565b60405180910390f35b6102fb60048036038101906102f6919061307b565b610b8a565b6040516103089190612e75565b60405180910390f35b610319610bbd565b6040516103269190613126565b60405180910390f35b610337610be1565b6040516103449190613062565b60405180910390f35b610355610be7565b604051610362919061315a565b60405180910390f35b610373610c0b565b604051610380919061318b565b60405180910390f35b6103a3600480360381019061039e9190612fde565b610c67565b005b6103bf60048036038101906103ba91906131a4565b610dd3565b005b6103db60048036038101906103d69190613285565b6110e6565b005b6103f760048036038101906103f29190612ef0565b61134a565b6040516104049190613062565b60405180910390f35b6104156113f6565b005b610431600480360381019061042c9190613285565b611663565b005b61044d60048036038101906104489190612ef0565b611877565b60405161045a9190613062565b60405180910390f35b61047d60048036038101906104789190612ef0565b6119bf565b60405161048a9190613062565b60405180910390f35b6104ad60048036038101906104a89190612ef0565b6119d4565b6040516104ba9190613062565b60405180910390f35b6104cb6119e9565b6040516104d89190613312565b60405180910390f35b6104e9611a0e565b6040516104f69190612f8b565b60405180910390f35b610507611a9a565b005b610523600480360381019061051e9190612fde565b611b78565b005b61053f600480360381019061053a9190612ef0565b611d2f565b60405161054c9190613062565b60405180910390f35b61056f600480360381019061056a9190612fde565b611d44565b60405161057c9190612e75565b60405180910390f35b61059f600480360381019061059a91906131a4565b611d77565b005b6105a9611e4f565b6040516105b6919061334b565b60405180910390f35b6105d960048036038101906105d491906133b8565b611e73565b005b6105f560048036038101906105f09190613455565b612160565b6040516106029190613062565b60405180910390f35b61062560048036038101906106209190612fde565b612180565b005b610641600480360381019061063c9190612ef0565b61229b565b60405161064e9190613062565b60405180910390f35b610671600480360381019061066c9190612ef0565b6122b0565b005b61068d600480360381019061068891906131a4565b6123dc565b005b600660149054906101000a900460ff1681565b600660149054906101000a900460ff166106e8576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f818361077791906134c0565b90505f6107e160085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546007546107c891906134c0565b670de0b6b3a7640000866127139092919063ffffffff16565b9050808211610815576107f385612754565b5f828261080091906134c0565b905082915061080f8183612822565b506108a7565b808361082191906134f3565b60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075460085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5f8111156108ba576108b9858261294c565b5b5050505050565b5f80546108cd90613553565b80601f01602080910402602001604051908101604052809291908181526020018280546108f990613553565b80156109445780601f1061091b57610100808354040283529160200191610944565b820191905f5260205f20905b81548152906001019060200180831161092757829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a279190613062565b60405180910390a36001905092915050565b600660159054906101000a900463ffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad5906135cd565b60405180910390fd5b5f600660159054906101000a900463ffffffff1663ffffffff1614610b2f576040517fc64f9bbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600660146101000a81548160ff0219169083151502179055507fda8d093060d8bb4ec62c308766e6aff7be6a9a04c3d4a920517503311855b4ec6001604051610b7a9190612e75565b60405180910390a1565b60025481565b5f6040517f1de81c7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60075481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610c4057610c3b612a6f565b610c62565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced906135cd565b60405180910390fd5b600660149054906101000a900460ff1615610d3d576040517fc9b0a2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d478282612af9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401610da29291906135eb565b5f604051808303815f87803b158015610db9575f5ffd5b505af1158015610dcb573d5f5f3e3d5ffd5b505050505050565b600660149054906101000a900460ff16610e19576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610e52576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610ef293929190613612565b6020604051808303815f875af1158015610f0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f329190613671565b505f8314610fe45760095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549150610fe160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600754610fc891906134c0565b670de0b6b3a7640000856127139092919063ffffffff16565b90505b5f828585610ff291906134f3565b610ffc91906134c0565b90508181116110305761100e33612754565b5f818361101b91906134c0565b905081925061102a8184612822565b506110cc565b818361103c91906134f3565b60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506110cb3386612af9565b5b5f8211156110df576110de338361294c565b5b5050505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c906135cd565b60405180910390fd5b600660149054906101000a900460ff16156111bc576040517fc9b0a2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8484905090508282905081146111ff576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f5f5f5b858110156112b8578989828181106112205761121f61369c565b5b90506020020160208101906112359190612ef0565b945060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054935087878281811061128a5761128961369c565b5b90506020020135925083831061129e578392505b6112a88584612bc4565b8060010190508282019150611205565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b81526004016113129190613062565b5f604051808303815f87803b158015611329575f5ffd5b505af115801561133b573d5f5f3e3d5ffd5b50505050505050505050505050565b5f6113ef60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460075461139991906134c0565b670de0b6b3a764000060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127139092919063ffffffff16565b9050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c906135cd565b60405180910390fd5b5f600660159054906101000a900463ffffffff1663ffffffff1614806114d657504263ffffffff1662093a80600660159054906101000a900463ffffffff1663ffffffff166114d491906134f3565b115b1561150d576040517f8378d1b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600660146101000a81548160ff02191690831515021790555061162a60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115a59190613312565b602060405180830381865afa1580156115c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e491906136dd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612c8f9092919063ffffffff16565b7fda8d093060d8bb4ec62c308766e6aff7be6a9a04c3d4a920517503311855b4ec5f6040516116599190612e75565b60405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e9906135cd565b60405180910390fd5b600660149054906101000a900460ff1615611739576040517fc9b0a2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8484905090505f83839050821461177d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5b838110156117e55785858281811061179b5761179a61369c565b5b9050602002013591506117d58888838181106117ba576117b961369c565b5b90506020020160208101906117cf9190612ef0565b83612af9565b8060010190508183019250611780565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b81526004016118419291906135eb565b5f604051808303815f87803b158015611858575f5ffd5b505af115801561186a573d5f5f3e3d5ffd5b5050505050505050505050565b5f61191c60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546007546118c691906134c0565b670de0b6b3a764000060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127139092919063ffffffff16565b90505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119a591906134c0565b9050818111156119b557816119b7565b805b915050919050565b6003602052805f5260405f205f915090505481565b6005602052805f5260405f205f915090505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054611a1b90613553565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4790613553565b8015611a925780601f10611a6957610100808354040283529160200191611a92565b820191905f5260205f20905b815481529060010190602001808311611a7557829003601f168201915b505050505081565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b20906135cd565b60405180910390fd5b42600660156101000a81548163ffffffff021916908363ffffffff1602179055507f815e0521f8ed896d67f1c40f81925d244ce8a40a26205d8c6e12597a1e3ef17560405160405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe906135cd565b60405180910390fd5b600660149054906101000a900460ff1615611c4e576040517fc9b0a2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808210611c9a578091505b611ca48383612bc4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b8152600401611cfd9190613062565b5f604051808303815f87803b158015611d14575f5ffd5b505af1158015611d26573d5f5f3e3d5ffd5b50505050505050565b6009602052805f5260405f205f915090505481565b5f6040517f1de81c7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611dbd576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611df6576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611dff81612d46565b611e4c3330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612d87909392919063ffffffff16565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b42841015611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead90613752565b60405180910390fd5b5f6001611ec1610c0b565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b604051602001611f4696959493929190613770565b60405160208183030381529060405280519060200120604051602001611f6d929190613843565b604051602081830303815290604052805190602001208585856040515f8152602001604052604051611fa29493929190613879565b6020604051602081039080840390855afa158015611fc2573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561203557508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90613906565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161214f9190613062565b60405180910390a350505050505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461220f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612206906135cd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b815260040161226a9291906135eb565b5f604051808303815f87803b158015612281575f5ffd5b505af1158015612293573d5f5f3e3d5ffd5b505050505050565b6008602052805f5260405f205f915090505481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461233f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612336906135cd565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600660149054906101000a900460ff16612422576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f810361245b576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81836124ea91906134c0565b90505f61255460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460075461253b91906134c0565b670de0b6b3a7640000866127139092919063ffffffff16565b90508082116125885761256633612754565b5f828261257391906134c0565b90508291506125828183612822565b506126f9565b84818361259591906134c0565b116125c0576125a333612754565b80826125af91906134c0565b94506125bb5f82612822565b61265c565b80836125cc91906134f3565b60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061265b3386612bc4565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff1660e01b81526004016126b79291906135eb565b6020604051808303815f875af11580156126d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f79190613671565b505b5f81111561270c5761270b338261294c565b5b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612746575f5ffd5b818385020490509392505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061281f8160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bc4565b50565b5f600254146128395761283482612d46565b612948565b61294760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128b89190613312565b602060405180830381865afa1580156128d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f791906136dd565b61290191906134c0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612c8f9092919063ffffffff16565b5b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b81526004016129a59190613062565b5f604051808303815f87803b1580156129bc575f5ffd5b505af11580156129ce573d5f5f3e3d5ffd5b50505050612a1d82827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612c8f9092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b936982604051612a639190613062565b60405180910390a25050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051612a9f91906139c0565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001612ade9594939291906139d6565b60405160208183030381529060405280519060200120905090565b8060025f828254612b0a91906134f3565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bb89190613062565b60405180910390a35050565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c1091906134c0565b925050819055508060025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c839190613062565b60405180910390a35050565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af1915081601f3d1160015f511416151615612cff573d853b15171591505b5080612d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3790613a71565b60405180910390fd5b50505050565b5f8114612d8457612d6c670de0b6b3a7640000600254836127139092919063ffffffff16565b60075f828254612d7c91906134f3565b925050819055505b50565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af1915081601f3d1160015f511416151615612e13573d863b15171591505b5080612e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4b90613ad9565b60405180910390fd5b5050505050565b5f8115159050919050565b612e6f81612e5b565b82525050565b5f602082019050612e885f830184612e66565b92915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ebf82612e96565b9050919050565b612ecf81612eb5565b8114612ed9575f5ffd5b50565b5f81359050612eea81612ec6565b92915050565b5f60208284031215612f0557612f04612e8e565b5b5f612f1284828501612edc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612f5d82612f1b565b612f678185612f25565b9350612f77818560208601612f35565b612f8081612f43565b840191505092915050565b5f6020820190508181035f830152612fa38184612f53565b905092915050565b5f819050919050565b612fbd81612fab565b8114612fc7575f5ffd5b50565b5f81359050612fd881612fb4565b92915050565b5f5f60408385031215612ff457612ff3612e8e565b5b5f61300185828601612edc565b925050602061301285828601612fca565b9150509250929050565b5f63ffffffff82169050919050565b6130348161301c565b82525050565b5f60208201905061304d5f83018461302b565b92915050565b61305c81612fab565b82525050565b5f6020820190506130755f830184613053565b92915050565b5f5f5f6060848603121561309257613091612e8e565b5b5f61309f86828701612edc565b93505060206130b086828701612edc565b92505060406130c186828701612fca565b9150509250925092565b5f819050919050565b5f6130ee6130e96130e484612e96565b6130cb565b612e96565b9050919050565b5f6130ff826130d4565b9050919050565b5f613110826130f5565b9050919050565b61312081613106565b82525050565b5f6020820190506131395f830184613117565b92915050565b5f60ff82169050919050565b6131548161313f565b82525050565b5f60208201905061316d5f83018461314b565b92915050565b5f819050919050565b61318581613173565b82525050565b5f60208201905061319e5f83018461317c565b92915050565b5f602082840312156131b9576131b8612e8e565b5b5f6131c684828501612fca565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126131f0576131ef6131cf565b5b8235905067ffffffffffffffff81111561320d5761320c6131d3565b5b602083019150836020820283011115613229576132286131d7565b5b9250929050565b5f5f83601f840112613245576132446131cf565b5b8235905067ffffffffffffffff811115613262576132616131d3565b5b60208301915083602082028301111561327e5761327d6131d7565b5b9250929050565b5f5f5f5f6040858703121561329d5761329c612e8e565b5b5f85013567ffffffffffffffff8111156132ba576132b9612e92565b5b6132c6878288016131db565b9450945050602085013567ffffffffffffffff8111156132e9576132e8612e92565b5b6132f587828801613230565b925092505092959194509250565b61330c81612eb5565b82525050565b5f6020820190506133255f830184613303565b92915050565b5f613335826130f5565b9050919050565b6133458161332b565b82525050565b5f60208201905061335e5f83018461333c565b92915050565b61336d8161313f565b8114613377575f5ffd5b50565b5f8135905061338881613364565b92915050565b61339781613173565b81146133a1575f5ffd5b50565b5f813590506133b28161338e565b92915050565b5f5f5f5f5f5f5f60e0888a0312156133d3576133d2612e8e565b5b5f6133e08a828b01612edc565b97505060206133f18a828b01612edc565b96505060406134028a828b01612fca565b95505060606134138a828b01612fca565b94505060806134248a828b0161337a565b93505060a06134358a828b016133a4565b92505060c06134468a828b016133a4565b91505092959891949750929550565b5f5f6040838503121561346b5761346a612e8e565b5b5f61347885828601612edc565b925050602061348985828601612edc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134ca82612fab565b91506134d583612fab565b92508282039050818111156134ed576134ec613493565b5b92915050565b5f6134fd82612fab565b915061350883612fab565b92508282019050808211156135205761351f613493565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061356a57607f821691505b60208210810361357d5761357c613526565b5b50919050565b7f554e415554484f52495a454400000000000000000000000000000000000000005f82015250565b5f6135b7600c83612f25565b91506135c282613583565b602082019050919050565b5f6020820190508181035f8301526135e4816135ab565b9050919050565b5f6040820190506135fe5f830185613303565b61360b6020830184613053565b9392505050565b5f6060820190506136255f830186613303565b6136326020830185613303565b61363f6040830184613053565b949350505050565b61365081612e5b565b811461365a575f5ffd5b50565b5f8151905061366b81613647565b92915050565b5f6020828403121561368657613685612e8e565b5b5f6136938482850161365d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506136d781612fb4565b92915050565b5f602082840312156136f2576136f1612e8e565b5b5f6136ff848285016136c9565b91505092915050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f61373c601783612f25565b915061374782613708565b602082019050919050565b5f6020820190508181035f83015261376981613730565b9050919050565b5f60c0820190506137835f83018961317c565b6137906020830188613303565b61379d6040830187613303565b6137aa6060830186613053565b6137b76080830185613053565b6137c460a0830184613053565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f61380d6002836137cf565b9150613818826137d9565b600282019050919050565b5f819050919050565b61383d61383882613173565b613823565b82525050565b5f61384d82613801565b9150613859828561382c565b602082019150613869828461382c565b6020820191508190509392505050565b5f60808201905061388c5f83018761317c565b613899602083018661314b565b6138a6604083018561317c565b6138b3606083018461317c565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6138f0600e83612f25565b91506138fb826138bc565b602082019050919050565b5f6020820190508181035f83015261391d816138e4565b9050919050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461394c81613553565b6139568186613924565b9450600182165f81146139705760018114613985576139b7565b60ff19831686528115158202860193506139b7565b61398e8561392e565b5f5b838110156139af57815481890152600182019150602081019050613990565b838801955050505b50505092915050565b5f6139cb8284613940565b915081905092915050565b5f60a0820190506139e95f83018861317c565b6139f6602083018761317c565b613a03604083018661317c565b613a106060830185613053565b613a1d6080830184613303565b9695505050505050565b7f5452414e534645525f4641494c454400000000000000000000000000000000005f82015250565b5f613a5b600f83612f25565b9150613a6682613a27565b602082019050919050565b5f6020820190508181035f830152613a8881613a4f565b9050919050565b7f5452414e534645525f46524f4d5f4641494c45440000000000000000000000005f82015250565b5f613ac3601483612f25565b9150613ace82613a8f565b602082019050919050565b5f6020820190508181035f830152613af081613ab7565b905091905056fea2646970667358221220249e25c8efc8a3359187df4bf36cfb0ebb72bbebce9743d2327f6e80bea9b92864736f6c634300081e0033610100604052348015610010575f5ffd5b50604051611e6f380380611e6f83398181016040528101906100329190610245565b6040518060400160405280601681526020017f41726361646961205265636f7665727920546f6b656e000000000000000000008152506040518060400160405280600381526020017f415254000000000000000000000000000000000000000000000000000000000081525082825f90816100ad91906104c0565b5081600190816100bd91906104c0565b508060ff1660808160ff16815250504660a081815250506100e261012760201b60201c565b60c081815250505050508173ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505050506106c8565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610157919061062b565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001610196959493929190610677565b60405160208183030381529060405280519060200120905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101de826101b5565b9050919050565b6101ee816101d4565b81146101f8575f5ffd5b50565b5f81519050610209816101e5565b92915050565b5f60ff82169050919050565b6102248161020f565b811461022e575f5ffd5b50565b5f8151905061023f8161021b565b92915050565b5f5f6040838503121561025b5761025a6101b1565b5b5f610268858286016101fb565b925050602061027985828601610231565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102fe57607f821691505b602082108103610311576103106102ba565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610338565b61037d8683610338565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103c16103bc6103b784610395565b61039e565b610395565b9050919050565b5f819050919050565b6103da836103a7565b6103ee6103e6826103c8565b848454610344565b825550505050565b5f5f905090565b6104056103f6565b6104108184846103d1565b505050565b5b81811015610433576104285f826103fd565b600181019050610416565b5050565b601f8211156104785761044981610317565b61045284610329565b81016020851015610461578190505b61047561046d85610329565b830182610415565b50505b505050565b5f82821c905092915050565b5f6104985f198460080261047d565b1980831691505092915050565b5f6104b08383610489565b9150826002028217905092915050565b6104c982610283565b67ffffffffffffffff8111156104e2576104e161028d565b5b6104ec82546102e7565b6104f7828285610437565b5f60209050601f831160018114610528575f8415610516578287015190505b61052085826104a5565b865550610587565b601f19841661053686610317565b5f5b8281101561055d57848901518255600182019150602085019450602081019050610538565b8683101561057a5784890151610576601f891682610489565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f81546105b7816102e7565b6105c1818661058f565b9450600182165f81146105db57600181146105f057610622565b60ff1983168652811515820286019350610622565b6105f985610599565b5f5b8381101561061a578154818901526001820191506020810190506105fb565b838801955050505b50505092915050565b5f61063682846105ab565b915081905092915050565b5f819050919050565b61065381610641565b82525050565b61066281610395565b82525050565b610671816101d4565b82525050565b5f60a08201905061068a5f83018861064a565b610697602083018761064a565b6106a4604083018661064a565b6106b16060830185610659565b6106be6080830184610668565b9695505050505050565b60805160a05160c05160e05161176d6107025f395f818161075a0152610cca01525f61073301525f6106ff01525f6106da015261176d5ff3fe608060405234801561000f575f5ffd5b50600436106100f3575f3560e01c806342966c6811610095578063a9059cbb11610064578063a9059cbb14610285578063d505accf146102b5578063dd62ed3e146102d1578063f48da47514610301576100f3565b806342966c68146101eb57806370a08231146102075780637ecebe001461023757806395d89b4114610267576100f3565b806323b872dd116100d157806323b872dd14610163578063313ce567146101935780633644e515146101b157806340c10f19146101cf576100f3565b806306fdde03146100f7578063095ea7b31461011557806318160ddd14610145575b5f5ffd5b6100ff61031f565b60405161010c9190610f7c565b60405180910390f35b61012f600480360381019061012a919061102d565b6103aa565b60405161013c9190611085565b60405180910390f35b61014d610497565b60405161015a91906110ad565b60405180910390f35b61017d600480360381019061017891906110c6565b61049d565b60405161018a9190611085565b60405180910390f35b61019b6106d8565b6040516101a89190611131565b60405180910390f35b6101b96106fc565b6040516101c69190611162565b60405180910390f35b6101e960048036038101906101e4919061102d565b610758565b005b6102056004803603810190610200919061117b565b6107eb565b005b610221600480360381019061021c91906111a6565b6107f8565b60405161022e91906110ad565b60405180910390f35b610251600480360381019061024c91906111a6565b61080d565b60405161025e91906110ad565b60405180910390f35b61026f610822565b60405161027c9190610f7c565b60405180910390f35b61029f600480360381019061029a919061102d565b6108ae565b6040516102ac9190611085565b60405180910390f35b6102cf60048036038101906102ca9190611225565b6109bb565b005b6102eb60048036038101906102e691906112c2565b610ca8565b6040516102f891906110ad565b60405180910390f35b610309610cc8565b604051610316919061130f565b60405180910390f35b5f805461032b90611355565b80601f016020809104026020016040519081016040528092919081815260200182805461035790611355565b80156103a25780601f10610379576101008083540402835291602001916103a2565b820191905f5260205f20905b81548152906001019060200180831161038557829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161048591906110ad565b60405180910390a36001905092915050565b60025481565b5f5f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105ca57828161054d91906113b2565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461061691906113b2565b925050819055508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106c491906110ad565b60405180910390a360019150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f000000000000000000000000000000000000000000000000000000000000000046146107315761072c610cec565b610753565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107dd576040517f4f161bfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e78282610d76565b5050565b6107f53382610e41565b50565b6003602052805f5260405f205f915090505481565b6005602052805f5260405f205f915090505481565b6001805461082f90611355565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90611355565b80156108a65780601f1061087d576101008083540402835291602001916108a6565b820191905f5260205f20905b81548152906001019060200180831161088957829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108fb91906113b2565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109a991906110ad565b60405180910390a36001905092915050565b428410156109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f59061142f565b60405180910390fd5b5f6001610a096106fc565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b604051602001610a8e9695949392919061144d565b60405160208183030381529060405280519060200120604051602001610ab5929190611520565b604051602081830303815290604052805190602001208585856040515f8152602001604052604051610aea9493929190611556565b6020604051602081039080840390855afa158015610b0a573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610b7d57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb3906115e3565b60405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051610c9791906110ad565b60405180910390a350505050505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610d1c919061169d565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001610d5b9594939291906116b3565b60405160208183030381529060405280519060200120905090565b8060025f828254610d879190611704565b925050819055508060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e3591906110ad565b60405180910390a35050565b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e8d91906113b2565b925050819055508060025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f0091906110ad565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f4e82610f0c565b610f588185610f16565b9350610f68818560208601610f26565b610f7181610f34565b840191505092915050565b5f6020820190508181035f830152610f948184610f44565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fc982610fa0565b9050919050565b610fd981610fbf565b8114610fe3575f5ffd5b50565b5f81359050610ff481610fd0565b92915050565b5f819050919050565b61100c81610ffa565b8114611016575f5ffd5b50565b5f8135905061102781611003565b92915050565b5f5f6040838503121561104357611042610f9c565b5b5f61105085828601610fe6565b925050602061106185828601611019565b9150509250929050565b5f8115159050919050565b61107f8161106b565b82525050565b5f6020820190506110985f830184611076565b92915050565b6110a781610ffa565b82525050565b5f6020820190506110c05f83018461109e565b92915050565b5f5f5f606084860312156110dd576110dc610f9c565b5b5f6110ea86828701610fe6565b93505060206110fb86828701610fe6565b925050604061110c86828701611019565b9150509250925092565b5f60ff82169050919050565b61112b81611116565b82525050565b5f6020820190506111445f830184611122565b92915050565b5f819050919050565b61115c8161114a565b82525050565b5f6020820190506111755f830184611153565b92915050565b5f602082840312156111905761118f610f9c565b5b5f61119d84828501611019565b91505092915050565b5f602082840312156111bb576111ba610f9c565b5b5f6111c884828501610fe6565b91505092915050565b6111da81611116565b81146111e4575f5ffd5b50565b5f813590506111f5816111d1565b92915050565b6112048161114a565b811461120e575f5ffd5b50565b5f8135905061121f816111fb565b92915050565b5f5f5f5f5f5f5f60e0888a0312156112405761123f610f9c565b5b5f61124d8a828b01610fe6565b975050602061125e8a828b01610fe6565b965050604061126f8a828b01611019565b95505060606112808a828b01611019565b94505060806112918a828b016111e7565b93505060a06112a28a828b01611211565b92505060c06112b38a828b01611211565b91505092959891949750929550565b5f5f604083850312156112d8576112d7610f9c565b5b5f6112e585828601610fe6565b92505060206112f685828601610fe6565b9150509250929050565b61130981610fbf565b82525050565b5f6020820190506113225f830184611300565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061136c57607f821691505b60208210810361137f5761137e611328565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6113bc82610ffa565b91506113c783610ffa565b92508282039050818111156113df576113de611385565b5b92915050565b7f5045524d49545f444541444c494e455f455850495245440000000000000000005f82015250565b5f611419601783610f16565b9150611424826113e5565b602082019050919050565b5f6020820190508181035f8301526114468161140d565b9050919050565b5f60c0820190506114605f830189611153565b61146d6020830188611300565b61147a6040830187611300565b611487606083018661109e565b611494608083018561109e565b6114a160a083018461109e565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6114ea6002836114ac565b91506114f5826114b6565b600282019050919050565b5f819050919050565b61151a6115158261114a565b611500565b82525050565b5f61152a826114de565b91506115368285611509565b6020820191506115468284611509565b6020820191508190509392505050565b5f6080820190506115695f830187611153565b6115766020830186611122565b6115836040830185611153565b6115906060830184611153565b95945050505050565b7f494e56414c49445f5349474e45520000000000000000000000000000000000005f82015250565b5f6115cd600e83610f16565b91506115d882611599565b602082019050919050565b5f6020820190508181035f8301526115fa816115c1565b9050919050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461162981611355565b6116338186611601565b9450600182165f811461164d576001811461166257611694565b60ff1983168652811515820286019350611694565b61166b8561160b565b5f5b8381101561168c5781548189015260018201915060208101905061166d565b838801955050505b50505092915050565b5f6116a8828461161d565b915081905092915050565b5f60a0820190506116c65f830188611153565b6116d36020830187611153565b6116e06040830186611153565b6116ed606083018561109e565b6116fa6080830184611300565b9695505050505050565b5f61170e82610ffa565b915061171983610ffa565b925082820190508082111561173157611730611385565b5b9291505056fea264697066735822122009f236fdfb796be701cc8349ec87e3c5fc9de33929c902695c41e76ee7899fa164736f6c634300081e0033000000000000000000000000b4d72b1c91e640e4ed7d7397f3244de4d8acc50b000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda02913