0 txs
138 calls
constructor
constructor(address _addressProvider, address _pool, string _name)
functions
accountFactory
viewfunction accountFactory() view returns (address)
adapterToContract
viewfunction adapterToContract(address) view returns (address)
addressProvider
viewfunction addressProvider() view returns (address)
calcDebtAndCollateral
viewfunction calcDebtAndCollateral(address creditAccount, uint8 task) view returns (tuple cdd)
collateralTokenByMask
viewfunction collateralTokenByMask(uint256 tokenMask) view returns (address token, uint16 liquidationThreshold)
collateralTokensCount
viewfunction collateralTokensCount() view returns (uint8)
contractToAdapter
viewfunction contractToAdapter(address) view returns (address)
creditAccountInfo
viewfunction creditAccountInfo(address) view returns (uint256 debt, uint256 cumulativeIndexLastUpdate, uint128 cumulativeQuotaInterest, uint128 quotaFees, uint256 enabledTokensMask, uint16 flags, uint64 lastDebtUpdate, address borrower)
creditAccounts
viewfunction creditAccounts() view returns (address[])
creditAccounts
viewfunction creditAccounts(uint256 offset, uint256 limit) view returns (address[] result)
creditAccountsLen
viewfunction creditAccountsLen() view returns (uint256)
creditConfigurator
viewfunction creditConfigurator() view returns (address)
creditFacade
viewfunction creditFacade() view returns (address)
enabledTokensMaskOf
viewfunction enabledTokensMaskOf(address creditAccount) view returns (uint256)
fees
viewfunction fees() view returns (uint16 _feeInterest, uint16 _feeLiquidation, uint16 _liquidationDiscount, uint16 _feeLiquidationExpired, uint16 _liquidationDiscountExpired)
flagsOf
viewfunction flagsOf(address creditAccount) view returns (uint16)
getActiveCreditAccountOrRevert
viewfunction getActiveCreditAccountOrRevert() view returns (address creditAccount)
getBorrowerOrRevert
viewfunction getBorrowerOrRevert(address creditAccount) view returns (address borrower)
getTokenByMask
viewfunction getTokenByMask(uint256 tokenMask) view returns (address token)
getTokenMaskOrRevert
viewfunction getTokenMaskOrRevert(address token) view returns (uint256 tokenMask)
isLiquidatable
viewfunction isLiquidatable(address creditAccount, uint16 minHealthFactor) view returns (bool)
liquidationThresholds
viewfunction liquidationThresholds(address token) view returns (uint16 lt)
ltParams
viewfunction ltParams(address token) view returns (uint16 ltInitial, uint16 ltFinal, uint40 timestampRampStart, uint24 rampDuration)
maxEnabledTokens
viewfunction maxEnabledTokens() view returns (uint8)
name
viewfunction name() view returns (string)
pool
viewfunction pool() view returns (address)
poolQuotaKeeper
viewfunction poolQuotaKeeper() view returns (address)
priceOracle
viewfunction priceOracle() view returns (address)
quotedTokensMask
viewfunction quotedTokensMask() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
version
viewfunction version() view returns (uint256)
addCollateral
nonpayablefunction addCollateral(address payer, address creditAccount, address token, uint256 amount) returns (uint256 tokensToEnable)
addToken
nonpayablefunction addToken(address token)
approveCreditAccount
nonpayablefunction approveCreditAccount(address token, uint256 amount)
approveToken
nonpayablefunction approveToken(address creditAccount, address token, address spender, uint256 amount)
closeCreditAccount
nonpayablefunction closeCreditAccount(address creditAccount)
execute
nonpayablefunction execute(bytes data) returns (bytes result)
externalCall
nonpayablefunction externalCall(address creditAccount, address target, bytes callData) returns (bytes result)
fullCollateralCheck
nonpayablefunction fullCollateralCheck(address creditAccount, uint256 enabledTokensMask, uint256[] collateralHints, uint16 minHealthFactor, bool useSafePrices) returns (uint256 enabledTokensMaskAfter)
liquidateCreditAccount
nonpayablefunction liquidateCreditAccount(address creditAccount, tuple collateralDebtData, address to, bool isExpired) returns (uint256 remainingFunds, uint256 loss)
manageDebt
nonpayablefunction manageDebt(address creditAccount, uint256 amount, uint256 enabledTokensMask, uint8 action) returns (uint256 newDebt, uint256 tokensToEnable, uint256 tokensToDisable)
openCreditAccount
nonpayablefunction openCreditAccount(address onBehalfOf) returns (address creditAccount)
revokeAdapterAllowances
nonpayablefunction revokeAdapterAllowances(address creditAccount, tuple[] revocations)
setActiveCreditAccount
nonpayablefunction setActiveCreditAccount(address creditAccount)
setCollateralTokenData
nonpayablefunction setCollateralTokenData(address token, uint16 ltInitial, uint16 ltFinal, uint40 timestampRampStart, uint24 rampDuration)
setContractAllowance
nonpayablefunction setContractAllowance(address adapter, address targetContract)
setCreditConfigurator
nonpayablefunction setCreditConfigurator(address _creditConfigurator)
setCreditFacade
nonpayablefunction setCreditFacade(address _creditFacade)
setFees
nonpayablefunction setFees(uint16 _feeInterest, uint16 _feeLiquidation, uint16 _liquidationDiscount, uint16 _feeLiquidationExpired, uint16 _liquidationDiscountExpired)
setFlagFor
nonpayablefunction setFlagFor(address creditAccount, uint16 flag, bool value)
setMaxEnabledTokens
nonpayablefunction setMaxEnabledTokens(uint8 _maxEnabledTokens)
setPriceOracle
nonpayablefunction setPriceOracle(address _priceOracle)
setQuotedMask
nonpayablefunction setQuotedMask(uint256 _quotedTokensMask)
updateQuota
nonpayablefunction updateQuota(address creditAccount, address token, int96 quotaChange, uint96 minQuota, uint96 maxQuota) returns (uint256 tokensToEnable, uint256 tokensToDisable)
withdrawCollateral
nonpayablefunction withdrawCollateral(address creditAccount, address token, uint256 amount, address to) returns (uint256 tokensToDisable)
events
SetCreditConfigurator
event SetCreditConfigurator(address indexed newConfigurator)
errors
ActiveCreditAccountNotSetException
error ActiveCreditAccountNotSetException()
ActiveCreditAccountOverridenException
error ActiveCreditAccountOverridenException()
AllowanceFailedException
error AllowanceFailedException()
CallerNotAdapterException
error CallerNotAdapterException()
CallerNotConfiguratorException
error CallerNotConfiguratorException()
CallerNotCreditFacadeException
error CallerNotCreditFacadeException()
CloseAccountWithNonZeroDebtException
error CloseAccountWithNonZeroDebtException()
CreditAccountDoesNotExistException
error CreditAccountDoesNotExistException()
DebtToZeroWithActiveQuotasException
error DebtToZeroWithActiveQuotasException()
DebtUpdatedTwiceInOneBlockException
error DebtUpdatedTwiceInOneBlockException()
IncorrectParameterException
error IncorrectParameterException()
InsufficientRemainingFundsException
error InsufficientRemainingFundsException()
NotEnoughCollateralException
error NotEnoughCollateralException()
SafeTransferFromFailed
error SafeTransferFromFailed()
TargetContractNotAllowedException
error TargetContractNotAllowedException()
TokenAlreadyAddedException
error TokenAlreadyAddedException()
TokenNotAllowedException
error TokenNotAllowedException()
TooManyEnabledTokensException
error TooManyEnabledTokensException()
TooManyTokensException
error TooManyTokensException()
UpdateQuotaOnZeroDebtAccountException
error UpdateQuotaOnZeroDebtAccountException()
ZeroAddressException
error ZeroAddressException()
creation bytecode
0x6101006040526000805460ff1916600117905560028054600160a21b60ff60a01b199091161790556003805462010000600160b01b031916620100001790553480156200004b57600080fd5b5060405162005754380380620057548339810160408190526200006e9162000381565b6001600160a01b03808416608052821660e081905260408051632495a59960e01b81529051632495a599916004808201926020929091908290030181865afa158015620000bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e591906200047b565b6001600160a01b031660c0819052620000fe9062000255565b608051604051632bdad0e360e11b81526b50524943455f4f5241434c4560a01b600482015261012c60248201526001600160a01b03909116906357b5a1c690604401602060405180830381865afa1580156200015e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018491906200047b565b600280546001600160a01b0319166001600160a01b03928316179055608051604051632bdad0e360e11b81526e4143434f554e545f464143544f525960881b6004820152600060248201529116906357b5a1c690604401602060405180830381865afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f91906200047b565b6001600160a01b031660a052600180546001600160a01b03191633179055600c6200024b82826200052f565b50505050620005fb565b6001600160a01b038116600090815260066020526040902054156200028d57604051632e5a5c7760e01b815260040160405180910390fd5b60025460ff600160a81b909104811610620002bb57604051633f02862960e11b815260040160405180910390fd5b600280546001600160a01b039092166000818152600660209081526040808320600160ff600160a81b98899004811682901b928390559185526005909352922080547fffffff0000000000ffffffff00000000000000000000000000000000000000001690931764ffffffffff60c01b17909255825484810482169092011690920260ff60a81b19909216919091179055565b80516001600160a01b03811681146200036657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156200039757600080fd5b620003a2846200034e565b92506020620003b38186016200034e565b60408601519093506001600160401b0380821115620003d157600080fd5b818701915087601f830112620003e657600080fd5b815181811115620003fb57620003fb6200036b565b604051601f8201601f19908116603f011681019083821181831017156200042657620004266200036b565b816040528281528a868487010111156200043f57600080fd5b600093505b8284101562000463578484018601518185018701529285019262000444565b60008684830101528096505050505050509250925092565b6000602082840312156200048e57600080fd5b62000499826200034e565b9392505050565b600181811c90821680620004b557607f821691505b602082108103620004d657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200052a57600081815260208120601f850160051c81016020861015620005055750805b601f850160051c820191505b81811015620005265782815560010162000511565b5050505b505050565b81516001600160401b038111156200054b576200054b6200036b565b62000563816200055c8454620004a0565b84620004dc565b602080601f8311600181146200059b5760008415620005825750858301515b600019600386901b1c1916600185901b17855562000526565b600085815260208120601f198616915b82811015620005cc57888601518255948401946001909101908401620005ab565b5085821015620005eb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161508c620006c8600039600081816103dd0152818161129601528181611cac015281816121210152818161268501528181612c2d0152612ff401526000818161074501528181610d67015281816112750152818161145f01528181611e3901528181612100015281816121c7015281816128b801528181612958015281816129e901528181613100015281816134b40152818161357501526138e201526000818161071e0152818161155101526119cf0152600061042f015261508c6000f3fe608060405234801561001057600080fd5b506004361061036d5760003560e01c8063741f3e3c116101d3578063d5c2f48611610104578063f206d32a116100a2578063f9f0ca661161007c578063f9f0ca661461099f578063fa30b30f146109cb578063fdd57645146109de578063ff68754314610a0757600080fd5b8063f206d32a14610966578063f30ba49914610979578063f9aa028a1461098c57600080fd5b8063e0f83824116100de578063e0f838241461092f578063e2f1490f14610938578063eb23d33e1461094b578063f13d0fc61461095e57600080fd5b8063d5c2f486146108f6578063dc2b21c114610909578063e09357a41461091c57600080fd5b806386dfa53611610171578063be8da14b1161014b578063be8da14b146108b5578063c53afb1e146108bd578063c544cf7d146108d0578063d48bfca7146108e357600080fd5b806386dfa536146108215780639af1d35a14610834578063acb0e845146108a257600080fd5b806380213c74116101ad57806380213c74146107a8578063830aa745146107bb5780638340e24d146107ce578063845104de146107f157600080fd5b8063741f3e3c146107675780637687f6701461076f578063783274381461078257600080fd5b806334878f54116102ad57806352c5fe111161024b5780635a6f45de116102255780635a6f45de146106de578063604ca15f146106f1578063687cd9c1146107195780636f307dc31461074057600080fd5b806352c5fe111461068d578063530e784f146106c257806354fd4d50146106d557600080fd5b8063432017e811610287578063432017e81461062557806343fe7bbe14610653578063458936f5146106665780634fc0e3a81461067a57600080fd5b806334878f541461051f5780633c5bc3b2146105275780633d7e5dc41461060457600080fd5b80632954018c1161031a5780632f232138116102f45780632f232138146104975780632f7a1881146104aa5780633031b01a146104c25780633201de4c146104d557600080fd5b80632954018c1461042a5780632c521c06146104515780632c9db6f11461047757600080fd5b806312ef080d1161034b57806312ef080d146103c357806316f0115b146103d85780632630c12f1461041757600080fd5b806306fdde031461037257806309c5eabe146103905780630d334ca6146103a3575b600080fd5b61037a610a30565b60405161038791906141a7565b60405180910390f35b61037a61039e3660046141fc565b610abe565b6103b66103b136600461425e565b610b0e565b60405161038791906142df565b6103d66103d13660046143bb565b610c46565b005b6103ff7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610387565b6002546103ff906001600160a01b031681565b6103ff7f000000000000000000000000000000000000000000000000000000000000000081565b60025461046590600160a01b900460ff1681565b60405160ff9091168152602001610387565b61048a61048536600461440c565b610c82565b604051610387919061442e565b6103d66104a5366004614453565b610d5d565b6000546103ff9061010090046001600160a01b031681565b6103d66104d03660046144d2565b610e82565b6104e86104e336600461455a565b610f6b565b6040805161ffff958616815294909316602085015264ffffffffff9091169183019190915262ffffff166060820152608001610387565b6103ff610fff565b6105a661053536600461455a565b60096020526000908152604090208054600182015460028301546003840154600490940154929391926001600160801b0380831693600160801b90930416919061ffff81169062010000810467ffffffffffffffff16906a010000000000000000000090046001600160a01b031688565b6040805198895260208901979097526001600160801b0395861696880196909652939092166060860152608085015261ffff1660a084015267ffffffffffffffff1660c08301526001600160a01b031660e082015261010001610387565b610617610612366004614590565b61104f565b604051908152602001610387565b610638610633366004614642565b611143565b60408051938452602084019290925290820152606001610387565b6103ff61066136600461455a565b6114f2565b60025461046590600160a81b900460ff1681565b6103ff610688366004614690565b611612565b6106a061069b366004614690565b611626565b604080516001600160a01b03909316835261ffff909116602083015201610387565b6103d66106d036600461455a565b61163d565b61061761012d81565b6106176106ec3660046146a9565b611674565b6107046106ff36600461470b565b6116e9565b60408051928352602083019190915201610387565b6103ff7f000000000000000000000000000000000000000000000000000000000000000081565b6103ff7f000000000000000000000000000000000000000000000000000000000000000081565b61048a61190e565b6103d661077d36600461455a565b61191f565b61079561079036600461455a565b611a69565b60405161ffff9091168152602001610387565b6103d66107b6366004614775565b611a8a565b6106176107c93660046143bb565b611b82565b6107e16107dc3660046147a3565b611bd6565b6040519015158152602001610387565b6107956107ff36600461455a565b6001600160a01b031660009081526009602052604090206004015461ffff1690565b6103d661082f366004614690565b611c50565b61086d60025460035461ffff600160c01b8304811693600160d01b8404821693600160e01b8104831693600160f01b9091048316921690565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a001610387565b6103d66108b036600461455a565b611c61565b6103ff611ca8565b6103ff6108cb36600461455a565b611d2c565b6103d66108de3660046147d8565b611d94565b6103d66108f136600461455a565b611e21565b61061761090436600461455a565b611e35565b6103d6610917366004614821565b611eb3565b6103d661092a36600461455a565b611ef6565b61061760045481565b610704610946366004614844565b611fc3565b61037a6109593660046148b4565b6122ab565b6106176122ed565b6103d6610974366004614919565b6122f9565b6103d661098736600461455a565b6123d6565b6001546103ff906001600160a01b031681565b6106176109ad36600461455a565b6001600160a01b031660009081526009602052604090206003015490565b6103d66109d936600461497e565b612435565b6103ff6109ec36600461455a565b6008602052600090815260409020546001600160a01b031681565b6103ff610a1536600461455a565b6007602052600090815260409020546001600160a01b031681565b600c8054610a3d906149aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610a69906149aa565b8015610ab65780601f10610a8b57610100808354040283529160200191610ab6565b820191906000526020600020905b815481529060010190602001808311610a9957829003601f168201915b505050505081565b6060610ac861246c565b6000805460ff19166002178155610add6124e2565b90506000610ae9610fff565b9050610af781838787612532565b925050506000805460ff1916600117905592915050565b610b92604051806101c0016040528060008152602001600081526020016000815260200160006001600160801b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016060815260200160006001600160a01b031681525090565b6002826004811115610ba657610ba66149e4565b03610bdd576040517f47fbaa9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006004836004811115610bf357610bf36149e4565b03610c0057506003915060015b610c0984611d2c565b506060610c3d85610c32876001600160a01b031660009081526009602052604090206003015490565b8361271088876125ac565b95945050505050565b610c4e61246c565b6000805460ff19166002179055610c63612a22565b610c6f84848484612a6b565b50506000805460ff191660011790555050565b60606000610c90600a612a90565b9050600081610c9f8587614a10565b11610caa5783610cc3565b818511610cc057610cbb8583614a23565b610cc3565b60005b90508067ffffffffffffffff811115610cde57610cde614a36565b604051908082528060200260200182016040528015610d07578160200160208202803683370190505b50925060005b81811015610d5457610d22600a878301612a9a565b848281518110610d3457610d34614a4c565b6001600160a01b0390921660209283029190910190910152600101610d0d565b50505092915050565b610d65612aad565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610dbd576002805461ffff60b01b1916600160b01b61ffff871602179055610e7b565b6000610dc886611e35565b600090815260056020526040902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b61ffff8881169190910261ffff60b01b191691909117600160b01b918716919091021777ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b64ffffffffff8616027cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160e81b62ffffff851602179055505b5050505050565b610e8a61246c565b6000805460ff19166002179055610e9f612a22565b8060005b81811015610f57576000848483818110610ebf57610ebf614a4c565b610ed5926020604090920201908101915061455a565b90506000858584818110610eeb57610eeb614a4c565b9050604002016020016020810190610f03919061455a565b90506001600160a01b0382161580610f2257506001600160a01b038116155b15610f4057604051635919af9760e11b815260040160405180910390fd5b610f4d8782846000612a6b565b5050600101610ea3565b50506000805460ff19166001179055505050565b6000806000806000610f7c86611e35565b600090815260056020908152604091829020825160a08101845290546001600160a01b0381168252600160a01b810461ffff908116938301849052600160b01b820416938201849052600160c01b810464ffffffffff1660608301819052600160e81b90910462ffffff1660809092018290529199929850909650945092505050565b6003546201000090046001600160a01b0316600019810161104c576040517f5cd6b24400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b90565b600061105961246c565b6000805460ff1916600217905561106e612a22565b60006110b488888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250600291508990506125ac565b905061271061ffff168461ffff168260c001516110d19190614a62565b6110db9190614a8f565b8161012001511015611119576040517f532e7bb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806101400151915061112b8883612af1565b506000805460ff191660011790559695505050505050565b600080600061115061246c565b6000805460ff19166002179055611165612a22565b6001600160a01b03871660009081526009602052604090206004810154436201000090910467ffffffffffffffff16036111b2576040516345a1354d60e11b815260040160405180910390fd5b866000036111c957549250600091508190506114d8565b606060006111ff8a8984612710858c60018111156111e9576111e96149e4565b146111f55760016111f8565b60005b60006125ac565b9050600080886001811115611216576112166149e4565b0361124b576112338a836000015184602001518560400151612b62565b90975090506112428a8c612bee565b600195506114a3565b600061125961104c84612c8d565b9050808b1061126657809a505b6112bb6001600160a01b038d167f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008e612cb0565b600080828d036112f0575050602083015160a08401516002870180546001600160801b0316905560009950909250889061135a565b61132f8d86516020880151604089015160608a015160028d8101549054600160801b9091046001600160801b031690600160c01b900461ffff16612d39565b60028c0180546001600160801b03928316600160801b029216919091179055929c5090955090925090505b610180850151511561140b57896000036113a0576040517f51bb745d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846101a001516001600160a01b0316630db1b8ca8f8761018001516040518363ffffffff1660e01b81526004016113d8929190614aa3565b600060405180830381600087803b1580156113f257600080fd5b505af1158015611406573d6000803e3d6000fd5b505050505b84516114249061141c908c90614a23565b826000612fb7565b61142f826001614ac5565b8760020160006101000a8154816001600160801b0302191690836001600160801b0316021790555060016114958f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661305d90919063ffffffff16565b1161149f57600197505b5050505b86845560048401805469ffffffffffffffff00001916620100004367ffffffffffffffff160217905560019093019290925550505b6000805460ff191660011790559196909550909350915050565b6000816114fe816130b7565b61150661246c565b6000805460ff1916600217905561151b612a22565b6040517f21d1845600000000000000000000000000000000000000000000000000000000815260006004820181905260248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906321d18456906044016020604051808303816000875af11580156115a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c69190614ae5565b6001600160a01b0381166000908152600960205260409020605085901b6004820155600160028201559092506115fd600a846130de565b50506000805460ff1916600117905550919050565b600061161f8260006130f3565b5092915050565b6000806116348360016130f3565b91509150915091565b611645612aad565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600061167e61246c565b6000805460ff19166002179055611693612a22565b600061169e85611e35565b90506116b56001600160a01b038716868587612cb0565b60016116ca6001600160a01b0387168861305d565b116116d3578091505b506000805460ff19166001179055949350505050565b6000806116f461246c565b6000805460ff19166002179055611709612a22565b6001600160a01b0387166000908152600960205260408120805490910361175c576040517f2032806600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008061176a611ca8565b6040517f604ca15f0000000000000000000000000000000000000000000000000000000081526001600160a01b038e811660048301528d81166024830152600b8d900b60448301526bffffffffffffffffffffffff808d1660648401528b166084830152919091169063604ca15f9060a4016080604051808303816000875af11580156117fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181f9190614b17565b9350935093509350811561183d576118368b611e35565b965061184f565b801561184f5761184c8b611e35565b95505b60028501805485919060009061186f9084906001600160801b0316614ac5565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826001600160801b03166000146118ef57828560020160108282829054906101000a90046001600160801b03166118ca9190614ac5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b50506000805460ff191660011790555092989197509095505050505050565b606061191a600a6131bb565b905090565b61192761246c565b6000805460ff1916600217905561193c612a22565b6001600160a01b038116600090815260096020526040902080541561198d576040517f3216f22100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600482810182905560038301919091556040517f89b77b3e0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916389b77b3e91611a11918691016001600160a01b0391909116815260200190565b600060405180830381600087803b158015611a2b57600080fd5b505af1158015611a3f573d6000803e3d6000fd5b50505050611a5782600a6131c890919063ffffffff16565b50506000805460ff1916600117905550565b600080611a7583611e35565b9050611a828160016130f3565b949350505050565b611a92612aad565b6001600160a01b038116301480611ab157506001600160a01b03821630145b15611ae8576040517ffc1a554300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821615611b33576001600160a01b038281166000908152600760205260409020805473ffffffffffffffffffffffffffffffffffffffff19169183169190911790555b6001600160a01b03811615611b7e576001600160a01b038181166000908152600860205260409020805473ffffffffffffffffffffffffffffffffffffffff19169184169190911790555b5050565b6000611b8c61246c565b6000805460ff19166002179055611ba1612a22565b611baa83611e35565b9050611bc16001600160a01b0384168686856131dd565b6000805460ff19166001179055949350505050565b6000611be183611d2c565b5060606000611c1785611c0c876001600160a01b031660009081526009602052604090206003015490565b8487600260006125ac565b905061271061ffff168461ffff168260c00151611c349190614a62565b611c3e9190614a8f565b81610120015110925050505b92915050565b611c58612aad565b60011916600455565b611c69612aad565b600080546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663be8da14b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a9190614ae5565b6001600160a01b038082166000908152600960205260409020600401546a010000000000000000000090041680611d8f576040517f309d150100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b611d9c61246c565b6000805460ff19166002179055611db1612a22565b8015611ded576001600160a01b0383166000908152600960205260409020600401805461ffff8481169082161761ffff19909116179055611a57565b6001600160a01b0383166000908152600960205260409020600401805461ffff841982161661ffff19909116179055611a57565b611e29612aad565b611e3281613277565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611e7857506001919050565b506001600160a01b03811660009081526006602052604081205490819003611d8f5760405163700ca0af60e01b815260040160405180910390fd5b611ebb612aad565b6002805460ff909216600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b611efe61246c565b6000805460ff19166002179055611f13612a22565b6003546201000090046001600160a01b0316600114801590611f3f57506001600160a01b038116600114155b15611f76576040517f44a8a06500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911790556000805460ff19166001179055565b600080611fce61246c565b6000805460ff19166002179055611fe3612a22565b60008060006120488661200357600254600160d01b900461ffff16612012565b600254600160f01b900461ffff165b8761202a57600254600160e01b900461ffff16612032565b60035461ffff165b61104c8061203f8d614c5a565b939291906133d0565b96509194509250905061205f610180890189614d3c565b1590506120eb576120786101c089016101a08a0161455a565b6001600160a01b031663fcde5ddc8a6120956101808c018c614d3c565b600089116040518563ffffffff1660e01b81526004016120b89493929190614d86565b600060405180830381600087803b1580156120d257600080fd5b505af11580156120e6573d6000803e3d6000fd5b505050505b8215612146576121466001600160a01b038a167f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000086612cb0565b61215288358286612fb7565b60006121638a8a61014001356134a4565b9096509050828610156121a2576040517f67016e2d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121b0848803836135b0565b905080156121f3576121ed6001600160a01b038c167f00000000000000000000000000000000000000000000000000000000000000008b84612cb0565b80870396505b506001600160a01b038a1660009081526009602052604090206004810154436201000090910467ffffffffffffffff1603612241576040516345a1354d60e11b815260040160405180910390fd5b6000815560048101805469ffffffffffffffff00001916620100004367ffffffffffffffff160217905561227f6101408b01356101608c0135191690565b6003820155600160029091018190556000805460ff191690911790555093989297509195505050505050565b60606122b561246c565b6000805460ff191660021790556122ca612a22565b6122d685858585612532565b90506000805460ff19166001179055949350505050565b600061191a600a612a90565b612301612aad565b600280547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b61ffff978816027fffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160d01b95871695909502949094177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b938616939093027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217600160f01b91851691909102179091556003805461ffff191691909216179055565b6123de612aad565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517fd87efcee33ed285df83ed2ffd66f67c15e0ecf17eb1f1705adae3ae2f1778da090600090a250565b61243d61246c565b6000805460ff191660021781556124526124e2565b9050600061245e610fff565b9050610c6f81858486612a6b565b60005460ff16600119016124e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640160405180910390fd5b565b336000908152600760205260409020546001600160a01b03168061104c576040517f5535a8f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051631cff79cd60e01b81526060906001600160a01b03861690631cff79cd9061256590879087908790600401614dee565b6000604051808303816000875af1158015612584573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c3d9190810190614e2d565b612630604051806101c0016040528060008152602001600081526020016000815260200160006001600160801b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016060815260200160006001600160a01b031681525090565b6001600160a01b038088166000908152600960209081526040918290208054855260018101548584015282517ffaaba9e2000000000000000000000000000000000000000000000000000000008152925190937f0000000000000000000000000000000000000000000000000000000000000000169263faaba9e29260048083019391928290030181865afa1580156126cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f19190614ec1565b6020830152600084600481111561270a5761270a6149e4565b036127155750612a18565b6101408201879052612725611ca8565b6001600160a01b03166101a08301819052606090612748908a908a908a906135c6565b6101608701526001600160801b039182166060870152610180860192909252600284015491925061277c9160019116614eda565b8360600181815161278d9190614ac5565b6001600160801b03169052508251604084015160208501516127b092919061381d565b60808401819052600254612710916127d391600160c01b900461ffff1690614a62565b6127dd9190614a8f565b60028301546127fc9190600160801b90046001600160801b0316614a10565b60a084015260608301516080840180516001600160801b0390921691612823908390614a10565b90525060025460608401516127109161284891600160c01b90910461ffff1690614efa565b6128529190614f1d565b6001600160801b03168360a00181815161286c9190614a10565b9052506001856004811115612883576128836149e4565b0361288f575050612a18565b6002546001600160a01b031660006128a961104c86612c8d565b905080156128e6576128dc82827f000000000000000000000000000000000000000000000000000000000000000061384f565b60c0860152612908565b60028760048111156128fa576128fa6149e4565b036129085750505050612a18565b506000600287600481111561291f5761291f6149e4565b1461292c5760001961294e565b60c0850151612710906129449061ffff8b1690614a62565b61294e9190614a8f565b9050600061299c8c7f0000000000000000000000000000000000000000000000000000000000000000848d886130f38d61298a5761384f61298e565b6138de5b8d969594939291908b6139b3565b610120890191909152610100880191909152905080198b1661014087015260028860048111156129ce576129ce6149e4565b036129dd575050505050612a18565b612a0d838761010001517f0000000000000000000000000000000000000000000000000000000000000000613a7b565b60e087015250505050505b9695505050505050565b60005461010090046001600160a01b031633146124e0576040517f0c1d6a3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a7483611e35565b50612a8a6001600160a01b038516848484613acd565b50505050565b6000611c4a825490565b6000612aa68383613afd565b9392505050565b6001546001600160a01b031633146124e0576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600160a01b900460ff16612b0b6001198316613b27565b1115612b43576040517f30b5495c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03909116600090815260096020526040902060030155565b60008084600003612b77575084905082612be5565b612b818686614a10565b9150612b9186633b9aca00614a62565b8386612ba187633b9aca00614a62565b612bab9190614a62565b612bb59190614a8f565b612bbf9190614a10565b633b9aca00612bce8487614a62565b612bd89190614a62565b612be29190614a8f565b90505b94509492505050565b6040517fbf28068b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063bf28068b90604401600060405180830381600087803b158015612c7157600080fd5b505af1158015612c85573d6000803e3d6000fd5b505050505050565b60a08101516080820151825160009291612ca691614a10565b611c4a9190614a10565b6040517fd1660f990000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015283811660248301526044820183905285169063d1660f9990606401600060405180830381600087803b158015612d1b57600080fd5b505af1158015612d2f573d6000803e3d6000fd5b5050505050505050565b6000808080808b6001600160801b03881615612d8157876001600160801b0316811115612d78576001600160801b038816935060009150839003612d81565b92505081860360005b6001600160801b03891615801590612d9857508015155b15612e75576000612710612db061ffff8a168c614efa565b612dba9190614f1d565b6001600160801b03169050808a6001600160801b0316612dda9190614a10565b8210612e1457612df3816001600160801b038c16614a10565b612dfd9083614a23565b9150612e098186614a10565b945060009350612e6f565b6000612e2289612710614f43565b61ffff16612e3261271085614a62565b612e3c9190614a8f565b9050612e488184614a23565b612e529087614a10565b955060009250612e6b816001600160801b038d16614a23565b9450505b50612e79565b8892505b8015612f97576000612e8c8d8c8e61381d565b90506000612710612ea161ffff8b1684614a62565b612eab9190614a8f565b9050612eb78183614a10565b8310612ee757612ec78183614a10565b612ed19084614a23565b9250612edd8187614a10565b95508c9650612f90565b6000612ef58a612710614f43565b61ffff16612f0561271086614a62565b612f0f9190614a8f565b9050612f1b8185614a23565b612f259088614a10565b9650600093508e8d612f3b83633b9aca00614a62565b612f459190614a62565b612f4f9190614a8f565b612f5d8f633b9aca00614a62565b612f679190614a23565b8d8f633b9aca00612f789190614a62565b612f829190614a62565b612f8c9190614a8f565b9750505b5050612f9b565b8994505b612fa5818d614a23565b95505097509750975097509792505050565b6040517fca9505e40000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ca9505e490606401600060405180830381600087803b15801561304057600080fd5b505af1158015613054573d6000803e3d6000fd5b50505050505050565b7f70a08231000000000000000000000000000000000000000000000000000000006000818152600483905290602082602481875afa600051925060203d10811517156130af576040513d6000823e3d81fd5b505092915050565b6001600160a01b038116611e3257604051635919af9760e11b815260040160405180910390fd5b6000612aa6836001600160a01b038416613b41565b6000806001840361313c577f0000000000000000000000000000000000000000000000000000000000000000915082156131375750600254600160b01b900461ffff165b6131b4565b600084815260056020526040902080546001600160a01b0381169350836131765760405163700ca0af60e01b815260040160405180910390fd5b84156131b15761ffff60a082901c81169060b083901c1664ffffffffff60c084901c1660e884901c6131aa84848484613b90565b9650505050505b50505b9250929050565b60606000612aa683613be7565b6000612aa6836001600160a01b038416613c43565b60006323b872dd60e01b905060006040518281528560048201528460248201528360448201526020600060648360008b5af1915050801561323b573d801561323157600160005114601f3d11169150613239565b6000873b1191505b505b80612c85576040517ff405907100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b191690565b6001600160a01b038116600090815260066020526040902054156132c7576040517f2e5a5c7700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460ff600160a81b90910481161061330d576040517f7e050c5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280546001600160a01b039092166000818152600660209081526040808320600160ff600160a81b98899004811682901b928390559185526005909352922080547fffffff0000000000ffffffff0000000000000000000000000000000000000000169093177cffffffffff0000000000000000000000000000000000000000000000001790925582548481048216909201169092027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000806000806133df89612c8d565b9350600089608001518a600001516133f79190614a10565b60e08b0151909150600061271061341261ffff8c1684614a62565b61341c9190614a8f565b905061271061342f61ffff8d1684614a62565b6134399190614a8f565b6134439088614a10565b96506000613454888b63ffffffff16565b90508082111561346857808203965061347a565b50806134778163ffffffff8b16565b97505b83881061348b578388039550613491565b87840394505b8097505050505095509550955095915050565b6000806134da6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168561305d565b9150819050600119831660008190036134f357506131b4565b6002546001600160a01b031660005b821561356857600061351384614f5e565b8416938418939050600061352682611612565b9050600061353d6001600160a01b0383168b61305d565b905060018111156135605761355385828461384f565b61355d9085614a10565b93505b505050613502565b80156135a65761359982827f0000000000000000000000000000000000000000000000000000000000000000613a7b565b6135a39086614a10565b94505b5050509250929050565b60008183106135bf5781612aa6565b5090919050565b60045460609060009082908681168084036135e5575060009250613812565b6000806135f183613b27565b90508067ffffffffffffffff81111561360c5761360c614a36565b604051908082528060200260200182016040528015613635578160200160208202803683370190505b5096508067ffffffffffffffff81111561365157613651614a36565b60405190808252806020026020018201604052801561367a578160200160208202803683370190505b5089519095506000908c5b851561380b576000828410156136cb578c5160018501948e9181106136ac576136ac614a4c565b602002602001015190508087166000036136c65750613685565b6136d4565b86600003871690505b6000806136e28360016130f3565b915091506000808f6001600160a01b031663f3ef181387866040518363ffffffff1660e01b815260040161372c9291906001600160a01b0392831681529116602082015260400190565b6040805180830381865afa158015613748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376c9190614f96565b91506bffffffffffffffffffffffff169150838f8b8151811061379157613791614a4c565b6001600160a01b03909216602092830291909101909101526bffffffffffffffffffffffff8216606084901b6dffff00000000000000000000000016178d8b815181106137e0576137e0614a4c565b60209081029190910101529c8d019c6001909901986137ff8b86191690565b9a505050505050613685565b5050505050505b945094509450949050565b60008360000361382f57506000612aa6565b838361383b8483614a62565b6138459190614a8f565b611a829190614a23565b6040517ff9a65030000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382811660248301526000919085169063f9a65030906044015b602060405180830381865afa1580156138ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a829190614ec1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146139a8576040517f553552fe000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03838116602483015285169063553552fe90604401602060405180830381865afa15801561397f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a39190614ec1565b611a82565b611a8284848461384f565b60008060008b610180015151600014613a165760006139e3856b033b2e3c9fd0803ce80000008d8963ffffffff16565b90506139f98d6101800151898e848e8b8b613d36565b9094509250898310613a0f575060009050613a6c565b828a039950505b6000613a358d61016001518e610140015161327290919063ffffffff16565b9050600080613a498e8d8d8b8d888d613e23565b95509092509050613a5a8287614a10565b9550613a668186614a10565b94505050505b99509950999650505050505050565b6040517f7afb0104000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03828116602483015260009190851690637afb01049060440161389d565b613adb848484846000613ef1565b612a8a57613aee84848460006001613ef1565b50610e7b848484846001613ef1565b6000826000018281548110613b1457613b14614a4c565b9060005260206000200154905092915050565b60005b8115611d8f57600019820190911690600101613b2a565b6000818152600183016020526040812054613b8857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611c4a565b506000611c4a565b600080613ba262ffffff841685614fc5565b90508364ffffffffff164211613bbb5785915050611a82565b8064ffffffffff16421015613bde57613bd686868684614043565b915050611a82565b84915050611a82565b606081600001805480602002602001604051908101604052809291908181526020018280548015613c3757602002820191906000526020600020905b815481526020019060010190808311613c23575b50505050509050919050565b60008181526001830160205260408120548015613d2c576000613c67600183614a23565b8554909150600090613c7b90600190614a23565b9050818114613ce0576000866000018281548110613c9b57613c9b614a4c565b9060005260206000200154905080876000018481548110613cbe57613cbe614a4c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613cf157613cf1614fe3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611c4a565b6000915050611c4a565b86516000908190815b81811015613e145760008b8281518110613d5b57613d5b614a4c565b60200260200101519050600080613d9e8d8581518110613d7d57613d7d614a4c565b60200260200101516bffffffffffffffffffffffff81169160609190911c90565b909250905060006b033b2e3c9fd0803ce8000000613dbc8d85614a62565b613dc69190614a8f565b9050600080613dd98f8d8d8988886140aa565b509092509050613de9828b614a10565b9950613df5818a614a10565b98505050505050878410613e0b57505050613e17565b50600101613d3f565b50505b97509795505050505050565b8451600090819081908a825b8715613ee157600083821015613e76578b8281518110613e5157613e51614a4c565b60200260200101519050816001019150808916600003613e715750613e2f565b613e84565b613e7f89614f5e565b891690505b6000806000613e96868f8f878f614119565b94509092509050613ea7828b614a10565b9950613eb3818a614a10565b985050508015613ed0578d8710613ecb575050613ee1565b613ed5565b948117945b50199790971696613e2f565b5050509750975097945050505050565b604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790529151631cff79cd60e01b8152600092881691631cff79cd91613f8c918991600401614ff9565b6000604051808303816000875af1925050508015613fcc57506040513d6000823e601f3d908101601f19168201604052613fc99190810190614e2d565b60015b15613fff5780511580613fee575080806020019051810190613fee919061501b565b15613ffd576001915050610c3d565b505b8115614037576040517f2f10a7f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600095945050505050565b600061404f8383615038565b64ffffffffff168364ffffffffff16426140699190614a23565b6140779061ffff8716614a62565b6140884264ffffffffff8616614a23565b6140969061ffff8916614a62565b6140a09190614a10565b610c3d9190614a8f565b60008080806140c26001600160a01b0388168b61305d565b9050600181111561410c576140df8860018303898c63ffffffff16565b93506141056127106140f561ffff891687614a62565b6140ff9190614a8f565b866135b0565b9250600191505b5096509650969350505050565b60008060008060006141308760018a63ffffffff16565b915091506141448a8a8885856000196140aa565b919c909b50909950975050505050505050565b60005b8381101561417257818101518382015260200161415a565b50506000910152565b60008151808452614193816020860160208601614157565b601f01601f19169290920160200192915050565b602081526000612aa6602083018461417b565b60008083601f8401126141cc57600080fd5b50813567ffffffffffffffff8111156141e457600080fd5b6020830191508360208285010111156131b457600080fd5b6000806020838503121561420f57600080fd5b823567ffffffffffffffff81111561422657600080fd5b614232858286016141ba565b90969095509350505050565b6001600160a01b0381168114611e3257600080fd5b8035611d8f8161423e565b6000806040838503121561427157600080fd5b823561427c8161423e565b915060208301356005811061429057600080fd5b809150509250929050565b600081518084526020808501945080840160005b838110156142d45781516001600160a01b0316875295820195908201906001016142af565b509495945050505050565b602081528151602082015260208201516040820152604082015160608201526000606083015161431a60808401826001600160801b03169052565b50608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101408181850152808501519150506101608181850152808501519150506101808181850152808501519150506101c06101a081818601526143a26101e086018461429b565b9501516001600160a01b03169301929092525090919050565b600080600080608085870312156143d157600080fd5b84356143dc8161423e565b935060208501356143ec8161423e565b925060408501356143fc8161423e565b9396929550929360600135925050565b6000806040838503121561441f57600080fd5b50508035926020909101359150565b602081526000612aa6602083018461429b565b803561ffff81168114611d8f57600080fd5b600080600080600060a0868803121561446b57600080fd5b85356144768161423e565b945061448460208701614441565b935061449260408701614441565b9250606086013564ffffffffff811681146144ac57600080fd5b9150608086013562ffffff811681146144c457600080fd5b809150509295509295909350565b6000806000604084860312156144e757600080fd5b83356144f28161423e565b9250602084013567ffffffffffffffff8082111561450f57600080fd5b818601915086601f83011261452357600080fd5b81358181111561453257600080fd5b8760208260061b850101111561454757600080fd5b6020830194508093505050509250925092565b60006020828403121561456c57600080fd5b8135612aa68161423e565b8015158114611e3257600080fd5b8035611d8f81614577565b60008060008060008060a087890312156145a957600080fd5b86356145b48161423e565b955060208701359450604087013567ffffffffffffffff808211156145d857600080fd5b818901915089601f8301126145ec57600080fd5b8135818111156145fb57600080fd5b8a60208260051b850101111561461057600080fd5b60208301965080955050505061462860608801614441565b915061463660808801614585565b90509295509295509295565b6000806000806080858703121561465857600080fd5b84356146638161423e565b9350602085013592506040850135915060608501356002811061468557600080fd5b939692955090935050565b6000602082840312156146a257600080fd5b5035919050565b600080600080608085870312156146bf57600080fd5b84356146ca8161423e565b935060208501356146da8161423e565b92506040850135915060608501356146858161423e565b6bffffffffffffffffffffffff81168114611e3257600080fd5b600080600080600060a0868803121561472357600080fd5b853561472e8161423e565b9450602086013561473e8161423e565b93506040860135600b81900b811461475557600080fd5b92506060860135614765816146f1565b915060808601356144c4816146f1565b6000806040838503121561478857600080fd5b82356147938161423e565b915060208301356142908161423e565b600080604083850312156147b657600080fd5b82356147c18161423e565b91506147cf60208401614441565b90509250929050565b6000806000606084860312156147ed57600080fd5b83356147f88161423e565b925061480660208501614441565b9150604084013561481681614577565b809150509250925092565b60006020828403121561483357600080fd5b813560ff81168114612aa657600080fd5b6000806000806080858703121561485a57600080fd5b84356148658161423e565b9350602085013567ffffffffffffffff81111561488157600080fd5b85016101c0818803121561489457600080fd5b925060408501356148a48161423e565b9150606085013561468581614577565b600080600080606085870312156148ca57600080fd5b84356148d58161423e565b935060208501356148e58161423e565b9250604085013567ffffffffffffffff81111561490157600080fd5b61490d878288016141ba565b95989497509550505050565b600080600080600060a0868803121561493157600080fd5b61493a86614441565b945061494860208701614441565b935061495660408701614441565b925061496460608701614441565b915061497260808701614441565b90509295509295909350565b6000806040838503121561499157600080fd5b823561499c8161423e565b946020939093013593505050565b600181811c908216806149be57607f821691505b6020821081036149de57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611c4a57611c4a6149fa565b81810381811115611c4a57611c4a6149fa565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417611c4a57611c4a6149fa565b634e487b7160e01b600052601260045260246000fd5b600082614a9e57614a9e614a79565b500490565b6001600160a01b0383168152604060208201526000611a82604083018461429b565b6001600160801b0381811683821601908082111561161f5761161f6149fa565b600060208284031215614af757600080fd5b8151612aa68161423e565b6001600160801b0381168114611e3257600080fd5b60008060008060808587031215614b2d57600080fd5b8451614b3881614b02565b6020860151909450614b4981614b02565b6040860151909350614b5a81614577565b606086015190925061468581614577565b6040516101c0810167ffffffffffffffff81118282101715614b8f57614b8f614a36565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614bbe57614bbe614a36565b604052919050565b8035611d8f81614b02565b600082601f830112614be257600080fd5b8135602067ffffffffffffffff821115614bfe57614bfe614a36565b8160051b614c0d828201614b95565b9283528481018201928281019087851115614c2757600080fd5b83870192505b84831015614c4f578235614c408161423e565b82529183019190830190614c2d565b979650505050505050565b60006101c08236031215614c6d57600080fd5b614c75614b6b565b823581526020830135602082015260408301356040820152614c9960608401614bc6565b60608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152506101408084013581830152506101608084013581830152506101808084013567ffffffffffffffff811115614d1257600080fd5b614d1e36828701614bd1565b8284015250506101a0614d32818501614253565b9082015292915050565b6000808335601e19843603018112614d5357600080fd5b83018035915067ffffffffffffffff821115614d6e57600080fd5b6020019150600581901b36038213156131b457600080fd5b6001600160a01b03858116825260606020808401829052908301859052600091869160808501845b88811015614dd5578435614dc18161423e565b841682529382019390820190600101614dae565b5080945050505050821515604083015295945050505050565b6001600160a01b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060208284031215614e3f57600080fd5b815167ffffffffffffffff80821115614e5757600080fd5b818401915084601f830112614e6b57600080fd5b815181811115614e7d57614e7d614a36565b614e90601f8201601f1916602001614b95565b9150808252856020828501011115614ea757600080fd5b614eb8816020840160208601614157565b50949350505050565b600060208284031215614ed357600080fd5b5051919050565b6001600160801b0382811682821603908082111561161f5761161f6149fa565b6001600160801b038181168382160280821691908281146130af576130af6149fa565b60006001600160801b0380841680614f3757614f37614a79565b92169190910492915050565b61ffff81811683821601908082111561161f5761161f6149fa565b60007f80000000000000000000000000000000000000000000000000000000000000008203614f8f57614f8f6149fa565b5060000390565b60008060408385031215614fa957600080fd5b8251614fb4816146f1565b602084015190925061429081614b02565b64ffffffffff81811683821601908082111561161f5761161f6149fa565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0383168152604060208201526000611a82604083018461417b565b60006020828403121561502d57600080fd5b8151612aa681614577565b64ffffffffff82811682821603908082111561161f5761161f6149fa56fea264697066735822122039e41b91007d67a8f94d119cfa3c14776172c7ea7e3a56cc082a0e67a62f06f964736f6c634300081100330000000000000000000000009ea7b04da02a5373317d745c1571c84aad03321d000000000000000000000000ff94993fa7ea27efc943645f95adb36c1b81244b0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001877737445544820436f7272656c61746564205469657220310000000000000000