[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "DNAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "FnSelectorNotRecognized", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "LinkMirrorContractFailed", "type": "error" }, { "inputs": [], "name": "MirrorAddressIsZero", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "SenderNotMirror", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "UnitIsZero", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buy", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sell", "type": "uint256" } ], "name": "LiquidityFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "NewLiquidityPairUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "SkipNFTSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buy", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sell", "type": "uint256" } ], "name": "StakingRewardFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SwapingThresholdUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "buy", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sell", "type": "uint256" } ], "name": "TeamFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "wallet", "type": "address" } ], "name": "TeamWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenPerTxnLimitUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenPerWalletLimitUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "wallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "WalletExemptFromFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "wallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "WalletExemptFromHoldingLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "wallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "WalletExemptFromTxnLimit", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "Staking", "outputs": [ { "internalType": "contract IStaking", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "burnFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "dataURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "exemptWalletFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "getSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isLiquidityPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isWalletTaxFree", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "liquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mirrorERC721", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "recueErc20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_dataURI", "type": "string" } ], "name": "setDataURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "setLubricating", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "skipNFT", "type": "bool" } ], "name": "setSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_tokenURI", "type": "string" } ], "name": "setTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "stakingRewardFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "teamFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "teamWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "name": "updateBurnFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "name": "updateLiquidityFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "updateLiquidityPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IStaking", "name": "contractAddress", "type": "address" } ], "name": "updateStakingContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "name": "updateStakingRewardFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "updateSwapingThreshold", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "name": "updateTeamFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "updateTeamWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
600380546001600160a01b03199081167360ae616a2155ee3d9a68541ba4544862310933d4179091556004805490911661dead179055670de0b6b3a764000060065560e0604052603d6080818152906200644960a039601190620000649082620007dc565b506012805460ff191660011790553480156200007f57600080fd5b506200008b336200042f565b60408051808201909152600c81526b086dee24092dc40c24084def60a31b6020820152600090620000bd9082620007dc565b506040805180820190915260068152650869ea2849eb60d31b6020820152600190620000ea9082620007dc565b50600033604051620000fc9062000729565b6001600160a01b039091168152602001604051809103906000f08015801562000129573d6000803e3d6000fd5b5090506200014369021e19e0c9bab240000033836200046b565b6003546040805163c45a015560e01b815290516000926001600160a01b03169163c45a01559160048083019260209291908290030181865afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b49190620008a8565b6001600160a01b031663c9c6539630600360009054906101000a90046001600160a01b03166001600160a01b03166373b295c26040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023d9190620008a8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b19190620008a8565b9050620002c08160016200062d565b6001600160a01b039081166000908152600f602090815260408083208054600160ff199182168117909255308552600e90935281842080548416821790553380855282852080548516831790559590941683528220805490911683179055600580546001600160a01b03191690931790925560078054808301825560647fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688918201819055825480850190935591018190556008805480840182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee39081018390558154808501909255018190556009805480840182557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af90810183905581548085019092550155600a80548083018255928190526101f47fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a89384018190558154928301909155910155620008da565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b68a20d6e21d0e52553088054640100000000900463ffffffff1615620004a457604051633ab534b960e21b815260040160405180910390fd5b6001600160a01b038216620004cc576040516339a84a7b60e01b815260040160405180910390fd5b630f4599e560005233602052602060006024601c6000865af160016000511416620004ff5763d125259c6000526004601cfd5b805463ffffffff60201b19166401000000001781556001810180546001600160a01b0384166001600160a01b0319909116179055831562000627576001600160a01b0383166200056257604051633a954ecd60e21b815260040160405180910390fd5b6001600160601b03841163fffffffe670de0b6b3a764000086041117156200059d5760405163e5cfe95760e01b815260040160405180910390fd5b80546001600160a01b0316600160a01b6001600160601b038616021781556000620005c884620006be565b80546001600160601b038716600160a01b026001600160a01b0391821617825560008781529192508516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a3620006258460016200062d565b505b50505050565b60006200063a83620006be565b80549091506b01000000000000000000000090046002161515821515146200068657805460ff6b01000000000000000000000080830482166002189091160260ff60581b199091161781555b8115156000528260601b60601c7fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360206000a2505050565b6001600160a01b038116600090815268a20d6e21d0e525531360205260408120805490916b01000000000000000000000090910460011690036200072457805460ff60581b19166b01000000000000000000000060ff843b151560020260011716021781555b919050565b610def806200565a83390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200076257607f821691505b6020821081036200078357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007d757600081815260208120601f850160051c81016020861015620007b25750805b601f850160051c820191505b81811015620007d357828155600101620007be565b5050505b505050565b81516001600160401b03811115620007f857620007f862000737565b62000810816200080984546200074d565b8462000789565b602080601f8311600181146200084857600084156200082f5750858301515b600019600386901b1c1916600185901b178555620007d3565b600085815260208120601f198616915b82811015620008795788860151825594840194600190910190840162000858565b5085821015620008985787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008bb57600080fd5b81516001600160a01b0381168114620008d357600080fd5b9392505050565b614d7080620008ea6000396000f3fe6080604052600436106103015760003560e01c80635c9a05b81161018f578063a046bc78116100e1578063e0df5b6f1161008a578063f2fde38b11610064578063f2fde38b14610cb7578063f57df22e14610cca578063fee81cf414610cef57610308565b8063e0df5b6f14610c6f578063f04e283e14610c8f578063f28ca1dd14610ca257610308565b8063c87b56dd116100bb578063c87b56dd14610bfb578063d547cfb714610c1b578063dd62ed3e14610c3057610308565b8063a046bc7814610b9b578063a9059cbb14610bbb578063c06d711d14610bdb57610308565b8063803cdf081161014357806395d89b411161011d57806395d89b4114610b46578063980adf9114610b5b5780639f26361e14610b7b57610308565b8063803cdf0814610aed5780638173615114610b0d5780638da5cb5b14610b2d57610308565b806370a082311161017457806370a0823114610a72578063715018a614610ac55780637cb332bb14610acd57610308565b80635c9a05b814610a225780635f1ec95b14610a5257610308565b80633ccfd60b1161025357806350d37cdd116101fc57806354d1f13d116101d657806354d1f13d146109da57806355f804b3146109e25780635992704414610a0257610308565b806350d37cdd1461096a578063510dd5fd1461098a57806352cd410a146109aa57610308565b80634ef41efc1161022d5780634ef41efc146108f05780634f6eec5e1461092a578063502346d41461094a57610308565b80633ccfd60b1461089b57806349ae028a146108b05780634bc3e7db146108d057610308565b806323b872dd116102b55780632a6a935d1161028f5780632a6a935d1461083f578063313ce5671461085f5780633347e4d61461087b57610308565b806323b872dd146107f75780632569296214610817578063274e430b1461081f57610308565b8063095ea7b3116102e6578063095ea7b31461077357806318160ddd146107a357806318d217c3146107d557610308565b80630445b6671461072857806306fdde031461075157610308565b3661030857005b68a20d6e21d0e525530860003560e01c63e5eb36c88190036103865760018201546001600160a01b031633146103515760405163ce5a776b60e01b815260040160405180910390fd5b608436101561035f57600080fd5b60043560243560443560643561037784848484610d22565b610381600161117c565b505050505b8063813500fc036104085760018201546001600160a01b031633146103be5760405163ce5a776b60e01b815260040160405180910390fd5b60643610156103cc57600080fd5b6004356028818152604435601481905268a20d6e21d0e525530b6000908152604881209252602435151591829055610404600161117c565b5050505b8063e985e9c50361047e5760018201546001600160a01b031633146104405760405163ce5a776b60e01b815260040160405180910390fd5b604436101561044e57600080fd5b60243560288181526004356014819052600385016000908152604881209252905490919061047b9061117c565b50505b80636352211e036104e35760018201546001600160a01b031633146104b65760405163ce5a776b60e01b815260040160405180910390fd5b60243610156104c457600080fd5b6004356104e16104d382611186565b6001600160a01b031661117c565b505b8063243598790361053a5760018201546001600160a01b0316331461051b5760405163ce5a776b60e01b815260040160405180910390fd5b602436101561052957600080fd5b6004356105386104d3826111bd565b505b8063d10b6e0c0361059b5760018201546001600160a01b031633146105725760405163ce5a776b60e01b815260040160405180910390fd5b606436101561058057600080fd5b6004356024356044356105976104d384848461121a565b5050505b8063081812fc036105f25760018201546001600160a01b031633146105d35760405163ce5a776b60e01b815260040160405180910390fd5b60243610156105e157600080fd5b6004356105f06104d38261132b565b505b8063f5b100ea0361067a5760018201546001600160a01b0316331461062a5760405163ce5a776b60e01b815260040160405180910390fd5b602436101561063857600080fd5b600435610678610673826001600160a01b0316600090815268a20d6e21d0e5255313602052604090205463ffffffff600160801b9091041690565b61117c565b505b8063e2c79281036106e15760018201546001600160a01b031633146106b25760405163ce5a776b60e01b815260040160405180910390fd5b60043610156106c057600080fd5b68a20d6e21d0e5255308546106e190600160801b900463ffffffff1661117c565b8063b7a94eb8036106f6576106f6600161117c565b6040517f3c10b94e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561073457600080fd5b5061073e60065481565b6040519081526020015b60405180910390f35b34801561075d57600080fd5b50610766611377565b60405161074891906143f9565b34801561077f57600080fd5b5061079361078e366004614421565b611409565b6040519015158152602001610748565b3480156107af57600080fd5b5068a20d6e21d0e525530854600160a01b90046bffffffffffffffffffffffff1661073e565b3480156107e157600080fd5b506107f56107f0366004614463565b61141f565b005b34801561080357600080fd5b50610793610812366004614514565b611437565b6107f561152c565b34801561082b57600080fd5b5061079361083a366004614555565b61157c565b34801561084b57600080fd5b5061079361085a366004614580565b6115cb565b34801561086b57600080fd5b5060405160128152602001610748565b34801561088757600080fd5b506107f5610896366004614555565b6115df565b3480156108a757600080fd5b506107f56116eb565b3480156108bc57600080fd5b5061073e6108cb36600461459d565b611733565b3480156108dc57600080fd5b506107f56108eb366004614580565b611754565b3480156108fc57600080fd5b5068a20d6e21d0e5255309546001600160a01b03165b6040516001600160a01b039091168152602001610748565b34801561093657600080fd5b506107f56109453660046145b6565b61176f565b34801561095657600080fd5b506107f56109653660046145ef565b6118b5565b34801561097657600080fd5b506107f56109853660046145b6565b611ad7565b34801561099657600080fd5b506107f56109a53660046145ef565b611c16565b3480156109b657600080fd5b506107936109c5366004614555565b600e6020526000908152604090205460ff1681565b6107f5611df0565b3480156109ee57600080fd5b506107f56109fd366004614611565b611e2c565b348015610a0e57600080fd5b50600554610912906001600160a01b031681565b348015610a2e57600080fd5b50610793610a3d366004614555565b600f6020526000908152604090205460ff1681565b348015610a5e57600080fd5b506107f5610a6d3660046145ef565b611e46565b348015610a7e57600080fd5b5061073e610a8d366004614555565b6001600160a01b0316600090815268a20d6e21d0e52553136020526040902054600160a01b90046bffffffffffffffffffffffff1690565b6107f5612068565b348015610ad957600080fd5b506107f5610ae8366004614555565b61207c565b348015610af957600080fd5b506107f5610b083660046145ef565b61211e565b348015610b1957600080fd5b5061073e610b2836600461459d565b612340565b348015610b3957600080fd5b50638b78c6d81954610912565b348015610b5257600080fd5b50610766612350565b348015610b6757600080fd5b506107f5610b76366004614555565b61235f565b348015610b8757600080fd5b506107f5610b9636600461459d565b612509565b348015610ba757600080fd5b5061073e610bb636600461459d565b612659565b348015610bc757600080fd5b50610793610bd6366004614421565b612669565b348015610be757600080fd5b5061073e610bf636600461459d565b612676565b348015610c0757600080fd5b50610766610c1636600461459d565b612686565b348015610c2757600080fd5b50610766612c4d565b348015610c3c57600080fd5b5061073e610c4b366004614683565b602890815260149190915268a20d6e21d0e525530f60009081526048812091525490565b348015610c7b57600080fd5b506107f5610c8a366004614463565b612cdb565b6107f5610c9d366004614555565b612cef565b348015610cae57600080fd5b50610766612d2c565b6107f5610cc5366004614555565b612d39565b348015610cd657600080fd5b50600d546109129061010090046001600160a01b031681565b348015610cfb57600080fd5b5061073e610d0a366004614555565b63389a75e1600c908152600091909152602090205490565b68a20d6e21d0e52553086001600160a01b038416610d5357604051633a954ecd60e21b815260040160405180910390fd5b600a8101600282016000610d9d83610d79640100000000891089025b6000190160011b90565b60008160031c8360601b0180546007841660051b1c63ffffffff1691505092915050565b63ffffffff1681526020810191909152604001600020546001600160a01b03878116911614610df8576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856001600160a01b0316836001600160a01b031614610e87576028838152601487905260038301600090815260488120915254600003610e875760008481526004830160205260409020546001600160a01b03848116911614610e87576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e9287612d60565b90506000610e9f87612d60565b8254909150670de0b6b3a764000090600160a01b90046bffffffffffffffffffffffff1680821115610ee457604051631e9acf1760e31b815260040160405180910390fd5b83546bffffffffffffffffffffffff918390038216600160a01b9081026001600160a01b0392831617865584548181048416850190931602918116919091178355891660009081526008860160208190526040909120610f5b600588018a60609190911b600882901c0154600160ff9092161c1690565b15610f99576005870160601b60088a901c018054600160ff8c161b191690556000898152600488016020526040902080546001600160a01b03191690555b845463ffffffff60801b198116600160801b9182900463ffffffff90811660001901808216909302919091178755606083901b631fffffff600384901c16015460009260e060059190911b161c1690506000610fff886000198d01600190811b01610d79565b606084901b631fffffff600383901c1601805460e0600584901b1681811c861863ffffffff16901b189055905061106f8860001963ffffffff851601600190811b01838160031c8360601b016007831660051b815463ffffffff8482841c188116831b8218845550505050505050565b5050835463ffffffff60801b198116600160801b9182900463ffffffff8181166001810182169094029290921787556001600160a01b038d16600090815260208690526040902060601b631fffffff600383901c1601805460e060059390931b9290921682811c8e1890931690921b189055611136878b6110f0888f612dc8565b84600183038060021c8560601b016003821660061b9150805467ffffffffffffffff8563ffffffff168560201b178083861c188216851b83188455505050505050505050565b505050806000528760601b60601c8960601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000a3505050505050505050565b8060005260206000f35b600061119182612e64565b6111ae5760405163677510db60e11b815260040160405180910390fd5b6111b7826111bd565b92915050565b600068a20d6e21d0e525530868a20d6e21d0e525530a826111f368a20d6e21d0e5255312610d7964010000000088108802610d6f565b63ffffffff1681526020810191909152604001600020546001600160a01b03169392505050565b600068a20d6e21d0e525530868a20d6e21d0e525530a8261125068a20d6e21d0e5255312610d7964010000000089108902610d6f565b63ffffffff1681526020810191909152604001600020546001600160a01b039081169250831682146112cf5760288381526014839052600382016000908152604881209152546000036112cf576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600482016020526040902080546001600160a01b0319166001600160a01b0387169081179091556005820160601b600886901c018054600160ff881690811b1991909116921515901b919091179055509392505050565b600061133682612e64565b6113535760405163677510db60e11b815260040160405180910390fd5b50600090815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b606060008054611386906146b1565b80601f01602080910402602001604051908101604052809291908181526020018280546113b2906146b1565b80156113ff5780601f106113d4576101008083540402835291602001916113ff565b820191906000526020600020905b8154815290600101906020018083116113e257829003601f168201915b5050505050905090565b6000611416338484612e81565b50600192915050565b611427612ee3565b60116114338282614731565b5050565b336028908152601484905268a20d6e21d0e525530f6000908152604881209181905290611468816000015433612efe565b80546000198114611515576114b26040518060400160405280600b81526020017f616c6c6f7765643a20257300000000000000000000000000000000000000000081525082612f66565b8084111561150f576114dd604051806060016040528060268152602001614d15602691398787612fc4565b6040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83810382555b611520868686613024565b50600195945050505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6001600160a01b038116600090815268a20d6e21d0e5255313602052604081208054600160581b900460011682036115b857823b5b9392505050565b54600160581b9004600216151592915050565b60006115d733836135a0565b506001919050565b6115e7612ee3565b6001600160a01b0381166116315760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b60448201526064015b60405180910390fd5b600d5461010090046001600160a01b03161561168f5760405162461bcd60e51b815260206004820152601c60248201527f5374616b696e6720636f6e747261637420616c726561647920736574000000006044820152606401611628565b600d80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03938416810291909117918290559004166000908152600e60205260409020805460ff19166001179055565b6116f3612ee3565b638b78c6d819546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611730573d6000803e3d6000fd5b50565b6008818154811061174357600080fd5b600091825260209091200154905081565b61175c612ee3565b6012805460ff1916911515919091179055565b611777612ee3565b6001600160a01b0382166117bc5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401611628565b6001600160a01b0382166000908152600f602052604090205481151560ff9091161515036118515760405162461bcd60e51b8152602060048201526024808201527f5061697220697320616c7265616479207468652076616c7565206f662027766160448201527f6c756527000000000000000000000000000000000000000000000000000000006064820152608401611628565b6001600160a01b0382166000818152600f6020908152604091829020805460ff19168515159081179091558251938452908301527f036ec357b1589d19ef97b24895409d8bddd5c552c1b6601089052d12fd80901991015b60405180910390a15050565b6118bd612ee3565b6107d08260086000815481106118d5576118d56147f1565b906000526020600020015460076000815481106118f4576118f46147f1565b9060005260206000200154600a600081548110611913576119136147f1565b9060005260206000200154611928919061481d565b611932919061481d565b61193c919061481d565b111561198a5760405162461bcd60e51b815260206004820152601f60248201527f4d617820666565206c696d6974207265616368656420666f72202742555927006044820152606401611628565b6107d08160086001815481106119a2576119a26147f1565b906000526020600020015460076001815481106119c1576119c16147f1565b9060005260206000200154600a6001815481106119e0576119e06147f1565b90600052602060002001546119f5919061481d565b6119ff919061481d565b611a09919061481d565b1115611a575760405162461bcd60e51b815260206004820181905260248201527f4d617820666565206c696d6974207265616368656420666f72202753454c4c276044820152606401611628565b816009600081548110611a6c57611a6c6147f1565b9060005260206000200181905550806009600181548110611a8f57611a8f6147f1565b90600052602060002001819055507f4480843909506156f0adaf013e457948680d6351f8eea08681f8aa0c76e2666d82826040516118a9929190918252602082015260400190565b611adf612ee3565b6001600160a01b038216611b245760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401611628565b6001600160a01b0382166000908152600e602052604090205481151560ff909116151503611bba5760405162461bcd60e51b815260206004820152602760248201527f57616c6c657420697320616c7265616479207468652076616c7565206f66202760448201527f73746174757327000000000000000000000000000000000000000000000000006064820152608401611628565b6001600160a01b0382166000818152600e6020908152604091829020805460ff19168515159081179091558251938452908301527f437c058b19f0e29bbd65e1b03d0c97fac5d0adef2e4c7cbd74a3a99ab950839691016118a9565b611c1e612ee3565b6107d0826009600081548110611c3657611c366147f1565b90600052602060002001546007600081548110611c5557611c556147f1565b9060005260206000200154600a600081548110611c7457611c746147f1565b9060005260206000200154611c89919061481d565b611c93919061481d565b611c9d919061481d565b1115611ceb5760405162461bcd60e51b815260206004820152601f60248201527f4d617820666565206c696d6974207265616368656420666f72202742555927006044820152606401611628565b6107d0816009600181548110611d0357611d036147f1565b90600052602060002001546007600181548110611d2257611d226147f1565b9060005260206000200154600a600181548110611d4157611d416147f1565b9060005260206000200154611d56919061481d565b611d60919061481d565b611d6a919061481d565b1115611db85760405162461bcd60e51b815260206004820181905260248201527f4d617820666565206c696d6974207265616368656420666f72202753454c4c276044820152606401611628565b816008600081548110611dcd57611dcd6147f1565b9060005260206000200181905550806008600181548110611a8f57611a8f6147f1565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b611e34612ee3565b6002611e41828483614830565b505050565b611e4e612ee3565b6107d0826008600081548110611e6657611e666147f1565b90600052602060002001546007600081548110611e8557611e856147f1565b90600052602060002001546009600081548110611ea457611ea46147f1565b9060005260206000200154611eb9919061481d565b611ec3919061481d565b611ecd919061481d565b1115611f1b5760405162461bcd60e51b815260206004820152601f60248201527f4d617820666565206c696d6974207265616368656420666f72202742555927006044820152606401611628565b6107d0816008600181548110611f3357611f336147f1565b90600052602060002001546007600181548110611f5257611f526147f1565b90600052602060002001546009600181548110611f7157611f716147f1565b9060005260206000200154611f86919061481d565b611f90919061481d565b611f9a919061481d565b1115611fe85760405162461bcd60e51b815260206004820181905260248201527f4d617820666565206c696d6974207265616368656420666f72202753454c4c276044820152606401611628565b81600a600081548110611ffd57611ffd6147f1565b906000526020600020018190555080600a600181548110612020576120206147f1565b90600052602060002001819055507f2306096ba030dbf86a4efc4b7db7ef3b0df8e431089cf4db2a6031a5f22e4c9782826040516118a9929190918252602082015260400190565b612070612ee3565b61207a6000613626565b565b612084612ee3565b6001600160a01b0381166120c95760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401611628565b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527ff6215f245bfd24e51265c56ef650fdd856aa4ece6221ee1ef395bbe0a5558010906020015b60405180910390a150565b612126612ee3565b6107d082600860008154811061213e5761213e6147f1565b9060005260206000200154600a60008154811061215d5761215d6147f1565b9060005260206000200154600960008154811061217c5761217c6147f1565b9060005260206000200154612191919061481d565b61219b919061481d565b6121a5919061481d565b11156121f35760405162461bcd60e51b815260206004820152601f60248201527f4d617820666565206c696d6974207265616368656420666f72202742555927006044820152606401611628565b6107d081600860018154811061220b5761220b6147f1565b9060005260206000200154600a60018154811061222a5761222a6147f1565b90600052602060002001546009600181548110612249576122496147f1565b906000526020600020015461225e919061481d565b612268919061481d565b612272919061481d565b11156122c05760405162461bcd60e51b815260206004820181905260248201527f4d617820666565206c696d6974207265616368656420666f72202753454c4c276044820152606401611628565b8160076000815481106122d5576122d56147f1565b90600052602060002001819055508060076001815481106122f8576122f86147f1565b90600052602060002001819055507f2596ea4192286cc20062cf773414aef3b23a5b57b4bdc47f888e9d9059d838c482826040516118a9929190918252602082015260400190565b6009818154811061174357600080fd5b606060018054611386906146b1565b612367612ee3565b306001600160a01b038216036123e55760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f742072656375652074686520746f6b656e206f662074686520636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401611628565b806001600160a01b031663a9059cbb612401638b78c6d8195490565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa15801561245e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248291906148f0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156124e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190614909565b612511612ee3565b68a20d6e21d0e525530854600160a01b90046bffffffffffffffffffffffff168111156125a65760405162461bcd60e51b815260206004820152602760248201527f416d6f756e742063616e6e6f74206265206f7665722074686520746f74616c2060448201527f737570706c792e000000000000000000000000000000000000000000000000006064820152608401611628565b670de0b6b3a76400008110156126245760405162461bcd60e51b815260206004820152602560248201527f416d6f756e742063616e6e6f74206265206c657373207468616e20603160207460448201527f6f6b656e2e0000000000000000000000000000000000000000000000000000006064820152608401611628565b60068190556040518181527fdc0e1857a52d77aeae7d67c2ef590eeb501519a07de8d4b8a436aad80437ee5590602001612113565b6007818154811061174357600080fd5b6000611416338484613024565b600a818154811061174357600080fd5b6060600060108054612697906146b1565b905011156126d15760106126aa83613664565b6040516020016126bb929190614926565b6040516020818303038152906040529050919050565b6000826040516020016126e691815260200190565b6040516020818303038152906040528051906020012060f81c9050606080605a8360ff1611612784576040518060400160405280600581526020017f312e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600381526020017f72656400000000000000000000000000000000000000000000000000000000008152509050612b00565b60968360ff1611612804576040518060400160405280600581526020017f322e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600581526020017f477265656e0000000000000000000000000000000000000000000000000000008152509050612b00565b60ca8360ff1611612884576040518060400160405280600581526020017f332e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600481526020017f426c7565000000000000000000000000000000000000000000000000000000008152509050612b00565b60e88360ff1611612904576040518060400160405280600581526020017f342e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600681526020017f59656c6c6f7700000000000000000000000000000000000000000000000000008152509050612b00565b60f28360ff1611612984576040518060400160405280600581526020017f352e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600681526020017f507572706c6500000000000000000000000000000000000000000000000000008152509050612b00565b60f98360ff1611612a04576040518060400160405280600581526020017f362e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600681526020017f53696c76657200000000000000000000000000000000000000000000000000008152509050612b00565b60fe8360ff1611612a84576040518060400160405280600581526020017f372e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600481526020017f476f6c64000000000000000000000000000000000000000000000000000000008152509050612b00565b60ff8360ff1611612b00576040518060400160405280600581526020017f382e67696600000000000000000000000000000000000000000000000000000081525091506040518060400160405280600781526020017f4469616d6f6e640000000000000000000000000000000000000000000000000081525090505b6000612b0b86613664565b604051602001612b1b91906149ad565b60408051601f1981840301815290829052612b38916020016149f2565b604051602081830303815290604052601184604051602001612b5b929190614926565b60408051601f1981840301815290829052612b799291602001614acb565b6040516020818303038152906040529050600082604051602001612b9d9190614af1565b60408051601f198184030181528282018252600483527f227d5d7d000000000000000000000000000000000000000000000000000000006020848101919091529151909350612bf0918591859101614acb565b60408051601f1981840301815290829052612c0f918390602001614acb565b60408051601f1981840301815290829052612c2c91602001614b5c565b6040516020818303038152906040529650505050505050919050565b919050565b60108054612c5a906146b1565b80601f0160208091040260200160405190810160405280929190818152602001828054612c86906146b1565b8015612cd35780601f10612ca857610100808354040283529160200191612cd3565b820191906000526020600020905b815481529060010190602001808311612cb657829003601f168201915b505050505081565b612ce3612ee3565b60106114338282614731565b612cf7612ee3565b63389a75e1600c52806000526020600c208054421115612d1f57636f5e88186000526004601cfd5b6000905561173081613626565b60118054612c5a906146b1565b612d41612ee3565b8060601b612d5757637448fbae6000526004601cfd5b61173081613626565b6001600160a01b038116600090815268a20d6e21d0e52553136020526040812080549091600160581b9091046001169003612c485780546bff00000000000000000000001916600160581b60ff933b1515600202600117939093169290920291909117815590565b8154600160601b900463ffffffff1668a20d6e21d0e52553086000829003612e5d57805463ffffffff198116600163ffffffff92831601918216908117835585546fffffffff0000000000000000000000001916600160601b82021786556000818152600284016020526040812080546001600160a01b0319166001600160a01b0388161790559193509003612e5d57600080fd5b5092915050565b600080612e70836111bd565b6001600160a01b0316141592915050565b6028828152601484905268a20d6e21d0e525530f600090815260488120915281905560008181526001600160a01b0380841691908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3505050565b638b78c6d81954331461207a576382b429006000526004601cfd5b604051602481018390526001600160a01b03821660448201526114339060640160408051601f198184030181529190526020810180516001600160e01b03167f69276c86000000000000000000000000000000000000000000000000000000001790526136a8565b6114338282604051602401612f7c929190614ba1565b60408051601f198184030181529190526020810180516001600160e01b03167fb60e72cc000000000000000000000000000000000000000000000000000000001790526136a8565b611e41838383604051602401612fdc93929190614bc3565b60408051601f198184030181529190526020810180516001600160e01b03167ffcec75e0000000000000000000000000000000000000000000000000000000001790526136a8565b6001600160a01b03831661307a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401611628565b6001600160a01b0382166130d05760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401611628565b30600090815268a20d6e21d0e52553136020526040812054600160a01b90046bffffffffffffffffffffffff16600654600d549192508210159060ff161580156131175750805b801561313b57506001600160a01b0384166000908152600f602052604090205460ff165b156132b45760006002600b546131519190614c0c565b600c549091506000613163828461481d565b905060065481106132b057600d805460ff19166001179055613184816136b1565b476000826131928684614c2e565b61319c9190614c0c565b905060006131aa8284614c45565b905081156131cc576131c66131c0600288614c0c565b8361383d565b6000600b555b80156132a2576005546040516000916001600160a01b03169083908381818185875af1925050503d806000811461321f576040519150601f19603f3d011682016040523d82523d6000602084013e613224565b606091505b505090508061329b5760405162461bcd60e51b815260206004820152602c60248201527f4661696c656420746f2073656e642041564158206f6e20696e6672617374727560448201527f63747572652077616c6c657400000000000000000000000000000000000000006064820152608401611628565b506000600c555b5050600d805460ff19169055505b5050505b6001600160a01b0384166000908152600e602052604090205460ff16806132f357506001600160a01b0385166000908152600e602052604090205460ff165b1561330857613303858585613907565b613599565b6001600160a01b0384166000908152600f60205260408120548190819061333390879060ff1661403a565b91945092509050821561335f5730600081905268a20d6e21d0e525531360205261335f90899085613907565b81156133fe57600d5461338290899061010090046001600160a01b031684613907565b600d546040517f51eb05a6000000000000000000000000000000000000000000000000000000008152600481018490526101009091046001600160a01b0316906351eb05a690602401600060405180830381600087803b1580156133e557600080fd5b505af11580156133f9573d6000803e3d6000fd5b505050505b801561341c5760045461341c9089906001600160a01b031683613907565b61344588888361342c868861481d565b613436919061481d565b613440908a614c45565b613907565b60125460ff16801561346f5750638b78c6d819546001600160a01b0316886001600160a01b031614155b801561349357506001600160a01b0388166000908152600f602052604090205460ff165b156135955768a20d6e21d0e525530854606490600160a01b90046bffffffffffffffffffffffff166134c59190614c0c565b6001600160a01b038816600090815268a20d6e21d0e52553136020526040902054600160a01b90046bffffffffffffffffffffffff1611156135955760405162461bcd60e51b815260206004820152605e60248201527f4a7573742067657474696e67207761726d65642075702c206c696d6974206f6660448201527f203125206f6620436f7120496e206120426f782063616e2062652068656c642060648201527f756e74696c204c75627269636174696f6e20697320636f6d706c657465210000608482015260a401611628565b5050505b5050505050565b60006135ab83612d60565b8054909150600160581b90046002161515821515146135ee57805460ff600160581b8083048216600218909116026bff0000000000000000000000199091161781555b8115156000528260601b60601c7fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360206000a2505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60606080604051019050602081016040526000815280600019835b928101926030600a8206018453600a90048061367f575050819003601f19909101908152919050565b61173081614218565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106136e6576136e66147f1565b6001600160a01b03928316602091820292909201810191909152600354604080517f73b295c2000000000000000000000000000000000000000000000000000000008152905191909316926373b295c29260048083019391928290030181865afa158015613758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377c9190614c58565b8160018151811061378f5761378f6147f1565b6001600160a01b0392831660209182029290920101526003546137b59130911684612e81565b6003546040517f762b15620000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063762b156290613807908590600090869030904290600401614c75565b600060405180830381600087803b15801561382157600080fd5b505af1158015613835573d6000803e3d6000fd5b505050505050565b6003546138559030906001600160a01b031684612e81565b600354600480546040517ff91b3f7200000000000000000000000000000000000000000000000000000000815230928101929092526024820185905260006044830181905260648301526001600160a01b0390811660848301524260a48301529091169063f91b3f7290839060c40160606040518083038185885af11580156138e2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906135999190614ce6565b6001600160a01b03821661392e57604051633a954ecd60e21b815260040160405180910390fd5b600061393984612d60565b9050600061394684612d60565b9050600068a20d6e21d0e525530890506139cd604051806101a0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600063ffffffff16815260200160008152602001600063ffffffff1681525090565b835463ffffffff600160801b808304821660808501528554041660a083015282546bffffffffffffffffffffffff600160a01b91829004811660c085015291041660408201819052851115613a3557604051631e9acf1760e31b815260040160405180910390fd5b6040810180518690039081905284546bffffffffffffffffffffffff918216600160a01b9081026001600160a01b03928316178755855481810484168901606086018190529093160291161783556080810151613ab790613a9b670de0b6b3a764000090565b836040015181613aad57613aad614bf6565b0480821191030290565b81528254600160581b9004600216600003613b2657856001600160a01b0316876001600160a01b031603613af357805160808201510360a08201525b613b20670de0b6b3a7640000826060015181613b1157613b11614bf6565b048260a0015180821191030290565b60208201525b80516020820151835463ffffffff600160801b8083048216840185900360e087018190529091160263ffffffff60801b19909116178455600091613b6a9101614239565b8354600160601b900463ffffffff166101808401528251909150600a84019015613d5e57606089901b6001176020838101919091526001600160a01b038a16600090815260088601909152604081206080850151855181036101008701819052895463ffffffff909116600160801b0263ffffffff60801b199091161789556101808601515b60001991909101600381901c606084901b0154909190600090600584901b60e0161c63ffffffff1663ffffffff166000198101600281901c606089901b01805467ffffffffffffffff60069390931b60c01681811c9390931690921b909118905590508651602080890151600884901b178252018752600115613c88576006890160601b600882901c018054600160ff84161b191690555b8415613cc2576009890160601b631fffffff600384901c1601805460e0600585901b1681811c841863ffffffff16901b1890556001909101905b600881901c60058a0160601b015460ff82161c60011615613d16576005890160601b600882901c018054600160ff84161b19169055600081815260048a016020526040902080546001600160a01b03191690555b508661010001518203613bf0578315613d595763ffffffff8116610180880181905288546fffffffff0000000000000000000000001916600160601b9091021788555b505050505b602083015115613fd357606088901b60208301528354640100000000900463ffffffff166101608401526001600160a01b03881660009081526008850160205260409020613dac868a612dc8565b63ffffffff166101408501526000670de0b6b3a76400008560c0015181613dd557613dd5614bf6565b60a08701516020880151810161012089018190528a5463ffffffff60801b1916600160801b63ffffffff92831602178b55895493909204935091680100000000000000009004165b600087610180015163ffffffff168263ffffffff1614613e6d576009890160601b631fffffff600384901c160154600183019260e060059190911b161c63ffffffff1663ffffffff169050613ecf565b506101608701515b613e8686600019830160011b610d79565b63ffffffff1615613ebb57613eb4613ea88a6006018360010187600101614280565b85811180159091021790565b9050613e75565b600181018481118015909102176101608901525b600881901c60068a0160601b018054600160ff84161b8019909116179055606085901b600384901c01805460e0600586901b1681811c841863ffffffff16901b189055613f6986828a610140015186806001019750600183038060021c8560601b016003821660061b9150805467ffffffffffffffff8563ffffffff168560201b178083861c188216851b83188455505050505050505050565b8651602080890151600884901b178252018752508661012001518203613e1d57875461016088015163ffffffff9081166401000000000267ffffffff0000000019919093166801000000000000000002166bffffffffffffffff0000000019909116171787555050505b60408201515115613ff7576001840154613ff79083906001600160a01b0316614367565b5050846000528560601b60601c8760601b60601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000a350505050505050565b6000806000806127108561406c57600a60008154811061405c5761405c6147f1565b906000526020600020015461408c565b600a600181548110614080576140806147f1565b90600052602060002001545b6140969088614c2e565b6140a09190614c0c565b90506000612710866140d05760076000815481106140c0576140c06147f1565b90600052602060002001546140f0565b60076001815481106140e4576140e46147f1565b90600052602060002001545b6140fa9089614c2e565b6141049190614c0c565b9050600061271087614134576009600081548110614124576141246147f1565b9060005260206000200154614154565b6009600181548110614148576141486147f1565b90600052602060002001545b61415e908a614c2e565b6141689190614c0c565b9050600061271088614198576008600081548110614188576141886147f1565b90600052602060002001546141b8565b60086001815481106141ac576141ac6147f1565b90600052602060002001545b6141c2908b614c2e565b6141cc9190614c0c565b905082600b60008282546141e0919061481d565b9250508190555081600c60008282546141f9919061481d565b909155506142099050828461481d565b99939850965091945050505050565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b61425d60405180606001604052806000815260200160008152602001606081525090565b604051828152806020018360051b81016040528183604001528083525050919050565b6000801990508360601b8360081c81018054198560ff161c8560ff161b806142d5578460081c83015b60018301925082541991508083118217156142a957808311156142d35760ff86191691821b90911c905b505b801561435d5782820360081b7e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405821960010183166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff1060061b1781811c63ffffffff1060051b1790811c63d76453e004601f169190911a171785811015878210176000031793505b5050509392505050565b60408201516040810363263c69d68152602080820152815160051b604401915060208183601c84016000875af16001825114166143a357600081fd5b50505050565b60005b838110156143c45781810151838201526020016143ac565b50506000910152565b600081518084526143e58160208601602086016143a9565b601f01601f19169290920160200192915050565b6020815260006115b160208301846143cd565b6001600160a01b038116811461173057600080fd5b6000806040838503121561443457600080fd5b823561443f8161440c565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561447557600080fd5b813567ffffffffffffffff8082111561448d57600080fd5b818401915084601f8301126144a157600080fd5b8135818111156144b3576144b361444d565b604051601f8201601f19908116603f011681019083821181831017156144db576144db61444d565b816040528281528760208487010111156144f457600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060006060848603121561452957600080fd5b83356145348161440c565b925060208401356145448161440c565b929592945050506040919091013590565b60006020828403121561456757600080fd5b81356115b18161440c565b801515811461173057600080fd5b60006020828403121561459257600080fd5b81356115b181614572565b6000602082840312156145af57600080fd5b5035919050565b600080604083850312156145c957600080fd5b82356145d48161440c565b915060208301356145e481614572565b809150509250929050565b6000806040838503121561460257600080fd5b50508035926020909101359150565b6000806020838503121561462457600080fd5b823567ffffffffffffffff8082111561463c57600080fd5b818501915085601f83011261465057600080fd5b81358181111561465f57600080fd5b86602082850101111561467157600080fd5b60209290920196919550909350505050565b6000806040838503121561469657600080fd5b82356146a18161440c565b915060208301356145e48161440c565b600181811c908216806146c557607f821691505b6020821081036146e557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611e4157600081815260208120601f850160051c810160208610156147125750805b601f850160051c820191505b818110156138355782815560010161471e565b815167ffffffffffffffff81111561474b5761474b61444d565b61475f8161475984546146b1565b846146eb565b602080601f831160018114614794576000841561477c5750858301515b600019600386901b1c1916600185901b178555613835565b600085815260208120601f198616915b828110156147c3578886015182559484019460019091019084016147a4565b50858210156147e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111b7576111b7614807565b67ffffffffffffffff8311156148485761484861444d565b61485c8361485683546146b1565b836146eb565b6000601f84116001811461489057600085156148785750838201355b600019600387901b1c1916600186901b178355613599565b600083815260209020601f19861690835b828110156148c157868501358255602094850194600190920191016148a1565b50868210156148de5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60006020828403121561490257600080fd5b5051919050565b60006020828403121561491b57600080fd5b81516115b181614572565b6000808454614934816146b1565b6001828116801561494c576001811461496157614990565b60ff1984168752821515830287019450614990565b8860005260208060002060005b858110156149875781548a82015290840190820161496e565b50505082870194505b5050505083516149a48183602088016143a9565b01949350505050565b7f7b226e616d65223a2022417661646f72612023000000000000000000000000008152600082516149e58160138501602087016143a9565b9190910160130192915050565b60008251614a048184602087016143a9565b7f222c226465736372697074696f6e223a224120636f6c6c656374696f6e206f669201918252507f2031302c30303020436f717320696e20426f78657320656e61626c656420627960208201527f20444e3430342c20616e206578706572696d656e74616c20746f6b656e20737460408201527f616e646172642e222c2265787465726e616c5f75726c223a2268747470733a2f60608201527f2f7777772e636f71696e61626f782e78797a222c22696d616765223a220000006080820152609d01919050565b60008351614add8184602088016143a9565b8351908301906149a48183602088016143a9565b7f222c2261747472696275746573223a5b7b2274726169745f74797065223a224381527f6f6c6f72222c2276616c7565223a220000000000000000000000000000000000602082015260008251614b4f81602f8501602087016143a9565b91909101602f0192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c0000000000815260008251614b9481601b8501602087016143a9565b91909101601b0192915050565b604081526000614bb460408301856143cd565b90508260208301529392505050565b606081526000614bd660608301866143cd565b6001600160a01b0394851660208401529290931660409091015292915050565b634e487b7160e01b600052601260045260246000fd5b600082614c2957634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176111b7576111b7614807565b818103818111156111b7576111b7614807565b600060208284031215614c6a57600080fd5b81516115b18161440c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614cc55784516001600160a01b031683529383019391830191600101614ca0565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215614cfb57600080fd5b835192506020840151915060408401519050925092509256fe696e73756666696369656e7420616c6c6f77616e63652066726f6d3a20257320746f3a202573a26469706673582212204150826db10f429f2f1f972dfe02d816179e49bfc9bbbef9018997bb0a6e187764736f6c63430008140033608060405234801561001057600080fd5b50604051610def380380610def83398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008c565b60006020828403121561006e57600080fd5b81516001600160a01b038116811461008557600080fd5b9392505050565b610d548061009b6000396000f3fe60806040526004361061012d5760003560e01c80636cef16e6116100a557806397e5311c11610074578063b88d4fde11610059578063b88d4fde14610537578063c87b56dd14610557578063e985e9c5146105775761013f565b806397e5311c14610502578063a22cb465146105175761013f565b80636cef16e61461049257806370a08231146104a75780638da5cb5b146104c757806395d89b41146104ed5761013f565b806318160ddd116100fc57806324359879116100e1578063243598791461043f57806342842e0e1461045f5780636352211e146104725761013f565b806318160ddd146103fc57806323b872dd1461041f5761013f565b806301ffc9a71461033057806306fdde0314610382578063081812fc146103a4578063095ea7b3146103dc5761013f565b3661013f57341561013d57600080fd5b005b683602298b8c10b0123060003560e01c63263c69d68190036102245781546001600160a01b0316331461019e576040517f363cb31200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602036103d60003e6004356024018036103d60003e602081033560051b81018036103d60003e5b8082146102175781358060601c816001168260a01b60a81c811583028284027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a45050508160200191506101c5565b5050600160005260206000f35b80630f4599e5036102fe5760018201546001600160a01b0316156102935760018201546001600160a01b03166004356001600160a01b031614610293576040517fc59ec47a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81546001600160a01b0316156102d5576040517fbf656a4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815473ffffffffffffffffffffffffffffffffffffffff19163317825560016000908152602090f35b6040517f3c10b94e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561033c57600080fd5b5061036d61034b366004610ac7565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b34801561038e57600080fd5b50610397610597565b6040516103799190610b10565b3480156103b057600080fd5b506103c46103bf366004610b5e565b6105ad565b6040516001600160a01b039091168152602001610379565b3480156103e857600080fd5b5061013d6103f7366004610b93565b6105c5565b34801561040857600080fd5b5061041161064b565b604051908152602001610379565b34801561042b57600080fd5b5061013d61043a366004610bbd565b61065d565b34801561044b57600080fd5b506103c461045a366004610b5e565b6106ec565b61013d61046d366004610bbd565b6106fe565b34801561047e57600080fd5b506103c461048d366004610b5e565b610730565b34801561049e57600080fd5b5061013d610742565b3480156104b357600080fd5b506104116104c2366004610bf9565b610802565b3480156104d357600080fd5b50683602298b8c10b01232546001600160a01b03166103c4565b3480156104f957600080fd5b5061039761081d565b34801561050e57600080fd5b506103c461082e565b34801561052357600080fd5b5061013d610532366004610c14565b61087c565b34801561054357600080fd5b5061013d610552366004610c50565b6108ff565b34801561056357600080fd5b50610397610572366004610b5e565b61095a565b34801561058357600080fd5b5061036d610592366004610ceb565b61096a565b60606105a86306fdde036000610996565b905090565b60006105bf63081812fc8360006109f3565b92915050565b60006105cf61082e565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d111661060f573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b60006105a863e2c792816000806109f3565b600061066761082e565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af16001825114166106bd573d6000823e3d81fd5b508183857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600038a450505050565b60006105bf63243598798360006109f3565b61070983838361065d565b813b1561072b5761072b83838360405180602001604052806000815250610a3b565b505050565b60006105bf636352211e8360006109f3565b60008061074d61082e565b9050638da5cb5b600052602060006004601c845afa601f3d11161561077557600c5160601c91505b683602298b8c10b0123254683602298b8c10b01230906001600160a01b0390811690841681146107fc5760028201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b50505050565b60006105bf63f5b100ea836001600160a01b031660006109f3565b60606105a86395d89b416000610996565b683602298b8c10b01230546001600160a01b031680610879576040517f5b2a47ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b600061088661082e565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af1600160005114166108ca573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b61090a85858561065d565b833b156109535761095385858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a3b92505050565b5050505050565b60606105bf63c87b56dd83610996565b600061098d63e985e9c5846001600160a01b0316846001600160a01b03166109f3565b15159392505050565b606060006109a261082e565b9050604051915083600052826020526000806024601c845afa6109c8573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016040525092915050565b6000806109fe61082e565b9050604051856000528460205283604052602060006044601c855afa601f3d1116610a2c573d6000823e3d81fd5b60405250506000519392505050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a08401528015610a82578060c08401826020870160045afa505b60208360a48301601c860160008a5af1610aa5573d15610aa5573d6000843e3d83fd5b508060e01b825114610abf5763d1a57ed66000526004601cfd5b505050505050565b600060208284031215610ad957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b0957600080fd5b9392505050565b600060208083528351808285015260005b81811015610b3d57858101830151858201604001528201610b21565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610b7057600080fd5b5035919050565b80356001600160a01b0381168114610b8e57600080fd5b919050565b60008060408385031215610ba657600080fd5b610baf83610b77565b946020939093013593505050565b600080600060608486031215610bd257600080fd5b610bdb84610b77565b9250610be960208501610b77565b9150604084013590509250925092565b600060208284031215610c0b57600080fd5b610b0982610b77565b60008060408385031215610c2757600080fd5b610c3083610b77565b915060208301358015158114610c4557600080fd5b809150509250929050565b600080600080600060808688031215610c6857600080fd5b610c7186610b77565b9450610c7f60208701610b77565b935060408601359250606086013567ffffffffffffffff80821115610ca357600080fd5b818801915088601f830112610cb757600080fd5b813581811115610cc657600080fd5b896020828501011115610cd857600080fd5b9699959850939650602001949392505050565b60008060408385031215610cfe57600080fd5b610d0783610b77565b9150610d1560208401610b77565b9050925092905056fea26469706673582212207d74313c2cb9d82935d4da3ab51dec11d8b366bc2accbc7c0179dd9d54578cef64736f6c6343000814003368747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f436f71496e61426f782f6173736574732f6d61696e2f312e676966