0 txs
0 calls
constructor
constructor()
functions
calcLiquidationPrice
viewfunction calcLiquidationPrice(bytes32 positionKey, bytes32 key, uint256 indexPrice, bool long) view returns (uint256 liqPrice, uint256 markPrice, bool liquidate, uint256 collateral, uint256 size)
feedIds
viewfunction feedIds(bytes32) view returns (bytes32)
getEOAaddress
viewfunction getEOAaddress(address _smartAccount) view returns (address)
getMarketFundingRate
viewfunction getMarketFundingRate(bytes32 key, uint256 indexPrice) view returns (int256 fundingRate)
getMarketOI
viewfunction getMarketOI(bytes32 key) view returns (uint256 marketOI, uint256 longOI, uint256 shortOI)
getMarkPrice
viewfunction getMarkPrice(bytes32 key, uint256 indexPrice) view returns (uint256 markPrice)
getPerpetualPrice
viewfunction getPerpetualPrice(bytes32 key, uint256 indexPrice) view returns (uint256)
getPerpetualPriceForPosition
viewfunction getPerpetualPriceForPosition(bytes32 key, uint256 indexPrice, int256 size, bool long) view returns (uint256)
getPositionsData
viewfunction getPositionsData(bytes32[] positionsKey) view returns (tuple[])
owner
viewfunction owner() view returns (address)
ownershipRegistry
viewfunction ownershipRegistry() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
totalWeights
viewfunction totalWeights() view returns (uint256)
unrealizedPnL
viewfunction unrealizedPnL() view returns (int256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
version
purefunction version() pure returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
chargeMakerFeeFromOrder
nonpayablefunction chargeMakerFeeFromOrder(address trader, bytes32 key, uint256 size)
initialize
nonpayablefunction initialize(address liqPool, address t, address usdc, address _users, address pythContract, address _automationLiquidationsV3, address _automationOrdersV3)
initializeMarket
nonpayablefunction initializeMarket(bytes32 key, uint256 weight, uint256 makerFeeMultiplier, uint256 takerFeeMultiplier, uint256 tradingFeeToLPs, uint256 tradingFeeToTreasury, uint256 fundingFeeToLPs, uint256 fundingFeeToTreasury, uint256 allowedLeverage, uint256 chillFactor)
liquidatePosition
nonpayablefunction liquidatePosition(address owner, bool isLong, uint256 indexPrice, bytes32 key)
modifyPosition
nonpayablefunction modifyPosition(uint256 collateral, uint256 size, bool isLong, bool isIncrease, bytes32 key, uint256 price, uint256 slippage, bytes[] priceUpdate)
modifyPositionFromOrders
nonpayablefunction modifyPositionFromOrders(address owner, uint256 collateral, uint256 size, uint256 indexPrice, bool isLong, bool isIncrease, bytes32 key, uint256 price, uint256 slippage, bool checkSlippage)
renounceOwnership
nonpayablefunction renounceOwnership()
setLiquidityPool
nonpayablefunction setLiquidityPool(address _liquidityPool)
setOperator
nonpayablefunction setOperator(address _operator)
setOperatorPnL
nonpayablefunction setOperatorPnL(address _operator)
setTreasury
nonpayablefunction setTreasury(address _treasury)
setUsers
nonpayablefunction setUsers(address _users)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateFeedIds
nonpayablefunction updateFeedIds(bytes32[] _marketKeys, bytes32[] _feedIds)
updateFundingFeeGrowth
nonpayablefunction updateFundingFeeGrowth(tuple[] marketUpdate)
updateUnrealizedPnL
nonpayablefunction updateUnrealizedPnL(tuple[] marketUpdate)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Initialized
event Initialized(uint64 version)
InitiateTrade
event InitiateTrade(address msgSender, uint256 collateral, uint256 size, bool isLong, bool isIncrease, bytes32 key, uint256 price, uint256 slippage)
ModifiedPosition
event ModifiedPosition(uint256 indexed positionId, address indexed owner, bytes32 indexed positionKey, bytes32 marketKey, bool isLong, uint256 size, uint256 collateral, uint256 price, uint256 perpetualPrice, uint256 txType, address eoa, uint256 badDebt, int256 trackingFundingFee)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PositionLiquidated
event PositionLiquidated(uint256 indexed positionId, address indexed owner, bytes32 indexed positionKey, bytes32 marketKey, uint256 perpetualPrice, uint256 liqPrice, int256 trackingFundingFee)
TradingFees
event TradingFees(bytes32 marketKey, address eoa, address trader, uint256 feeType, bool toLP, uint256 usdcAmount)
UpdatedFundingFeeGrowth
event UpdatedFundingFeeGrowth(uint256 perpetualPrice, uint256 fundingFeeToLPs)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346100e857306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b604051615ec790816100ed8239608051818181612b560152612c510152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610054565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c806301877020146144d8578063073814fa146144425780632ebb24a31461442957806335876476146141d05780633718057914612eb257806337ea6ea014612e985780634a9cead114612dfc5780634f1ef28614612bd6578063522a4fd014612baa57806352d1902d14612b4357806354fd4d5014612b275780635f9c01d7146129f25780636e6f67ce146118a95780636f75010d1461101d5780637100d69614610e0c578063715018a614610d8d578063735b10fb14610d5857806377c6044b14610d0c57806379ba509714610cbc5780638b805e6514610c705780638da5cb5b14610c3b578063926323d514610c1d578063a74456ba14610bff578063ad3cb1cc14610ba3578063af79293b14610a73578063b3ab15fb14610a27578063bdccb048146105c1578063c2fa690d146103b2578063d1870b9114610388578063d47b495f14610339578063e30c397814610304578063f0f44260146102b8578063f2fde38b14610232578063fa8bce3d146101de5763ffbe7bbf146101a6575061000e565b346101db5760203660031901126101db5760206101c96101c4614524565b614eea565b6040516001600160a01b039091168152f35b80fd5b50346101db5760203660031901126101db576060906002604060043592838152600b60205260018282200154938152600b60205220015461021f81836149b1565b9160405192835260208301526040820152f35b50346101db5760203660031901126101db5761024c614524565b610254614f72565b5f80516020615e7283398151915280546001600160a01b0319166001600160a01b039283169081179091555f80516020615dd2833981519152549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b50346101db5760203660031901126101db576102d2614524565b6102da614f72565b6001600160a01b03166102ee8115156146f3565b6001600160601b0360a01b600254161760025580f35b50346101db57806003193601126101db575f80516020615e72833981519152546040516001600160a01b039091168152602090f35b50346101db5760803660031901126101db5760a0610366610358614550565b604435602435600435614a87565b9260409291925194855260208501521515604084015260608301526080820152f35b50346101db5760203660031901126101db5760406020916004358152600a83522054604051908152f35b50346101db5760203660031901126101db576004356001600160401b0381116105bd576103e39036906004016145c7565b80516103ee816145b0565b916103fc604051938461458f565b818352601f1961040b836145b0565b01845b818110610568575050835b8281106104c8578385604051918291602083016020845282518091526020604085019301915b81811061044d575050500390f35b919350916020610140600192610120875180518352848101518584015260408101516040840152606081015160608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e0840152610100810151610100840152015161012082015201940191019184939261043f565b806104d5600192846149fa565b5186526009602052604086206009604051916104f08361455f565b80548352848101546020840152600281015460408401526003810154606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008810154610100840152015461012082015261055682876149fa565b5261056181866149fa565b5001610419565b6020906040516105778161455f565b87815287838201528760408201528760608201528760808201528760a08201528760c08201528760e082015287610100820152876101208201528282880101520161040e565b5080fd5b50346101db576105d03661463f565b6004546001600160a01b031633036105bd57805190825b8281106105f2578380f35b6105fc81836149fa565b5151602061060a83856149fa565b510151610617818361487b565b918652600b602052604086206008610641889361063c61063782886147c2565b6147da565b614820565b059087918881135f146109f45761065991925061483a565b906602386f26fc10008083136109ec575b505b8782131561084757600981019182546127100392612710841180610833576127106106978685614760565b046106a7600386019182546149b1565b9055600284018054909590918c83156107d357506107bf5794670de0b6b3a76400006107706127108261076760019d9c996107628f9a5f80516020615df28339815191529e9b6107ae9b60409f6107779c6107148a6107096107199488614760565b048589015490614760565b614773565b610728600687019182546149b1565b90555b5493876107388685614760565b04610748600783019182546149b1565b905560088101610758815461499e565b9055015490614760565b614760565b04049254614731565b04906149b1565b915b61079683898060a01b03600754168a8060a01b038b541690615c17565b60075460025460a08a901b8a90039081169116615c17565b82519182526020820152a1016105e7565b634e487b7160e01b8c52601160045260248cfd5b5f80516020615df283398151915298506107779350670de0b6b3a764000091506127108261076760019d9c996107628f9a6107ae9a9b8560409f9a8861082161082c926107709c5086614760565b048387015490614760565b049c61072b565b634e487b7160e01b8b52601160045260248bfd5b908781121561098b5761085990614a2f565b906009810191825461271003926127108411806108335761271061087d8685614760565b0461088d600486019182546149b1565b9055600184018054909590918c831561093657506107bf5794670de0b6b3a76400006107706127108261076760019d9c996107628a60025f80516020615df28339815191529f9c9b60409f6109309c6107146107ae9f6107096108f1948d92614760565b610900600587019182546149b1565b90555b60078501610911815461499e565b90555493876109208685614760565b04610758600883019182546149b1565b91610779565b5f80516020615df283398151915298506109309350670de0b6b3a764000091506127108261076760019d9c996107626107ae999a60028560409f9a88610821610984926107709c5086614760565b049c610903565b50600193925f80516020615df2833981519152926107ae610930846007604096016109b6815461499e565b9055600881016109c6815461499e565b9055670de0b6b3a76400006107706002826109e38d860154614731565b04930154614731565b91505f61066a565b888112610a02575b5061066c565b610a0d919250614791565b906602386f26fc0fff19808312156109fc5791505f6109fc565b50346101db5760203660031901126101db57610a41614524565b610a49614f72565b6001600160a01b0316610a5d8115156146f3565b6001600160601b0360a01b600454161760045580f35b50346101db576101403660031901126101db5760043560a435608435602435610a9a614f72565b612710610aa784846149b1565b03610b5e57610ab8816006546149b1565b600655838552600b6020526040852055828452600b602052604435600b604086200155828452600b602052606435600c604086200155828452600b602052600d604085200155818352600b602052600e604084200155808252600b60205260c4356009604084200155808252600b60205260e435600a604084200155808252600b6020526101043560116040842001558152600b60205261012435601260408320015580f35b60405162461bcd60e51b815260206004820152601860248201527f46656573206d7573742061646420757020746f203130302500000000000000006044820152606490fd5b50346101db57806003193601126101db5760408051610bc2828261458f565b6005815260208101640352e302e360dc1b81528251938492602084525180928160208601528585015e828201840152601f01601f19168101030190f35b50346101db57806003193601126101db576020600854604051908152f35b50346101db57806003193601126101db576020600654604051908152f35b50346101db57806003193601126101db575f80516020615dd2833981519152546040516001600160a01b039091168152602090f35b50346101db5760203660031901126101db57610c8a614524565b610c92614f72565b6001600160a01b0316610ca68115156146f3565b6001600160601b0360a01b600354161760035580f35b50346101db57806003193601126101db575f80516020615e7283398151915254336001600160a01b0390911603610cf957610cf633614fa5565b80f35b63118cdaa760e01b815233600452602490fd5b50346101db5760203660031901126101db57610d26614524565b610d2e614f72565b6001600160a01b0316610d428115156146f3565b6001600160601b0360a01b600e541617600e5580f35b50346101db5760803660031901126101db576020610d85610d77614550565b604435602435600435614a3f565b604051908152f35b50346101db57806003193601126101db57610da6614f72565b5f80516020615e7283398151915280546001600160a01b03199081169091555f80516020615dd28339815191528054918216905581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101db5760603660031901126101db57610e26614524565b600d54602435906001600160a01b0316330361101957808352600b602052604083205415610fd457610e5782614eea565b90808452600b60205260408420600b015460443590610e7591614760565b620186a09004610e879084848461509d565b50600754600154838752600b60205260408720600d01546001600160a01b039283169287921690610eb89085614760565b612710900491610ec7936159fc565b818552600b60205260408520600d0154610ee19082614760565b604080518481526001600160a01b038681166020830152871691810191909152600160608201819052608082015261271090910460a08201525f80516020615e328339815191529060c090a1600754600254838752600b60205260408720600e01546001600160a01b039283169287921690610f5d9085614760565b612710900491610f6c936159fc565b818552600b60205260408520600e0154610f8591614760565b604080519283526001600160a01b0393841660208401529390921692810192909252600160608301525f6080830152612710900460a08201525f80516020615e328339815191529060c090a180f35b60405162461bcd60e51b815260206004820152601960248201527f4d61726b6574206b657920646f6573206e6f74206578697374000000000000006044820152606490fd5b8280fd5b50346101db5760803660031901126101db5780611038614524565b60243580151581036118a557600c546064359290604435906001600160a01b031633036118a157819061106a82614eea565b908691611078868886615be2565b885260096020528660408920988992886110a88187866110a3838261109d858261487b565b9e615be2565b614a87565b5050505096815f1461182e57848452600b6020528361113686670de0b6b3a76400006107706110e3600560408720015460088d015490614a22565b6107628c600660076040876110fd60018601548098614760565b049a898152600b60205288611121886107626003868620015460048a015490614a22565b04998152600b60205220015491015490614a22565b905b8181111561172f579061114a91614a22565b98600287019961115b818c546149b1565b808c55819b60018a0154828111156116cb575b5050505093608099979383879361122161121b7fd644618c5fd5e256f16ca24b14608d481e8716a67c80483f8cc95c2336ed7c9d9f611213819f9d999c620186a06107706114079f6113fd9f600b8f8e6040916111fb9488965b156116ae579060036111e16111ea936001840154614760565b91015490614773565b975b81528260205220015485614760565b04928c8c52600b602052600c60408d20015490614760565b908689615599565b906149b1565b908c600288019485548085105f1461154a5750839291815f80516020615e3283398151915280938b6112e86127106112a7600d8f6040906112966113a69f60018060a01b0360075416908761128f60018060a01b0360015416928c8752600b60205288888820015490614760565b0491615c17565b868152600b6020522001548b614760565b604080519485526001600160a01b03958616602086015294881694840194909452600360608401526001608084015290920460a082015290819060c0820190565b0390a16007546002548b8b52600b60205260408b20600e0154611321926001600160a01b039081169216906127109061128f908a614760565b898952600b602052611380612710611340600e60408d20015488614760565b604080518e81526001600160a01b0395861660208201529590941693850193909352600360608501525f608085015290910460a0830152819060c0820190565b0390a161138e828654614a22565b85556001880161139f838254614a22565b90556147c2565b945b8660018201958654928361148e575b50505050925050505f14611458578c8b8183131561142d576040826001926113e99452600b60205220019182546149b1565b90555b6113f7898b88615c50565b8961487b565b9854968885615be2565b6040805198895260208901999099529787015260608601526001600160a01b031693a480f35b9160406114519261143f600193614a2f565b948152600b6020522001918254614a22565b90556113ec565b8c8b8183131561147c576040826002926114519452600b60205220019182546149b1565b9160406114519261143f600293614a2f565b9386979895936114c4936114b9836114bf9560036115189c9a0154936114b386614a2f565b91614a3f565b90615ba5565b614a2f565b815480821015611528575060075460015461150f92916114f29183916001600160a01b039182169116615c17565b8d61150960018060a01b0360075416928554614a22565b91615c17565b558354906147c2565b91555f8d818c8f8f8790826113b7565b60075460015461154593506001600160a01b039081169116615c17565b61150f565b6007546001548a8a52600b60205260408a20600d0154959b96505f80516020615e3283398151915295611594936001600160a01b0393841693909216916127109161128f91614760565b61162f878961271061128f8a54838552600b602052886115ff846115bf600d60408a20015485614760565b604080518981526001600160a01b03808e1660208301528e1691810191909152600360608201526001608082015291900460a082015290819060c0820190565b0390a1600754600254948652600b6020526040909520600e01546001600160a01b03958616959094169390614760565b61169061271061165088548b8b52600b602052600e60408c20015490614760565b604080518c81526001600160a01b0395861660208201529590941693850193909352600360608501525f608085015290910460a0830152819060c0820190565b0390a1836116a460018301978854906147c2565b96558383556113a8565b61071482600360016116c595015491015490614760565b976111ec565b88949d50978a9b97938f9d9b9799938b97936116e88c9683614a22565b91826116f391614a22565b90556007546001546117139183916001600160a01b039081169116615c17565b61171c91614a22565b9d9498965083979b9a9c5081955061116e565b61173891614a22565b986117428a614a2f565b996002880190808254115f146117bb5793879361122161121b7fd644618c5fd5e256f16ca24b14608d481e8716a67c80483f8cc95c2336ed7c9d9f60809f9d9995819f9d999c620186a06107706114079f6113fd9f9b600b8f8e6040916111fb948f8b6117b48b996112139e54614a22565b90556111c8565b5086925093858c9a989496929b999555856001850183868183546117de906147a8565b93557fd644618c5fd5e256f16ca24b14608d481e8716a67c80483f8cc95c2336ed7c9d9f60809f6114079c620186a0610770816113fd9f600b60406112219a61121b9a611213996111fb956111c8565b848452600b6020528361189b86670de0b6b3a764000061077061185d600660408720015460098d015490614a22565b6107628c6007600860408761187760018601548098614760565b049a898152600b60205288611121886107626004868620015460058a015490614a22565b90611138565b8480fd5b5050fd5b50346101db576101403660031901126101db576118c4614524565b6084359081151582036110195760a4359182151583036129ee57610124359283151584036118a157600d546001600160a01b031633036118a15761190783614eea565b936119158360c43586615be2565b86526009602052604086209461192f60643560c43561487b565b879088898091819682988c600181015480612795575b5050808061278d575b156121cd57505050506119698760443560643560c435614a3f565b508961271061010435116101db57611abd612710611aab87600e60405f80516020615e32833981519152968f611a98906119c2886119ac6101043560e435614760565b046119b98160e4356149b1565b5060e435614a22565b5060c4358352600b60205289816119f3620186a06119e8600c8989200154604435614760565b04828a60c43561509d565b5060075460015460c4358852600b602052888820600d0154929a92611a35926001600160a01b0390811692169085908f90611a2e908f614760565b04926159fc565b60c4358652600b602052611a628b611a53600d8a8a2001548c614760565b04885193849360c43585615a63565b0390a160075460025460c4358552600b6020528585208701546001600160a01b039283169391909216918a90611a2e908a614760565b60c4358152600b60205220015490614760565b046040519182918c8960c43585615a99565b0390a1600754611add906024359030908b906001600160a01b03166159fc565b868a60018b015480155f1461214457505050600554808a555f198114610833578a916001611b39920160055560443560018c015560243560028c0155611b2b8960443560643560c435614a3f565b60038c015560443590614860565b915b60c4358252600b602052600360408320015460048b015560c4358252600b602052600460408320015460058b0155875f146121115760c4358252600b602052600760408320015460068b015560c4358252600b602052600560408320015460088b01555b87156120145781831315611f6e5790610714611bf69261121b60409560c4358552600b602052611bf060018887200154600f611bdb84836149b1565b998a9860c4358152600b602052200154614760565b92614760565b60c4358a52600b602052600f60408b20015560c4358952600b602052600160408a2001555b60038103611da4578760028801805480611d83575b505050611c408560c43588615c50565b600c5488906001600160a01b0316803b156105bd5781611c7a6101a48b83604051958694859363167ffd4960e21b85526004850190615b08565b6001600160a01b038e1661014484015260c4356101648401528c15156101848401525af18015611d7857611d55575b50509261014092602096927f9b5839247c12920537ab678b686b686c324a25cd2e07ad010effbcb2702b62f8955b611ce560643560c43561487b565b8a5498611cf58160c43589615be2565b9b600181015460036002830154920154926040519d8e9160c4358352151591015260408d015260608c015260808b015260a08a015260c089015260018060a01b031660e088015261010087015261012086015260018060a01b031693a480f35b81611d659198949693959861458f565b611d745792909491875f611ca9565b8780fd5b6040513d84823e3d90fd5b600754611d9b91908a906001600160a01b0316615c17565b55875f80611c30565b600287015460c4358952600b602052611dc4601160408b20015482614760565b6001890154809110611f295710611ef057611dea8560643560c4356110a383828c615be2565b5050611ede578615611ee3578111611ede5788905b82611ea157600c546001600160a01b0316803b15611019578783918b838c611e4160405197889687958694630ff8de2760e31b865260c4359160048701615b6a565b03925af18015611d7857611e82575b50509261014092602096927f9b5839247c12920537ab678b686b686c324a25cd2e07ad010effbcb2702b62f895611cd7565b81611e929198949693959861458f565b611d745792909491875f611e50565b600c546001600160a01b0316803b15611019578783918b838c611e41604051978896879586946315bd16c360e21b865260c4359160048701615b6a565b615ace565b8110611ede578890611dff565b60405162461bcd60e51b81526020600482015260116024820152701cda5e99480f0818dbdb1b185d195c985b607a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f4d6f7265207468616e206d6178696d756d206c657665726167650000000000006044820152606490fd5b508112611f7c575b50611c1b565b611f8590614a2f565b60c4358952600b602052600160408a2001548111611fc15760c4358952600b602052611fb9600160408b2001918254614a22565b90555f611f76565b60405162461bcd60e51b815260206004820152602560248201527f52656475636520616d6f756e74206578636565647320746f74616c206c6f6e676044820152642073697a6560d81b6064820152608490fd5b81831315612073579061071461204a9261121b60409560c4358552600b602052611bf0600288872001546010611bdb84836149b1565b60c4358a52600b602052601060408b20015560c4358952600b602052600260408a200155611c1b565b5081126120805750611c1b565b61208990614a2f565b60c4358952600b602052600260408a20015481116120bd5760c4358952600b602052611fb9600260408b2001918254614a22565b60405162461bcd60e51b815260206004820152602660248201527f52656475636520616d6f756e74206578636565647320746f74616c2073686f72604482015265742073697a6560d01b6064820152608490fd5b60c4358252600b602052600860408320015460078b015560c4358252600b602052600660408320015460098b0155611b9f565b6121b49295506121a6908c61219b612189600361216e60019997999b60443560643560c435614a3f565b93019261121b61217f868654614760565b9160443590614760565b612195604435856149b1565b90614773565b9055604435906149b1565b60018c015560443590614860565b9160028a016121c660243582546149b1565b9055611b3b565b939492931580612785575b6121e4575b5050611b3b565b93909361274e575b60018b0154156110195761224061121b620186a06122358e868e15612736579060036111e161221d93604435614760565b60c4358852600b602052600c60408920015490614760565b048c8960c435615599565b9060028c01908c8c8984548681115f1461260e5750915f80516020615e3283398151915261236094928794612339612710612329600e60408f886122de866122cd8f6122b660018060a01b036007541660018060a01b036001541660c4358952600b6020528561128f600d8c8c20015486614760565b60c4358652600b602052600d878720015490614760565b0484519182918c8c60c43585615a63565b0390a161231660018060a01b03600754168d8761128f60018060a01b03600254169260c4358752600b60205288888820015490614760565b60c4358152600b60205220015489614760565b0460405193849360c43585615a99565b0390a1612347838654614a22565b855560016123588482840154614a22565b9101556147c2565b945b6121dd579194509591506123938860038c0154604435906114b983612388604435614a2f565b60643560c435614a3f565b928b808513156124b157506123d3906123bc8c60016123b48b604435614a22565b910154614a22565b60018d01556123cd88604435614a22565b906147c2565b95602435612473575b50506001546001600160a01b03168a813b156101db57604051630b16327960e11b81526001600160a01b038b166004820152602481018590529181908390604490829084905af1918261245a575b50506124525750925b60018801541561244957886002925b5f806121dd565b88600392612442565b939050612433565b816124649161458f565b61246f578a5f61242a565b8a80fd5b6124aa9161248d61248683602435614a22565b8254614a22565b90556007546001600160a01b0316908a9061150990602435614a22565b5f806123dc565b929690936124be90614a2f565b938b83548087105f146125ce575085612546926124f1926124e0838854614a22565b875560016123588482840154614a22565b60075460015461250f9188916001600160a01b039081169116615c17565b8c600161253361252a8961252588604435614a22565b614a22565b82840154614a22565b9101556123cd8661252585604435614a22565b9360243561255482846149b1565b1115612564575b50505050612433565b61252561257392602435614a22565b81549091908083116125ae57506125a59250612590828254614a22565b905560075489906001600160a01b0316615c17565b885f808061255b565b6007549192506125c8918b906001600160a01b0316615c17565b556125a5565b600754600154612603985093969594506125f7939192506001600160a01b039182169116615c17565b556001890154906147c2565b886001890155612433565b60075460015460c4358b52600b60205260408b20600d0154969c50969a50612650966001600160a01b039182169691169450612710935061128f925090614760565b6126cf845460c4358552600b6020525f80516020615e32833981519152612710612681600d60408920015484614760565b048d6126966040519283928d60c43585615a63565b0390a160075460025460c4358752600b60205260408720600e01546001600160a01b039283169392909116916127109161128f91614760565b60c4358352600b6020525f80516020615e328339815191526127106126fb600e60408720015484614760565b048b6127106040519283928b60c43585615a99565b0390a161272760019584865560018d0154906147c2565b938360018d0155600395612362565b6107146003612749930154604435614760565b61221d565b61275d89612388604435614a2f565b5061271061010435116110195761277f6127106119ac6101043560e435614760565b506121ec565b5081156121d8565b50821561194e565b909a508b1561293b5760c4358552600b60205280604086206005015460088d01546127bf91614a22565b906127c991614760565b670de0b6b3a7640000900460c4358652600b602052818c604088206003015490600401546127f691614a22565b9061280091614760565b670de0b6b3a7640000900460c4358752600b602052828d6040892060070154906006015461282d91614a22565b9061283791614760565b670de0b6b3a7640000900461284b916149b1565b915b828211156128d857509061286091614a22565b61286e8160028d01546149b1565b908160028d0155809b600181015483811115612891575b505050505b8c5f611945565b6128ce949d506128ad6128a660029286614a22565b8095614a22565b9101556007546001546125259184916001600160a01b039081169116615c17565b985f808e81612885565b9b91906128e491614a22565b6128ed81614a2f565b9b816002840154115f14612913575061290b60029182840154614a22565b91015561288a565b92985050925061292c91945083600260019401556147a8565b928260018d015560039561288a565b60c4358552600b60205280604086206006015460098d015461295c91614a22565b9061296691614760565b670de0b6b3a7640000900460c4358652600b602052818c6040882060040154906005015461299391614a22565b9061299d91614760565b670de0b6b3a7640000900460c4358752600b602052828d604089206008015490600701546129ca91614a22565b906129d491614760565b670de0b6b3a764000090046129e8916149b1565b9161284d565b8380fd5b50346101db57612a013661463f565b600e546001600160a01b031633036105bd5780518291825b828110612a295750505060085580f35b612a3381836149fa565b515185612a4e6020612a4585876149fa565b5101518361487b565b828252600b602052600f604083200154612adf575b828252600b6020526010604083200154612a83575b505050600101612a19565b612acf8361063c84612aca610637670de0b6b3a764000096612ad69960019b9e9952600b6020526010604085200154958452600b60205260026040852001549350856147c2565b6147fe565b0590614860565b9390855f612a78565b95612b2190838352600b602052670de0b6b3a7640000612acf600f604086200154868652600b60205261063c8b612aca61063784600160408c200154936147c2565b95612a63565b50346101db57806003193601126101db57602060405160018152f35b50346101db57806003193601126101db577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612b9b5760206040515f80516020615e128339815191528152f35b63703e46dd60e11b8152600490fd5b50346101db57806003193601126101db576020604051701c5b32f37f5bea87bdd5374eb2ac54ea8e8152f35b5060403660031901126101db57612beb614524565b602435906001600160401b03821161101957366023830112156110195781600401359083612c1883614624565b93612c26604051958661458f565b8385526020850193366024828401011161101957806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612dda575b50612dcb57612c89614f72565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181612d93575b50612ccc57634c9c8ce360e01b86526004859052602486fd5b93845f80516020615e12833981519152879603612d815750823b15612d6f575f80516020615e1283398151915280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115612d5457612d509382915190845af4612d4a615d44565b91615d73565b5080f35b5050505034612d605780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011612dc3575b81612daf6020938361458f565b81010312612dbf5751905f612cb3565b8680fd5b3d9150612da2565b63703e46dd60e11b8452600484fd5b5f80516020615e12833981519152546001600160a01b0316141590505f612c7c565b50346101db5760403660031901126101db576004356001600160401b0381116105bd57612e2d9036906004016145c7565b6024356001600160401b03811161101957612e4c9036906004016145c7565b90612e55614f72565b805191805183036129ee57835b838110612e6d578480f35b80612e7a600192846149fa565b51612e8582866149fa565b518752600a602052604087205501612e62565b50346101db576020610d85612eac3661453a565b906149be565b50346141985761010036600319011261419857604435801515810361419857612ed9614550565b9060e4356001600160401b03811161419857366023820112156141985780600401356001600160401b038111614198576024820191602436918360051b010111614198575f5460405163d47eed4560e01b815291906001600160a01b031660208380612f498588600484016148fb565b0381845afa92831561418d575f9361419c575b50803b1561419857604051631df3cbc560e31b8152935f93859384928391612f8791600484016148fb565b03925af1801561418d57614178575b50612fa033614eea565b6084358452600b6020526040842054156129ee575f80516020615e32833981519152906084358552600b6020526127106130e9612ff8620186a0612fed600b60408b200154602435614760565b04338560843561509d565b506007546001546084358a52600b60205260408a20600d0154613038926001600160a01b03908116921690869061302f9086614760565b049133906159fc565b6084358852600b6020528461309884613058600d60408d20015485614760565b6040805160843581526001600160a01b038a1660208201523391810191909152600160608201819052608082015291900460a082015290819060c0820190565b0390a16007546002546084358a52600b60205260408a20600e01546130d1926001600160a01b03908116921690869061302f9086614760565b6084358852600b602052600e60408920015490614760565b6040805160843581526001600160a01b039490941660208501523390840152600160608401525f60808401520460a082015260c090a16084358352600a6020526040832054608060018060a01b038554169160446040518094819363052571af60e51b83526004830152601e60248301525afa90811561416d5784916140c0575b5083815160070b131561408b57604081015190519060030b600519811261404c57600601637fffffff8113637fffffff1982121761403857906001600160401b036131bd6131c49363ffffffff16615a4f565b9116614760565b6131cd33614eea565b926131db8360843533615be2565b8552600960205260408520936131f38360843561487b565b908693879288898095819760018c01548c8c82613e5c575b5050508080613e54575b156138ec5750505061322d8860243585608435614a3f565b5061271060c435116138e85761326361271061324d60c43560a435614760565b0461325a8160a4356149b1565b5060a435614a22565b506084358a52600b6020525f80516020615e3283398151915261337161271061335f8d600e60406132ae620186a06132a3600c8487200154602435614760565b04338d60843561509d565b50926132e460018060a01b036007541660018060a01b03600154166084358452600b6020528861302f600d878720015489614760565b6084358152600b6020528786613300600d858520015487614760565b048d6133158551928392339060843585615a63565b0390a16007546002546084358352600b60205283832085015461334c926001600160a01b03908116921690899061302f9089614760565b6084358152600b60205220015490614760565b04604051918291338960843585615a99565b0390a16007546133919060043590309033906001600160a01b03166159fc565b878a60018b015480155f1461386757505050600554808a555f198114610833578a9160016133eb920160055560243560018c015560043560028c01556133dd8a60243587608435614a3f565b60038c015560243590614860565b915b6084358252600b602052600360408320015460048b01556084358252600b602052600460408320015460058b0155885f14613834576084358252600b602052600760408320015460068b01556084358252600b602052600560408320015460088b01555b881561378b578183131561373857906107146134a29261121b6040956084358552600b602052611bf060018887200154600f61348d84836149b1565b998a986084358152600b602052200154614760565b6084358a52600b602052600f60408b2001556084358952600b602052600160408a2001555b600385036136205787600288018054806135ff575b5050506134ec8660843533615c50565b600c5488906001600160a01b0316803b156105bd57816135266101a48b83604051958694859363167ffd4960e21b85526004850190615b08565b336101448401526084356101648401528d15156101848401525af18015611d78576135ea575b505061355b905b60843561487b565b9386549461356c8760843533615be2565b976001810154906003600282015491015491604051996084358b52151560208b015260408a01526060890152608088015260a087015260c086015260018060a01b031660e08501526101008401526101208301527f9b5839247c12920537ab678b686b686c324a25cd2e07ad010effbcb2702b62f86101403393a480f35b816135f49161458f565b611d7457875f61354c565b600754613617919033906001600160a01b0316615c17565b55875f806134dc565b60028701546084358952600b602052613640601160408b20015482614760565b6001890154809110611f295710611ef05761366486826084356110a3838233615be2565b5050611ede57871561372b578111611ede5788905b866136ec57600c546001600160a01b0316803b15611019576136bd9183918a838d60405196879586948593630ff8de2760e31b855260843590339060048701615b6a565b03925af18015611d78576136d7575b505061355b90613553565b816136e19161458f565b611d7457875f6136cc565b600c546001600160a01b0316803b15611019576136bd9183918a838d604051968795869485936315bd16c360e21b855260843590339060048701615b6a565b8110611ede578890613679565b508112613746575b506134c7565b61374f90614a2f565b6084358952600b602052600160408a2001548111611fc1576084358952600b602052613783600160408b2001918254614a22565b90555f613740565b818313156137ea57906107146137c19261121b6040956084358552600b602052611bf060028887200154601061348d84836149b1565b6084358a52600b602052601060408b2001556084358952600b602052600260408a2001556134c7565b5081126137f757506134c7565b61380090614a2f565b6084358952600b602052600260408a20015481116120bd576084358952600b602052613783600260408b2001918254614a22565b6084358252600b602052600860408320015460078b01556084358252600b602052600660408320015460098b0155613451565b6138cf9299506138c1908c6138b66138aa600361388f60019997999f6024358d608435614a3f565b93019261121b6138a0868654614760565b9160243590614760565b612195602435856149b1565b9055602435906149b1565b60018c015560243590614860565b9160028a016138e160043582546149b1565b90556133ed565b8980fd5b939192931580613e4c575b613902575b506133ed565b9261391b8a613912602435614a2f565b87608435614a3f565b5061271060c435116110195761393b61271061324d60c43560a435614760565b5060018b0154156110195761399061121b620186a06139858e868f15613e34579060036111e161396d93602435614760565b6084358852600b602052600c60408920015490614760565b043389608435615599565b9060028c01908c82548481115f14613d0e5750613aa09184916139e160018060a01b03600754168961271061128f600d604060018060a01b0360015416946084358152600b60205220015488614760565b6084358852600b6020525f80516020615e32833981519152612710613a0d600d60408c20015486614760565b048c613a23604051928392339060843585615a63565b0390a16007546002546084358a52600b60205260408a20600e0154613a5e926001600160a01b039081169216906127109061128f9088614760565b6084358852600b6020525f80516020615e32833981519152612710613a8a600e60408c20015486614760565b048c612339604051928392339060843585615a99565b945b15613aae575b506138fc565b919850959150613ad98960038c0154602435906114b983613ad0602435614a2f565b8a608435614a3f565b928b80851315613bdc5750613b0b90613afa8c60016123b48b602435614a22565b60018d01556123cd88602435614a22565b95600435613b9f575b50506001546001600160a01b0316803b1561246f57604051630b16327960e11b815233600482015260248101849052908b9081908390604490829084905af19182613b8a575b5050613b825750925b600188015415613b7957886002965b5f80613aa8565b88600396613b72565b939050613b63565b81613b949161458f565b61246f578a5f613b5a565b613bd591613bb261248683600435614a22565b90556007546001600160a01b031690613bcd90600435614a22565b903390615c17565b5f80613b14565b92969093613be990614a2f565b938b83548087105f14613cda575085613c5292613c0b926124e0838854614a22565b600754600154613c299188916001600160a01b039081169116615c17565b8c6001613c3f61252a8961252588602435614a22565b9101556123cd8661252585602435614a22565b93600435613c6082846149b1565b1115613c70575b50505050613b63565b612525613c7f92600435614a22565b8154909190808311613cba5750613cb19250613c9c828254614a22565b905560075433906001600160a01b0316615c17565b885f8080613c67565b600754919250613cd49133906001600160a01b0316615c17565b55613cb1565b600754600154613d03985093969594506125f7939192506001600160a01b039182169116615c17565b886001890155613b63565b6007546001546084358952600b60205260408920600d0154949e50949850613d4e946001600160a01b0391821694911692506127109161128f9190614760565b613dcd84546084358552600b6020525f80516020615e32833981519152613d94612710613d82600d60408a20015485614760565b04604051918291338d60843585615a63565b0390a16007546002546084358752600b60205260408720600e01546001600160a01b039283169392909116916127109161128f91614760565b6084358352600b6020525f80516020615e32833981519152613e0e612710613dfc600e60408820015485614760565b04604051918291338b60843585615a99565b0390a1613e2560019984865560018d0154906147c2565b938360018d0155600399613aa2565b6107146003613e47930154602435614760565b61396d565b5080156138f7565b508115613215565b82939b5090858093925f14613fb45761077083610762670de0b6b3a7640000613eca836107626003604085613eb0613ee99d6107628e6008859f876005916084358152600b60205220015491015490614a22565b049c6084358152600b60205220015460048a015490614a22565b04946084358b52600b6020526006600760408d20015491015490614a22565b915b82821115613f50575090613efe91614a22565b9760028c613f0f8b838301546149b1565b9182910155898d600181015483811115613f31575b505050505b5f8c8c61320b565b613f46949c506128ad6128a660029286614a22565b975f808d81613f24565b999190613f5c91614a22565b8c613f6682614a2f565b9a826002830154115f14613f8d5750906002613f83920154614a22565b60028d0155613f29565b95505050985050613fa56001928260028d01556147a8565b918160018c0155600398613f29565b61077083610762670de0b6b3a7640000614013836107626004604085613ff96140329d6107628e6009859f876006916084358152600b60205220015491015490614a22565b049c6084358152600b60205220015460058a015490614a22565b04946084358b52600b6020526007600860408d20015491015490614a22565b91613eeb565b634e487b7160e01b85526011600452602485fd5b60051903637fffffff198112637fffffff82131761403857906001600160401b0361407f6140869363ffffffff16615a4f565b9116614773565b6131c4565b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c696420707269636560981b6044820152606490fd5b90506080813d608011614165575b816140db6080938361458f565b810103126129ee5760405190608082018281106001600160401b038211176141515760405280518060070b810361414d57825260208101516001600160401b038116810361414d5760208301526040810151908160030b820361414d576060916040840152015160608201525f61316a565b8580fd5b634e487b7160e01b86526041600452602486fd5b3d91506140ce565b6040513d86823e3d90fd5b6141859193505f9061458f565b5f915f612f96565b6040513d5f823e3d90fd5b5f80fd5b9092506020813d6020116141c8575b816141b86020938361458f565b810103126141985751915f612f5c565b3d91506141ab565b346141985760e0366003190112614198576141e9614524565b6024356001600160a01b03811690819003614198576044356001600160a01b03811690819003614198576064356001600160a01b03811690819003614198576084356001600160a01b03811691908290036141985760a4356001600160a01b03811693908490036141985760c4356001600160a01b0381169590869003614198575f80516020615e52833981519152549660ff8860401c1615976001600160401b03811680159081614421575b6001149081614417575b15908161440e575b506143ff5767ffffffffffffffff1981166001175f80516020615e5283398151915255886143d3575b506142da615ca5565b6142e2615ca5565b6142eb33614fa5565b60018060a01b03166001600160601b0360a01b60015416176001556001600160601b0360a01b60025416176002556001600160601b0360a01b60075416176007556001600160601b0360a01b60035416176003556001600160601b0360a01b5f5416175f556001600160601b0360a01b600c541617600c556001600160601b0360a01b600d541617600d5561437c57005b68ff0000000000000000195f80516020615e5283398151915254165f80516020615e52833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b68ffffffffffffffffff191668010000000000000001175f80516020615e5283398151915255886142d1565b63f92ee8a960e01b5f5260045ffd5b9050158a6142a8565b303b1591506142a0565b8a9150614296565b34614198576020610d8561443c3661453a565b9061487b565b3461419857602061447360086144573661453a565b5f9391935061063c6106378261446e815f9861487b565b6147c2565b055f8113156144a757614486915061483a565b6602386f26fc100080821361449f575b50604051908152f35b905082614496565b5f81126144b5575b50610d85565b6144bf9150614791565b6602386f26fc0fff19808212156144af579050826144af565b34614198576020366003190112614198576144f1614524565b6144f9614f72565b6001600160a01b031661450d8115156146f3565b6001600160601b0360a01b60015416176001555f80f35b600435906001600160a01b038216820361419857565b6040906003190112614198576004359060243590565b60643590811515820361419857565b61014081019081106001600160401b0382111761457b57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761457b57604052565b6001600160401b03811161457b5760051b60200190565b9080601f830112156141985781356145de816145b0565b926145ec604051948561458f565b81845260208085019260051b82010192831161419857602001905b8282106146145750505090565b8135815260209182019101614607565b6001600160401b03811161457b57601f01601f191660200190565b6020600319820112614198576004356001600160401b038111614198578160238201121561419857806004013590614676826145b0565b92614684604051948561458f565b8284526024602085019360061b8301019181831161419857602401925b8284106146af575050505090565b604084830312614198576040519060408201908282106001600160401b0383111761457b5760409260209284528635815282870135838201528152019301926146a1565b156146fa57565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606490fd5b9081650b5e620f48000291650b5e620f480083040361474c57565b634e487b7160e01b5f52601160045260245ffd5b8181029291811591840414171561474c57565b811561477d570490565b634e487b7160e01b5f52601260045260245ffd5b90650b5e620f47ff19820191821360011661474c57565b905f82810392125f83128116905f84139015161761474c57565b81810392915f13801582851316918412161761474c57565b90670de0b6b3a7640000820291808305670de0b6b3a7640000149015171561474c57565b81810292915f8212600160ff1b82141661474c57818405149015171561474c57565b811561477d57600160ff1b81145f1983141661474c570590565b90650b5e620f48008201915f650b5e620f48008412911290801582169115161761474c57565b9190915f838201938412911290801582169115161761474c57565b5f818152600b602052604090206001810154600290910154909291906148a18185614860565b9081156148f3576148ef93926148cd6148e99361063c6106376148e395670de0b6b3a76400009a6147c2565b905f52600b602052601260405f20015490614820565b84614860565b90614760565b0490565b505050905090565b9180602084016020855252604083019060408160051b85010193835f91601e1982360301905b848410614932575050505050505090565b90919293949596603f1982820301875287358381121561419857840190602082359201916001600160401b038111614198578036038313614198576020828280600196849695859652848401375f828201840152601f01601f1916010199019701959401929190614921565b90650b5e620f4800820180921161474c57565b9190820180921161474c57565b816149c89161487b565b60198102908082046019149015171561474c57604b820291808304604b149015171561474c576064916148ef916149b1565b8051821015614a0e5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b9190820391821161474c57565b600160ff1b811461474c575f0390565b5f818152600b602052604090206001810154600290910154949293919215614a775790614a6b91614860565b925b6148a18185614860565b9390614a8291614860565b614a6d565b919392905f925f52600960205260405f209460405192614aa68461455f565b86548452600187015460208501526002870154604085015260038701548060608601526004880154906080860191825260058901549060a0870191825260068a015460c0880152600960078b01549a60e089019b8c5260088101546101008a0152015461012088015215614e83575f9886868515614df357925050505f52600b602052614bbc670de0b6b3a7640000614b86614b7b82614b61614b56600560405f2001546101008d015190614a22565b60208c015190614760565b0494885f52600b602052600360405f200154905190614a22565b602089015190614760565b04855f52600b602052670de0b6b3a7640000610770614bb1600760405f20015460c08b015190614a22565b60208a015190614760565b905b81811115614dbd57614bdd91614bd391614a22565b60408601516149b1565b806040860152602085015190811115614da1575b505b602084015160408501518114614d85575b5015614cd857614c1d6020840151604085015190614a22565b906020840151670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561474c576060850151614c5291614773565b91670de0b6b3a7640000810290808204670de0b6b3a7640000148115171561474c5769021e5f445b3cf73400000290808204612715149015171561474c57612710830292808404612710149015171561474c57614cc992614cb291614773565b965b614ccc5760206040850151945b0151926149be565b93565b60208085015194614cc1565b614ceb6020840151604085015190614a22565b670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561474c576060840151614d1a91614773565b906020840151670de0b6b3a7640000810290808204670de0b6b3a7640000148115171561474c5769021dd47d38386d4c0000029080820461270b149015171561474c57612710830292808404612710149015171561474c57614cc992614d7f91614773565b96614cb4565b9096505f19810190811161474c5760408401526001955f614c04565b9096505f19810190811161474c5760408401526001955f614bf1565b614dc691614a22565b604085015181811115614de75790614ddd91614a22565b6040850152614bf3565b50509350600193614bf3565b614e7d939450614bb1670de0b6b3a7640000614e63614e5882614e3e8197610770975f52600b6020526020614e35600660405f20015461012084015190614a22565b91015190614760565b04988c5f52600b602052600460405f200154905190614a22565b60208d015190614760565b0493895f52600b602052600860405f200154905190614a22565b90614bbe565b60405162461bcd60e51b815260206004820152602560248201527f456e747279207072696365206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608490fd5b51906001600160a01b038216820361419857565b60405163fa54416160e01b81526001600160a01b0382166004820152602081602481701c5b32f37f5bea87bdd5374eb2ac54ea8e5afa5f9181614f36575b50614f31575090565b905090565b9091506020813d602011614f6a575b81614f526020938361458f565b8101031261419857614f6390614ed6565b905f614f28565b3d9150614f45565b5f80516020615dd2833981519152546001600160a01b03163303614f9257565b63118cdaa760e01b5f523360045260245ffd5b5f80516020615e7283398151915280546001600160a01b03199081169091555f80516020615dd283398151915280549182166001600160a01b0393841690811790915591167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b60e0818303126141985780519261502960208301614ed6565b9260408301519260608101519260808201519260a08301519260c0810151906001600160401b038211614198570181601f820112156141985780519061506e82614624565b9261507c604051948561458f565b8284526020838301011161419857815f9260208093018386015e8301015290565b60035460405160016236769560e01b031981526001600160a01b03848116600483018190525f9788979591949092169287928382602481885afa91821561418d575f905f93615575575b508061550e575b506001600160a01b038216801515999091908a6154a4575b604051630194a30960e11b81526020816004818b5afa90811561418d575f91615472575b5081116154365761513b9082614760565b90604051630194a30960e11b81526020816004818b5afa90811561418d575f91615402575b5061516e9061517493614773565b90614a22565b9861518f575b50505050505050508161518c91614a22565b91565b90919293949698506040979597519063ffc9896b60e01b825260048201525f81602481885afa90811561418d575f916153d9575b50801561530b576151d49086614760565b604051630194a30960e11b815290602082600481895afa90811561418d575f916152d5575b6152039250614773565b975b843b1561419857604051629ba3af60e21b81526001600160a01b0391821660048201529116602482015260448101889052925f908490606490829084905af191821561418d5761518c9688965f80516020615e328339815191529560c0956152c0575b50600754600354615289918a916001600160a01b03908116918691166159fc565b604051938452602084015260018060a01b031660408301526004606083015260808201528460a0820152a1915f808080808061517a565b6152cd9193505f9061458f565b5f915f615268565b90506020823d602011615303575b816152f06020938361458f565b81010312614198576152039151906151f9565b3d91506152e3565b50604051632af99f2760e21b8152602081600481885afa801561418d575f906153a5575b61533a915086614760565b604051630194a30960e11b815290602082600481895afa90811561418d575f9161536f575b6153699250614773565b97615205565b90506020823d60201161539d575b8161538a6020938361458f565b810103126141985761536991519061535f565b3d915061537d565b506020813d6020116153d1575b816153bf6020938361458f565b810103126141985761533a905161532f565b3d91506153b2565b6153f591503d805f833e6153ed818361458f565b810190615010565b505093505050505f6151c3565b90506020813d60201161542e575b8161541d6020938361458f565b810103126141985751615174615160565b3d9150615410565b60405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590819995948191a5cd8dbdd5b9d60621b6044820152606490fd5b90506020813d60201161549c575b8161548d6020938361458f565b8101031261419857515f61512a565b3d9150615480565b60405163053d782d60e21b8152906020826004818b5afa90811561418d575f916154d8575b6154d392506149b1565b615106565b90506020823d602011615506575b816154f36020938361458f565b81010312614198576154d39151906154c9565b3d91506154e6565b9098506040519063edc829dd60e01b82526004820152602081602481885afa90811561418d575f91615543575b50975f6150ee565b90506020813d60201161556d575b8161555e6020938361458f565b8101031261419857515f61553b565b3d9150615551565b905061558c9192503d805f833e6153ed818361458f565b505050505091905f6150e7565b5060035460405160016236769560e01b031981526001600160a01b0380841660048301525f958695509216918491908282602481875afa91821561418d575f905f936159d8575b5080615971575b506001600160a01b0382168015159690919087615907575b604051630194a30960e11b81526020816004818a5afa90811561418d575f916158d5575b508111615436576156349082614760565b90604051630194a30960e11b81526020816004818a5afa90811561418d575f916158a1575b5061516e9061566793614773565b9561567c575b50505050508161518c91614a22565b90919395506040949294519063ffc9896b60e01b825260048201525f81602481885afa90811561418d575f91615880575b5080156157b2576156be9083614760565b604051630194a30960e11b815290602082600481895afa90811561418d575f9161577c575b6156ed9250614773565b945b843b1561419857604051629ba3af60e21b81526001600160a01b0391821660048201529116602482015260448101859052925f908490606490829084905af191821561418d5761518c938593615769575b50506007546003546157609184916001600160a01b039081169116615c17565b915f808061566d565b61577591505f9061458f565b5f80615740565b90506020823d6020116157aa575b816157976020938361458f565b81010312614198576156ed9151906156e3565b3d915061578a565b50604051632af99f2760e21b8152602081600481885afa801561418d575f9061584c575b6157e1915083614760565b604051630194a30960e11b815290602082600481895afa90811561418d575f91615816575b6158109250614773565b946156ef565b90506020823d602011615844575b816158316020938361458f565b8101031261419857615810915190615806565b3d9150615824565b506020813d602011615878575b816158666020938361458f565b81010312614198576157e190516157d6565b3d9150615859565b61589491503d805f833e6153ed818361458f565b505093505050505f6156ad565b90506020813d6020116158cd575b816158bc6020938361458f565b810103126141985751615667615659565b3d91506158af565b90506020813d6020116158ff575b816158f06020938361458f565b8101031261419857515f615623565b3d91506158e3565b60405163053d782d60e21b8152906020826004818a5afa90811561418d575f9161593b575b61593692506149b1565b6155ff565b90506020823d602011615969575b816159566020938361458f565b810103126141985761593691519061592c565b3d9150615949565b9095506040519063edc829dd60e01b82526004820152602081602481875afa90811561418d575f916159a6575b50945f6155e7565b90506020813d6020116159d0575b816159c16020938361458f565b8101031261419857515f61599e565b3d91506159b4565b90506159ef9192503d805f833e6153ed818361458f565b505050505091905f6155e0565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064820192909252615a4d91615a4882608481015b03601f19810184528361458f565b615cd0565b565b63ffffffff16604d811161474c57600a0a90565b9081526001600160a01b03918216602082015291166040820152600260608201526001608082015260a081019190915260c00190565b9081526001600160a01b03918216602082015291166040820152600260608201525f608082015260a081019190915260c00190565b60405162461bcd60e51b8152602060048201526012602482015271416c7265616479206c697175696461626c6560701b6044820152606490fd5b6009610120918054845260018101546020850152600281015460408501526003810154606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460e085015260088101546101008501520154910152565b91926101a0939695949196615b84846101c0810199615b08565b6001600160a01b031661014084015261016083015215156101808201520152565b90670de0b6b3a7640000935f14615bce57615bca92612aca6106378461063c946147c2565b0590565b615bca92612aca61063761063c93856147c2565b9160405191602083019360018060a01b0316845260408301521515606082015260608152615c1160808261458f565b51902090565b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044820192909252615a4d91615a488260648101615a3a565b90615c5b9291615be2565b600d546001600160a01b031690813b15614198575f916024839260405194859384926333d5c83160e01b845260048401525af1801561418d57615c9b5750565b5f615a4d9161458f565b60ff5f80516020615e528339815191525460401c1615615cc157565b631afcd79f60e31b5f5260045ffd5b5f80615cf89260018060a01b03169360208151910182865af1615cf1615d44565b9083615d73565b8051908115159182615d20575b5050615d0e5750565b635274afe760e01b5f5260045260245ffd5b81925090602091810103126141985760200151801590811503614198575f80615d05565b3d15615d6e573d90615d5582614624565b91615d63604051938461458f565b82523d5f602084013e565b606090565b90615d975750805115615d8857805190602001fd5b630a12f52160e11b5f5260045ffd5b81511580615dc8575b615da8575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15615da056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300bb8a8f355e95eadc7764bcd702fd738242506a85e6d5732c292146eddbb6b545360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ab61a3e549f0a215a75e122ad42e4726c3790568f88eaa300bfbfca26d3ce03f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00a26469706673582212202a06b9ac25d363310b8842b44f3cbc866c665217a6eb4b42e0fc40972a86fd1f64736f6c634300081a0033