0 txs
43 calls
constructor
No constructor.
functions
accessControl
viewfunction accessControl() view returns (address)
BLACKLIST_OPERATOR_ROLE
viewfunction BLACKLIST_OPERATOR_ROLE() view returns (bytes32)
BLACKLISTED_ROLE
viewfunction BLACKLISTED_ROLE() view returns (bytes32)
currentRequestId
viewfunction currentRequestId() view returns (uint256 _value)
dailyLimits
viewfunction dailyLimits(uint256) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
feeReceiver
viewfunction feeReceiver() view returns (address)
fnPaused
viewfunction fnPaused(bytes4) view returns (bool)
getPaymentTokens
viewfunction getPaymentTokens() view returns (address[])
GREENLIST_OPERATOR_ROLE
viewfunction GREENLIST_OPERATOR_ROLE() view returns (bytes32)
GREENLISTED_ROLE
viewfunction GREENLISTED_ROLE() view returns (bytes32)
greenlistedRole
viewfunction greenlistedRole() view returns (bytes32)
greenlistEnabled
viewfunction greenlistEnabled() view returns (bool)
greenlistTogglerRole
viewfunction greenlistTogglerRole() view returns (bytes32)
instantDailyLimit
viewfunction instantDailyLimit() view returns (uint256)
instantFee
viewfunction instantFee() view returns (uint256)
isFreeFromMinAmount
viewfunction isFreeFromMinAmount(address) view returns (bool)
M_HYPER_BTC_CUSTOM_AGGREGATOR_FEED_ADMIN_ROLE
viewfunction M_HYPER_BTC_CUSTOM_AGGREGATOR_FEED_ADMIN_ROLE() view returns (bytes32)
M_HYPER_BTC_DEPOSIT_VAULT_ADMIN_ROLE
viewfunction M_HYPER_BTC_DEPOSIT_VAULT_ADMIN_ROLE() view returns (bytes32)
M_HYPER_BTC_REDEMPTION_VAULT_ADMIN_ROLE
viewfunction M_HYPER_BTC_REDEMPTION_VAULT_ADMIN_ROLE() view returns (bytes32)
MANUAL_FULLFILMENT_TOKEN
viewfunction MANUAL_FULLFILMENT_TOKEN() view returns (address)
MAX_UINT
viewfunction MAX_UINT() view returns (uint256)
maxSupplyCap
viewfunction maxSupplyCap() view returns (uint256)
minAmount
viewfunction minAmount() view returns (uint256)
minMTokenAmountForFirstDeposit
viewfunction minMTokenAmountForFirstDeposit() view returns (uint256)
mintRequests
viewfunction mintRequests(uint256) view returns (address sender, address tokenIn, uint8 status, uint256 depositedUsdAmount, uint256 usdAmountWithoutFees, uint256 tokenOutRate)
mToken
viewfunction mToken() view returns (address)
mTokenDataFeed
viewfunction mTokenDataFeed() view returns (address)
ONE_HUNDRED_PERCENT
viewfunction ONE_HUNDRED_PERCENT() view returns (uint256)
pauseAdminRole
viewfunction pauseAdminRole() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
sanctionsList
viewfunction sanctionsList() view returns (address)
sanctionsListAdminRole
viewfunction sanctionsListAdminRole() view returns (bytes32)
STABLECOIN_RATE
viewfunction STABLECOIN_RATE() view returns (uint256)
tokensConfig
viewfunction tokensConfig(address) view returns (address dataFeed, uint256 fee, uint256 allowance, bool stable)
tokensReceiver
viewfunction tokensReceiver() view returns (address)
totalMinted
viewfunction totalMinted(address) view returns (uint256)
variationTolerance
viewfunction variationTolerance() view returns (uint256)
vaultRole
purefunction vaultRole() pure returns (bytes32)
waivedFeeRestriction
viewfunction waivedFeeRestriction(address) view returns (bool)
addPaymentToken
nonpayablefunction addPaymentToken(address token, address dataFeed, uint256 tokenFee, uint256 allowance, bool stable)
addWaivedFeeAccount
nonpayablefunction addWaivedFeeAccount(address account)
approveRequest
nonpayablefunction approveRequest(uint256 requestId, uint256 newOutRate)
changeTokenAllowance
nonpayablefunction changeTokenAllowance(address token, uint256 allowance)
changeTokenFee
nonpayablefunction changeTokenFee(address token, uint256 fee)
depositInstant
nonpayablefunction depositInstant(address tokenIn, uint256 amountToken, uint256 minReceiveAmount, bytes32 referrerId, address recipient)
depositInstant
nonpayablefunction depositInstant(address tokenIn, uint256 amountToken, uint256 minReceiveAmount, bytes32 referrerId)
depositRequest
nonpayablefunction depositRequest(address tokenIn, uint256 amountToken, bytes32 referrerId, address recipient) returns (uint256)
depositRequest
nonpayablefunction depositRequest(address tokenIn, uint256 amountToken, bytes32 referrerId) returns (uint256)
freeFromMinAmount
nonpayablefunction freeFromMinAmount(address user, bool enable)
initialize
nonpayablefunction initialize(address _ac, tuple _mTokenInitParams, tuple _receiversInitParams, tuple _instantInitParams, address _sanctionsList, uint256 _variationTolerance, uint256 _minAmount, uint256 _minMTokenAmountForFirstDeposit, uint256 _maxSupplyCap)
initializeV1
nonpayablefunction initializeV1(address _ac, tuple _mTokenInitParams, tuple _receiversInitParams, tuple _instantInitParams, address _sanctionsList, uint256 _variationTolerance, uint256 _minAmount, uint256 _minMTokenAmountForFirstDeposit)
initializeV2
nonpayablefunction initializeV2(uint256 _maxSupplyCap)
pause
nonpayablefunction pause()
pauseFn
nonpayablefunction pauseFn(bytes4 fn)
rejectRequest
nonpayablefunction rejectRequest(uint256 requestId)
removePaymentToken
nonpayablefunction removePaymentToken(address token)
removeWaivedFeeAccount
nonpayablefunction removeWaivedFeeAccount(address account)
safeApproveRequest
nonpayablefunction safeApproveRequest(uint256 requestId, uint256 newOutRate)
safeBulkApproveRequest
nonpayablefunction safeBulkApproveRequest(uint256[] requestIds, uint256 newOutRate)
safeBulkApproveRequest
nonpayablefunction safeBulkApproveRequest(uint256[] requestIds)
safeBulkApproveRequestAtSavedRate
nonpayablefunction safeBulkApproveRequestAtSavedRate(uint256[] requestIds)
setFeeReceiver
nonpayablefunction setFeeReceiver(address receiver)
setGreenlistEnable
nonpayablefunction setGreenlistEnable(bool enable)
setInstantDailyLimit
nonpayablefunction setInstantDailyLimit(uint256 newInstantDailyLimit)
setInstantFee
nonpayablefunction setInstantFee(uint256 newInstantFee)
setMaxSupplyCap
nonpayablefunction setMaxSupplyCap(uint256 newValue)
setMinAmount
nonpayablefunction setMinAmount(uint256 newAmount)
setMinMTokenAmountForFirstDeposit
nonpayablefunction setMinMTokenAmountForFirstDeposit(uint256 newValue)
setSanctionsList
nonpayablefunction setSanctionsList(address newSanctionsList)
setTokensReceiver
nonpayablefunction setTokensReceiver(address receiver)
setVariationTolerance
nonpayablefunction setVariationTolerance(uint256 tolerance)
unpause
nonpayablefunction unpause()
unpauseFn
nonpayablefunction unpauseFn(bytes4 fn)
withdrawToken
nonpayablefunction withdrawToken(address token, uint256 amount, address withdrawTo)
events
AddPaymentToken
event AddPaymentToken(address indexed caller, address indexed token, address indexed dataFeed, uint256 fee, uint256 allowance, bool stable)
AddWaivedFeeAccount
event AddWaivedFeeAccount(address indexed account, address indexed caller)
ApproveRequest
event ApproveRequest(uint256 indexed requestId, uint256 newOutRate)
ChangeTokenAllowance
event ChangeTokenAllowance(address indexed token, address indexed caller, uint256 allowance)
ChangeTokenFee
event ChangeTokenFee(address indexed token, address indexed caller, uint256 fee)
DepositInstant
event DepositInstant(address indexed user, address indexed tokenIn, uint256 amountUsd, uint256 amountToken, uint256 fee, uint256 minted, bytes32 referrerId)
DepositInstantWithCustomRecipient
event DepositInstantWithCustomRecipient(address indexed user, address indexed tokenIn, address recipient, uint256 amountUsd, uint256 amountToken, uint256 fee, uint256 minted, bytes32 referrerId)
DepositRequest
event DepositRequest(uint256 indexed requestId, address indexed user, address indexed tokenIn, uint256 amountToken, uint256 amountUsd, uint256 fee, uint256 tokenOutRate, bytes32 referrerId)
DepositRequestWithCustomRecipient
event DepositRequestWithCustomRecipient(uint256 indexed requestId, address indexed user, address indexed tokenIn, address recipient, uint256 amountToken, uint256 amountUsd, uint256 fee, uint256 tokenOutRate, bytes32 referrerId)
FreeFromMinAmount
event FreeFromMinAmount(address indexed user, bool enable)
FreeFromMinDeposit
event FreeFromMinDeposit(address indexed user)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
PauseFn
event PauseFn(address indexed caller, bytes4 fn)
RejectRequest
event RejectRequest(uint256 indexed requestId, address indexed user)
RemovePaymentToken
event RemovePaymentToken(address indexed token, address indexed caller)
RemoveWaivedFeeAccount
event RemoveWaivedFeeAccount(address indexed account, address indexed caller)
SafeApproveRequest
event SafeApproveRequest(uint256 indexed requestId, uint256 newOutRate)
SetFeeReceiver
event SetFeeReceiver(address indexed caller, address indexed reciever)
SetGreenlistEnable
event SetGreenlistEnable(address indexed sender, bool enable)
SetInstantDailyLimit
event SetInstantDailyLimit(address indexed caller, uint256 newLimit)
SetInstantFee
event SetInstantFee(address indexed caller, uint256 newFee)
SetMaxSupplyCap
event SetMaxSupplyCap(address indexed caller, uint256 newValue)
SetMinAmount
event SetMinAmount(address indexed caller, uint256 newAmount)
SetMinMTokenAmountForFirstDeposit
event SetMinMTokenAmountForFirstDeposit(address indexed caller, uint256 newValue)
SetSanctionsList
event SetSanctionsList(address indexed caller, address indexed newSanctionsList)
SetTokensReceiver
event SetTokensReceiver(address indexed caller, address indexed reciever)
SetVariationTolerance
event SetVariationTolerance(address indexed caller, uint256 newTolerance)
Unpaused
event Unpaused(address account)
UnpauseFn
event UnpauseFn(address indexed caller, bytes4 fn)
WithdrawToken
event WithdrawToken(address indexed caller, address indexed token, address indexed withdrawTo, uint256 amount)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6146a880620000f36000396000f3fe608060405234801561001057600080fd5b50600436106104485760003560e01c8063868bf3c511610241578063c3b6f9391161013b578063db74d8b5116100c3578063eaf896fd11610087578063eaf896fd14610aa3578063ec571c6a14610aab578063efdcd97414610abf578063f41759e714610ad2578063f5d46c5114610ae557600080fd5b8063db74d8b514610a58578063dd0081c714610a6b578063e428877e14610a74578063e50e3dbb14610a87578063e5b5019a14610a9a57600080fd5b8063cabccc7f1161010a578063cabccc7f14610600578063d63567a514610a17578063d7fd2bae14610a21578063daddcb1614610600578063db6c68e314610a4557600080fd5b8063c3b6f939146109d1578063c47d51be146109e5578063c626b980146109ef578063ca5e553e14610a0257600080fd5b80639d70902f116101c9578063b3f006741161018d578063b3f0067414610902578063bbae408614610916578063bc979af61461093c578063c02dd27a146109ab578063c14c07d6146109be57600080fd5b80639d70902f146108b7578063a0c74afc146108c1578063a217fddf146108d4578063a5125421146108dc578063ad9e5649146108ef57600080fd5b806396f3373f1161021057806396f3373f1461085c57806396f5c6e114610883578063978ff560146108965780639af40265146108a55780639b2cb5d8146108ad57600080fd5b8063868bf3c5146107fc57806388a6de6814610823578063897b0637146108365780638a0ae6151461084957600080fd5b80633972183c116103525780635ae2bfdb116102da5780636957463a1161029e5780636957463a146107a35780636dc69e03146107b65780636e26b9f8146107d75780637192de4b146107ea5780638456cb59146107f457600080fd5b80635ae2bfdb1461073f5780635b4e128c1461074a5780635c975abb1461075d5780636254afb61461076857806362b199c51461077c57600080fd5b8063424e657511610321578063424e65751461067957806342e8866b146106df578063476abc76146106f257806349dc5e8d146107055780635300b4ba1461071857600080fd5b80633972183c1461064157806339dac34d1461064b5780633ccdbb281461065e5780633f4ba83a1461067157600080fd5b80631ed41163116103d55780632d7788db116103a45780632d7788db146105ed57806332b30cce1461060057806334c24489146106085780633733337d1461061b5780633807be7d1461062e57600080fd5b80631ed411631461058c5780631fa1e8d4146105b357806327abf518146105c75780632c0a90a9146105da57600080fd5b806313007d551161041c57806313007d55146104e557806315b9598a1461051657806316683aa51461053d5780631a946224146105525780631e022f4c1461057957600080fd5b80623d47901461044d578063042da5ee146104815780630b5a57bd146104b5578063105ed2b2146104d8575b600080fd5b61046e61045b366004613db2565b6101a56020526000908152604090205481565b6040519081526020015b60405180910390f35b6104a561048f366004613db2565b61016b6020526000908152604090205460ff1681565b6040519015158152602001610478565b6104a56104c3366004613dcd565b60976020526000908152604090205460ff1681565b60fc546104a59060ff1681565b6000546104fe906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610478565b61046e7f77c5b782690f31cd39b1abf2448215259a688a75920040c399d96a676bd1999d81565b61055061054b366004613db2565b610af8565b005b61046e7fa8a5d84b506c7f678f2cc98f457f4eac3c3d6663b76db30e8cbb4b7665a4de3581565b610550610587366004613df7565b610bb3565b61046e7fd2576bd6a4c5558421de15cb8ecdf4eb3282aac06b94d4f004e8cd0d00f3ebd881565b610165546104fe906001600160a01b031681565b6105506105d5366004613e1e565b610bfd565b6105506105e8366004613e3b565b610c9b565b6105506105fb366004613df7565b610cf3565b61046e610e98565b610550610616366004613df7565b610ea7565b610550610629366004613dcd565b610ef5565b61055061063c366004613dcd565b610f91565b61046e6101675481565b610550610659366004613e5d565b611051565b61055061066c366004613e94565b611118565b610550611193565b6106cd610687366004613df7565b6101a460205260009081526040902080546001820154600283015460038401546004909401546001600160a01b039384169493831693600160a01b90930460ff16929086565b60405161047896959493929190613ee6565b6105506106ed366004613f3f565b6111a8565b610550610700366004613db2565b6112b8565b610550610713366004613db2565b61131b565b61046e7f2fdc6683bc8d03effec5b41d3834f28bd219e06ca0a6a26fc737e44b1c7889ff81565b6101625461046e9081565b610550610758366004613df7565b611373565b60655460ff166104a5565b610164546104fe906001600160a01b031681565b61046e7f548c7f0307ab2a7ea894e5c7e8c5353cc750bb9385ee2e945f189a9a83daa8ed81565b6105506107b1366004613df7565b61140a565b61046e6107c4366004613df7565b6101686020526000908152604090205481565b61046e6107e5366004613f8f565b61148e565b61046e61016a5481565b610550611596565b61046e7f2e55e4462941cb91f5ff782032797a0cbda0aa6618f1558ba5b912d781b45be181565b610550610831366004613e3b565b6115a9565b610550610844366004613df7565b6115f4565b610550610857366004613fc2565b611637565b61046e7faed1dfcb561f850481cdb3d35a3076d203b3bf6785bb0e8b8a52f608d0f8298481565b610550610891366004614004565b6116ff565b61046e670de0b6b3a764000081565b6104fe600081565b61046e61016f5481565b61046e6101a65481565b6105506108cf3660046140d6565b6117de565b61046e600081565b6105506108ea366004613db2565b6117fa565b6105506108fd366004613df7565b6118b9565b610169546104fe906001600160a01b031681565b7fd2576bd6a4c5558421de15cb8ecdf4eb3282aac06b94d4f004e8cd0d00f3ebd861046e565b61097f61094a366004613db2565b61016e6020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff1684565b604080516001600160a01b03909516855260208501939093529183015215156060820152608001610478565b6105506109b9366004614118565b611907565b6105506109cc366004614151565b6119f2565b610163546104fe906001600160a01b031681565b61046e6101665481565b6105506109fd366004613df7565b611a0b565b610a0a611a4e565b60405161047891906141e1565b61046e6101a35481565b6104a5610a2f366004613db2565b6101706020526000908152604090205460ff1681565b610550610a533660046140d6565b611a5b565b610550610a66366004613fc2565b611b42565b61046e61271081565b610550610a82366004613db2565b611bb5565b61046e610a9536600461422e565b611c6d565b61046e60001981565b61046e611da8565b61012f546104fe906001600160a01b031681565b610550610acd366004613db2565b611dcc565b610550610ae0366004614274565b611e2f565b610550610af33660046142cf565b611f61565b610b09610b03611da8565b33612018565b6001600160a01b038116600090815261016b602052604090205460ff16610b675760405162461bcd60e51b815260206004820152600d60248201526c13558e881b9bdd08199bdd5b99609a1b60448201526064015b60405180910390fd5b6001600160a01b038116600081815261016b6020526040808220805460ff19169055513392917f57c4a95f59c12f0d4d846443c2d54c7d97f1505080199522fca2819e65213ca291a350565b610bbe610b03611da8565b6101a381905560405181815233907ff0af3ac3dc311b130ec783d7ff5582ccf0923fa13c4688c5da387d4cc57d852d906020015b60405180910390a250565b610c06336120e6565b60fc5460ff1615158115151415610c585760405162461bcd60e51b8152602060048201526016602482015275474c3a2073616d6520656e61626c652073746174757360501b6044820152606401610b5e565b60fc805460ff191682151590811790915560405190815233907fa8434267b880129bc4ba30249aa4a2ac349e8997c699282a9f70562f0f152f5490602001610bf2565b610ca6610b03611da8565b610cb48282600060016120f9565b50817ff7d1fde87f32720fc30ce6847e0aae77e640b59bfac41b11b270358ccfa7a0ac82604051610ce791815260200190565b60405180910390a25050565b610cfe610b03611da8565b60008181526101a460209081526040808320815160c08101835281546001600160a01b039081168252600183015490811694820194909452929091830190600160a01b900460ff166002811115610d5757610d57613ed0565b6002811115610d6857610d68613ed0565b8152600282015460208201526003820154604082015260049091015460609091015280519091506001600160a01b0316610ddc5760405162461bcd60e51b815260206004820152601560248201527411158e881c995c5d595cdd081b9bdd08195e1a5cdd605a1b6044820152606401610b5e565b600081604001516002811115610df457610df4613ed0565b14610e3b5760405162461bcd60e51b815260206004820152601760248201527644563a2072657175657374206e6f742070656e64696e6760481b6044820152606401610b5e565b60008281526101a46020526040808220600101805460ff60a01b1916600160a11b179055825190516001600160a01b039091169184917ece63cc55966b103e4f4cb39f3426cb91718ad4f8eb4ad08c14a7ee749d81579190a35050565b6000610ea2611da8565b905090565b610eb2610b03611da8565b610ebd8160016123d5565b61016a81905560405181815233907f018be394ba93a0dbca235443cfdc7173b2479180ad766083ce05199fbf3fc62490602001610bf2565b610f00610b03610e98565b6001600160e01b0319811660009081526097602052604090205460ff1615610f3a5760405162461bcd60e51b8152600401610b5e9061431b565b6001600160e01b03198116600081815260976020908152604091829020805460ff19166001179055905191825233917f2278e547293e53a66144c1743877f8388ac3101bd21cfd7c7f4ce8c15c14f5c19101610bf2565b610f9c610b03610e98565b6001600160e01b0319811660009081526097602052604090205460ff16610ffd5760405162461bcd60e51b815260206004820152601560248201527414185d5cd8589b194e88199b881d5b9c185d5cd959605a1b6044820152606401610b5e565b6001600160e01b03198116600081815260976020908152604091829020805460ff19169055905191825233917f929135cc6324f958693bb5f24a4dbc226a83c721523fc2785545019a3423b2d79101610bf2565b61105c610b03611da8565b6001600160a01b0382166000908152610170602052604090205460ff16151581151514156110bf5760405162461bcd60e51b815260206004820152601060248201526f44563a20616c7265616479206672656560801b6044820152606401610b5e565b6001600160a01b03821660008181526101706020908152604091829020805460ff191685151590811790915591519182527f80f6f2f8801c6ac8fc60bf218b44fde97744d8709f69281972ec5557c10226cc9101610ce7565b611123610b03611da8565b6111376001600160a01b0384168284612455565b806001600160a01b0316836001600160a01b0316336001600160a01b03167f9ca7c1e047552a8048d924a5a8d3c150eb861086a72a9100e5f19d1176c1b7468560405161118691815260200190565b60405180910390a4505050565b61119e610b03610e98565b6111a66124b8565b565b7f42e8866b2477e7a5d5a32d4556dd19cfd1b3b30eeeadde96b310b6a00403a09b6111d161250a565b6001600160e01b0319811660009081526097602052604090205460ff161561120b5760405162461bcd60e51b8152600401610b5e9061431b565b61121433612550565b6001600160a01b038216331461122d5761122d82612550565b600061123b87878786612644565b8051602080830151606080850151604080516001600160a01b038b811682529581019690965285018c905290840191909152608083015260a082018790529192509088169033907fe8bfe7b6cdaff26f82915adfad787fe8cc232bf312d39f4eab839d013e65da5a9060c00160405180910390a350505050505050565b6112c3610b03611da8565b6112ce8160016127b5565b61016580546001600160a01b0319166001600160a01b03831690811790915560405133907fdb5a411e1a379f981ff6bc5284aa2c2522a9b8fd33a9db9ca19b34006cefbe9c90600090a350565b611326610b03610e98565b61012f80546001600160a01b0319166001600160a01b03831690811790915560405133907f7f0c791852a03e270d4c2b78bbd4b959bca234de8d1ccf27eee03afaeafe63c490600090a350565b600054600290610100900460ff16158015611395575060005460ff8083169116105b6113b15760405162461bcd60e51b8152600401610b5e90614348565b600080546101a684905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b611415610b03611da8565b600081116114565760405162461bcd60e51b815260206004820152600e60248201526d4d563a206c696d6974207a65726f60901b6044820152606401610b5e565b61016781905560405181815233907f5e8309fc6b2360e7438bc53790b00913395fffa870f39043fe63ddc8a438a9b290602001610bf2565b60007f6e26b9f895eaaeed488aad3a1eb8749c141bab2c8f2a11ab0477df429c9d75096114b961250a565b6001600160e01b0319811660009081526097602052604090205460ff16156114f35760405162461bcd60e51b8152600401610b5e9061431b565b6114fc33612550565b60008061150a87873361284b565b91509150866001600160a01b0316336001600160a01b0316837f3704c9b13a68ac43d7f8a85f2700f0b4f89a11ed9e2bcac5324f0d228d40900989856000015186602001518760a001518c604051611584959493929190948552602085019390935260408401919091526060830152608082015260a00190565b60405180910390a45095945050505050565b6115a1610b03610e98565b6111a66129dc565b6115b4610b03611da8565b6115c182826001806120f9565b50817f03ea09e71742c9c754c9746b3e671ecb27fc372e3d29c31bac0192458ffd9d4b82604051610ce791815260200190565b6115ff610b03611da8565b61016f81905560405181815233907f57e764c1fef224e74706b109734513889970db6f1dde107b1bda66e10d80ca9b90602001610bf2565b611642610b03611da8565b6001600160a01b0382161561165a5761165a82612a19565b6000811161169f5760405162461bcd60e51b81526020600482015260126024820152714d563a207a65726f20616c6c6f77616e636560701b6044820152606401610b5e565b6001600160a01b038216600081815261016e602052604090819020600201839055513391907ff7273742887a46d8b97d83d1d12b6d8d8e6d21d814072369e2f4b355690221d7906116f39085815260200190565b60405180910390a35050565b600054610100900460ff161580801561171f5750600054600160ff909116105b806117395750303b158015611739575060005460ff166001145b6117555760405162461bcd60e51b8152600401610b5e90614348565b6000805460ff191660011790558015611778576000805461ff0019166101001790555b61178789898989898989612a6b565b6101a382905580156117d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60006117e8612c43565b90506117f5838383611f61565b505050565b611805610b03611da8565b61181161016c82612ca2565b61184e5760405162461bcd60e51b815260206004820152600e60248201526d4d563a206e6f742065786973747360901b6044820152606401610b5e565b6001600160a01b038116600081815261016e602052604080822080546001600160a01b03191681556001810183905560028101839055600301805460ff19169055513392917f652fa2f5d587d3f1c189df0081b7bf3121f47d51d5471bf58d7d2c8a084894c391a350565b6118c4610b03611da8565b6118cf8160006123d5565b61016681905560405181815233907f45acc8bd6ebd6fbb59ce049b682c124aeccc93c468fcf60fecf61340e86e79d390602001610bf2565b7fc02dd27a7875a730ffbe5134ef3d2e61218576d993d5145c87342707cb30984261193061250a565b6001600160e01b0319811660009081526097602052604090205460ff161561196a5760405162461bcd60e51b8152600401610b5e9061431b565b61197333612550565b600061198186868633612644565b8051602080830151606080850151604080519586529385018b905292840191909152820152608081018590529091506001600160a01b0387169033907fdd6865ec496cf9bdd5cb1661ab84cf4e86edc877208a54cbf642f69d744530c59060a00160405180910390a3505050505050565b611a0289898989898989896116ff565b6117d381611373565b611a16610b03611da8565b6101a681905560405181815233907f27fdd491319f206fb1fd2dc08831db9085ca1cb91b5795f59c52fee3cd7cb22f90602001610bf2565b6060610ea261016c612cc0565b611a66610b03611da8565b60005b818110156117f55760006101a46000858585818110611a8a57611a8a614396565b9050602002013581526020019081526020016000206004015490506000611acd858585818110611abc57611abc614396565b9050602002013583600160006120f9565b905080611adb575050611b30565b848484818110611aed57611aed614396565b905060200201357f03ea09e71742c9c754c9746b3e671ecb27fc372e3d29c31bac0192458ffd9d4b83604051611b2591815260200190565b60405180910390a250505b80611b3a816143c2565b915050611a69565b611b4d610b03611da8565b611b5682612a19565b611b618160006123d5565b6001600160a01b038216600081815261016e602052604090819020600101839055513391907f1582567d288d96695cf3fe7280c630a4f1c82fc7e665e1db58468f2960fef869906116f39085815260200190565b611bc0610b03611da8565b6001600160a01b038116600090815261016b602052604090205460ff1615611c1e5760405162461bcd60e51b815260206004820152601160248201527013558e88185b1c9958591e481859191959607a1b6044820152606401610b5e565b6001600160a01b038116600081815261016b6020526040808220805460ff19166001179055513392917f221f04b37331150bcfd05e2de362f50785c29ee4ab14f26d4495a51f3c02906091a350565b60007fe50e3dbb8ace040059fa55a2d38d90f2a5c9df4f7d40fc288cca4f414b258778611c9861250a565b6001600160e01b0319811660009081526097602052604090205460ff1615611cd25760405162461bcd60e51b8152600401610b5e9061431b565b611cdb33612550565b6001600160a01b0383163314611cf457611cf483612550565b600080611d0288888761284b565b915091506000869050886001600160a01b0316336001600160a01b0316847fd21eaf3019cc16da5c82b2c14e3df524c0599086f690f48357de2c74f1bbdfd6898c876000015188602001518960a0015189604051611d93969594939291906001600160a01b03969096168652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a45090979650505050505050565b7f2e55e4462941cb91f5ff782032797a0cbda0aa6618f1558ba5b912d781b45be190565b611dd7610b03611da8565b611de28160016127b5565b61016980546001600160a01b0319166001600160a01b03831690811790915560405133907f1b092cca381ac00a07e1226c164f47c475d212f5e55699475a7f411811f77dd490600090a350565b611e3a610b03611da8565b611e4661016c86612cd4565b611e865760405162461bcd60e51b815260206004820152601160248201527013558e88185b1c9958591e481859191959607a1b6044820152606401610b5e565b611e918460006127b5565b611e9c8360006123d5565b604080516080810182526001600160a01b03868116808352602080840188815284860188815287151560608088018281528e8816600081815261016e88528b902099518a546001600160a01b0319169916989098178955935160018901559151600288015591516003909601805460ff19169615159690961790955585518981529182018890529481019490945292909133917f049000a9db89588d7bfb162bc0f7e4299ee8762430a468131c2caf0824f1f995910160405180910390a45050505050565b611f6c610b03611da8565b60005b82811015612012576000611f9f858584818110611f8e57611f8e614396565b9050602002013584600160006120f9565b905080611fac5750612000565b848483818110611fbe57611fbe614396565b905060200201357f03ea09e71742c9c754c9746b3e671ecb27fc372e3d29c31bac0192458ffd9d4b84604051611ff691815260200190565b60405180910390a2505b8061200a816143c2565b915050611f6f565b50505050565b600054604051632474521560e21b8152600481018490526001600160a01b03838116602483015262010000909204909116906391d148549060440160206040518083038186803b15801561206b57600080fd5b505afa15801561207f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a391906143dd565b6120e25760405162461bcd60e51b815260206004820152601060248201526f574d41433a206861736e7420726f6c6560801b6044820152606401610b5e565b5050565b6120ee610e98565b816117f58282612018565b60008481526101a460209081526040808320815160c08101835281546001600160a01b03908116825260018301549081169482019490945284939092830190600160a01b900460ff16600281111561215357612153613ed0565b600281111561216457612164613ed0565b8152600282015460208201526003820154604082015260049091015460609091015280519091506001600160a01b03166121d85760405162461bcd60e51b815260206004820152601560248201527411158e881c995c5d595cdd081b9bdd08195e1a5cdd605a1b6044820152606401610b5e565b6000816040015160028111156121f0576121f0613ed0565b146122375760405162461bcd60e51b815260206004820152601760248201527644563a2072657175657374206e6f742070656e64696e6760481b6044820152606401610b5e565b831561224b5761224b8160a0015186612ce9565b6000858260800151670de0b6b3a764000061226691906143fa565b6122709190614419565b905061227c8185612d7c565b61228b576000925050506123cd565b6101635482516040516340c10f1960e01b81526001600160a01b039182166004820152602481018490529116906340c10f1990604401600060405180830381600087803b1580156122db57600080fd5b505af11580156122ef573d6000803e3d6000fd5b505083516001600160a01b031660009081526101a560205260408120805485945090925061231e90849061443b565b90915550506001604083810182815260a0850189905260008a81526101a46020908152929020855181546001600160a01b039182166001600160a01b031991821617835593870151948201805495909116938516841781559151869491939092916001600160a81b03191617600160a01b8360028111156123a1576123a1613ed0565b0217905550606082015160028201556080820151600382015560a0909101516004909101555060019150505b949350505050565b6127108211156124145760405162461bcd60e51b815260206004820152600a602482015269666565203e203130302560b01b6044820152606401610b5e565b80156120e257600082116120e25760405162461bcd60e51b81526020600482015260086024820152670666565203d3d20360c41b6044820152606401610b5e565b6040516001600160a01b0383166024820152604481018290526117f590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612e7d565b6124c0612f52565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60655460ff16156111a65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610b5e565b60fc54819060ff16156125665761256681612f9b565b8161257081612fc1565b61012f5483906001600160a01b0316801561263d5760405163df592f7d60e01b81526001600160a01b03838116600483015282169063df592f7d9060240160206040518083038186803b1580156125c657600080fd5b505afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fe91906143dd565b1561263d5760405162461bcd60e51b815260206004820152600f60248201526e15d4d30e881cd85b98dd1a5bdb9959608a1b6044820152606401610b5e565b5050505050565b61264c613d59565b3361265a8187876001612fed565b915083826060015110156126b05760405162461bcd60e51b815260206004820152601d60248201527f44563a206d696e52656365697665416d6f756e74203e2061637475616c0000006044820152606401610b5e565b60608201516001600160a01b03821660009081526101a56020526040812080549091906126de90849061443b565b909155505060608201516126f190613198565b6127048683604001518460c00151613222565b6020820151156127355761016954602083015160c08401516127339289926001600160a01b0390911691613238565b505b6101635460608301516040516340c10f1960e01b81526001600160a01b03868116600483015260248201929092529116906340c10f1990604401600060405180830381600087803b15801561278957600080fd5b505af115801561279d573d6000803e3d6000fd5b505050506127ab60016132aa565b5050949350505050565b6001600160a01b0382166127fa5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610b5e565b80156120e2576001600160a01b0382163014156120e25760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b6044820152606401610b5e565b6000612855613d59565b336128606101625490565b925061287161016280546001019055565b61287e8187876000612fed565b61016554604082015160c08301519294506128a59289926001600160a01b03169190613238565b506020820151156128d75761016954602083015160c08401516128d59289926001600160a01b0390911691613238565b505b6040805160c0810182526001600160a01b038087168252881660208201529081016000815260200183600001518152602001670de0b6b3a76400008460800151856040015161292691906143fa565b6129309190614419565b815260a084015160209182015260008581526101a48252604090819020835181546001600160a01b03199081166001600160a01b0392831617835593850151600183018054958616919092169081178255928501519193919290916001600160a81b03191617600160a01b8360028111156129ad576129ad613ed0565b0217905550606082015181600201556080820151816003015560a0820151816004015590505050935093915050565b6129e461250a565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586124ed3390565b612a2561016c826132b7565b612a685760405162461bcd60e51b81526020600482015260146024820152734d563a20746f6b656e206e6f742065786973747360601b6044820152606401610b5e565b50565b600054610100900460ff16612a925760405162461bcd60e51b8152600401610b5e90614453565b612aa9612aa26020880188613db2565b60006127b5565b612abc612aa26040880160208901613db2565b612ad3612acc6020870187613db2565b60016127b5565b612ae6612acc6040870160208801613db2565b6000846020013511612b275760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc81b1a5b5a5d60b21b6044820152606401610b5e565b612b328260016123d5565b612b3e843560006123d5565b612b4b6020870187613db2565b61016380546001600160a01b0319166001600160a01b0392909216919091179055612b75876132d9565b612b7d613311565b612b85613311565b612b8e83613338565b612b9b6020860186613db2565b61016580546001600160a01b0319166001600160a01b0392909216919091179055612bcc6040860160208701613db2565b61016980546001600160a01b0319166001600160a01b03929092169190911790558335610166556020808501356101675561016f82905561016a839055612c199060408801908801613db2565b61016480546001600160a01b0319166001600160a01b039290921691909117905550505050505050565b61016454600090612c5d906001600160a01b031682613382565b905060008111612c9f5760405162461bcd60e51b815260206004820152600d60248201526c44563a2072617465207a65726f60981b6044820152606401610b5e565b90565b6000612cb7836001600160a01b03841661340f565b90505b92915050565b60606000612ccd83613502565b9392505050565b6000612cb7836001600160a01b03841661355e565b600082821015612d0257612cfd828461449e565b612d0c565b612d0c838361449e565b9050600083612d1d612710846143fa565b612d279190614419565b905061016a548111156120125760405162461bcd60e51b815260206004820152601a60248201527f4d563a2065786365656420707269636520646976696174696f6e0000000000006044820152606401610b5e565b6000806101a6548461016360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612dd357600080fd5b505afa158015612de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0b91906144b5565b612e15919061443b565b11905082612e2557159050612cba565b8015612e735760405162461bcd60e51b815260206004820152601b60248201527f44563a206d617820737570706c792063617020657863656564656400000000006044820152606401610b5e565b5060019392505050565b6000612ed2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135ad9092919063ffffffff16565b9050805160001480612ef3575080806020019051810190612ef391906143dd565b6117f55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b5e565b60655460ff166111a65760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610b5e565b7fd2576bd6a4c5558421de15cb8ecdf4eb3282aac06b94d4f004e8cd0d00f3ebd86120ee565b7f548c7f0307ab2a7ea894e5c7e8c5353cc750bb9385ee2e945f189a9a83daa8ed816117f582826135bc565b612ff5613d59565b6000831161303a5760405162461bcd60e51b815260206004820152601260248201527111158e881a5b9d985b1a5908185b5bdd5b9d60721b6044820152606401610b5e565b61304384613685565b60ff1660c082015261305484612a19565b60008061306186866136f8565b8185526080850181905290925090508661307b87876137d8565b61309661308c828989896000613881565b8560c00151613922565b602085018190526130a7908761449e565b604085015260808401516020850151600091670de0b6b3a7640000916130cd91906143fa565b6130d79190614419565b90506000806130f48388600001516130ef919061449e565b613938565b6060890182905260a089018190526001600160a01b03861660009081526101706020526040902054919350915060ff1661313657613136848860600151613969565b600087606001511161318a5760405162461bcd60e51b815260206004820152601760248201527f44563a20696e76616c6964206d696e7420616d6f756e740000000000000000006044820152606401610b5e565b505050505050949350505050565b60006131a76201518042614419565b60008181526101686020526040812054919250906131c690849061443b565b90506101675481111561320e5760405162461bcd60e51b815260206004820152601060248201526f13558e88195e18d95959081b1a5b5a5d60821b6044820152606401610b5e565b600091825261016860205260409091205550565b610165546120129084906001600160a01b031684845b60006132448383613a2a565b90506132508183613a38565b83146132955760405162461bcd60e51b81526020600482015260146024820152734d563a20696e76616c696420726f756e64696e6760601b6044820152606401610b5e565b6123cd6001600160a01b038616338684613a46565b6000612cba600083612d7c565b6001600160a01b03811660009081526001830160205260408120541515612cb7565b600054610100900460ff166133005760405162461bcd60e51b8152600401610b5e90614453565b613308613a7e565b612a6881613aad565b600054610100900460ff166111a65760405162461bcd60e51b8152600401610b5e90614453565b600054610100900460ff1661335f5760405162461bcd60e51b8152600401610b5e90614453565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b600080836001600160a01b031663636929056040518163ffffffff1660e01b815260040160206040518083038186803b1580156133be57600080fd5b505afa1580156133d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f691906144b5565b90508215612cb757670de0b6b3a7640000915050612cba565b600081815260018301602052604081205480156134f857600061343360018361449e565b85549091506000906134479060019061449e565b90508181146134ac57600086600001828154811061346757613467614396565b906000526020600020015490508087600001848154811061348a5761348a614396565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806134bd576134bd6144ce565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612cba565b6000915050612cba565b60608160000180548060200260200160405190810160405280929190818152602001828054801561355257602002820191906000526020600020905b81548152602001906001019080831161353e575b50505050509050919050565b60008181526001830160205260408120546135a557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612cba565b506000612cba565b60606123cd8484600085613b43565b600054604051632474521560e21b8152600481018490526001600160a01b03838116602483015262010000909204909116906391d148549060440160206040518083038186803b15801561360f57600080fd5b505afa158015613623573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061364791906143dd565b156120e25760405162461bcd60e51b815260206004820152600e60248201526d574d41433a2068617320726f6c6560901b6044820152606401610b5e565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156136c057600080fd5b505afa1580156136d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cba91906144e4565b6000806000831161373d5760405162461bcd60e51b815260206004820152600f60248201526e44563a20616d6f756e74207a65726f60881b6044820152606401610b5e565b6001600160a01b03808516600090815261016e6020526040902080546003820154919261376f9291169060ff16613382565b9150600082116137b15760405162461bcd60e51b815260206004820152600d60248201526c44563a2072617465207a65726f60981b6044820152606401610b5e565b670de0b6b3a76400006137c483866143fa565b6137ce9190614419565b9250509250929050565b6001600160a01b038216600090815261016e602052604090206002015460001981141561380457505050565b8181101561384b5760405162461bcd60e51b81526020600482015260146024820152734d563a2065786365656420616c6c6f77616e636560601b6044820152606401610b5e565b6001600160a01b038316600090815261016e60205260408120600201805484929061387790849061449e565b9091555050505050565b6001600160a01b038516600090815261016b602052604081205460ff16156138ab57506000613919565b6000826138d557506001600160a01b038516600090815261016e60205260409020600101546138d8565b50815b83156138ef57610166546138ec908261443b565b90505b6127108111156138fe57506127105b61271061390b82876143fa565b6139159190614419565b9150505b95945050505050565b6000612cb7826139328582613a2a565b90613a38565b600080613943612c43565b90508061395884670de0b6b3a76400006143fa565b6139629190614419565b9150915091565b61016f548110156139bc5760405162461bcd60e51b815260206004820152601760248201527f44563a206d546f6b656e20616d6f756e74203c206d696e0000000000000000006044820152606401610b5e565b6001600160a01b03821660009081526101a56020526040902054156139df575050565b6101a3548110156120e25760405162461bcd60e51b8152602060048201526015602482015274222b1d1036b4b73a1030b6b7bab73a101e1036b4b760591b6044820152606401610b5e565b6000612cb783601284613c1e565b6000612cb783836012613c1e565b6040516001600160a01b03808516602483015283166044820152606481018290526120129085906323b872dd60e01b90608401612481565b600054610100900460ff16613aa55760405162461bcd60e51b8152600401610b5e90614453565b6111a6613c8b565b600054610100900460ff16613ad45760405162461bcd60e51b8152600401610b5e90614453565b6001600160a01b038116613b195760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610b5e565b600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b606082471015613ba45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b5e565b600080866001600160a01b03168587604051613bc09190614533565b60006040518083038185875af1925050503d8060008114613bfd576040519150601f19603f3d011682016040523d82523d6000602084013e613c02565b606091505b5091509150613c1387838387613cbe565b979650505050505050565b600083613c2d57506000612ccd565b81831415613c3c575082612ccd565b600082841115613c6c57613c50838561449e565b613c5b90600a614633565b613c659086614419565b90506123cd565b613c76848461449e565b613c8190600a614633565b61391990866143fa565b600054610100900460ff16613cb25760405162461bcd60e51b8152600401610b5e90614453565b6065805460ff19169055565b60608315613d2a578251613d23576001600160a01b0385163b613d235760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b5e565b50816123cd565b6123cd8383815115613d3f5781518083602001fd5b8060405162461bcd60e51b8152600401610b5e919061463f565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b0381168114613dad57600080fd5b919050565b600060208284031215613dc457600080fd5b612cb782613d96565b600060208284031215613ddf57600080fd5b81356001600160e01b031981168114612cb757600080fd5b600060208284031215613e0957600080fd5b5035919050565b8015158114612a6857600080fd5b600060208284031215613e3057600080fd5b8135612cb781613e10565b60008060408385031215613e4e57600080fd5b50508035926020909101359150565b60008060408385031215613e7057600080fd5b613e7983613d96565b91506020830135613e8981613e10565b809150509250929050565b600080600060608486031215613ea957600080fd5b613eb284613d96565b925060208401359150613ec760408501613d96565b90509250925092565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0387811682528616602082015260c0810160038610613f1c57634e487b7160e01b600052602160045260246000fd5b8560408301528460608301528360808301528260a0830152979650505050505050565b600080600080600060a08688031215613f5757600080fd5b613f6086613d96565b9450602086013593506040860135925060608601359150613f8360808701613d96565b90509295509295909350565b600080600060608486031215613fa457600080fd5b613fad84613d96565b95602085013595506040909401359392505050565b60008060408385031215613fd557600080fd5b613fde83613d96565b946020939093013593505050565b600060408284031215613ffe57600080fd5b50919050565b600080600080600080600080610160898b03121561402157600080fd5b61402a89613d96565b97506140398a60208b01613fec565b96506140488a60608b01613fec565b95506140578a60a08b01613fec565b945061406560e08a01613d96565b979a969950949793969561010085013595506101208501359461014001359350915050565b60008083601f84011261409c57600080fd5b50813567ffffffffffffffff8111156140b457600080fd5b6020830191508360208260051b85010111156140cf57600080fd5b9250929050565b600080602083850312156140e957600080fd5b823567ffffffffffffffff81111561410057600080fd5b61410c8582860161408a565b90969095509350505050565b6000806000806080858703121561412e57600080fd5b61413785613d96565b966020860135965060408601359560600135945092505050565b60008060008060008060008060006101808a8c03121561417057600080fd5b6141798a613d96565b98506141888b60208c01613fec565b97506141978b60608c01613fec565b96506141a68b60a08c01613fec565b95506141b460e08b01613d96565b989b979a509598949796610100860135965061012086013595610140810135955061016001359350915050565b6020808252825182820181905260009190848201906040850190845b818110156142225783516001600160a01b0316835292840192918401916001016141fd565b50909695505050505050565b6000806000806080858703121561424457600080fd5b61424d85613d96565b9350602085013592506040850135915061426960608601613d96565b905092959194509250565b600080600080600060a0868803121561428c57600080fd5b61429586613d96565b94506142a360208701613d96565b9350604086013592506060860135915060808601356142c181613e10565b809150509295509295909350565b6000806000604084860312156142e457600080fd5b833567ffffffffffffffff8111156142fb57600080fd5b6143078682870161408a565b909790965060209590950135949350505050565b60208082526013908201527214185d5cd8589b194e88199b881c185d5cd959606a1b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156143d6576143d66143ac565b5060010190565b6000602082840312156143ef57600080fd5b8151612cb781613e10565b6000816000190483118215151615614414576144146143ac565b500290565b60008261443657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561444e5761444e6143ac565b500190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000828210156144b0576144b06143ac565b500390565b6000602082840312156144c757600080fd5b5051919050565b634e487b7160e01b600052603160045260246000fd5b6000602082840312156144f657600080fd5b815160ff81168114612cb757600080fd5b60005b8381101561452257818101518382015260200161450a565b838111156120125750506000910152565b60008251614545818460208701614507565b9190910192915050565b600181815b8085111561458a578160001904821115614570576145706143ac565b8085161561457d57918102915b93841c9390800290614554565b509250929050565b6000826145a157506001612cba565b816145ae57506000612cba565b81600181146145c457600281146145ce576145ea565b6001915050612cba565b60ff8411156145df576145df6143ac565b50506001821b612cba565b5060208310610133831016604e8410600b841016171561460d575081810a612cba565b614617838361454f565b806000190482111561462b5761462b6143ac565b029392505050565b6000612cb78383614592565b602081526000825180602084015261465e816040850160208701614507565b601f01601f1916919091016040019291505056fea2646970667358221220af0322d48d587ad445ea343dc63ea217edf6ab5b322524ee5676648e8892482364736f6c63430008090033