0 txs
0 calls
constructor
constructor(address _ethUsdFeed, address _silverUsdFeed, address _treasuryPool, address _bankxPidController, address _router, address _xsdWethPool, address _bankxWethPool, address _xsdToken, address _bankxToken, address _rewardManager)
functions
bankxMaxSlippage
viewfunction bankxMaxSlippage() view returns (uint256)
bankxPidController
viewfunction bankxPidController() view returns (address)
bankxPidRunCompleted
viewfunction bankxPidRunCompleted() view returns (bool)
bankxPurchaseAmountUsd
viewfunction bankxPurchaseAmountUsd() view returns (uint256)
bankxToken
viewfunction bankxToken() view returns (address)
bankxWethPool
viewfunction bankxWethPool() view returns (address)
burnCooldown
viewfunction burnCooldown() view returns (uint256)
ethUsdFeed
viewfunction ethUsdFeed() view returns (address)
gasCostBuffer
viewfunction gasCostBuffer() view returns (uint256)
getBankXBalance
viewfunction getBankXBalance() view returns (uint256)
getNativeTokenPrice
viewfunction getNativeTokenPrice() view returns (uint256)
getSilverPrice
viewfunction getSilverPrice() view returns (uint256)
lastBankxBurnTimestamp
viewfunction lastBankxBurnTimestamp() view returns (uint256)
lastBankxPidCalculationTimestamp
viewfunction lastBankxPidCalculationTimestamp() view returns (uint256)
lastExecutionTimestamp
viewfunction lastExecutionTimestamp() view returns (uint256)
lastLiquidityPidCalculationTimestamp
viewfunction lastLiquidityPidCalculationTimestamp() view returns (uint256)
lastPidCalculationTimestamp
viewfunction lastPidCalculationTimestamp() view returns (uint256)
liquidityPidRunCompleted
viewfunction liquidityPidRunCompleted() view returns (bool)
maxSlippage
viewfunction maxSlippage() view returns (uint256)
minTimeBetweenSteps
viewfunction minTimeBetweenSteps() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pegThreshold
viewfunction pegThreshold() view returns (uint256)
pidRunCompleted
viewfunction pidRunCompleted() view returns (bool)
purchaseAmountUsd
viewfunction purchaseAmountUsd() view returns (uint256)
rewardManager
viewfunction rewardManager() view returns (address)
router
viewfunction router() view returns (address)
silverUsdFeed
viewfunction silverUsdFeed() view returns (address)
totalBankXBurned
viewfunction totalBankXBurned() view returns (uint256)
totalBankXPurchased
viewfunction totalBankXPurchased() view returns (uint256)
transactionDeadlineWindow
viewfunction transactionDeadlineWindow() view returns (uint256)
treasuryPool
viewfunction treasuryPool() view returns (address)
unburnedBankXBalance
viewfunction unburnedBankXBalance() view returns (uint256)
xsdToken
viewfunction xsdToken() view returns (address)
xsdWethPool
viewfunction xsdWethPool() view returns (address)
executeRules
nonpayablefunction executeRules() returns (bool)
flushBankX
nonpayablefunction flushBankX(address to)
flushXSD
nonpayablefunction flushXSD(address to)
pause
nonpayablefunction pause()
recoverETH
nonpayablefunction recoverETH(address to)
renounceOwnership
nonpayablefunction renounceOwnership()
resetPidRunState
nonpayablefunction resetPidRunState()
setBankxMaxSlippage
nonpayablefunction setBankxMaxSlippage(uint256 _bankxMaxSlippage)
setBankxPurchaseAmountUsd
nonpayablefunction setBankxPurchaseAmountUsd(uint256 _bankxPurchaseAmountUsd)
setGasCostBuffer
nonpayablefunction setGasCostBuffer(uint256 _gasCostBuffer)
setMaxSlippage
nonpayablefunction setMaxSlippage(uint256 _maxSlippage)
setMinTimeBetweenSteps
nonpayablefunction setMinTimeBetweenSteps(uint256 _minTimeBetweenSteps)
setPegThreshold
nonpayablefunction setPegThreshold(uint256 _pegThreshold)
setPurchaseAmountUsd
nonpayablefunction setPurchaseAmountUsd(uint256 _purchaseAmountUsd)
setRewardManager
nonpayablefunction setRewardManager(address _rewardManager)
setRouterAddress
nonpayablefunction setRouterAddress(address _router)
setTransactionDeadlineWindow
nonpayablefunction setTransactionDeadlineWindow(uint256 _transactionDeadlineWindow)
setTreasuryPool
nonpayablefunction setTreasuryPool(address _treasuryPool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
BankXBought
event BankXBought(uint256 ethAmount, uint256 bankxAmount, uint256 timestamp)
BankXBurnAttempted
event BankXBurnAttempted(uint256 amount, uint256 timestamp)
BankXBurned
event BankXBurned(uint256 amount, uint256 timestamp)
BankXBurnFailed
event BankXBurnFailed(string reason, uint256 amount, uint256 timestamp)
BankXBuyInitiated
event BankXBuyInitiated(uint256 ethAmount, uint256 timestamp)
BankXPidCalculationCompleted
event BankXPidCalculationCompleted(uint256 timestamp, bool success)
BuyFailed
event BuyFailed(string reason, uint256 timestamp)
DeficitValidated
event DeficitValidated(uint256 capacity, uint256 timestamp)
ETHWithdrawnForBankX
event ETHWithdrawnForBankX(uint256 amount, uint256 timestamp)
ETHWithdrawnForLiquidity
event ETHWithdrawnForLiquidity(uint256 amount, uint256 timestamp)
LiquidityPidCalculationCompleted
event LiquidityPidCalculationCompleted(uint256 timestamp, bool success)
LiquiditySellFailed
event LiquiditySellFailed(string reason, uint256 timestamp)
LiquiditySellInitiated
event LiquiditySellInitiated(uint256 availableCapacity, uint256 timestamp)
LiquiditySold
event LiquiditySold(uint256 ethAmount, uint256 timestamp)
NumericalCheck
event NumericalCheck(string operation, uint256 value1, uint256 value2, bool passed)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PIDCalculationCompleted
event PIDCalculationCompleted(uint256 timestamp, bool success)
RulesEngineExecuted
event RulesEngineExecuted(uint256 timestamp)
SlippageValidated
event SlippageValidated(uint256 slippage, uint256 maxSlippage, uint256 timestamp)
Unpaused
event Unpaused(address account)
XSDBought
event XSDBought(uint256 ethAmount, uint256 xsdAmount, uint256 timestamp)
XSDTransferredToTreasury
event XSDTransferredToTreasury(uint256 amount, uint256 timestamp)
errors
No errors.
creation bytecode
0x6080346200036b57601f6200388938819003918201601f19168301916001600160401b038311848410176200037057808492610140946040528339810103126200036b576200004e8162000386565b906200005d6020820162000386565b6200006b6040830162000386565b620000796060840162000386565b620000876080850162000386565b6200009560a0860162000386565b91620000a460c0870162000386565b93620000b360e0880162000386565b95620000d2610120620000ca6101008b0162000386565b990162000386565b98600054604051903360018060a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a81b0319163360ff60a01b19161760005560018055600a600f556101f4601055629896806011819055609660125566038d7ea4c6800060135561012c60145560175560c860185562015180601d556001600160a01b03821615158062000358575b8062000345575b8062000332575b806200031f575b806200030c575b80620002f9575b80620002e6575b80620002d3575b80620002c0575b15620002725750600380546001600160a01b03199081166001600160a01b0393841617909155600480548216938316939093179092556002805483169382169390931790925560058054821693831693909317909255600780548316938216939093179092556008805482169383169390931790925560098054831693821693909317909255600a8054821693831693909317909255600b8054831693821693909317909255600680549091169290911691909117905542600c556040516134ed90816200039c8239f35b62461bcd60e51b815260206004820152602360248201527f52756c657320456e67696e653a205a65726f20616464726573732064657465636044820152621d195960ea1b6064820152608490fd5b506001600160a01b038b161515620001a7565b506001600160a01b038a161515620001a0565b506001600160a01b038916151562000199565b506001600160a01b038816151562000192565b506001600160a01b03871615156200018b565b506001600160a01b038616151562000184565b506001600160a01b03851615156200017d565b506001600160a01b038416151562000176565b506001600160a01b03831615156200016f565b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200036b5756fe6080604081815260049081361015610022575b505050361561002057600080fd5b005b600092833560e01c90816306c2d5e51461164b5750806306cdb51a146116275780630f4ef8a6146115fe578063134dfcd8146114df578063153ee554146114405780631cd6b20e146114215780632115594b1461140257806323396d07146113655780632f0ded811461134657806332ea099a146112a657806333579c1014611287578063337247fa1461125f578063358d1fc6146112405780633f4ba83a146111a657806341cb87fc1461110357838163425170e214610ffc5750806343f68a4914610fbc57806348df582914610f935780634e279b7914610f7657806355fb0b8314610f4d5780635c975abb14610f28578063634b594814610f0957806363dc80ab14610eea578063715018a614610e9057806371e07e8414610e715780637fdeae6514610df65780638009b7bd14610dcd57806382cc696d14610d5e5780638327700a14610d355780638456cb5914610cd6578063898622e814610cb75780638ae6ee2e14610c985780638c04166f14610c795780638da5cb5b14610c515780638fdf7c8214610c3257806394c7763814610c0e5780639fd2f75b14610bef578063a37f94f614610b70578063a588fc1e14610b47578063aa50720214610b23578063ae90953814610b04578063b5a3acf914610ac4578063bfc45a1614610a97578063c4144af314610a78578063c597e80214610a4f578063c6f75990146109d5578063cb967dc614610990578063d5d5aa651461096c57838163dd76b54d1461082457508063e1f83d8914610805578063e48d2100146107d8578063eadac2fd146107b9578063f2fde38b146106f0578063f887ea40146106c75763fce8f8930361001257346103745782600319360112610374576001916002835414610685578390600284556102b6611737565b6102be611af9565b1561042d57600d5460ff161561038f576102dd600e54600f54906116c8565b421015610382575b42600c556002546001600160a01b0316803b15610374576024839285519485938492630fe18f2d60e31b845242908401525af1801561037857610360575b6020838361032f61304e565b7fb90c98e2ec0431685d927934719a4e255262cb2ee5f5180d72a67b634b7fe8e0838251428152a181805551908152f35b61036a84916116eb565b6103745782610323565b8280fd5b82513d86823e3d90fd5b61038a611d1d565b6102e5565b6005546001600160a01b0316803b1561037457828091838651809481936380524e5960e01b83525af180156104235790839161040b575b50508360ff19600d541617600d5542600e557ff6c9c96ad33a30ff6233a8608897630f2ee260eebf96017d9a8b5eeb5a7bf1de838051428152866020820152a16102e5565b610414906116eb565b61041f5781386103c6565b5080fd5b84513d85823e3d90fd5b610435611be3565b80610677575b156104f85760155460ff16156104685761045a601654600f54906116c8565b42106102e55761038a6124f9565b6005546001600160a01b0316803b1561037457828091838651809481936380524e5960e01b83525af18015610423579083916104e4575b50508360ff196015541617601555426016557f9e6aa7518705968b5cede54a4cee29e2ffe611ebbe54ccb568e3d122d51e5bc4838051428152866020820152a16102e5565b6104ed906116eb565b61041f57813861049f565b610500611be3565b806105cc575b156102e557601a5460ff161561053357610525601b54600f54906116c8565b42106102e55761038a6129b8565b6005549091906001600160a01b0316803b1561041f578190838551809481936380524e5960e01b83525af180156105c2576105af575b5083908360ff19601a541617601a5542601b557ff98c79a420d284fa9fccbba96f4bb32db3ab650d64a99a5df4f695e8717d24f8838051428152866020820152a16102e5565b6105bb909491946116eb565b9238610569565b83513d87823e3d90fd5b506002549091506001600160a01b03166105e4611878565b8015610664579060008051602061349883398151915260c061061d889594601354906f03c2f7086aed236c807a1b5000000000046116c8565b8084311193319087519160808352601460808401527342616e6b5820707572636861736520636865636b60601b60a0840152602083015287820152836060820152a1610506565b634e487b7160e01b865260128352602486fd5b506106806123c4565b61043b565b6020606492519162461bcd60e51b8352820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b83823461041f578160031936011261041f5760075490516001600160a01b039091168152602090f35b5034610374576020366003190112610374576001600160a01b038235818116939192908490036107b557610722611670565b831561076357505082546001600160a01b0319811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8480fd5b83823461041f578160031936011261041f576020906016549051908152f35b50503461041f57602036600319011261041f57356107f4611670565b6107ff811515613373565b60175580f35b83823461041f578160031936011261041f57602090600f549051908152f35b9190503461041f57602092836003193601126103745780356001600160a01b03808216808303610957576108619061085a611670565b151561340b565b600b541683516370a0823160e01b815230848201528681602481855afa801561096257869061092f575b6108999150601954906116c8565b91826108a3578580f35b845163a9059cbb60e01b81526001600160a01b039091169381019384526020840192909252909385928592918391829060400103925af190811561092657506108f8575b505080601955388181808080808580f35b8161091792903d1061091f575b61090f8183611715565b810190611d05565b5038806108e7565b503d610905565b513d85823e3d90fd5b508681813d831161095b575b6109458183611715565b8101031261095757610899905161088b565b8580fd5b503d61093b565b85513d88823e3d90fd5b83823461041f578160031936011261041f5760209060ff600d541690519015158152f35b83346109d257806003193601126109d2576109a9611670565b60ff1980600d5416600d5581600e55806015541660155581601655601a5416601a5580601b5580f35b80fd5b509034610374576020366003190112610374578035916109f3611670565b8215610a01575050600f5580f35b906020608492519162461bcd60e51b8352820152602260248201527f4d696e2074696d65206265747765656e207374657073206d757374206265203e604482015261020360f41b6064820152fd5b83823461041f578160031936011261041f57600b5490516001600160a01b039091168152602090f35b83823461041f578160031936011261041f576020906014549051908152f35b50503461041f57602036600319011261041f5735610ab3611670565b610abe811515613373565b60115580f35b50503461041f57602036600319011261041f5735610ae0611670565b80151580610af8575b610af2906133bf565b60185580f35b506101f4811115610ae9565b83823461041f578160031936011261041f57602090601f549051908152f35b83823461041f578160031936011261041f5760209060ff6015541690519015158152f35b83823461041f578160031936011261041f5760095490516001600160a01b039091168152602090f35b50903461037457602036600319011261037457803591610b8e611670565b8215610b9c57505060145580f35b906020608492519162461bcd60e51b8352820152602760248201527f5472616e73616374696f6e20646561646c696e652077696e646f77206d7573746044820152660206265203e20360cc1b6064820152fd5b83823461041f578160031936011261041f57602090601b549051908152f35b83823461041f578160031936011261041f57602090610c2b611878565b9051908152f35b83823461041f578160031936011261041f576020906010549051908152f35b83823461041f578160031936011261041f57905490516001600160a01b039091168152602090f35b83823461041f578160031936011261041f576020906012549051908152f35b83823461041f578160031936011261041f57602090600e549051908152f35b83823461041f578160031936011261041f576020906013549051908152f35b83823461041f578160031936011261041f5760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25891610d14611670565b610d1c611737565b835460ff60a01b1916600160a01b17845551338152a180f35b83823461041f578160031936011261041f5760055490516001600160a01b039091168152602090f35b50903461037457602036600319011261037457803591610d7c611670565b8215610d8a57505060135580f35b906020606492519162461bcd60e51b8352820152601b60248201527f47617320636f737420627566666572206d757374206265203e203000000000006044820152fd5b83823461041f578160031936011261041f5760035490516001600160a01b039091168152602090f35b50903461037457602036600319011261037457803591610e14611670565b82151580610e65575b15610e2a57505060105580f35b906020606492519162461bcd60e51b83528201526015602482015274125b9d985b1a59081c1959c81d1a1c995cda1bdb19605a1b6044820152fd5b506105dc831115610e1d565b83823461041f578160031936011261041f576020906018549051908152f35b83346109d257806003193601126109d257610ea9611670565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461041f578160031936011261041f57602090601d549051908152f35b83823461041f578160031936011261041f57602090601e549051908152f35b83823461041f578160031936011261041f5760ff6020925460a01c1690519015158152f35b83823461041f578160031936011261041f57600a5490516001600160a01b039091168152602090f35b83823461041f578160031936011261041f57602090610c2b6119e6565b83823461041f578160031936011261041f5760025490516001600160a01b039091168152602090f35b50503461041f57602036600319011261041f5735610fd8611670565b80151580610ff0575b610fea906133bf565b60125580f35b506101f4811115610fe1565b9190503461041f57602092836003193601126103745780356001600160a01b03808216808303610957576110329061085a611670565b600a54168351916370a0823160e01b835230848401528683602481855afa9283156109625786936110d4575b5082611068578580f35b845163a9059cbb60e01b81526001600160a01b039091169381019384526020840192909252909385928592918391829060400103925af190811561092657506110b6575b8080808086948580f35b816110cc92903d1061091f5761090f8183611715565b5038806110ac565b9092508681813d83116110fc575b6110ec8183611715565b810103126109575751913861105e565b503d6110e2565b5090346103745760203660031901126103745780356001600160a01b03811692908390036111a257611133611670565b82156111515750506001600160601b0360a01b600754161760075580f35b906020608492519162461bcd60e51b8352820152602560248201527f526f7574657220616464726573732063616e6e6f74206265207a65726f206164604482015264647265737360d81b6064820152fd5b8380fd5b5090346103745782600319360112610374576111c0611670565b82549060ff8260a01c1615611206575060ff60a01b19168255513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b606490602084519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b83823461041f578160031936011261041f57602090600c549051908152f35b5090346103745782600319360112610374575490516001600160a01b03909116815260209150f35b83823461041f578160031936011261041f576020906017549051908152f35b509034610374578260031936011261037457600b5482516370a0823160e01b81523092810192909252602090829060249082906001600160a01b03165afa92831561133b578093611302575b602083610c2b86601954906116c8565b9092506020833d8211611333575b8161131d60209383611715565b810103126109d25750610c2b60209251926112f2565b3d9150611310565b8251903d90823e3d90fd5b83823461041f578160031936011261041f576020906011549051908152f35b5090346103745760203660031901126103745780356001600160a01b03811692908390036111a257611395611670565b82156113b35750506001600160601b0360a01b600254161760025580f35b906020608492519162461bcd60e51b83528201526024808201527f547265617375727920506f6f6c2063616e6e6f74206265207a65726f206164646044820152637265737360e01b6064820152fd5b83823461041f578160031936011261041f57602090601c549051908152f35b83823461041f578160031936011261041f576020906019549051908152f35b5090346103745760203660031901126103745780356001600160a01b03811692908390036111a257611470611670565b821561148e5750506001600160601b0360a01b600654161760065580f35b906020608492519162461bcd60e51b8352820152602560248201527f526577617264204d616e616765722063616e6e6f74206265207a65726f206164604482015264647265737360d81b6064820152fd5b50346103745760203660031901126103745781356001600160a01b038116908190036111a25761150d611670565b80156115bb578390478061151f578280f35b8280929181925af13d156115b6573d67ffffffffffffffff81116115a357825190611554601f8201601f191660200183611715565b81528460203d92013e5b1561156a578281808280f35b906020606492519162461bcd60e51b83528201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152fd5b634e487b7160e01b855260418452602485fd5b61155e565b815162461bcd60e51b8152602081850152601e60248201527f43616e6e6f74207265636f76657220746f207a65726f206164647265737300006044820152606490fd5b83823461041f578160031936011261041f5760065490516001600160a01b039091168152602090f35b83823461041f578160031936011261041f5760209060ff601a541690519015158152f35b84903461041f578160031936011261041f576008546001600160a01b03168152602090f35b6000546001600160a01b0316330361168457565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b919082018092116116d557565b634e487b7160e01b600052601160045260246000fd5b67ffffffffffffffff81116116ff57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176116ff57604052565b60ff60005460a01c1661174657565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b90816020910312611797575160ff811681036117975790565b600080fd5b60ff6011199116019060ff82116116d557565b60ff166012039060ff82116116d557565b60ff16604d81116116d557600a0a90565b81156117db570490565b634e487b7160e01b600052601260045260246000fd5b9064e8d4a51000918281029281840414901517156116d557565b818102929181159184041417156116d557565b1561182557565b60405162461bcd60e51b815260206004820152602560248201527f52756c657320456e67696e653a20507269636520636f6e76657274656420746f604482015264207a65726f60d81b6064820152608490fd5b600354604051638e15f47360e01b81526020916001600160a01b03168282600481845afa91821561195a576000926119b7575b506000821315611966578260049160405192838092633c05076160e21b82525afa92831561195a5760009361192b575b5050601260ff83161015611911576118fd6118f8611903936117af565b6117c0565b9061180b565b61190e81151561181e565b90565b6119206118f86119269361179c565b906117d1565b611903565b61194b929350803d10611953575b6119438183611715565b81019061177e565b9038806118db565b503d611939565b6040513d6000823e3d90fd5b60405162461bcd60e51b815260048101849052602360248201527f52756c657320456e67696e653a20496e76616c6964204554482f55534420707260448201526269636560e81b6064820152608490fd5b90918382813d83116119df575b6119ce8183611715565b810103126109d257505190386118ab565b503d6119c4565b60048054604051638e15f47360e01b815260209290916001600160a01b0316908390839081845afa91821561195a57600092611abd575b506000821315611a69578260049160405192838092633c05076160e21b82525afa92831561195a5760009361192b575050601260ff83161015611911576118fd6118f8611903936117af565b60405162461bcd60e51b815260048101849052602660248201527f52756c657320456e67696e653a20496e76616c69642053696c7665722f55534460448201526520707269636560d01b6064820152608490fd5b90918382813d8311611ae5575b611ad48183611715565b810103126109d25750519038611a1d565b503d611aca565b919082039182116116d557565b600554604051631819c17b60e11b815290602090829060049082906001600160a01b03165afa801561195a57600090611bb0575b611b3791506117f1565b611b3f6119e6565b601054612710908103908082116116d557611b6b60c0926000805160206134988339815191529461180b565b049283811093604051916080835260136080840152725853442062656c6f772070656720636865636b60681b60a084015260208301526040820152836060820152a190565b6020823d8211611bdb575b81611bc860209383611715565b810103126109d25750611b379051611b2d565b3d9150611bbb565b600554604051631819c17b60e11b815290602090829060049082906001600160a01b03165afa801561195a57600090611cd2575b611c2191506117f1565b611c296119e6565b90601054916127108381038181116116d557611c4682918461180b565b049381018082116116d557611c5b908361180b565b04928210159283611cb9575b506000805160206134988339815191529160c0916040519160808352601060808401526f5853442061742070656720636865636b60801b60a0840152602083015260408201528315156060820152a190565b8211159250600080516020613498833981519152611c67565b6020823d8211611cfd575b81611cea60209383611715565b810103126109d25750611c219051611c17565b3d9150611cdd565b90816020910312611797575180151581036117975790565b611d25611af9565b159060009161238057611d36611878565b6011546c0c9f2c9cd04674edea400000009081810291818304149015171561236c5790611d62916117d1565b801561230f5760135492604093611dcb85519160808352601660808401527522aa241030b6b7bab73a1031b0b631bab630ba34b7b760511b60a084015260008051602061349883398151915260c06020948786820152838a82015260016060820152a1846116c8565b6008548651630240bc6b60e21b81526001600160a01b0394926004929091906060908290859082908a165afa91821561230557849185936122d2575b506001600160701b0380921690811580156122c8575b612276578760025416908082311061222957908787959493928d5192839163732b5a0560e11b8352898301528160249889925af190811561212757879161220c575b50156121b05790611e74611e7c93928a61180b565b9116906117d1565b80156121555760125490600a820291808304600a149015171561214357612710918203908282116121315790611eb19161180b565b0494611ebf601454426116c8565b81600a5416968a5191878386816370a0823160e01b9c8d8252308b8301525afa9283156121275787936120f4575b50836007541691823b156120f05790604488928c8f51958694859363b15f62e760e01b85528c8501528a8401525af180156120d3576120dd575b5081600a5416968a519081523085820152868185818b5afa9081156120d3579087929187916120a0575b50611f989291611f6091611aec565b80988c888660025416915180968195829463095ea7b360e01b84528c840160209093929193604081019460018060a01b031681520152565b03925af1801561209657612079575b506002541691823b156111a25783918691838b519586948593631ef16d9360e31b85528401525af1801561206f5761205b575b5050847fa6bcff7327a59a4537b80c4a4fb16db320e0a7621b2cdda1d9f73b56703bcbae81612056937f1e8e878037ccb9400e67d82c2a2cac22012d87c3dcddcfc54de3f9fb669aa1a2979851908682524290820152a1600d805460ff1916905551928352602083019190915242604083015281906060820190565b0390a1565b61206582916116eb565b6109d25780611fda565b87513d84823e3d90fd5b61208f90863d881161091f5761090f8183611715565b5038611fa7565b8a513d87823e3d90fd5b83819492503d83116120cc575b6120b78183611715565b81010312611797579051869190611f98611f51565b503d6120ad565b8b513d88823e3d90fd5b6120e9909591956116eb565b9338611f27565b8780fd5b9092508781813d8311612120575b61210c8183611715565b8101031261211c57519138611eed565b8680fd5b503d612102565b8c513d89823e3d90fd5b634e487b7160e01b8652601185528386fd5b634e487b7160e01b8552601184528285fd5b50505050600080516020613458833981519152915084608091601b6121ae969751928084528301527f457870656374656420585344206f7574707574206973207a65726f000000000060608301524290820152a161332c565b565b505050505050612201925084600080516020613458833981519152949592505192828493845283016040906015815274115512081dda5d1a191c985dd85b0819985a5b1959605a1b60208201520190565b9042908301520390a1565b6122239150883d8a1161091f5761090f8183611715565b38611e5f565b5050505050505061220192508460008051602061345883398151915294959250519282849384528301604090601081526f092dce6eaccccd2c6d2cadce8408aa8960831b60208201520190565b505050505050612201925084600080516020613458833981519152949592505192828493845283016040906016815275506f6f6c20726573657276657320617265207a65726f60501b60208201520190565b5082841615611e1d565b9092506122f6915060603d81116122fe575b6122ee8183611715565b8101906132f6565b509138611e07565b503d6122e4565b89513d86823e3d90fd5b509050600080516020613458833981519152604051604081528061236160408201604090601d81527f45544820616d6f756e742063616c63756c61746564206173207a65726f00000060208201520190565b4260208301520390a1565b634e487b7160e01b84526011600452602484fd5b90506000805160206134588339815191526080604051604081526011604082015270585344206e6f742062656c6f772070656760781b6060820152426020820152a1565b60055460408051631945f38960e31b815290916001600160a01b0316906020908181600481865afa9081156124c9576000916124dc575b50156124d457825163af3542ad60e01b8152918183600481845afa9283156124c95760009361249a575b509080600492855193848092636aa1099360e01b82525afa938415612490575060009361245f575b5050111561245a57600190565b600090565b8181949293943d8311612489575b6124778183611715565b810103126109d257505190388061244d565b503d61246d565b513d6000823e3d90fd5b90928282813d83116124c2575b6124b18183611715565b810103126109d25750519181612425565b503d6124a7565b84513d6000823e3d90fd5b505050600090565b6124f39150823d841161091f5761090f8183611715565b386123fb565b6005546040805163af3542ad60e01b81526001600160a01b039392600491602091861682828581845afa9182156129795784918491600094612984575b508651636aa1099360e01b815292839182905afa9081156129795760009161294a575b5061256391611aec565b917fb08ba1c49e85fa1e9baef9c91350617d103447a4c0f807b2237c99c66a11c04f8480518581524285820152a17fe016044a4a247816f1e34086702eefd441fb174638fa416ea66559c5b5a252128480518581524285820152a185600254168031601354809111156128e5576125db818331611aec565b605f810290808204605f14901517156128d057606490046125fa611878565b612603876117f1565b670de0b6b3a7640000908181029181830414901517156128bb5790612627916117d1565b808210156128b35750945b851561284d5761269c60009260008051602061349883398151915260c088948b519060808252601960808301527f4c69717569646974792073656c6c2045544820616d6f756e740000000000000060a08301528b878301528c82015260016060820152a1876116c8565b92602488518094819363732b5a0560e11b835287898401525af190811561284257600091612825575b50156127af57847fcb0be743e45c8e7be0cc5f52a51a5c0309146ae4126f21bfdc0fb44a20bbee129181519081524285820152a1612705601454426116c8565b60075460085488169716803b15611797578551631d906ba760e11b81526001600160a01b03909816928801928352602083019190915260009187919082908690829060400103925af19485156127a4577f49d857f7fba8b1f25ff18d826f4ff74022b29b38f2cfc7b1615b1a2598e2b8129495612795575b5082519182524290820152a160ff1960155416601555565b61279e906116eb565b3861277d565b83513d6000823e3d90fd5b50507fa8132e228fce5817918dae66a0b9272ce6f59ff8387cae41ba65a610747903c7939450829150602960a09351928084528301527f4661696c656420746f207769746864726177204554482066726f6d20547265616060830152681cdd5c9e48141bdbdb60ba1b60808301524290820152a1565b61283c9150843d861161091f5761090f8183611715565b386126c5565b86513d6000823e3d90fd5b505050507fa8132e228fce5817918dae66a0b9272ce6f59ff8387cae41ba65a610747903c7939450829150601d60809351928084528301527f43616c63756c617465642045544820616d6f756e74206973207a65726f00000060608301524290820152a1565b905094612632565b601186634e487b7160e01b6000525260246000fd5b601184634e487b7160e01b6000525260246000fd5b5050507fa8132e228fce5817918dae66a0b9272ce6f59ff8387cae41ba65a610747903c7939450829150601860809351928084528301527f496e73756666696369656e742045544820666f7220676173000000000000000060608301524290820152a1565b908382813d8311612972575b6129608183611715565b810103126109d2575051612563612559565b503d612956565b85513d6000823e3d90fd5b809350829194923d83116129b1575b61299d8183611715565b810103126109d25750828491519238612536565b503d612993565b6129c0611be3565b15600090613008576129d06123c4565b612fb35760095460408051630240bc6b60e21b815260609392600492916001600160a01b0391869082908690829086165afa9384156105c25785918695612f91575b506001600160701b038092169687158015612f87575b612f3857612a34611878565b92601754936c0c9f2c9cd04674edea40000000808602908682041486151715612f255790612a61916117d1565b968715612ebd5760008051602061349883398151915260c0885160808152601c60808201527f42616e6b582045544820616d6f756e742063616c63756c6174696f6e0000000060a08201526020978b898301528a820152600186820152a1612acb601354896116c8565b9186600254169a838c3110612e70578a9b878a9b9c999a51809263732b5a0560e11b8252878a8301528160249c8d925af1908115612e66578d91612e49575b5015612de95790611e74612b4c93927f312f34410e09be2921360a00b14d5591ae1509b87e79776ff02ab8010a7caccf8c8051888152428c820152a18c61180b565b9060185492600a840293808504600a1481151715612dd757895185815260208101919091524260408201527fd0866cd9a3c49c46b7a2b1677d1713ce18ca121772213e9354e4194001e8698590606090a18215612d7857505061271091820390828211612d665790612bbd9161180b565b0492612bcb601454426116c8565b9480600b541694875196858885816370a0823160e01b9a8b8252308a8301525afa978815612d5c578b98612d29575b50826007541691823b15612d25579060448c928c8c519586948593630c2a19bf60e21b85528b850152898401525af18015612d1b57612d04575b5090839291600b54169487519586938492835230908301525afa958615612cf95795612cc5575b5050612c8b612cb6917f2e8f0686967aeb83ad79489ba699d08a72324cde49fe4d2246e0a8b5b74a390195611aec565b91612c9883601e546116c8565b601e5551928352602083019190915242604083015281906060820190565b0390a160ff19601a5416601a55565b90809550813d8311612cf2575b612cdc8183611715565b8101031261179757925192612c8b612cb6612c5b565b503d612cd2565b8451903d90823e3d90fd5b98612d12859493929a6116eb565b98909192612c34565b88513d8c823e3d90fd5b8b80fd5b9097508581813d8311612d55575b612d418183611715565b81010312612d5157519638612bfa565b8a80fd5b503d612d37565b89513d8d823e3d90fd5b634e487b7160e01b8a5260118452858afd5b9550975050505060a09250926121ae9560008051602061347883398151915294601d8351948086528501527f45787065637465642042616e6b58206f7574707574206973207a65726f00000060808501528301524290820152a161332c565b634e487b7160e01b8c5260118652878cfd5b50505050949250509150612e3b935060008051602061347883398151915294815194848695865285016040906015815274115512081dda5d1a191c985dd85b0819985a5b1959605a1b60208201520190565b9284015242908301520390a1565b612e609150883d8a1161091f5761090f8183611715565b38612b0a565b8b513d8f823e3d90fd5b505050509450509190506000805160206134788339815191529450612e3b9381519484869586528501604090601081526f092dce6eaccccd2c6d2cadce8408aa8960831b60208201520190565b5050945050505060008051602061347883398151915293509182612f1593519383859485528401604090601d81527f45544820616d6f756e742063616c63756c61746564206173207a65726f00000060208201520190565b91602084015242908301520390a1565b634e487b7160e01b8a526011855260248afd5b945050505060008051602061347883398151915293509182612f15935193838594855284016040906016815275506f6f6c20726573657276657320617265207a65726f60501b60208201520190565b5082861615612a28565b909450612fab9150863d88116122fe576122ee8183611715565b509338612a12565b60a0600080516020613478833981519152916040519060608252601c60608301527f4c697175696469747920636170616369747920617661696c61626c650000000060808301526020820152426040820152a1565b60a0600080516020613478833981519152916040519060608252600e60608301526d585344206e6f742061742070656760901b60808301526020820152426040820152a1565b601c54613060600091601d54906116c8565b42106132df57600b54604080516370a0823160e01b8082523060048301526001600160a01b039492936020939290861691908481602481865afa80156132d55784906132a6575b6130b59150601954906116c8565b95861561329d577f74f46507e63e5aa1ac4a0f8bfb7ccf74707049e735ecb28cc18a156ea8882bd88680518981524288820152a18551928284523060048501528584602481845afa93841561326457859461326e575b50803b156107b5578480916024895180948193630852cd8d60e31b83528d60048401525af180156132645790869291613251575b50600b541691602487518094819382523060048301525afa9283156132465792613217575b50818111156131c75761319d7fc49f0961ab9db9428454edbcf70875fb788fdcdeabfe45ec201c477fef5d18b09593926131a492611aec565b8093611aec565b60195542601c556131b782601f546116c8565b601f5582519182524290820152a1565b505060a0918360008051602061347883398151915294601955815192606084526015606085015274109d5c9b881bdc195c985d1a5bdb8819985a5b1959605a1b60808501528301524290820152a1565b9091508281813d831161323f575b61322f8183611715565b8101031261179757519038613164565b503d613225565b8551903d90823e3d90fd5b61325d909591956116eb565b933861313f565b87513d87823e3d90fd5b9093508581813d8311613296575b6132868183611715565b810103126107b55751923861310b565b503d61327c565b50505050505050565b508481813d83116132ce575b6132bc8183611715565b810103126111a2576130b590516130a7565b503d6132b2565b86513d86823e3d90fd5b50565b51906001600160701b038216820361179757565b908160609103126117975761330a816132e2565b916040613319602084016132e2565b92015163ffffffff811681036117975790565b6002546001600160a01b0316803b156117975760009060246040518094819363f52cc91360e01b83528160048401525af1801561195a5761336a5750565b6121ae906116eb565b1561337a57565b60405162461bcd60e51b815260206004820152601b60248201527f507572636861736520616d6f756e74206d757374206265203e203000000000006044820152606490fd5b156133c657565b60405162461bcd60e51b815260206004820152601f60248201527f496e76616c6964206d617820736c6970706167652028302e31252d35302529006044820152606490fd5b1561341257565b60405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420666c75736820746f207a65726f2061646472657373000000006044820152606490fdfea93def8ebc799bf4d99ab7a5e261dab99d8495022ae474f710b7ac2c937357e32e58990f396e219eea40d80fc13ff05a8d62c4f477b86172e51e26cc91004c3a90f6b96915e8e55bd8e86cd2a8ff5028094874f7fb6c3237241a2ac9cea4f7c0a26469706673582212200219571cff9b5d3f109ea094929628c1693b06370e11dd77bd9fef457723f3d364736f6c63430008150033000000000000000000000000eea52f6587f788cc12d0b5a28c48e61866c076f0000000000000000000000000abac1c04408cb6509bc9340e6b033c17f161ef9e0000000000000000000000009bc6adf2569954a81f9eb8f99a14699fd11284e30000000000000000000000009f5f98657e714cfbb5af899b722685e8e7f71b7d00000000000000000000000059f9c86a232f643250f9fae6ad4139b924c3b0d50000000000000000000000000626a71d29f85c0fc665612623991aa2ea2eab620000000000000000000000001ff77d8e8e011bcf505cd4c6c110b53969fb5e84000000000000000000000000a3034ef5f9d98f4dac6fc44421642c2616d9e34600000000000000000000000093abe713002526d4ce708f890139f19313012f95000000000000000000000000f8305c1aa6bd5e743eb2dd6889021a926b1a8351