0 txs
326 calls
constructor
constructor(address _cashModule, address _dataProvider)
functions
applicableSpendingLimit
viewfunction applicableSpendingLimit(address safe) view returns (tuple)
canSpend
viewfunction canSpend(address safe, bytes32 txId, address[] tokens, uint256[] amountsInUsd) view returns (bool, string)
canSpendSingleToken
viewfunction canSpendSingleToken(address safe, bytes32 txId, address[] creditModeTokenPreferences, address[] debitModeTokenPreferences, uint256 amountInUsd) view returns (uint8 mode, address token, bool canSpendResult, string declineReason)
cashModule
viewfunction cashModule() view returns (address)
dataProvider
viewfunction dataProvider() view returns (address)
getMaxSpendCredit
viewfunction getMaxSpendCredit(address safe) view returns (uint256 returnAmtInCreditModeUsd)
getMaxSpendDebit
viewfunction getMaxSpendDebit(address safe, address[] debtServiceTokenPreference) view returns (tuple)
getPendingWithdrawalAmount
viewfunction getPendingWithdrawalAmount(address safe, address token) view returns (uint256)
getSafeCashData
viewfunction getSafeCashData(address safe, address[] debtServiceTokenPreference) view returns (tuple safeCashData)
getUserCollateralForToken
viewfunction getUserCollateralForToken(address safe, address token) view returns (uint256)
getUserTotalCollateral
viewfunction getUserTotalCollateral(address safe) view returns (tuple[])
HUNDRED_PERCENT
viewfunction HUNDRED_PERCENT() view returns (uint256)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
roleRegistry
viewfunction roleRegistry() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
initialize
nonpayablefunction initialize(address _roleRegistry)
pause
nonpayablefunction pause()
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
DuplicateElementFound
error DuplicateElementFound()
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotABorrowToken
error NotABorrowToken()
NotACollateralToken
error NotACollateralToken()
NotInitializing
error NotInitializing()
OnlyRoleRegistryOwner
error OnlyRoleRegistryOwner()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60e060405230608052348015610013575f5ffd5b506040516156ab3803806156ab83398101604081905261003291610121565b6001600160a01b0380831660a052811660c05261004d610054565b5050610152565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811461011c575f5ffd5b919050565b5f5f60408385031215610132575f5ffd5b61013b83610106565b915061014960208401610106565b90509250929050565b60805160a05160c0516154b16101fa5f395f81816103950152610e0a01525f81816101b9015281816104e2015281816105840152818161080c01528181610b0201528181610cfa01528181610d8701528181610eac0152818161138d0152818161142f01528181611553015281816116b50152818161189501528181611ab70152818161290601526129a801525f81816123c5015281816123ee01526125a401526154b15ff3fe60806040526004361061011b575f3560e01c80636ed93dd01161009d578063ad3cb1cc11610062578063ad3cb1cc14610347578063b334ed8614610384578063b752cde1146103b7578063c4d66de8146103e6578063c8d31d0614610405575f5ffd5b80636ed93dd01461029f57806371e5a923146102bb5780638456cb59146102e75780638d3bb64f146102fb5780639a664ee11461031a575f5ffd5b8063408130f5116100e3578063408130f5146101f15780634f1ef2861461021e57806352d1902d146102315780635c975abb146102455780635e6107e314610273575f5ffd5b806308c732591461011f5780630ac3e50d146101505780630d8f21be1461017c5780633575f0de146101a85780633f4ba83a146101db575b5f5ffd5b34801561012a575f5ffd5b50610133610424565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015b575f5ffd5b5061016f61016a3660046143b1565b610452565b60405161014791906144ce565b348015610187575f5ffd5b5061019b6101963660046144e0565b610807565b6040516101479190614540565b3480156101b3575f5ffd5b506101337f000000000000000000000000000000000000000000000000000000000000000081565b3480156101e6575f5ffd5b506101ef610a97565b005b3480156101fc575f5ffd5b5061021061020b366004614552565b610afe565b604051908152602001610147565b6101ef61022c366004614589565b610c97565b34801561023c575f5ffd5b50610210610cb6565b348015610250575f5ffd5b505f5160206153e45f395f51905f525460ff166040519015158152602001610147565b34801561027e575f5ffd5b5061029261028d3660046144e0565b610cd1565b604051610147919061462e565b3480156102aa575f5ffd5b5061021068056bc75e2d6310000081565b3480156102c6575f5ffd5b506102da6102d53660046143b1565b610d7c565b604051610147919061477e565b3480156102f2575f5ffd5b506101ef611324565b348015610306575f5ffd5b506102106103153660046144e0565b611389565b348015610325575f5ffd5b50610339610334366004614874565b6114c4565b604051610147929190614977565b348015610352575f5ffd5b50610377604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101479190614991565b34801561038f575f5ffd5b506101337f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c2575f5ffd5b506103d66103d13660046149e3565b6116ad565b6040516101479493929190614a74565b3480156103f1575f5ffd5b506101ef6104003660046144e0565b611988565b348015610410575f5ffd5b5061021061041f366004614552565b611a94565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f500546001600160a01b031690565b61047c60405180608001604052806060815260200160608152602001606081526020015f81525090565b81515f8190036104cd575050604080515f6080820181815260a08301845282528251818152602080820185528084019190915283518281529081018452928201929092526060810191909152610801565b60018111156104df576104df83611b36565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561053c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105609190614aac565b604051631c13359160e11b81526001600160a01b0387811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa1580156105c8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105ef9190810190614c5d565b90505f5f5f610600858a8a89611c4b565b925092509250805f036106bd576040518060800160405280898152602001876001600160401b0381111561063657610636614249565b60405190808252806020026020018201604052801561065f578160200160208202803683370190505b508152602001876001600160401b0381111561067d5761067d614249565b6040519080825280602002602001820160405280156106a6578160200160208202803683370190505b5081526020015f8152509650505050505050610801565b5f5f6106ce878c888d896001611f37565b9150915080515f1461072a57604080515f6080820181815260a083018452825282518181526020808201855280840191909152835182815290810184529192830191905081526020015f81525098505050505050505050610801565b5f5f886001600160a01b031663fefb05498e866040518363ffffffff1660e01b815260040161075a929190614d9d565b6040805180830381865afa158015610774573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107989190614dc0565b91509150805f14806107aa5750808210155b156107de575050604080516080810182528b8152602081019690965285019390935250606083015250935061080192505050565b6107f48c87898c6107ef8787614df6565b612283565b9a50505050505050505050505b92915050565b60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610866573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088a9190614aac565b90505f816001600160a01b031663b58eb63f6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156108c8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108ef9190810190614e09565b80519091505f816001600160401b0381111561090d5761090d614249565b60405190808252806020026020018201604052801561095157816020015b604080518082019091525f808252602082015281526020019060019003908161092b5790505b5090505f805b83811015610a8b575f85828151811061097257610972614e3a565b60209081029190910101516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a0823190602401602060405180830381865afa1580156109c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e69190614e4e565b90505f610a0c8a8885815181106109ff576109ff614e3a565b6020026020010151611a94565b90508115610a8157610a1e8183614df6565b91508115610a81576040518060400160405280888581518110610a4357610a43614e3a565b60200260200101516001600160a01b0316815260200183815250858581518110610a6f57610a6f614e3a565b60200260200101819052508360010193505b5050600101610957565b50815295945050505050565b610a9f610424565b6040516317bf301f60e21b81523360048201526001600160a01b039190911690635efcc07c906024015f6040518083038186803b158015610ade575f5ffd5b505afa158015610af0573d5f5f3e3d5ffd5b50505050610afc61235b565b565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b809190614aac565b6040516311d9858b60e21b81526001600160a01b03858116600483015291925090821690634766162c90602401602060405180830381865afa158015610bc8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bec9190614e65565b610c09576040516375e72ed760e11b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b0385811660048301525f91908516906370a0823190602401602060405180830381865afa158015610c50573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c749190614e4e565b90505f610c818686611a94565b9050610c8d8183614df6565b9695505050505050565b610c9f6123ba565b610ca88261245e565b610cb282826124d3565b5050565b5f610cbf612599565b505f51602061529a5f395f51905f5290565b610cd9614101565b604051631c13359160e11b81526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906338266b22906024015f60405180830381865afa158015610d40573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d679190810190614c5d565b9050610d75815f01516125e2565b9392505050565b610d84614174565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610de1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e059190614aac565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630a065fb66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e889190614aac565b604051631c13359160e11b81526001600160a01b0387811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa158015610ef0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f179190810190614c5d565b604051631d20a23d60e21b81526001600160a01b0388811660048301529192509084169063748288f4906024015f60405180830381865afa158015610f5e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f859190810190614f0d565b60c088015260408088019190915260a08701919091526020808701929092529082015160808601525163cebcff8960e01b81526001600160a01b0387811660048301526001602483015284169063cebcff8990604401602060405180830381865afa158015610ff6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101a9190614e4e565b8460e00181815250505f836001600160a01b031663b58eb63f6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561105f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110869190810190614e09565b8051909150806001600160401b038111156110a3576110a3614249565b6040519080825280602002602001820160405280156110e757816020015b604080518082019091525f80825260208201528152602001906001900390816110c15790505b5060608701525f5b818110156112095782818151811061110957611109614e3a565b60200260200101518760600151828151811061112757611127614e3a565b60200260200101515f01906001600160a01b031690816001600160a01b031681525050846001600160a01b031663aea9107884838151811061116b5761116b614e3a565b60200260200101516040518263ffffffff1660e01b815260040161119e91906001600160a01b0391909116815260200190565b602060405180830381865afa1580156111b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111dd9190614e4e565b876060015182815181106111f3576111f3614e3a565b60209081029190910181015101526001016110ef565b508251611215906126f5565b61012087015261122488611389565b61010087015286515f036112a35761129888866001600160a01b0316635a52477a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611271573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261016a9190810190614e09565b6101808701526112b4565b6112ad8888610452565b6101808701525b608083015161014087015260608301516101608701526040830151869060018111156112e2576112e26146eb565b908160018111156112f5576112f56146eb565b90525061016086015115801590611310575085610160015142115b15611319575f86525b505050505092915050565b61132c610424565b604051632fd0067b60e21b81523360048201526001600160a01b03919091169063bf4019ec906024015f6040518083038186803b15801561136b575f5ffd5b505afa15801561137d573d5f5f3e3d5ffd5b50505050610afc6127a3565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140b9190614aac565b604051631c13359160e11b81526001600160a01b0385811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa158015611473573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261149a9190810190614c5d565b90505f6114a88386846127eb565b9094509050806114bc57505f949350505050565b505050919050565b5f606083515f03611501575050604080518082019091526012815271139bc81d1bdad95b9cc81c1c9bdd9a59195960721b60208201525f906116a4565b825184511461152d575f60405180606001604052806029815260200161527160299139915091506116a4565b60405163e5a53ea760e01b81526001600160a01b038781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063e5a53ea790604401602060405180830381865afa158015611598573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115bc9190614e65565b156115fe57505060408051808201909152601b81527f5472616e73616374696f6e20616c726561647920636c6561726564000000000060208201525f906116a4565b6001845111156116115761161184611b36565b5f805b845181101561164c5784818151811061162f5761162f614e3a565b6020026020010151826116429190614f82565b9150600101611614565b50805f0361169257505060408051808201909152601881527f546f74616c20616d6f756e74207a65726f20696e20555344000000000000000060208201525f91506116a4565b61169e87868684612900565b92509250505b94509492505050565b5f5f5f60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166338266b228d6040518263ffffffff1660e01b815260040161170e91906001600160a01b0391909116815260200190565b5f60405180830381865afa158015611728573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261174f9190810190614c5d565b905080606001515f14611763575f60408201525b604081015194505f600186600181111561177f5761177f6146eb565b1461178b578a8a61178e565b88885b808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250845194955093909303925061180f91505057505060408051808201909152601d81527f4e6f20746f6b656e20707265666572656e6365732070726f766964656400000060208201525f9350839250905061197a565b865f0361186f5785815f8151811061182957611829614e3a565b60200260200101515f60405180604001604052806015815260200174416d6f756e742063616e6e6f74206265207a65726f60581b8152509550955095509550505061197a565b60405163e5a53ea760e01b81526001600160a01b038e81166004830152602482018e90527f0000000000000000000000000000000000000000000000000000000000000000169063e5a53ea790604401602060405180830381865afa1580156118da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fe9190614e65565b156119645785815f8151811061191657611916614e3a565b60200260200101515f6040518060400160405280601b81526020017f5472616e73616374696f6e20616c726561647920636c656172656400000000008152509550955095509550505061197a565b6119708d8d838a612abc565b9196509450925050505b975097509750979350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156119cc5750825b90505f826001600160401b031660011480156119e75750303b155b9050811580156119f5575080155b15611a135760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a3d57845460ff60401b1916600160401b1785555b611a4686612c19565b8315611a8c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b604051631c13359160e11b81526001600160a01b0383811660048301525f9182917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa158015611afb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b229190810190614c5d565b9050611b2e8184612c6b565b949350505050565b805160018111611b44575050565b5f816001600160401b03811115611b5d57611b5d614249565b604051908082528060200260200182016040528015611b86578160200160208202803683370190505b5090505f5b82811015611c45575f848281518110611ba657611ba6614e3a565b602002602001015190505f5f90505b82811015611c1057838181518110611bcf57611bcf614e3a565b60200260200101516001600160a01b0316826001600160a01b031603611c0857604051630e3e200f60e41b815260040160405180910390fd5b600101611bb5565b5080838381518110611c2457611c24614e3a565b6001600160a01b039092166020928302919091019091015250600101611b8b565b50505050565b6060805f836001600160401b03811115611c6757611c67614249565b604051908082528060200260200182016040528015611c90578160200160208202803683370190505b509250836001600160401b03811115611cab57611cab614249565b604051908082528060200260200182016040528015611cd4578160200160208202803683370190505b5091505f5b84811015611f2c575f868281518110611cf457611cf4614e3a565b602090810291909101015160405163497883cd60e11b81526001600160a01b038083166004830152919250908a16906392f1079a90602401602060405180830381865afa158015611d47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6b9190614e65565b611d8857604051634211ebcf60e01b815260040160405180910390fd5b611d928882611a94565b6040516370a0823160e01b81526001600160a01b038a811660048301528316906370a0823190602401602060405180830381865afa158015611dd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dfa9190614e4e565b611e049190614df6565b858381518110611e1657611e16614e3a565b6020026020010181815250505f858381518110611e3557611e35614e3a565b60200260200101511115611f2357886001600160a01b031663c5b66b4a82878581518110611e6557611e65614e3a565b60200260200101516040518363ffffffff1660e01b8152600401611e9e9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015611eb9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611edd9190614e4e565b848381518110611eef57611eef614e3a565b602002602001018181525050838281518110611f0d57611f0d614e3a565b602002602001015183611f209190614f82565b92505b50600101611cd9565b509450945094915050565b6060805f886001600160a01b031663b58eb63f6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611f76573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611f9d9190810190614e09565b80519091505f816001600160401b03811115611fbb57611fbb614249565b604051908082528060200260200182016040528015611fff57816020015b604080518082019091525f8082526020820152815260200190600190039081611fd95790505b5090505f805b8381101561225f575f85828151811061202057612020614e3a565b60209081029190910101516040516370a0823160e01b81526001600160a01b038f81166004830152909116906370a0823190602401602060405180830381865afa158015612070573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120949190614e4e565b90505f6120ba8d8885815181106120ad576120ad614e3a565b6020026020010151612c6b565b90508115612255576120cc8183614df6565b915060018a60018111156120e2576120e26146eb565b036121fa575f5b8c518110156121f8578c818151811061210457612104614e3a565b60200260200101516001600160a01b031688858151811061212757612127614e3a565b60200260200101516001600160a01b0316036121f0578b818151811061214f5761214f614e3a565b60200260200101518310156121c457604080515f8082526020820190925290612199565b604080518082019091525f80825260208201528152602001906001900390816121735790505b5060405180608001604052806048815260200161522960489139995099505050505050505050612278565b8b81815181106121d6576121d6614e3a565b6020026020010151836121e99190614df6565b92506121f8565b6001016120e9565b505b604051806040016040528088858151811061221757612217614e3a565b60200260200101516001600160a01b031681526020018381525085858151811061224357612243614e3a565b60200260200101819052508360010193505b5050600101612005565b50815260408051602081019091525f8152909450925050505b965096945050505050565b6122ad60405180608001604052806060815260200160608152602001606081526020015f81525090565b85515f8080806122bf8b8b8a8a612d01565b93509350935093505f82111561231c57604080515f6080820181815260a083018452825282518181526020808201855280840191909152835182815290810184529192830191905081526020015f81525095505050505050612352565b5f61232b85858c8e868b612e74565b604080516080810182528e8152602081019790975286019490945250505060608201529150505b95945050505050565b612363612f91565b5f5160206153e45f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061244057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124345f51602061529a5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610afc5760405163703e46dd60e11b815260040160405180910390fd5b5f7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f5008054604051634766d28760e01b81523360048201529192506001600160a01b031690634766d287906024015f6040518083038186803b1580156124c1575f5ffd5b505afa158015611a8c573d5f5f3e3d5ffd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561252d575060408051601f3d908101601f1916820190925261252a91810190614e4e565b60015b61255a57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f51602061529a5f395f51905f52811461258a57604051632a87526960e21b815260048101829052602401612551565b6125948383612fc0565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afc5760405163703e46dd60e11b815260040160405180910390fd5b6125ea614101565b6101008201516001600160401b03161580159061261457508161010001516001600160401b031642115b1561262d5760808201805183525f908190526101008301525b6101208201516001600160401b03161580159061265757508161012001516001600160401b031642115b156126735760a08201805160208401525f908190526101208301525b8160c001516001600160401b03164211156126b2575f604083015260c08201516101408301516126a39190613015565b6001600160401b031660c08301525b8160e001516001600160401b03164211156126f1575f606083015260e08201516101408301516126e29190613043565b6001600160401b031660e08301525b5090565b5f6126ff826125e2565b805160208201516101008301519294505f92839291906001600160401b03161561272f5785608001519150600193505b6101208601516001600160401b03161561274e575060a0850151600192505b818660400151111561276557505f95945050505050565b808660600151111561277c57505f95945050505050565b610c8d86604001518361278f9190614df6565b606088015161279e9084614df6565b613071565b6127ab613080565b5f5160206153e45f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361239c565b5f8080806128358787878460405190808252806020026020018201604052801561281f578160200160208202803683370190505b50604080515f8082526020820190925290611f37565b9150915080515f14158061284857508151155b1561285a575f5f9350935050506128f8565b5f5f886001600160a01b031663fefb054989866040518363ffffffff1660e01b815260040161288a929190614d9d565b6040805180830381865afa1580156128a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c89190614dc0565b91509150818111156128e3575f5f95509550505050506128f8565b6128ed8183614df6565b600195509550505050505b935093915050565b5f60605f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639b2ddc656040518163ffffffff1660e01b8152600401602060405180830381865afa158015612960573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129849190614aac565b604051631c13359160e11b81526001600160a01b0389811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906338266b22906024015f60405180830381865afa1580156129ec573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a139190810190614c5d565b905080606001515f14612a27575f60408201525b5f81604001516001811115612a3e57612a3e6146eb565b148015612a4c575060018751115b15612a76575f6040518060600160405280602581526020016152ba602591399350935050506116a4565b80515f908190612a8690886130b0565b9150915081612a9d575f955093506116a492505050565b612aab8a8a8a8a88886132d4565b955095505050505094509492505050565b6040805160018082528183019092525f9182916060918391906020808301908036833701905050905084815f81518110612af857612af8614e3a565b60209081029190910101526040805160018082528183019092525f9181602001602082028036833701905050905060605f5b8851811015612be857888181518110612b4557612b45614e3a565b6020026020010151835f81518110612b5f57612b5f614e3a565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f612b8d8d8d87896114c4565b91509150825f03612b9c578093505b8115612bde578a8381518110612bb457612bb4614e3a565b6020026020010151600160405180602001604052805f815250985098509850505050505050612c0f565b5050600101612b2a565b50875f81518110612bfb57612bfb614e3a565b60200260200101515f829550955095505050505b9450945094915050565b612c21613607565b7fa5586bb7fe6c4d1a576fc53fefe6d5915940638d338769f6905020734977f50080546001600160a01b0319166001600160a01b038316178155612c63613650565b610cb2613658565b602082015151515f9080825b82811015612cc857846001600160a01b031686602001515f01518281518110612ca257612ca2614e3a565b60200260200101516001600160a01b031603612cc057809150612cc8565b600101612c77565b50818103612cd6575f612352565b8460200151602001518181518110612cf057612cf0614e3a565b602002602001015195945050505050565b6060805f5f5f88519050806001600160401b03811115612d2357612d23614249565b604051908082528060200260200182016040528015612d4c578160200160208202803683370190505b509450806001600160401b03811115612d6757612d67614249565b604051908082528060200260200182016040528015612d90578160200160208202803683370190505b5093508592505f5b8181108015612da657505f84115b15612e67575f898281518110612dbe57612dbe614e3a565b602002602001015190505f811115612e5e575f5f5f612df88e8681518110612de857612de8614e3a565b6020026020010151858a8f613678565b925092509250828a8681518110612e1157612e11614e3a565b60200260200101818152505081898681518110612e3057612e30614e3a565b6020908102919091010152612e458189614df6565b9750849650875f03612e5a5750505050612e67565b5050505b50600101612d98565b5050945094509450949050565b5f805b838111612ead57868181518110612e9057612e90614e3a565b602002602001015182612ea39190614f82565b9150600101612e77565b505f612eba846001614f82565b90505b82811015612f86575f858281518110612ed857612ed8614e3a565b60200260200101511115612f7e57858181518110612ef857612ef8614e3a565b6020026020010151888281518110612f1257612f12614e3a565b602002602001018181525050848181518110612f3057612f30614e3a565b6020026020010151878281518110612f4a57612f4a614e3a565b602002602001018181525050848181518110612f6857612f68614e3a565b602002602001015182612f7b9190614f82565b91505b600101612ebd565b509695505050505050565b5f5160206153e45f395f51905f525460ff16610afc57604051638dfc202b60e01b815260040160405180910390fd5b612fc9826137d8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561300d57612594828261383b565b610cb26138a4565b5f5b61302a6001600160401b038416836138c3565b9250826001600160401b03164211613017575090919050565b5f5b6130586001600160401b03841683613906565b9250826001600160401b03164211613045575090919050565b5f828218828410028218610d75565b5f5160206153e45f395f51905f525460ff1615610afc5760405163d93c066560e01b815260040160405180910390fd5b5f60606130bc846125e2565b805160208201516101008301519296505f92839291906001600160401b0316156130ec5787608001519150600193505b6101208801516001600160401b03161561310b575060a0870151600192505b818860400151111561316b578315613144575f6040518060600160405280602f81526020016151b8602f913995509550505050506132cd565b5f60405180606001604052806026815260200161516a6026913995509550505050506132cd565b80886060015111156131cb5782156131a4575f6040518060600160405280603181526020016153496031913995509550505050506132cd565b5f6040518060600160405280602881526020016151906028913995509550505050506132cd565b5f8860400151836131dc9190614df6565b90505f8960600151836131ef9190614df6565b905081891115613251578515613228575f6040518060800160405280604281526020016151e760429139975097505050505050506132cd565b5f6040518060600160405280603981526020016152df60399139975097505050505050506132cd565b808911156132b1578415613288575f60405180608001604052806044815260200161542660449139975097505050505050506132cd565b5f6040518060600160405280603b815260200161546a603b9139975097505050505050506132cd565b600160405180602001604052805f815250975097505050505050505b9250929050565b5f60605f87516001600160401b038111156132f1576132f1614249565b60405190808252806020026020018201604052801561331a578160200160208202803683370190505b5090505f5b88518110156135c557856001600160a01b03166392f1079a8a838151811061334957613349614e3a565b60200260200101516040518263ffffffff1660e01b815260040161337c91906001600160a01b0391909116815260200190565b602060405180830381865afa158015613397573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133bb9190614e65565b613401575f6040518060400160405280601c81526020017f4e6f74206120737570706f7274656420737461626c6520746f6b656e00000000815250935093505050612278565b856001600160a01b031663afe6ab008a838151811061342257613422614e3a565b60200260200101518a848151811061343c5761343c614e3a565b60200260200101516040518363ffffffff1660e01b81526004016134759291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015613490573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134b49190614e4e565b8282815181106134c6576134c6614e3a565b60209081029190910101526001856040015160018111156134e9576134e96146eb565b148015613593575081818151811061350357613503614e3a565b602002602001015189828151811061351d5761351d614e3a565b60209081029190910101516040516370a0823160e01b81526001600160a01b038d81166004830152909116906370a0823190602401602060405180830381865afa15801561356d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135919190614e4e565b105b156135bd575f60405180606001604052806032815260200161537a60329139935093505050612278565b60010161331f565b505f846040015160018111156135dd576135dd6146eb565b036135fa576135f089898389898961398b565b9250925050612278565b6135f08989838888613a9c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610afc57604051631afcd79f60e31b815260040160405180910390fd5b610afc613607565b613660613607565b5f5160206153e45f395f51905f52805460ff19169055565b60405163785d04bf60e11b81526001600160a01b0385811660048301525f9182918291829186169063f0ba097e90602401606060405180830381865afa1580156136c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e89190614fae565b5190505f61370d8869ffffffffffffffffffff841668056bc75e2d6310000084613b8d565b90508681106137c2575f6137398868056bc75e2d6310000069ffffffffffffffffffff86166001613b8d565b9050613745818a614df6565b60405162afe6ab60e81b81526001600160a01b038c81166004830152602482018390529196509088169063afe6ab0090604401602060405180830381865afa158015613793573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137b79190614e4e565b9550879350506137cc565b5f94505f93508092505b50509450945094915050565b806001600160a01b03163b5f0361380d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401612551565b5f51602061529a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516138579190615019565b5f60405180830381855af49150503d805f811461388f576040519150601f19603f3d011682016040523d82523d5f602084013e613894565b606091505b5091509150612352858383613bcf565b3415610afc5760405163b398979f60e01b815260040160405180910390fd5b5f806138cf838561502f565b90505f6138df620151808361506a565b90505f6138ed826001614f82565b6138fa9062015180615096565b9050610c8d85826150ad565b5f80613912838561502f565b90505f8061392b61392662015180856150d3565b613c2b565b50909250905061393c6001826150e6565b9050600c8160ff16111561395a5750600161395781836150ff565b91505b5f61396783836001613d99565b6139749062015180615096565b905061398086826150ad565b979650505050505050565b5f6060855f815181106139a0576139a0614e3a565b6020026020010151875f815181106139ba576139ba614e3a565b60209081029190910101516040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa158015613a0a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a2e9190614e4e565b1015613a57575f6040518060600160405280603881526020016153ac6038913991509150612278565b5f5f613a67868b878c8c5f611f37565b9150915080515f14613a7f575f935091506122789050565b613a8b8a838989613ecf565b935093505050965096945050505050565b5f60605f5f613ab0868a878b8b6001611f37565b9150915080515f14613ac8575f93509150613b839050565b5f5f876001600160a01b031663fefb05498c866040518363ffffffff1660e01b8152600401613af8929190614d9d565b6040805180830381865afa158015613b12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b369190614dc0565b9150915081811115613b69575f604051806060016040528060318152602001615318603191399550955050505050613b83565b600160405180602001604052805f81525095509550505050505b9550959350505050565b5f613bba613b9a83613fe2565b8015613bb557505f8480613bb057613bb0615056565b868809115b151590565b613bc586868661400e565b6123529190614f82565b606082613be457613bdf826140c4565b610d75565b8151158015613bfb57506001600160a01b0384163b155b15613c2457604051639996b31560e01b81526001600160a01b0385166004820152602401612551565b5080610d75565b5f80808381613c3d8262010bd961502f565b613c4a9062253d8c61502f565b90505f62023ab1613c5c836004615119565b613c66919061506a565b90506004613c778262023ab1615119565b613c8290600361502f565b613c8c919061506a565b613c9690836150ad565b91505f62164b09613ca884600161502f565b613cb490610fa0615119565b613cbe919061506a565b90506004613cce826105b5615119565b613cd8919061506a565b613ce290846150ad565b613ced90601f61502f565b92505f61098f613cfe856050615119565b613d08919061506a565b90505f6050613d198361098f615119565b613d23919061506a565b613d2d90866150ad565b9050613d3a600b8361506a565b9450613d4785600c615119565b613d5283600261502f565b613d5c91906150ad565b91508483613d6b6031876150ad565b613d76906064615119565b613d80919061502f565b613d8a919061502f565b9a919950975095505050505050565b5f61ffff841660ff8085169084168362253d8c60046064600c613dbd600e886150ad565b613dc7919061506a565b613dd38861132461502f565b613ddd919061502f565b613de7919061506a565b613df2906003615119565b613dfc919061506a565b600c80613e0a600e886150ad565b613e14919061506a565b613e1f90600c615119565b613e2a6002886150ad565b613e3491906150ad565b613e409061016f615119565b613e4a919061506a565b6004600c613e59600e896150ad565b613e63919061506a565b613e6f896112c061502f565b613e79919061502f565b613e85906105b5615119565b613e8f919061506a565b613e9b617d4b876150ad565b613ea5919061502f565b613eaf919061502f565b613eb991906150ad565b613ec391906150ad565b98975050505050505050565b5f60605f5f846001600160a01b031663fefb054989896040518363ffffffff1660e01b8152600401613f02929190614d9d565b6040805180830381865afa158015613f1c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f409190614dc0565b9150915081811115613f71575f604051806060016040528060228152602001615404602291399350935050506116a4565b613f7b8183614df6565b861115613fc4575f6040518060400160405280601c81526020017f496e73756666696369656e7420626f72726f77696e6720706f776572000000008152509350935050506116a4565b505060408051602081019091525f8152600197909650945050505050565b5f6002826003811115613ff757613ff76146eb565b6140019190615148565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036140425783828161403857614038615056565b0492505050610d75565b8084116140595761405960038515026011186140f0565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b8051156140d45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b634e487b715f52806020526024601cfd5b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160401b031681526020015f6001600160401b031681526020015f6001600160401b031681526020015f6001600160401b031681526020015f81525090565b604080516101a08101909152805f81526020016060815260200160608152602001606081526020016141d7604051806080016040528060608152602001606081526020015f6001600160a01b031681526020015f6001600160601b031681525090565b81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f815260200161423060405180608001604052806060815260200160608152602001606081526020015f81525090565b905290565b6001600160a01b03811681146140ed575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561427f5761427f614249565b60405290565b60405160a081016001600160401b038111828210171561427f5761427f614249565b60405161016081016001600160401b038111828210171561427f5761427f614249565b604080519081016001600160401b038111828210171561427f5761427f614249565b604051601f8201601f191681016001600160401b038111828210171561431457614314614249565b604052919050565b5f6001600160401b0382111561433457614334614249565b5060051b60200190565b5f82601f83011261434d575f5ffd5b813561436061435b8261431c565b6142ec565b8082825260208201915060208360051b860101925085831115614381575f5ffd5b602085015b838110156143a757803561439981614235565b835260209283019201614386565b5095945050505050565b5f5f604083850312156143c2575f5ffd5b82356143cd81614235565b915060208301356001600160401b038111156143e7575f5ffd5b6143f38582860161433e565b9150509250929050565b5f8151808452602084019350602083015f5b828110156144365781516001600160a01b031686526020958601959091019060010161440f565b5093949350505050565b5f8151808452602084019350602083015f5b82811015614436578151865260209586019590910190600101614452565b5f81516080845261448460808501826143fd565b90506020830151848203602086015261449d8282614440565b915050604083015184820360408601526144b78282614440565b915050606083015160608501528091505092915050565b602081525f610d756020830184614470565b5f602082840312156144f0575f5ffd5b8135610d7581614235565b5f8151808452602084019350602083015f5b8281101561443657815180516001600160a01b03168752602090810151818801526040909601959091019060010161450d565b602081525f610d7560208301846144fb565b5f5f60408385031215614563575f5ffd5b823561456e81614235565b9150602083013561457e81614235565b809150509250929050565b5f5f6040838503121561459a575f5ffd5b82356145a581614235565b915060208301356001600160401b038111156145bf575f5ffd5b8301601f810185136145cf575f5ffd5b80356001600160401b038111156145e8576145e8614249565b6145fb601f8201601f19166020016142ec565b81815286602083850101111561460f575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f61016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015161468660c08401826001600160401b03169052565b5060e08301516146a160e08401826001600160401b03169052565b506101008301516146be6101008401826001600160401b03169052565b506101208301516146db6101208401826001600160401b03169052565b5061014092830151919092015290565b634e487b7160e01b5f52602160045260245ffd5b6002811061471b57634e487b7160e01b5f52602160045260245ffd5b9052565b5f81516080845261473360808501826143fd565b90506020830151848203602086015261474c8282614440565b6040858101516001600160a01b0316908701526060948501516001600160601b03169490950193909352509192915050565b602081526147906020820183516146ff565b5f60208301516101a060408401526147ac6101c08401826144fb565b90506040840151601f198483030160608501526147c982826144fb565b9150506060840151601f198483030160808501526147e782826144fb565b9150506080840151601f198483030160a0850152614805828261471f565b91505060a084015160c084015260c084015160e084015260e0840151610100840152610100840151610120840152610120840151610140840152610140840151610160840152610160840151610180840152610180840151601f19848303016101a08501526123528282614470565b5f5f5f5f60808587031215614887575f5ffd5b843561489281614235565b93506020850135925060408501356001600160401b038111156148b3575f5ffd5b6148bf8782880161433e565b92505060608501356001600160401b038111156148da575f5ffd5b8501601f810187136148ea575f5ffd5b80356148f861435b8261431c565b8082825260208201915060208360051b850101925089831115614919575f5ffd5b6020840193505b8284101561493b578335825260209384019390910190614920565b969995985093965050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b8215158152604060208201525f611b2e6040830184614949565b602081525f610d756020830184614949565b5f5f83601f8401126149b3575f5ffd5b5081356001600160401b038111156149c9575f5ffd5b6020830191508360208260051b85010111156132cd575f5ffd5b5f5f5f5f5f5f5f60a0888a0312156149f9575f5ffd5b8735614a0481614235565b96506020880135955060408801356001600160401b03811115614a25575f5ffd5b614a318a828b016149a3565b90965094505060608801356001600160401b03811115614a4f575f5ffd5b614a5b8a828b016149a3565b989b979a50959894979596608090950135949350505050565b614a7e81866146ff565b6001600160a01b038416602082015282151560408201526080606082018190525f90610c8d90830184614949565b5f60208284031215614abc575f5ffd5b8151610d7581614235565b80516001600160401b0381168114614add575f5ffd5b919050565b8051614add81614235565b5f82601f830112614afc575f5ffd5b8151614b0a61435b8261431c565b8082825260208201915060208360051b860101925085831115614b2b575f5ffd5b602085015b838110156143a7578051614b4381614235565b835260209283019201614b30565b80516001600160601b0381168114614add575f5ffd5b5f60808284031215614b77575f5ffd5b614b7f61425d565b905081516001600160401b03811115614b96575f5ffd5b614ba284828501614aed565b82525060208201516001600160401b03811115614bbd575f5ffd5b8201601f81018413614bcd575f5ffd5b8051614bdb61435b8261431c565b8082825260208201915060208360051b850101925086831115614bfc575f5ffd5b6020840193505b82841015614c1e578351825260209384019390910190614c03565b602085015250614c3391505060408301614ae2565b6040820152614c4460608301614b51565b606082015292915050565b805160028110614add575f5ffd5b5f60208284031215614c6d575f5ffd5b81516001600160401b03811115614c82575f5ffd5b82018084036101e0811215614c95575f5ffd5b614c9d614285565b610160821215614cab575f5ffd5b614cb36142a7565b835181526020808501519082015260408085015190820152606080850151908201526080808501519082015260a080850151908201529150614cf760c08401614ac7565b60c0830152614d0860e08401614ac7565b60e0830152614d1a6101008401614ac7565b610100830152614d2d6101208401614ac7565b6101208301526101408381015190830152908152610160820151906001600160401b03821115614d5b575f5ffd5b614d6786838501614b67565b6020820152614d796101808401614c4f565b60408201526101a083015160608201526101c0909201516080830152509392505050565b6001600160a01b03831681526040602082018190525f90611b2e908301846144fb565b5f5f60408385031215614dd1575f5ffd5b505080516020909101519092909150565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561080157610801614de2565b5f60208284031215614e19575f5ffd5b81516001600160401b03811115614e2e575f5ffd5b611b2e84828501614aed565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614e5e575f5ffd5b5051919050565b5f60208284031215614e75575f5ffd5b81518015158114610d75575f5ffd5b5f82601f830112614e93575f5ffd5b8151614ea161435b8261431c565b8082825260208201915060208360061b860101925085831115614ec2575f5ffd5b602085015b838110156143a75760408188031215614ede575f5ffd5b614ee66142ca565b8151614ef181614235565b8152602082810151818301529084529290920191604001614ec7565b5f5f5f5f60808587031215614f20575f5ffd5b84516001600160401b03811115614f35575f5ffd5b614f4187828801614e84565b60208701516040880151919650945090506001600160401b03811115614f65575f5ffd5b614f7187828801614e84565b606096909601519497939650505050565b8082018082111561080157610801614de2565b805169ffffffffffffffffffff81168114614add575f5ffd5b5f6060828403128015614fbf575f5ffd5b50604051606081016001600160401b0381118282101715614fe257614fe2614249565b604052614fee83614f95565b8152614ffc60208401614f95565b602082015261500d60408401614b51565b60408201529392505050565b5f82518060208501845e5f920191825250919050565b8082018281125f83128015821682158216171561504e5761504e614de2565b505092915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261507857615078615056565b600160ff1b82145f198414161561509157615091614de2565b500590565b808202811582820484141761080157610801614de2565b8181035f8312801583831316838312821617156150cc576150cc614de2565b5092915050565b5f826150e1576150e1615056565b500490565b60ff818116838216019081111561080157610801614de2565b61ffff818116838216019081111561080157610801614de2565b8082025f8212600160ff1b8414161561513457615134614de2565b818105831482151761080157610801614de2565b5f60ff83168061515a5761515a615056565b8060ff8416069150509291505056fe4461696c79207370656e64696e67206c696d697420616c7265616479206578686175737465644d6f6e74686c79207370656e64696e67206c696d697420616c726561647920657868617573746564496e636f6d696e67206461696c79207370656e64696e67206c696d697420616c726561647920657868617573746564496e636f6d696e67206461696c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e7420726571756573746564496e73756666696369656e74206566666563746976652062616c616e6365206166746572207769746864726177616c20746f207370656e642077697468206465626974206d6f6465546f6b656e7320616e6420616d6f756e747320617272617973206c656e677468206d69736d61746368360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc4f6e6c79206f6e6520746f6b656e20616c6c6f77656420696e20437265646974206d6f64654461696c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e7420726571756573746564426f72726f77696e67732067726561746572207468616e206d617820626f72726f77206166746572207370656e64696e67496e636f6d696e67206d6f6e74686c79207370656e64696e67206c696d697420616c726561647920657868617573746564496e73756666696369656e7420746f6b656e2062616c616e636520666f72206465626974206d6f6465207370656e64696e67496e73756666696369656e74206c697175696469747920696e2064656274206d616e6167657220746f20636f76657220746865206c6f616ecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300426f72726f77696e67732067726561746572207468616e206d617820626f72726f77496e636f6d696e67206d6f6e74686c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e74207265717565737465644d6f6e74686c7920617661696c61626c65207370656e64696e67206c696d6974206c657373207468616e20616d6f756e7420726571756573746564a164736f6c634300081c000a000000000000000000000000bc5e1a8cdc14b286a8f5f523059cf02a7ffe9a6d0000000000000000000000004a9c44c97bbf6079db37c4769aebe425bbcdd09a