5 txs
6 calls
constructor
constructor(address _aerodromeRouter)
functions
aerodromeRouter
viewfunction aerodromeRouter() view returns (address)
agentApplications
viewfunction agentApplications(uint256) view returns (address)
agentCommission
viewfunction agentCommission() view returns (uint256)
agentDefaultAllotment
viewfunction agentDefaultAllotment() view returns (uint256)
agentRemaining
viewfunction agentRemaining(address) view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
AmountSentInWindow
viewfunction AmountSentInWindow(address, uint256) view returns (uint256)
applicationCount
viewfunction applicationCount() view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
claimCooldown
viewfunction claimCooldown() view returns (uint256)
ClaimedFromAgent
viewfunction ClaimedFromAgent(address, address) view returns (bool)
deadAddress
viewfunction deadAddress() view returns (address)
decayRate
viewfunction decayRate() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
defaultFirstClaim
viewfunction defaultFirstClaim() view returns (uint256)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
excludedFromLimits
viewfunction excludedFromLimits(address) view returns (bool)
GET_AGENT_BALANCE
viewfunction GET_AGENT_BALANCE(address agent) view returns (uint256)
GET_AGENT_COOLDOWN
viewfunction GET_AGENT_COOLDOWN(address agent) view returns (uint256)
isAgent
viewfunction isAgent(address) view returns (bool)
lastAgentClaimTime
viewfunction lastAgentClaimTime(address) view returns (uint256)
lastUserClaimAmount
viewfunction lastUserClaimAmount(address) view returns (uint256)
limitsInEffect
viewfunction limitsInEffect() view returns (bool)
lp_percent
viewfunction lp_percent() view returns (uint256)
MAX_SUPPLY
viewfunction MAX_SUPPLY() view returns (uint256)
maxTransactionAmount
viewfunction maxTransactionAmount() view returns (uint256)
maxWallet
viewfunction maxWallet() view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
owner
viewfunction owner() view returns (address)
REMAINING_TOKENS_WITHIN_WINDOW
viewfunction REMAINING_TOKENS_WITHIN_WINDOW(address agent) view returns (uint256)
RISKS
purefunction RISKS() pure returns (string)
round
purefunction round(uint256 amount) pure returns (uint256)
SENDABLE_AMOUNT_BY_AGENT
viewfunction SENDABLE_AMOUNT_BY_AGENT(address agent, address user) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalAllotmentToAgents
viewfunction totalAllotmentToAgents() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalTokenSent
viewfunction totalTokenSent() view returns (uint256)
tradingActive
viewfunction tradingActive() view returns (bool)
windowDuration
viewfunction windowDuration() view returns (uint256)
windowEndTime
viewfunction windowEndTime() view returns (uint256)
windowIndex
viewfunction windowIndex() view returns (uint256)
windowTokenLimit
viewfunction windowTokenLimit() view returns (uint256)
APPLY_TO_BE_AGENT
nonpayablefunction APPLY_TO_BE_AGENT(address applicant, string niceLittleMessage) returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
burn
nonpayablefunction burn(uint256 value)
burnFrom
nonpayablefunction burnFrom(address account, uint256 value)
createAgent
nonpayablefunction createAgent(address agent, string label)
enableTrading
nonpayablefunction enableTrading()
incrementAgentRemaining
nonpayablefunction incrementAgentRemaining(address agent)
makeLP
payablefunction makeLP(uint256 amountTokenDesired) payable
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
removeAgent
nonpayablefunction removeAgent(address agent)
removeLimits
nonpayablefunction removeLimits() returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
SEND_REAL_ESTATE
nonpayablefunction SEND_REAL_ESTATE(address to)
setAgentCommission
nonpayablefunction setAgentCommission(uint256 newCommission)
setAgentDefaultAllotment
nonpayablefunction setAgentDefaultAllotment(uint256 amount)
setClaimCooldown
nonpayablefunction setClaimCooldown(uint256 _seconds)
setDecayRate
nonpayablefunction setDecayRate(uint256 newRate)
setDefaultFirstClaim
nonpayablefunction setDefaultFirstClaim(uint256 amount)
setMaxTransactionAmount
nonpayablefunction setMaxTransactionAmount(uint256 newAmount)
setMaxWallet
nonpayablefunction setMaxWallet(uint256 newAmount)
setWindowDuration
nonpayablefunction setWindowDuration(uint256 _seconds)
setWindowTokenLimit
nonpayablefunction setWindowTokenLimit(uint256 _amount)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AgentAdded
event AgentAdded(address indexed agent, string label)
AgentApplicationSubmitted
event AgentApplicationSubmitted(uint256 indexed applicationId, address indexed applicant, string message)
AgentRemainingIncremented
event AgentRemainingIncremented(address indexed agent, uint256 amount)
AgentRemoved
event AgentRemoved(address indexed agent)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ClaimCooldownUpdated
event ClaimCooldownUpdated(uint256 oldCooldown, uint256 newCooldown)
EIP712DomainChanged
event EIP712DomainChanged()
LiquidityAdded
event LiquidityAdded(uint256 tokensAdded, uint256 ethAdded, uint256 liquidityReceived, uint256 tokensBurned)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ParametersUpdated
event ParametersUpdated(string parameterName, uint256 oldValue, uint256 newValue)
RealEstateSent
event RealEstateSent(address indexed agent, address indexed recipient, uint256 amount, uint256 newagentRemaining)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
AlreadyAgent
error AlreadyAgent()
AlreadyClaimedFromAgent
error AlreadyClaimedFromAgent()
ClaimCooldownNotMet
error ClaimCooldownNotMet()
CommissionTooHigh
error CommissionTooHigh()
ContractOutOfTokens
error ContractOutOfTokens()
CooldownMustBePositive
error CooldownMustBePositive()
DecayRateTooHigh
error DecayRateTooHigh()
DistributionWindowExceeded
error DistributionWindowExceeded()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC2612ExpiredSignature
error ERC2612ExpiredSignature(uint256 deadline)
ERC2612InvalidSigner
error ERC2612InvalidSigner(address signer, address owner)
ETHTransferFailed
error ETHTransferFailed()
InsufficientAgentRemaining
error InsufficientAgentRemaining()
InsufficientEthBalance
error InsufficientEthBalance()
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidShortString
error InvalidShortString()
MaxTransactionAmountInvalid
error MaxTransactionAmountInvalid()
MaxWalletAmountInvalid
error MaxWalletAmountInvalid()
NotAgent
error NotAgent()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
StringTooLong
error StringTooLong(string str)
TradingNotActive
error TradingNotActive()
TransactionExceedsMaxAmount
error TransactionExceedsMaxAmount()
WalletExceedsMaxAmount
error WalletExceedsMaxAmount()
creation bytecode
0x6101606040526b019d971e4fe8401e74000000600f55699396cd902239039b26c960105560216011556078601255600360135561a8c06014555f601555603260105461004b9190610eca565b6016556014544261005c9190610f0b565b60175561271060056b204fce5e3e2502611000000061007b9190610eca565b6100859190610f6b565b601c5561271060056b204fce5e3e250261100000006100a49190610eca565b6100ae9190610f6b565b601d556001601e5f6101000a81548160ff0219169083151502179055505f601e60016101000a81548160ff0219169083151502179055503480156100f0575f80fd5b5060405161631d38038061631d83398181016040528101906101129190610ff9565b6040518060400160405280600b81526020017f5265616c20457374617465000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250336040518060400160405280600b81526020017f5265616c204573746174650000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f5245414c4553544154450000000000000000000000000000000000000000000081525081600390816101fb9190611255565b50806004908161020b9190611255565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361027e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016102759190611333565b60405180910390fd5b61028d816105ad60201b60201c565b506102a260068361067060201b90919060201c565b61012081815250506102be60078261067060201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506102fb6106bd60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506001600e5f61034c61071760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061050d306b204fce5e3e2502611000000061073f60201b60201c565b8060195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603260105461055c9190610eca565b6016819055506105a7336040518060400160405280600581526020017f70307070730000000000000000000000000000000000000000000000000000008152506107c460201b60201c565b5061152b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6020835110156106915761068a8361096960201b60201c565b90506106b7565b826106a1836109ce60201b60201c565b5f0190816106af9190611255565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016106fc959493929190611373565b60405160208183030381529060405280519060200120905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107af575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107a69190611333565b60405180910390fd5b6107c05f83836109d760201b60201c565b5050565b6107d2610b9660201b60201c565b600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610853576040517f012e875b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600f54600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108f69190610f0b565b92505081905550600f54601a5f8282546109109190610f0b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167ff60b30bb85d0d906987b048f00e2b64312a61a532caa769536086b50396f845a8260405161095d919061142a565b60405180910390a25050565b5f80829050601f815111156109b557826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016109ac919061142a565b60405180910390fd5b8051816109c190611477565b5f1c175f1b915050919050565b5f819050919050565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680610a725750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610a8d57610a88838383610c2f60201b60201c565b610b91565b601e5f9054906101000a900460ff1615610b3357601c54811115610add576040517fffe0de0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d5481610af084610e4860201b60201c565b610afa9190610f0b565b1115610b32576040517f5acd1a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b601e60019054906101000a900460ff1615610b5e57610b59838383610c2f60201b60201c565b610b90565b6040517fa491421c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b610ba4610e8d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16610bc861071760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610c2d57610bf1610e8d60201b60201c565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c249190611333565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c7f578060025f828254610c739190610f0b565b92505081905550610d4d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610d08578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610cff939291906114dd565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d94578060025f8282540392505081905550610dde565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e3b9190611512565b60405180910390a3505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ed482610e94565b9150610edf83610e94565b9250828202610eed81610e94565b91508282048414831517610f0457610f03610e9d565b5b5092915050565b5f610f1582610e94565b9150610f2083610e94565b9250828201905080821115610f3857610f37610e9d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f7582610e94565b9150610f8083610e94565b925082610f9057610f8f610f3e565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fc882610f9f565b9050919050565b610fd881610fbe565b8114610fe2575f80fd5b50565b5f81519050610ff381610fcf565b92915050565b5f6020828403121561100e5761100d610f9b565b5b5f61101b84828501610fe5565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061109f57607f821691505b6020821081036110b2576110b161105b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026111147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826110d9565b61111e86836110d9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61115961115461114f84610e94565b611136565b610e94565b9050919050565b5f819050919050565b6111728361113f565b61118661117e82611160565b8484546110e5565b825550505050565b5f90565b61119a61118e565b6111a5818484611169565b505050565b5b818110156111c8576111bd5f82611192565b6001810190506111ab565b5050565b601f82111561120d576111de816110b8565b6111e7846110ca565b810160208510156111f6578190505b61120a611202856110ca565b8301826111aa565b50505b505050565b5f82821c905092915050565b5f61122d5f1984600802611212565b1980831691505092915050565b5f611245838361121e565b9150826002028217905092915050565b61125e82611024565b67ffffffffffffffff8111156112775761127661102e565b5b6112818254611088565b61128c8282856111cc565b5f60209050601f8311600181146112bd575f84156112ab578287015190505b6112b5858261123a565b86555061131c565b601f1984166112cb866110b8565b5f5b828110156112f2578489015182556001820191506020850194506020810190506112cd565b8683101561130f578489015161130b601f89168261121e565b8355505b6001600288020188555050505b505050505050565b61132d81610fbe565b82525050565b5f6020820190506113465f830184611324565b92915050565b5f819050919050565b61135e8161134c565b82525050565b61136d81610e94565b82525050565b5f60a0820190506113865f830188611355565b6113936020830187611355565b6113a06040830186611355565b6113ad6060830185611364565b6113ba6080830184611324565b9695505050505050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6113fc82611024565b61140681856113c4565b93506114168185602086016113d4565b61141f816113e2565b840191505092915050565b5f6020820190508181035f83015261144281846113f2565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f61146e825161134c565b80915050919050565b5f6114818261144a565b8261148b84611454565b905061149681611463565b925060208210156114d6576114d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026110d9565b831692505b5050919050565b5f6060820190506114f05f830186611324565b6114fd6020830185611364565b61150a6040830184611364565b949350505050565b5f6020820190506115255f830184611364565b92915050565b60805160a05160c05160e051610100516101205161014051614da161157c5f395f612fd001525f612f9501525f61345d01525f61343c01525f612d5101525f612da701525f612dd00152614da15ff3fe6080604052600436106103f9575f3560e01c8063715018a611610212578063b4f738cf11610122578063e18e3a68116100aa578063efb66ba911610079578063efb66ba914610f83578063f2fde38b14610fbf578063f84a9bd214610fe7578063f8b45b0514611011578063fdea36571461103b576103f9565b8063e18e3a6814610ecb578063e2aad4a014610ef5578063e2b037aa14610f1f578063ed44309714610f5b576103f9565b8063c9d9159d116100f1578063c9d9159d14610dd9578063ca91e0af14610e03578063ccc451c814610e3f578063d505accf14610e67578063dd62ed3e14610e8f576103f9565b8063b4f738cf14610d35578063bbc0c74214610d5d578063bdeeb39914610d87578063c8c8ebe414610daf576103f9565b80638a8c523c116101a557806397a6278e1161017457806397a6278e14610c55578063a9059cbb14610c7d578063a9c1f2f114610cb9578063aba185f014610ce3578063ace0fa6c14610d0b576103f9565b80638a8c523c14610baf5780638da5cb5b14610bc5578063926f0ea814610bef57806395d89b4114610c2b576103f9565b806379cc6790116101e157806379cc679014610adf5780637b812b4114610b075780637ecebe0014610b4357806384b0196e14610b7f576103f9565b8063715018a614610a27578063723de73e14610a3d578063751039fc14610a7957806376e9db3314610aa3576103f9565b80632e23ac7f1161030d57806342966c68116102a05780635c11ff7a1161026f5780635c11ff7a146109415780635d0044ca1461096b5780636297786c146109935780636f01fb94146109cf57806370a08231146109eb576103f9565b806342966c681461089d5780634a62bb65146108c5578063593ee5be146108ef57806359c9eb9014610919576103f9565b806334d5f37b116102dc57806334d5f37b146107d15780633644e5151461080d5780633d87f9ee146108375780633e16519314610873576103f9565b80632e23ac7f14610719578063313ce5671461074157806331f389751461076b57806332cb6b0c146107a7576103f9565b80630d8ea604116103905780631e293c101161035f5780631e293c10146106275780631ffbb0641461064f5780632173434d1461068b57806323b872dd146106b357806327c8f835146106ef576103f9565b80630d8ea6041461057f57806318160ddd146105a95780631cf14187146105d35780631d902678146105fd576103f9565b80630adae79f116103cc5780630adae79f146104b55780630c5ddd31146104f15780630c78c7411461051b5780630d50ac4114610557576103f9565b8063049e2581146103fd57806304e7e0b91461042757806306fdde031461044f578063095ea7b314610479575b5f80fd5b348015610408575f80fd5b50610411611065565b60405161041e9190613ad4565b60405180910390f35b348015610432575f80fd5b5061044d60048036038101906104489190613b28565b61106b565b005b34801561045a575f80fd5b506104636110f8565b6040516104709190613bc3565b60405180910390f35b348015610484575f80fd5b5061049f600480360381019061049a9190613c3d565b611188565b6040516104ac9190613c95565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190613cae565b6111aa565b6040516104e89190613ad4565b60405180910390f35b3480156104fc575f80fd5b506105056111bf565b6040516105129190613ad4565b60405180910390f35b348015610526575f80fd5b50610541600480360381019061053c9190613cae565b6111c5565b60405161054e9190613ad4565b60405180910390f35b348015610562575f80fd5b5061057d60048036038101906105789190613cae565b611229565b005b34801561058a575f80fd5b506105936112f3565b6040516105a09190613bc3565b60405180910390f35b3480156105b4575f80fd5b506105bd611313565b6040516105ca9190613ad4565b60405180910390f35b3480156105de575f80fd5b506105e761131c565b6040516105f49190613ad4565b60405180910390f35b348015610608575f80fd5b50610611611322565b60405161061e9190613ad4565b60405180910390f35b348015610632575f80fd5b5061064d60048036038101906106489190613b28565b611328565b005b34801561065a575f80fd5b5061067560048036038101906106709190613cae565b6113f9565b6040516106829190613c95565b60405180910390f35b348015610696575f80fd5b506106b160048036038101906106ac9190613b28565b611416565b005b3480156106be575f80fd5b506106d960048036038101906106d49190613cd9565b611468565b6040516106e69190613c95565b60405180910390f35b3480156106fa575f80fd5b50610703611496565b6040516107109190613d38565b60405180910390f35b348015610724575f80fd5b5061073f600480360381019061073a9190613b28565b61149c565b005b34801561074c575f80fd5b506107556114ee565b6040516107629190613d6c565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190613cae565b6114f6565b60405161079e9190613ad4565b60405180910390f35b3480156107b2575f80fd5b506107bb611570565b6040516107c89190613ad4565b60405180910390f35b3480156107dc575f80fd5b506107f760048036038101906107f29190613b28565b611580565b6040516108049190613ad4565b60405180910390f35b348015610818575f80fd5b506108216115ac565b60405161082e9190613d9d565b60405180910390f35b348015610842575f80fd5b5061085d60048036038101906108589190613cae565b6115ba565b60405161086a9190613ad4565b60405180910390f35b34801561087e575f80fd5b50610887611600565b6040516108949190613ad4565b60405180910390f35b3480156108a8575f80fd5b506108c360048036038101906108be9190613b28565b611606565b005b3480156108d0575f80fd5b506108d961161a565b6040516108e69190613c95565b60405180910390f35b3480156108fa575f80fd5b5061090361162c565b6040516109109190613ad4565b60405180910390f35b348015610924575f80fd5b5061093f600480360381019061093a9190613b28565b611632565b005b34801561094c575f80fd5b506109556116bd565b6040516109629190613ad4565b60405180910390f35b348015610976575f80fd5b50610991600480360381019061098c9190613b28565b6116c3565b005b34801561099e575f80fd5b506109b960048036038101906109b49190613cae565b611794565b6040516109c69190613ad4565b60405180910390f35b6109e960048036038101906109e49190613b28565b6117a9565b005b3480156109f6575f80fd5b50610a116004803603810190610a0c9190613cae565b6119ad565b604051610a1e9190613ad4565b60405180910390f35b348015610a32575f80fd5b50610a3b6119f2565b005b348015610a48575f80fd5b50610a636004803603810190610a5e9190613c3d565b611a05565b604051610a709190613ad4565b60405180910390f35b348015610a84575f80fd5b50610a8d611a25565b604051610a9a9190613c95565b60405180910390f35b348015610aae575f80fd5b50610ac96004803603810190610ac49190613e17565b611a4e565b604051610ad69190613ad4565b60405180910390f35b348015610aea575f80fd5b50610b056004803603810190610b009190613c3d565b611b94565b005b348015610b12575f80fd5b50610b2d6004803603810190610b289190613cae565b611bb4565b604051610b3a9190613c95565b60405180910390f35b348015610b4e575f80fd5b50610b696004803603810190610b649190613cae565b611bd1565b604051610b769190613ad4565b60405180910390f35b348015610b8a575f80fd5b50610b93611be2565b604051610ba69796959493929190613f65565b60405180910390f35b348015610bba575f80fd5b50610bc3611c87565b005b348015610bd0575f80fd5b50610bd9611cac565b604051610be69190613d38565b60405180910390f35b348015610bfa575f80fd5b50610c156004803603810190610c109190613fe7565b611cd4565b604051610c229190613c95565b60405180910390f35b348015610c36575f80fd5b50610c3f611cfe565b604051610c4c9190613bc3565b60405180910390f35b348015610c60575f80fd5b50610c7b6004803603810190610c769190613cae565b611d8e565b005b348015610c88575f80fd5b50610ca36004803603810190610c9e9190613c3d565b611e30565b604051610cb09190613c95565b60405180910390f35b348015610cc4575f80fd5b50610ccd611e52565b604051610cda9190613ad4565b60405180910390f35b348015610cee575f80fd5b50610d096004803603810190610d049190613b28565b611e58565b005b348015610d16575f80fd5b50610d1f611eaa565b604051610d2c9190613ad4565b60405180910390f35b348015610d40575f80fd5b50610d5b6004803603810190610d569190613b28565b611eb0565b005b348015610d68575f80fd5b50610d71611f02565b604051610d7e9190613c95565b60405180910390f35b348015610d92575f80fd5b50610dad6004803603810190610da89190613b28565b611f15565b005b348015610dba575f80fd5b50610dc3611fa2565b604051610dd09190613ad4565b60405180910390f35b348015610de4575f80fd5b50610ded611fa8565b604051610dfa9190613ad4565b60405180910390f35b348015610e0e575f80fd5b50610e296004803603810190610e249190613cae565b611fad565b604051610e369190613ad4565b60405180910390f35b348015610e4a575f80fd5b50610e656004803603810190610e60919061414d565b611fc2565b005b348015610e72575f80fd5b50610e8d6004803603810190610e8891906141fb565b612161565b005b348015610e9a575f80fd5b50610eb56004803603810190610eb09190613fe7565b6122a6565b604051610ec29190613ad4565b60405180910390f35b348015610ed6575f80fd5b50610edf612328565b604051610eec91906142f3565b60405180910390f35b348015610f00575f80fd5b50610f0961234d565b604051610f169190613ad4565b60405180910390f35b348015610f2a575f80fd5b50610f456004803603810190610f409190613fe7565b612353565b604051610f529190613ad4565b60405180910390f35b348015610f66575f80fd5b50610f816004803603810190610f7c9190613cae565b6124b4565b005b348015610f8e575f80fd5b50610fa96004803603810190610fa49190613b28565b612a67565b604051610fb69190613d38565b60405180910390f35b348015610fca575f80fd5b50610fe56004803603810190610fe09190613cae565b612a96565b005b348015610ff2575f80fd5b50610ffb612b1a565b6040516110089190613ad4565b60405180910390f35b34801561101c575f80fd5b50611025612b20565b6040516110329190613ad4565b60405180910390f35b348015611046575f80fd5b5061104f612b26565b60405161105c9190613ad4565b60405180910390f35b60165481565b611073612b2c565b60648111156110ae576040517f1c13bf1e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6011549050816011819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a681836040516110ec929190614356565b60405180910390a15050565b606060038054611107906143bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611133906143bd565b801561117e5780601f106111555761010080835404028352916020019161117e565b820191905f5260205f20905b81548152906001019060200180831161116157829003601f168201915b5050505050905090565b5f80611192612bb3565b905061119f818585612bba565b600191505092915050565b600b602052805f5260405f205f915090505481565b60105481565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60155481526020019081526020015f2054601654611222919061441a565b9050919050565b611231612b2c565b600f54600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461127f919061444d565b92505081905550600f54601a5f828254611299919061444d565b925050819055508073ffffffffffffffffffffffffffffffffffffffff167f06367df63e570234ce79a0c801d0b59530683f7a5cd3fdeb840847cc3fcd4a5e600f546040516112e89190613ad4565b60405180910390a250565b6060604051806080016040528060458152602001614d2760459139905090565b5f600254905090565b60155481565b601a5481565b611330612b2c565b5f8103611369576040517fdfe4f80d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6b204fce5e3e250261100000008111156113af576040517fdfe4f80d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f601c54905081601c819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a681836040516113ed9291906144ca565b60405180910390a15050565b600d602052805f5260405f205f915054906101000a900460ff1681565b61141e612b2c565b5f6016549050816016819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a6818360405161145c92919061454e565b60405180910390a15050565b5f80611472612bb3565b905061147f858285612bcc565b61148a858585612c5e565b60019150509392505050565b61dead81565b6114a4612b2c565b5f6010549050816010819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a681836040516114e29291906145d2565b60405180910390a15050565b5f6012905090565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60125482611547919061444d565b905080421061155a575f9250505061156b565b4281611566919061441a565b925050505b919050565b6b204fce5e3e2502611000000081565b5f80670de0b6b3a7640000905080836115999190614639565b836115a4919061441a565b915050919050565b5f6115b5612d4e565b905090565b5f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600f5481565b611617611611612bb3565b82612e04565b50565b601e5f9054906101000a900460ff1681565b60135481565b61163a612b2c565b5f8103611673576040517fbb4a622c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6012549050816012819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a681836040516116b19291906146b3565b60405180910390a15050565b60145481565b6116cb612b2c565b5f8103611704576040517f8eea470600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6b204fce5e3e2502611000000081111561174a576040517f8eea470600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f601d54905081601d819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a68183604051611788929190614737565b60405180910390a15050565b600a602052805f5260405f205f915090505481565b6117b1612b2c565b6117dc60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682611188565b505f805f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430875f8061182a611cac565b426040518863ffffffff1660e01b815260040161184c969594939291906147aa565b60606040518083038185885af1158015611868573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061188d919061481d565b9250925092505f848410156118b55783856118a8919061441a565b90506118b43082612e04565b5b7f59af97c63758a02bfe06cf264fb416eba51db5020c6b61c1604d2fa1afafed61848484846040516118ea949392919061486d565b60405180910390a1823411156119a6575f3373ffffffffffffffffffffffffffffffffffffffff16843461191e919061441a565b60405161192a906148dd565b5f6040518083038185875af1925050503d805f8114611964576040519150601f19603f3d011682016040523d82523d5f602084013e611969565b606091505b50509050806119a4576040517fb12d13eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b5050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6119fa612b2c565b611a035f612e83565b565b6018602052815f5260405f20602052805f5260405f205f91509150505481565b5f611a2e612b2c565b5f601e5f6101000a81548160ff0219169083151502179055506001905090565b5f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ad0576040517f012e875b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f601f5f815480929190611ae3906148f1565b9190505590508460205f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff16817fa85c646249e09c5e8ed4d4e522e63512ec39d946212ff045102d5469193825c48686604051611b81929190614964565b60405180910390a3809150509392505050565b611ba682611ba0612bb3565b83612bcc565b611bb08282612e04565b5050565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f611bdb82612f46565b9050919050565b5f6060805f805f6060611bf3612f8c565b611bfb612fc7565b46305f801b5f67ffffffffffffffff811115611c1a57611c19614029565b5b604051908082528060200260200182016040528015611c485781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b611c8f612b2c565b6001601e60016101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6009602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b606060048054611d0d906143bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611d39906143bd565b8015611d845780601f10611d5b57610100808354040283529160200191611d84565b820191905f5260205f20905b815481529060010190602001808311611d6757829003601f168201915b5050505050905090565b611d96612b2c565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fed9c8ad8d5a0a66898ea49d2956929c93ae2e8bd50281b2ed897c5d1a6737e0b60405160405180910390a250565b5f80611e3a612bb3565b9050611e47818585612c5e565b600191505092915050565b60115481565b611e60612b2c565b5f600f54905081600f819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a68183604051611e9e9291906149d0565b60405180910390a15050565b601b5481565b611eb8612b2c565b5f6014549050816014819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a68183604051611ef6929190614a54565b60405180910390a15050565b601e60019054906101000a900460ff1681565b611f1d612b2c565b600a811115611f58576040517f6dcfdacf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6013549050816013819055507f4cf452eb0a967c3e91bdb701b2c668b1122e847f9285161b9c59055727d8d4a68183604051611f96929190614ad8565b60405180910390a15050565b601c5481565b600a81565b600c602052805f5260405f205f915090505481565b611fca612b2c565b600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561204b576040517f012e875b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600f54600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120ee919061444d565b92505081905550600f54601a5f828254612108919061444d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167ff60b30bb85d0d906987b048f00e2b64312a61a532caa769536086b50396f845a826040516121559190613bc3565b60405180910390a25050565b834211156121a657836040517f6279130200000000000000000000000000000000000000000000000000000000815260040161219d9190613ad4565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886121d48c613002565b896040516020016121ea96959493929190614b12565b6040516020818303038152906040528051906020012090505f61220c82613055565b90505f61221b8287878761306e565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461228f57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401612286929190614b71565b60405180910390fd5b61229a8a8a8a612bba565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f5481565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166124aa575f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036124335761242c601054611580565b90506124ae565b5f60646011546064612445919061441a565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461248d9190614b98565b6124979190614bd9565b90506124a281611580565b9150506124ae565b5f90505b92915050565b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612534576040517f0d9ab13f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60175442111561256a5760155f815480929190612550906148f1565b919050555060145442612563919061444d565b6017819055505b5f612574336114f6565b90505f8111156125b0576040517f7c17012300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff163103612600576040517fb6d6e7d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61260b3384612353565b90505f8103612646576040517f35a63fc900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156126bd576040517fc41fd67e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6016548160185f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60155481526020019081526020015f205461271a919061444d565b1115612752576040517f7ac3197400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061275c306119ad565b1015612794576040517f95700fd900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6127b76064601354846127a89190614b98565b6127b29190614bd9565b611580565b90508160185f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f60155481526020019081526020015f205f828254612816919061444d565b9250508190555081600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612869919061441a565b92505081905550808261287c919061444d565b601b5f82825461288c919061444d565b92505081905550600160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555081600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555042600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506129b230858461309c565b6129bd30338361309c565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc39204188c4d93b8e9c3798a6056c671f4400922af4cb3ca9e4f7d5f4deb07c384600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051612a59929190614c09565b60405180910390a350505050565b60208052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a9e612b2c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b0e575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612b059190613d38565b60405180910390fd5b612b1781612e83565b50565b60175481565b601d5481565b60125481565b612b34612bb3565b73ffffffffffffffffffffffffffffffffffffffff16612b52611cac565b73ffffffffffffffffffffffffffffffffffffffff1614612bb157612b75612bb3565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612ba89190613d38565b60405180910390fd5b565b5f33905090565b612bc78383836001613249565b505050565b5f612bd784846122a6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c585781811015612c49578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401612c4093929190614c30565b60405180910390fd5b612c5784848484035f613249565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cce575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401612cc59190613d38565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d3e575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401612d359190613d38565b60405180910390fd5b612d4983838361309c565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015612dc957507f000000000000000000000000000000000000000000000000000000000000000046145b15612df6577f00000000000000000000000000000000000000000000000000000000000000009050612e01565b612dfe613418565b90505b90565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e74575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401612e6b9190613d38565b60405180910390fd5b612e7f825f8361309c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060612fc260067f00000000000000000000000000000000000000000000000000000000000000006134ad90919063ffffffff16565b905090565b6060612ffd60077f00000000000000000000000000000000000000000000000000000000000000006134ad90919063ffffffff16565b905090565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f613067613061612d4e565b8361355a565b9050919050565b5f805f8061307e8888888861359a565b92509250925061308e8282613681565b829350505050949350505050565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806131375750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561314c576131478383836137e3565b613244565b601e5f9054906101000a900460ff16156131ec57601c5481111561319c576040517fffe0de0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d54816131a9846119ad565b6131b3919061444d565b11156131eb576040517f5acd1a2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b601e60019054906101000a900460ff16156132115761320c8383836137e3565b613243565b6040517fa491421c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036132b9575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016132b09190613d38565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613329575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016133209190613d38565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015613412578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516134099190613ad4565b60405180910390a35b50505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001613492959493929190614c65565b60405160208183030381529060405280519060200120905090565b606060ff5f1b83146134c9576134c2836139fc565b9050613554565b8180546134d5906143bd565b80601f0160208091040260200160405190810160405280929190818152602001828054613501906143bd565b801561354c5780601f106135235761010080835404028352916020019161354c565b820191905f5260205f20905b81548152906001019060200180831161352f57829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156135d6575f600385925092509250613677565b5f6001888888886040515f81526020016040526040516135f99493929190614cb6565b6020604051602081039080840390855afa158015613619573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361366a575f60015f801b93509350935050613677565b805f805f1b935093509350505b9450945094915050565b5f600381111561369457613693614cf9565b5b8260038111156136a7576136a6614cf9565b5b03156137df57600160038111156136c1576136c0614cf9565b5b8260038111156136d4576136d3614cf9565b5b0361370b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561371f5761371e614cf9565b5b82600381111561373257613731614cf9565b5b0361377657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161376d9190613ad4565b60405180910390fd5b60038081111561378957613788614cf9565b5b82600381111561379c5761379b614cf9565b5b036137de57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016137d59190613d9d565b60405180910390fd5b5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613833578060025f828254613827919061444d565b92505081905550613901565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156138bc578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016138b393929190614c30565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613948578060025f8282540392505081905550613992565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139ef9190613ad4565b60405180910390a3505050565b60605f613a0883613a6e565b90505f602067ffffffffffffffff811115613a2657613a25614029565b5b6040519080825280601f01601f191660200182016040528015613a585781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115613ab3576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f819050919050565b613ace81613abc565b82525050565b5f602082019050613ae75f830184613ac5565b92915050565b5f604051905090565b5f80fd5b5f80fd5b613b0781613abc565b8114613b11575f80fd5b50565b5f81359050613b2281613afe565b92915050565b5f60208284031215613b3d57613b3c613af6565b5b5f613b4a84828501613b14565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613b9582613b53565b613b9f8185613b5d565b9350613baf818560208601613b6d565b613bb881613b7b565b840191505092915050565b5f6020820190508181035f830152613bdb8184613b8b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613c0c82613be3565b9050919050565b613c1c81613c02565b8114613c26575f80fd5b50565b5f81359050613c3781613c13565b92915050565b5f8060408385031215613c5357613c52613af6565b5b5f613c6085828601613c29565b9250506020613c7185828601613b14565b9150509250929050565b5f8115159050919050565b613c8f81613c7b565b82525050565b5f602082019050613ca85f830184613c86565b92915050565b5f60208284031215613cc357613cc2613af6565b5b5f613cd084828501613c29565b91505092915050565b5f805f60608486031215613cf057613cef613af6565b5b5f613cfd86828701613c29565b9350506020613d0e86828701613c29565b9250506040613d1f86828701613b14565b9150509250925092565b613d3281613c02565b82525050565b5f602082019050613d4b5f830184613d29565b92915050565b5f60ff82169050919050565b613d6681613d51565b82525050565b5f602082019050613d7f5f830184613d5d565b92915050565b5f819050919050565b613d9781613d85565b82525050565b5f602082019050613db05f830184613d8e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613dd757613dd6613db6565b5b8235905067ffffffffffffffff811115613df457613df3613dba565b5b602083019150836001820283011115613e1057613e0f613dbe565b5b9250929050565b5f805f60408486031215613e2e57613e2d613af6565b5b5f613e3b86828701613c29565b935050602084013567ffffffffffffffff811115613e5c57613e5b613afa565b5b613e6886828701613dc2565b92509250509250925092565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b613ea881613e74565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ee081613abc565b82525050565b5f613ef18383613ed7565b60208301905092915050565b5f602082019050919050565b5f613f1382613eae565b613f1d8185613eb8565b9350613f2883613ec8565b805f5b83811015613f58578151613f3f8882613ee6565b9750613f4a83613efd565b925050600181019050613f2b565b5085935050505092915050565b5f60e082019050613f785f83018a613e9f565b8181036020830152613f8a8189613b8b565b90508181036040830152613f9e8188613b8b565b9050613fad6060830187613ac5565b613fba6080830186613d29565b613fc760a0830185613d8e565b81810360c0830152613fd98184613f09565b905098975050505050505050565b5f8060408385031215613ffd57613ffc613af6565b5b5f61400a85828601613c29565b925050602061401b85828601613c29565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61405f82613b7b565b810181811067ffffffffffffffff8211171561407e5761407d614029565b5b80604052505050565b5f614090613aed565b905061409c8282614056565b919050565b5f67ffffffffffffffff8211156140bb576140ba614029565b5b6140c482613b7b565b9050602081019050919050565b828183375f83830152505050565b5f6140f16140ec846140a1565b614087565b90508281526020810184848401111561410d5761410c614025565b5b6141188482856140d1565b509392505050565b5f82601f83011261413457614133613db6565b5b81356141448482602086016140df565b91505092915050565b5f806040838503121561416357614162613af6565b5b5f61417085828601613c29565b925050602083013567ffffffffffffffff81111561419157614190613afa565b5b61419d85828601614120565b9150509250929050565b6141b081613d51565b81146141ba575f80fd5b50565b5f813590506141cb816141a7565b92915050565b6141da81613d85565b81146141e4575f80fd5b50565b5f813590506141f5816141d1565b92915050565b5f805f805f805f60e0888a03121561421657614215613af6565b5b5f6142238a828b01613c29565b97505060206142348a828b01613c29565b96505060406142458a828b01613b14565b95505060606142568a828b01613b14565b94505060806142678a828b016141bd565b93505060a06142788a828b016141e7565b92505060c06142898a828b016141e7565b91505092959891949750929550565b5f819050919050565b5f6142bb6142b66142b184613be3565b614298565b613be3565b9050919050565b5f6142cc826142a1565b9050919050565b5f6142dd826142c2565b9050919050565b6142ed816142d3565b82525050565b5f6020820190506143065f8301846142e4565b92915050565b7f64656361795261746500000000000000000000000000000000000000000000005f82015250565b5f614340600983613b5d565b915061434b8261430c565b602082019050919050565b5f6060820190508181035f83015261436d81614334565b905061437c6020830185613ac5565b6143896040830184613ac5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806143d457607f821691505b6020821081036143e7576143e6614390565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61442482613abc565b915061442f83613abc565b9250828203905081811115614447576144466143ed565b5b92915050565b5f61445782613abc565b915061446283613abc565b925082820190508082111561447a576144796143ed565b5b92915050565b7f6d61785472616e73616374696f6e416d6f756e740000000000000000000000005f82015250565b5f6144b4601483613b5d565b91506144bf82614480565b602082019050919050565b5f6060820190508181035f8301526144e1816144a8565b90506144f06020830185613ac5565b6144fd6040830184613ac5565b9392505050565b7f77696e646f77546f6b656e4c696d6974000000000000000000000000000000005f82015250565b5f614538601083613b5d565b915061454382614504565b602082019050919050565b5f6060820190508181035f8301526145658161452c565b90506145746020830185613ac5565b6145816040830184613ac5565b9392505050565b7f64656661756c744669727374436c61696d0000000000000000000000000000005f82015250565b5f6145bc601183613b5d565b91506145c782614588565b602082019050919050565b5f6060820190508181035f8301526145e9816145b0565b90506145f86020830185613ac5565b6146056040830184613ac5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61464382613abc565b915061464e83613abc565b92508261465e5761465d61460c565b5b828206905092915050565b7f636c61696d436f6f6c646f776e000000000000000000000000000000000000005f82015250565b5f61469d600d83613b5d565b91506146a882614669565b602082019050919050565b5f6060820190508181035f8301526146ca81614691565b90506146d96020830185613ac5565b6146e66040830184613ac5565b9392505050565b7f6d617857616c6c657400000000000000000000000000000000000000000000005f82015250565b5f614721600983613b5d565b915061472c826146ed565b602082019050919050565b5f6060820190508181035f83015261474e81614715565b905061475d6020830185613ac5565b61476a6040830184613ac5565b9392505050565b5f819050919050565b5f61479461478f61478a84614771565b614298565b613abc565b9050919050565b6147a48161477a565b82525050565b5f60c0820190506147bd5f830189613d29565b6147ca6020830188613ac5565b6147d7604083018761479b565b6147e4606083018661479b565b6147f16080830185613d29565b6147fe60a0830184613ac5565b979650505050505050565b5f8151905061481781613afe565b92915050565b5f805f6060848603121561483457614833613af6565b5b5f61484186828701614809565b935050602061485286828701614809565b925050604061486386828701614809565b9150509250925092565b5f6080820190506148805f830187613ac5565b61488d6020830186613ac5565b61489a6040830185613ac5565b6148a76060830184613ac5565b95945050505050565b5f81905092915050565b50565b5f6148c85f836148b0565b91506148d3826148ba565b5f82019050919050565b5f6148e7826148bd565b9150819050919050565b5f6148fb82613abc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361492d5761492c6143ed565b5b600182019050919050565b5f6149438385613b5d565b93506149508385846140d1565b61495983613b7b565b840190509392505050565b5f6020820190508181035f83015261497d818486614938565b90509392505050565b7f6167656e7444656661756c74416c6c6f746d656e7400000000000000000000005f82015250565b5f6149ba601583613b5d565b91506149c582614986565b602082019050919050565b5f6060820190508181035f8301526149e7816149ae565b90506149f66020830185613ac5565b614a036040830184613ac5565b9392505050565b7f77696e646f774475726174696f6e0000000000000000000000000000000000005f82015250565b5f614a3e600e83613b5d565b9150614a4982614a0a565b602082019050919050565b5f6060820190508181035f830152614a6b81614a32565b9050614a7a6020830185613ac5565b614a876040830184613ac5565b9392505050565b7f6167656e74436f6d6d697373696f6e42707300000000000000000000000000005f82015250565b5f614ac2601283613b5d565b9150614acd82614a8e565b602082019050919050565b5f6060820190508181035f830152614aef81614ab6565b9050614afe6020830185613ac5565b614b0b6040830184613ac5565b9392505050565b5f60c082019050614b255f830189613d8e565b614b326020830188613d29565b614b3f6040830187613d29565b614b4c6060830186613ac5565b614b596080830185613ac5565b614b6660a0830184613ac5565b979650505050505050565b5f604082019050614b845f830185613d29565b614b916020830184613d29565b9392505050565b5f614ba282613abc565b9150614bad83613abc565b9250828202614bbb81613abc565b91508282048414831517614bd257614bd16143ed565b5b5092915050565b5f614be382613abc565b9150614bee83613abc565b925082614bfe57614bfd61460c565b5b828204905092915050565b5f604082019050614c1c5f830185613ac5565b614c296020830184613ac5565b9392505050565b5f606082019050614c435f830186613d29565b614c506020830185613ac5565b614c5d6040830184613ac5565b949350505050565b5f60a082019050614c785f830188613d8e565b614c856020830187613d8e565b614c926040830186613d8e565b614c9f6060830185613ac5565b614cac6080830184613d29565b9695505050505050565b5f608082019050614cc95f830187613d8e565b614cd66020830186613d5d565b614ce36040830185613d8e565b614cf06060830184613d8e565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfe5468697320636f6e74726163742069732061206a6f6b6520616e6420756e617564697465642e20506172746963697061746520617420796f7572206f776e207269736b2e20a2646970667358221220d3a03f225a01ce244855dd2f69406f9ea7aba16fc5f2cc82412892eca1a435fc64736f6c634300081a0033000000000000000000000000cf77a3ba9a5ca399b7c97c74d54e5b1beb874e43