Loading
[ { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "strategy", "type": "address" }, { "indexed": true, "internalType": "address", "name": "asset", "type": "address" }, { "indexed": false, "internalType": "string", "name": "apiVersion", "type": "string" } ], "name": "NewTokenizedStrategy", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "profit", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "loss", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "protocolFees", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "performanceFees", "type": "uint256" } ], "name": "Reported", "type": "event" }, { "anonymous": false, "inputs": [], "name": "StrategyShutdown", "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newEmergencyAdmin", "type": "address" } ], "name": "UpdateEmergencyAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newKeeper", "type": "address" } ], "name": "UpdateKeeper", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newManagement", "type": "address" } ], "name": "UpdateManagement", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newPendingManagement", "type": "address" } ], "name": "UpdatePendingManagement", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "newPerformanceFee", "type": "uint16" } ], "name": "UpdatePerformanceFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newPerformanceFeeRecipient", "type": "address" } ], "name": "UpdatePerformanceFeeRecipient", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newProfitMaxUnlockTime", "type": "uint256" } ], "name": "UpdateProfitMaxUnlockTime", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FACTORY", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_FEE", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptManagement", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "apiVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emergencyAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fullProfitUnlockDate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_asset", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_management", "type": "address" }, { "internalType": "address", "name": "_performanceFeeRecipient", "type": "address" }, { "internalType": "address", "name": "_keeper", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isShutdown", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keeper", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastReport", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "management", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingManagement", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "performanceFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "performanceFeeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pricePerShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "profitMaxUnlockTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "profitUnlockingRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "maxLoss", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "report", "outputs": [ { "internalType": "uint256", "name": "profit", "type": "uint256" }, { "internalType": "uint256", "name": "loss", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "requireEmergencyAuthorized", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "requireKeeperOrManagement", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "requireManagement", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_emergencyAdmin", "type": "address" } ], "name": "setEmergencyAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keeper", "type": "address" } ], "name": "setKeeper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" } ], "name": "setName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_management", "type": "address" } ], "name": "setPendingManagement", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_performanceFee", "type": "uint16" } ], "name": "setPerformanceFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_performanceFeeRecipient", "type": "address" } ], "name": "setPerformanceFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_profitMaxUnlockTime", "type": "uint256" } ], "name": "setProfitMaxUnlockTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "shutdownStrategy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "unlockedShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "maxLoss", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162004030380380620040308339810160408190526200003491620000a8565b6001600160a01b03811660805260016200004d62000072565b80546001600160a01b0319166001600160a01b039290921691909117905550620000fc565b600080620000a260017fd2841a5d2692465040bd5e06a6f3b37483952c866e0f304dc0e03f76a1f8a0b1620000da565b92915050565b600060208284031215620000bb57600080fd5b81516001600160a01b0381168114620000d357600080fd5b9392505050565b81810381811115620000a257634e487b7160e01b600052601160045260246000fd5b608051613f116200011f600039600081816104dc0152610adc0152613f116000f3fe608060405234801561001057600080fd5b50600436106103d05760003560e01c806387788782116101ff578063bf86d6901161011a578063d505accf116100ad578063df69b22a1161007c578063df69b22a146107d5578063ed27f7c9146107e8578063ef8b30f714610753578063f629b790146107f057600080fd5b8063d505accf14610794578063d905777e146107a7578063d9a0e97a146107ba578063dd62ed3e146107c257600080fd5b8063c6e6f592116100e9578063c6e6f59214610753578063c8c2fe6c14610766578063ce96cb771461076e578063d43fdcf71461078157600080fd5b8063bf86d6901461071d578063c3535b5214610725578063c47f00271461072d578063c63d75b61461074057600080fd5b8063a9059cbb11610192578063b460af9411610161578063b460af94146106e6578063ba087652146106f9578063bc063e1a1461070c578063be8f16681461071557600080fd5b8063a9059cbb146106a5578063aa290e6d146106b8578063aced1661146106cb578063b3d7f6b9146106d357600080fd5b806397073ae6116101ce57806397073ae61461066457806399530b06146106775780639f40a7b31461067f578063a318c1a41461069257600080fd5b8063877887821461062657806388a8d6021461064157806394bf804d1461064957806395d89b411461065c57600080fd5b806338d52e0f116102ef5780636a5f1aa211610282578063748747e611610251578063748747e6146105da5780637ecebe00146105ed57806382e00a441461060057806385b687561461061357600080fd5b80636a5f1aa2146105995780636e553f65146105ac57806370905dce146105bf57806370a08231146105c757600080fd5b80634abe4137116102be5780634abe41371461056b5780634cdad506146104055780635141eebb1461057e5780635312ea8e1461058657600080fd5b806338d52e0f14610535578063402d267d1461053d578063440368a31461055057806348e4a6491461055857600080fd5b806323b872dd116103675780632dd31000116103365780632dd31000146104d7578063313ce567146104fe57806335da3394146105185780633644e5151461052d57600080fd5b806323b872dd1461047e57806325829410146104915780632606a10b146104b25780632d632692146104cf57600080fd5b8063095ea7b3116103a3578063095ea7b3146104205780630a28a477146104435780630b68f46f1461045657806318160ddd1461047657600080fd5b806301e1d114146103d557806306fdde03146103f057806307a2d13a146104055780630952864e14610418575b600080fd5b6103dd610803565b6040519081526020015b60405180910390f35b6103f861081c565b6040516103e79190613577565b6103dd6104133660046135aa565b6108b7565b6103dd6108d2565b61043361042e3660046135e8565b6108eb565b60405190151581526020016103e7565b6103dd6104513660046135aa565b610909565b61045e61091e565b6040516001600160a01b0390911681526020016103e7565b6103dd61093a565b61043361048c366004613614565b61094c565b6040805180820190915260058152640ccb8c0b8d60da1b60208201526103f8565b6104ba61097e565b604080519283526020830191909152016103e7565b6103dd610db1565b61045e7f000000000000000000000000000000000000000000000000000000000000000081565b610506610dcd565b60405160ff90911681526020016103e7565b61052b610526366004613655565b610de7565b005b6103dd610e46565b61045e610efe565b6103dd61054b366004613655565b610f17565b61052b610f2a565b61052b610566366004613655565b611065565b6103dd6105793660046135e8565b6110c3565b6103dd6110d6565b61052b6105943660046135aa565b6110e9565b61052b6105a7366004613655565b6111ff565b6103dd6105ba366004613672565b6112d9565b61045e61147b565b6103dd6105d5366004613655565b611497565b61052b6105e8366004613655565b6114aa565b6103dd6105fb366004613655565b61150e565b61052b61060e366004613655565b61153a565b6103dd6106213660046135e8565b6115c3565b61062e6115d6565b60405161ffff90911681526020016103e7565b61045e6115f5565b6103dd610657366004613672565b611618565b6103f8611728565b61052b610672366004613711565b6117c6565b6103dd611a50565b6103dd61068d3660046137d6565b611a88565b6103dd6106a03660046137d6565b611bbc565b6104336106b33660046135e8565b611cec565b61052b6106c636600461382e565b611d01565b61045e611da9565b6103dd6106e13660046135aa565b611dcc565b6103dd6106f436600461384b565b611de1565b6103dd61070736600461384b565b611df8565b61062e61138881565b61052b611e08565b610433611e63565b6103dd611e80565b61052b61073b36600461388d565b611e9c565b6103dd61074e366004613655565b611ec3565b6103dd6107613660046135aa565b611ed6565b61052b611eeb565b6103dd61077c366004613655565b611f9b565b61052b61078f366004613655565b611fae565b61052b6107a236600461390e565b61202c565b6103dd6107b5366004613655565b61223a565b6103dd61224d565b6103dd6107d036600461397f565b61225f565b61052b6107e33660046135aa565b61229a565b61045e612382565b61052b6107fe366004613655565b6123a5565b600061081761081061242a565b6006015490565b905090565b606061082661242a565b6001018054610834906139ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610860906139ad565b80156108ad5780601f10610882576101008083540402835291602001916108ad565b820191906000526020600020905b81548152906001019060200180831161089057829003601f168201915b5050505050905090565b60006108cc6108c461242a565b836000612458565b92915050565b60006108dc61242a565b6009015463ffffffff16919050565b60006109006108f861242a565b338585612493565b50600192915050565b60006108cc61091661242a565b8360016125bb565b600061092861242a565b600b01546001600160a01b0316919050565b600061081761094761242a565b612612565b60008061095761242a565b90506109658186338661262c565b610971818686866126c2565b60019150505b9392505050565b600080600061098b61242a565b600c810154909150600119600160a01b90910460ff16016109c75760405162461bcd60e51b81526004016109be906139e1565b60405180910390fd5b600c8101805460ff60a01b1916600160a11b1790556109e533611fae565b60006109ef61242a565b90506000306001600160a01b03166349317f1d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a579190613a18565b90506000610a66836006015490565b90506000610a7384612867565b60098501549091506000908190819063ffffffff1685871115610bf4578587039a50610aa1888c60006125bb565b6009890154909250640100000000900461ffff1660008115610bb35761271061ffff83168e0204955061271061ffff831685020490506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635153b1996040518163ffffffff1660e01b81526004016040805180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190613a47565b9150915060008261ffff16600014610b8c575061271061ffff83168981028290049850840204610b8c8d83836128cf565b60098d0154610baf908e90600160301b90046001600160a01b03168387036128cf565b5050505b8215610bed57808403935083871115610bd857610bd38a30868a03612996565b610bed565b86841115610bed57610bed8a308987036128cf565b5050610c49565b868603995089600014610c3857306000908152600489016020526040812054610c35918790610c26908c908f906125bb565b610c309190613a8c565b612a6e565b94505b8415610c4957610c49883087612996565b3060009081526004890160205260409020548015610d045760088901546000906001600160601b031642811115610c8d5784830342826001600160601b0316030291505b600083610c9a8688613a9f565b610ca49085613a8c565b610cae9190613ab6565b905080610cc064e8d4a5100086613a9f565b610cca9190613ab6565b60078d0155610cd98142613a8c565b60088d0180546001600160601b0319166001600160601b039290921691909117905550610d17915050565b6008890180546001600160601b03191690555b60068901889055600a890180546001600160601b031916426001600160601b03161790557fecdd072e4d5bd913a75a37f02daedcea7e2dc0281f9942c0063cfd1cfe5c4c4f8c8c86610d69818a613ad8565b60408051948552602085019390935291830152606082015260800160405180910390a1505050600c909601805460ff60a01b1916600160a01b17905550959694955050505050565b6000610dbb61242a565b600801546001600160601b0316919050565b6000610dd761242a565b54600160a01b900460ff16919050565b610df033611065565b80610df961242a565b600c0180546001600160a01b0319166001600160a01b03928316179055604051908216907f2bf242d027263e45fab022c28b4144255c97b30b8e54c30f1f5757906d487f0990600090a250565b60408051808201825260058152640ccb8c0b8d60da1b60209182015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fda26655fe98828873f36b43d69dcf685bd7966c6141a47d0d8cf605a48cc4e6a818401527faa741e830036c691364b6111f364dcbe19c4c13e8962b6404784a49bef110d6460608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b6000610f0861242a565b546001600160a01b0316919050565b60006108cc610f2461242a565b83612a84565b6000610f3461242a565b600c810154909150600119600160a01b90910460ff1601610f675760405162461bcd60e51b81526004016109be906139e1565b600c8101805460ff60a01b1916600160a11b179055610f8533611fae565b30639d7fb70c610f9361242a565b546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd9190613a18565b6040518263ffffffff1660e01b815260040161101b91815260200190565b600060405180830381600087803b15801561103557600080fd5b505af1158015611049573d6000803e3d6000fd5b505050600c909101805460ff60a01b1916600160a01b17905550565b61106d61242a565b600a01546001600160a01b03828116600160601b90920416146110c05760405162461bcd60e51b815260206004820152600b60248201526a085b585b9859d95b595b9d60aa1b60448201526064016109be565b50565b60006109776110d061242a565b84612b1e565b60006110e061242a565b60070154905090565b60006110f361242a565b600c810154909150600119600160a01b90910460ff16016111265760405162461bcd60e51b81526004016109be906139e1565b600c8101805460ff60a01b1916600160a11b1790556111443361153a565b61114c61242a565b600c0154600160a81b900460ff166111955760405162461bcd60e51b815260206004820152600c60248201526b3737ba1039b43aba3237bbb760a11b60448201526064016109be565b604051631fbd027560e31b815260048101839052309063fde813a890602401600060405180830381600087803b1580156111ce57600080fd5b505af11580156111e2573d6000803e3d6000fd5b505050600c909101805460ff60a01b1916600160a01b1790555050565b61120833611065565b6001600160a01b03811661122e5760405162461bcd60e51b81526004016109be90613aeb565b306001600160a01b038216036112775760405162461bcd60e51b815260206004820152600e60248201526d21b0b73737ba1031329039b2b63360911b60448201526064016109be565b8061128061242a565b60090180546601000000000000600160d01b031916600160301b6001600160a01b0393841602179055604051908216907f9ebbf695dd251e855d9d15a146a72f5f654dc6f8630fbc11212f27e0c88ba11a90600090a250565b6000806112e461242a565b600c810154909150600119600160a01b90910460ff16016113175760405162461bcd60e51b81526004016109be906139e1565b600c8101805460ff60a01b1916600160a11b179055600061133661242a565b905060001985036113af5780546040516370a0823160e01b81523360048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ac9190613a18565b94505b6113b98185612a84565b8511156114085760405162461bcd60e51b815260206004820152601e60248201527f455243343632363a206465706f736974206d6f7265207468616e206d6178000060448201526064016109be565b611414818660006125bb565b9250826000036114545760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b60448201526064016109be565b61146081858786612bbe565b50600c01805460ff60a01b1916600160a01b17905592915050565b600061148561242a565b600c01546001600160a01b0316919050565b60006108cc6114a461242a565b83612d08565b6114b333611065565b806114bc61242a565b60080180546001600160601b0316600160601b6001600160a01b0393841602179055604051908216907fd7f49e282c36d417b290d4181a56943f6d670aaa2987c0d40e60d39919c6888290600090a250565b600061151861242a565b6001600160a01b03909216600090815260039290920160205250604090205490565b600061154461242a565b600c8101549091506001600160a01b038381169116148061157b5750600a8101546001600160a01b03838116600160601b90920416145b6115bf5760405162461bcd60e51b815260206004820152601560248201527408595b595c99d95b98de48185d5d1a1bdc9a5e9959605a1b60448201526064016109be565b5050565b60006109776115d061242a565b84612d68565b60006115e061242a565b60090154640100000000900461ffff16919050565b60006115ff61242a565b600a0154600160601b90046001600160a01b0316919050565b60008061162361242a565b600c810154909150600119600160a01b90910460ff16016116565760405162461bcd60e51b81526004016109be906139e1565b600c8101805460ff60a01b1916600160a11b179055600061167561242a565b90506116818185612e03565b8511156116d05760405162461bcd60e51b815260206004820152601b60248201527f455243343632363a206d696e74206d6f7265207468616e206d6178000000000060448201526064016109be565b6116dc81866001612458565b92508260000361171c5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b60448201526064016109be565b61146081858588612bbe565b606061173261242a565b54604080516395d89b4160e01b815290516001600160a01b03909216916395d89b41916004808201926000929091908290030181865afa15801561177a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117a29190810190613b11565b6040516020016117b29190613b7f565b604051602081830303815290604052905090565b60006117d061242a565b80549091506001600160a01b0316156118195760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b60448201526064016109be565b80546001600160a01b0319166001600160a01b038716178155600181016118408682613bf7565b50856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a39190613cb7565b815460ff91909116600160a01b0260ff60a01b1990911617815560098101805463ffffffff1916620d2f001790556001600160a01b0383166118f75760405162461bcd60e51b81526004016109be90613aeb565b306001600160a01b038416036119385760405162461bcd60e51b81526004016109be9060208082526004908201526339b2b63360e11b604082015260600190565b600981018054640100000000600160d01b031916600160301b6001600160a01b038681169190910265ffff000000001916919091176503e80000000017909155600a820180546001600160601b031916426001600160601b031617905584166119b35760405162461bcd60e51b81526004016109be90613aeb565b600a810180546001600160a01b03808716600160601b9081026001600160601b03938416179093556008840180548683169094029390921692909217905560408051808201825260058152640ccb8c0b8d60da1b602082015290519188169130917ffb1616746b8474b6b7c67f2fe5ada156ed24774d0efe8bfe529cf537ba17333091611a409190613577565b60405180910390a3505050505050565b600080611a5b61242a565b8054909150611a82908290611a7b90600160a01b900460ff16600a613db8565b6000612458565b91505090565b600080611a9361242a565b600c810154909150600119600160a01b90910460ff1601611ac65760405162461bcd60e51b81526004016109be906139e1565b600c8101805460ff60a01b1916600160a11b1790556000611ae561242a565b9050611af18186612b1e565b871115611b405760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d617800000060448201526064016109be565b6000611b4e82896000612458565b905080600003611b8e5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b60448201526064016109be565b611b9c828888848c8a612eb4565b93505050600c01805460ff60a01b1916600160a01b179055949350505050565b600080611bc761242a565b600c810154909150600119600160a01b90910460ff1601611bfa5760405162461bcd60e51b81526004016109be906139e1565b600c8101805460ff60a01b1916600160a11b1790556000611c1961242a565b9050611c258186612d68565b871115611c745760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d61780060448201526064016109be565b611c80818860016125bb565b925082600003611cc05760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b60448201526064016109be565b611cce8187878a8789612eb4565b5050600c01805460ff60a01b1916600160a01b179055949350505050565b6000610900611cf961242a565b3385856126c2565b611d0a33611065565b61138861ffff82161115611d4a5760405162461bcd60e51b81526020600482015260076024820152664d41582046454560c81b60448201526064016109be565b80611d5361242a565b600901805465ffff00000000191664010000000061ffff9384160217905560405190821681527fdc843735e683348ec21c302ffff45462399c5c46f75f67b0a1a5395c535997539060200160405180910390a150565b6000611db361242a565b60080154600160601b90046001600160a01b0316919050565b60006108cc611dd961242a565b836001612458565b6000611df08484846000611bbc565b949350505050565b6000611df0848484612710611a88565b611e113361153a565b6001611e1b61242a565b600c018054911515600160a81b0260ff60a81b199092169190911790556040517ffc1249757a7f27c510c8173c55d03ba442e0d33d9223e06ceb416feac8c7693f90600090a1565b6000611e6d61242a565b600c0154600160a81b900460ff16919050565b6000611e8a61242a565b600a01546001600160601b0316919050565b611ea533611065565b8181611eaf61242a565b60010191611ebe919083613dc7565b505050565b60006108cc611ed061242a565b83612e03565b60006108cc611ee361242a565b8360006125bb565b6000611ef561242a565b600b8101549091506001600160a01b03163314611f3f5760405162461bcd60e51b81526020600482015260086024820152672170656e64696e6760c01b60448201526064016109be565b600a810180546001600160601b031633600160601b810291909117909155600b820180546001600160a01b03191690556040517fff54978127edd34aec0f9061fb3b155fbe0ededdfa881ee3e0d541d3a1eef43890600090a250565b60006108cc611fa861242a565b83612d68565b6000611fb861242a565b60088101549091506001600160a01b03838116600160601b909204161480611ff65750600a8101546001600160a01b03838116600160601b90920416145b6115bf5760405162461bcd60e51b815260206004820152600760248201526610b5b2b2b832b960c91b60448201526064016109be565b4284101561207c5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a205045524d49545f444541444c494e455f45585049524544000060448201526064016109be565b60006001612088610e46565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a6120b461242a565b6001600160a01b038f8116600090815260039290920160209081526040928390208054600181019091558351808301989098529582168784015293166060860152608085019190915260a084019290925260c08084018b90528251808503909101815260e08401909252815191012061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156121a3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906121d95750876001600160a01b0316816001600160a01b0316145b61221d5760405162461bcd60e51b815260206004820152601560248201527422a92199181d1024a72b20a624a22fa9a4a3a722a960591b60448201526064016109be565b61223061222861242a565b828989612493565b5050505050505050565b60006108cc61224761242a565b83612b1e565b600061081761225a61242a565b612867565b600061097761226c61242a565b6001600160a01b03808616600090815260059290920160209081526040808420928716845291905290205490565b6122a333611065565b6301e185588111156122e25760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b60448201526064016109be565b60006122ec61242a565b90508160000361233457306000908152600482016020526040902054801561231957612319823083612996565b50600060078201556008810180546001600160601b03191690555b60098101805463ffffffff191663ffffffff84161790556040518281527ff361aed463da6fa20358e45c6209f1d3e16d4eca706e6eab0b0aeb338729c77a9060200160405180910390a15050565b600061238c61242a565b60090154600160301b90046001600160a01b0316919050565b6123ae33611065565b6001600160a01b0381166123d45760405162461bcd60e51b81526004016109be90613aeb565b806123dd61242a565b600b0180546001600160a01b0319166001600160a01b03928316179055604051908216907fd74668a8c80a07cc56d7c3318a06439eaa815e740d97dcd83487e1fc75076b8b90600090a250565b6000806108cc60017fd2841a5d2692465040bd5e06a6f3b37483952c866e0f304dc0e03f76a1f8a0b1613ad8565b60008061246485612612565b905080156124885761248361247a866006015490565b8590838661317f565b61248a565b835b95945050505050565b6001600160a01b0383166124f55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109be565b6001600160a01b0382166125565760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109be565b6001600160a01b03838116600081815260058701602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a350505050565b6000806125c785612612565b9050806000036125da5783915050610977565b60006125e7866006015490565b9050806000036125fc57600092505050610977565b6126088583838761317f565b9695505050505050565b600061261d82612867565b82600201546108cc9190613ad8565b6001600160a01b03838116600090815260058601602090815260408083209386168352929052205460001981146126bb57818110156126ad5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109be565b6126bb858585858503612493565b5050505050565b6001600160a01b0383166127265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109be565b6001600160a01b0382166127885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109be565b306001600160a01b038316036127e05760405162461bcd60e51b815260206004820152601a60248201527f4552433230207472616e7366657220746f20737472617465677900000000000060448201526064016109be565b6001600160a01b03831660009081526004850160205260408120805483929061280a908490613ad8565b90915550506001600160a01b038083166000818152600487016020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125ad9085815260200190565b60088101546000906001600160601b0316428111156128a557600a830154600784015464e8d4a51000916001600160601b03164203020491506128c9565b6001600160601b038116156128c95730600090815260048401602052604090205491505b50919050565b6001600160a01b0382166129255760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109be565b808360020160008282546129399190613a8c565b90915550506001600160a01b03821660008181526004850160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3505050565b6001600160a01b0382166129f65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109be565b6001600160a01b038216600090815260048401602052604081208054839290612a20908490613ad8565b909155505060028301805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612989565b6000818310612a7d5781610977565b5090919050565b600c820154600090600160a81b900460ff1680612aa957506001600160a01b03821630145b15612ab6575060006108cc565b604051632355178960e11b81526001600160a01b038316600482015230906346aa2f1290602401602060405180830381865afa158015612afa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109779190613a18565b6040516304bd462960e01b81526001600160a01b038216600482015260009030906304bd462990602401602060405180830381865afa158015612b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b899190613a18565b90506000198103612ba557612b9e8383612d08565b90506108cc565b610977612bb4848360006125bb565b610c308585612d08565b83546001600160a01b0316612bd5813330866131d0565b6040516370a0823160e01b815230600482018190529063503160d9906001600160a01b038416906370a0823190602401602060405180830381865afa158015612c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c469190613a18565b6040518263ffffffff1660e01b8152600401612c6491815260200190565b600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b5050505082856006016000828254612caa9190613a8c565b90915550612cbb90508585846128cf565b60408051848152602081018490526001600160a01b0386169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a35050505050565b6000306001600160a01b03831603612d4857612d2383612867565b6001600160a01b0383166000908152600485016020526040902054612b9e9190613ad8565b506001600160a01b03166000908152600491909101602052604090205490565b6040516304bd462960e01b81526001600160a01b038216600482015260009030906304bd462990602401602060405180830381865afa158015612daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd39190613a18565b90506000198103612dec57612b9e83611a7b8585612d08565b610977612dfd84611a7b8686612d08565b82612a6e565b600c820154600090600160a81b900460ff1680612e2857506001600160a01b03821630145b15612e35575060006108cc565b604051632355178960e11b81526001600160a01b038316600482015230906346aa2f1290602401602060405180830381865afa158015612e79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9d9190613a18565b905060001981146108cc57610977838260006125bb565b60006001600160a01b038616612edc5760405162461bcd60e51b81526004016109be90613aeb565b612710821115612f205760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b60448201526064016109be565b336001600160a01b03861614612f3c57612f3c8786338661262c565b86546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fac9190613a18565b90506000868210156130e457604051633d6cb57560e01b815282880360048201523090633d6cb57590602401600060405180830381600087803b158015612ff257600080fd5b505af1158015613006573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa15801561304e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130729190613a18565b9150868210156130e457508086036127108510156130e0576127106130978689613a9f565b6130a19190613ab6565b8111156130e05760405162461bcd60e51b815260206004820152600d60248201526c746f6f206d756368206c6f737360981b60448201526064016109be565b8196505b6130ee8188613a8c565b8a60060160008282546131019190613ad8565b9091555061311290508a8988612996565b6131266001600160a01b0384168a89613241565b60408051888152602081018890526001600160a01b03808b1692908c169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4509498975050505050505050565b60008061318d868686613271565b905060018360028111156131a3576131a3613e87565b1480156131c05750600084806131bb576131bb613a31565b868809115b1561248a57612608600182613a8c565b6040516001600160a01b038085166024830152831660448201526064810182905261323b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261335b565b50505050565b6040516001600160a01b038316602482015260448101829052611ebe90849063a9059cbb60e01b90606401613204565b60008080600019858709858702925082811083820303915050806000036132ab578382816132a1576132a1613a31565b0492505050610977565b8084116132f25760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016109be565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006133b0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134309092919063ffffffff16565b90508051600014806133d15750808060200190518101906133d19190613e9d565b611ebe5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109be565b6060611df0848460008585600080866001600160a01b031685876040516134579190613ebf565b60006040518083038185875af1925050503d8060008114613494576040519150601f19603f3d011682016040523d82523d6000602084013e613499565b606091505b50915091506134aa878383876134b5565b979650505050505050565b6060831561352457825160000361351d576001600160a01b0385163b61351d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109be565b5081611df0565b611df083838151156135395781518083602001fd5b8060405162461bcd60e51b81526004016109be9190613577565b60005b8381101561356e578181015183820152602001613556565b50506000910152565b6020815260008251806020840152613596816040850160208701613553565b601f01601f19169190910160400192915050565b6000602082840312156135bc57600080fd5b5035919050565b6001600160a01b03811681146110c057600080fd5b80356135e3816135c3565b919050565b600080604083850312156135fb57600080fd5b8235613606816135c3565b946020939093013593505050565b60008060006060848603121561362957600080fd5b8335613634816135c3565b92506020840135613644816135c3565b929592945050506040919091013590565b60006020828403121561366757600080fd5b8135610977816135c3565b6000806040838503121561368557600080fd5b823591506020830135613697816135c3565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136e1576136e16136a2565b604052919050565b600067ffffffffffffffff821115613703576137036136a2565b50601f01601f191660200190565b600080600080600060a0868803121561372957600080fd5b8535613734816135c3565b9450602086013567ffffffffffffffff81111561375057600080fd5b8601601f8101881361376157600080fd5b803561377461376f826136e9565b6136b8565b81815289602083850101111561378957600080fd5b816020840160208301376000602083830101528096505050506137ae604087016135d8565b92506137bc606087016135d8565b91506137ca608087016135d8565b90509295509295909350565b600080600080608085870312156137ec57600080fd5b8435935060208501356137fe816135c3565b9250604085013561380e816135c3565b9396929550929360600135925050565b61ffff811681146110c057600080fd5b60006020828403121561384057600080fd5b81356109778161381e565b60008060006060848603121561386057600080fd5b833592506020840135613872816135c3565b91506040840135613882816135c3565b809150509250925092565b600080602083850312156138a057600080fd5b823567ffffffffffffffff808211156138b857600080fd5b818501915085601f8301126138cc57600080fd5b8135818111156138db57600080fd5b8660208285010111156138ed57600080fd5b60209290920196919550909350505050565b60ff811681146110c057600080fd5b600080600080600080600060e0888a03121561392957600080fd5b8735613934816135c3565b96506020880135613944816135c3565b955060408801359450606088013593506080880135613962816138ff565b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561399257600080fd5b823561399d816135c3565b91506020830135613697816135c3565b600181811c908216806139c157607f821691505b6020821081036128c957634e487b7160e01b600052602260045260246000fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060208284031215613a2a57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008060408385031215613a5a57600080fd5b8251613a658161381e565b6020840151909250613697816135c3565b634e487b7160e01b600052601160045260246000fd5b808201808211156108cc576108cc613a76565b80820281158282048414176108cc576108cc613a76565b600082613ad357634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108cc576108cc613a76565b6020808252600c908201526b5a45524f204144445245535360a01b604082015260600190565b600060208284031215613b2357600080fd5b815167ffffffffffffffff811115613b3a57600080fd5b8201601f81018413613b4b57600080fd5b8051613b5961376f826136e9565b818152856020838501011115613b6e57600080fd5b61248a826020830160208601613553565b61797360f01b815260008251613b9c816002850160208701613553565b9190910160020192915050565b601f821115611ebe57600081815260208120601f850160051c81016020861015613bd05750805b601f850160051c820191505b81811015613bef57828155600101613bdc565b505050505050565b815167ffffffffffffffff811115613c1157613c116136a2565b613c2581613c1f84546139ad565b84613ba9565b602080601f831160018114613c5a5760008415613c425750858301515b600019600386901b1c1916600185901b178555613bef565b600085815260208120601f198616915b82811015613c8957888601518255948401946001909101908401613c6a565b5085821015613ca75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613cc957600080fd5b8151610977816138ff565b600181815b80851115613d0f578160001904821115613cf557613cf5613a76565b80851615613d0257918102915b93841c9390800290613cd9565b509250929050565b600082613d26575060016108cc565b81613d33575060006108cc565b8160018114613d495760028114613d5357613d6f565b60019150506108cc565b60ff841115613d6457613d64613a76565b50506001821b6108cc565b5060208310610133831016604e8410600b8410161715613d92575081810a6108cc565b613d9c8383613cd4565b8060001904821115613db057613db0613a76565b029392505050565b600061097760ff841683613d17565b67ffffffffffffffff831115613ddf57613ddf6136a2565b613df383613ded83546139ad565b83613ba9565b6000601f841160018114613e275760008515613e0f5750838201355b600019600387901b1c1916600186901b1783556126bb565b600083815260209020601f19861690835b82811015613e585786850135825560209485019460019092019101613e38565b5086821015613e755760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215613eaf57600080fd5b8151801515811461097757600080fd5b60008251613ed1818460208701613553565b919091019291505056fea264697066735822122078217b19cda59fa3b0dd000bd2e8ed5e9eb975c62f213df8a6e2f9454ec72e3764736f6c63430008120033000000000000000000000000770d0d1fb036483ed4abb6d53c1c88fb277d812f