0 txs
1 call
constructor
No constructor.
functions
closeTrades
nonpayablefunction closeTrades(uint256[] tradeIds, uint256[] prices)
confiscatePartyA
nonpayablefunction confiscatePartyA(address partyB, address partyA, address collateral, uint256 amount)
confiscatePartyBWithdrawal
nonpayablefunction confiscatePartyBWithdrawal(address partyB, uint256 withdrawId)
distributeCollateral
nonpayablefunction distributeCollateral(address partyB, address collateral, address[] partyAs)
flagLiquidation
nonpayablefunction flagLiquidation(address partyB, address collateral)
liquidate
nonpayablefunction liquidate(bytes liquidationId, address partyB, address collateral, int256 upnl, uint256 collateralPrice)
unflagLiquidation
nonpayablefunction unflagLiquidation(address partyB, address collateral)
unfreezePartyAs
nonpayablefunction unfreezePartyAs(address partyB, address collateral)
events
CloseTradesForLiquidation
event CloseTradesForLiquidation(uint256[] tradeIds, uint256[] prices)
ConfiscatePartyA
event ConfiscatePartyA(address partyB, address partyA, address collateral, uint256 amount)
ConfiscatePartyBWithdrawal
event ConfiscatePartyBWithdrawal(address partyB, uint256 withdrawId)
DistributeCollateral
event DistributeCollateral(uint256 liquidationId, address partyB, address collateral, address[] partyAs, uint256[] amounts)
FlagLiquidation
event FlagLiquidation(address operator, address partyB, address collateral)
FullyLiquidated
event FullyLiquidated(address partyB, uint256 liquidationId)
Liquidate
event Liquidate(bytes liquidationId, address liquidator, address partyB, address collateral, uint256 balance, int256 upnl, uint256 collateralPrice)
UnflagLiquidation
event UnflagLiquidation(address operator, address partyB, address collateral)
errors
BridgePaused
error BridgePaused()
BridgeWithdrawPaused
error BridgeWithdrawPaused()
DepositingPaused
error DepositingPaused()
GlobalPaused
error GlobalPaused()
InstantActionModeActive
error InstantActionModeActive(address sender)
InsufficientBalance
error InsufficientBalance(address token, uint256 requested, uint256 available)
InsufficientBalance
error InsufficientBalance(address user, address token, uint256 requested, uint256 available)
InsufficientCollateralForDebts
error InsufficientCollateralForDebts(address partyB, address collateral, uint256 collected, uint256 required)
InternalTransferPaused
error InternalTransferPaused()
InvalidAmount
error InvalidAmount(string property, uint256 amount, uint8 operator, uint256 required)
InvalidState
error InvalidState(string property, uint8 currentStatus, uint8[] requiredStatus)
InvalidSyncTimestamp
error InvalidSyncTimestamp(uint256 currentTime, uint256 lastTransitionTimestamp)
InvalidUpnl
error InvalidUpnl(int256 upnl)
InvalidWithdrawalUser
error InvalidWithdrawalUser(uint256 withdrawId, address user, address partyB)
IsPartyB
error IsPartyB(address sender)
ItemNotFound
error ItemNotFound(uint256 item)
LiquidatingPaused
error LiquidatingPaused()
MismatchedArrays
error MismatchedArrays(uint256 tradeIdsLength, uint256 pricesLength)
MissingRole
error MissingRole(address sender, bytes32 role)
NonZeroBalancePartyB
error NonZeroBalancePartyB(address partyB, uint256 balance)
NotPartyAOfTrade
error NotPartyAOfTrade(address sender, uint256 tradeId, address partyA)
NotPartyB
error NotPartyB(address sender)
NotPartyBOfTrade
error NotPartyBOfTrade(address sender, uint256 tradeId, address partyB)
PartyAActionsPaused
error PartyAActionsPaused()
PartyBActionsPaused
error PartyBActionsPaused()
PartyBHasOpenTrades
error PartyBHasOpenTrades(address partyB, address collateral, uint256 openTradesCount)
PartyBIsSolvent
error PartyBIsSolvent(address partyB, address collateral, int256 available, int256 required)
PartyBNotSolvent
error PartyBNotSolvent(address partyB, address collateral)
ReceiverSuspended
error ReceiverSuspended(address receiver)
SuspendedWithdrawal
error SuspendedWithdrawal(uint256 withdrawId)
ThirdPartyActionsPaused
error ThirdPartyActionsPaused()
UserIsPartyB
error UserIsPartyB(address user)
UserSuspended
error UserSuspended(address user)
WithdrawingPaused
error WithdrawingPaused()
ZeroAddress
error ZeroAddress(string property)
ZeroLossCoverage
error ZeroLossCoverage(address partyB)
creation bytecode
0x6080806040523461001657612cae908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063096c94df1461143157806390e11c5b14610f85578063a758fc8014610af0578063b3e13f501461099e578063bbff9e7a14610694578063cef495c61461051c578063d410fe9d146104a45763db1a73b81461007457600080fd5b3461049f57604036600319011261049f5761008d6118bf565b6100956118d5565b600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b576100c3336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561045e575060016100f483611b40565b01541561043d576101058183611f9e565b15610415577ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548c0916101368354611be6565b80935560405161014581611901565b8381526001602082019181835261015b84611a23565b828060a01b03861660005260205260406000209051815501905161017e81611bf5565b61018781611bf5565b60ff80198354169116179055604051926101a08461191c565b604051602081018181106001600160401b038211176103ff576040526000815284526000602085015242604085015260006060850152600060808501523360a0850152600060c0850152600060e08501526000527ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548bd602052604060002083518051906001600160401b0382116103ff5761023a8354611bff565b601f81116103bb575b50602090601f831160011461032b57958260079360e0937fdc65268d5cf401087579b225a3c429f6c578ddea6a3b32a54080b9741bb2440d99600092610320575b50508160011b916000199060031b1c19161784555b6020818101516001860155604080830151600287015560608084015160038801556080840151600488015560a08401516005880180546001600160a01b0319166001600160a01b0392831617905560c0850151600689015594909301519490950193909355835133815294821692850192909252939093169082015290819081015b0390a1005b015190503880610284565b908360005260206000209160005b601f19851681106103a357508360e0937fdc65268d5cf401087579b225a3c429f6c578ddea6a3b32a54080b9741bb2440d9993600193600797601f1981161061038a575b505050811b018455610299565b015160001960f88460031b161c1916905538808061037d565b91926020600181928685015181550194019201610339565b836000526020600020601f840160051c8101602085106103f8575b601f830160051c820181106103ec575050610243565b600081556001016103d6565b50806103d6565b634e487b7160e01b600052604160045260246000fd5b60405162e09bf360e11b81526001600160a01b03928316600482015291166024820152604490fd5b604051632a3a774160e21b81526001600160a01b0383166004820152602490fd5b6044906040519062b0d32560e11b82523360048301526024820152fd5b6040516301ff0b2b60e01b8152600490fd5b604051638bee704f60e01b8152600490fd5b600080fd5b3461049f57604036600319011261049f576104bd6118bf565b506104c66118d5565b50600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b576104f5336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561045e57005b3461049f57608036600319011261049f576105356118bf565b61053d6118d5565b906105466118eb565b9160643592600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b57610579336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561045e57506105a882611b07565b9160018060a01b039182811693846000526020526040600020866105cc8783612269565b11156106455791600661061c836106158a8a809a986106107fb5233bb56ba52ab045ac4d460ac5db19d26052de7e8179dd3cc143e4eb5b8c119e9b9960809e611f21565b61201c565b5087611fcf565b01610628858254611cec565b9055816040519516855216602084015260408301526060820152a1005b61069087610654888694612269565b60405163861da4bd60e01b81526001600160a01b0394851660048201529490931660248501526044840152606483019190915281906084820190565b0390fd5b3461049f57604036600319011261049f576106ad6118bf565b602490813590600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b576106e1336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561098257507fdd1d6d04e1f24037b02215b0852708bab55d9f1305ee6cb777ad46ae2573bb215480831161093d5750816000527fdd1d6d04e1f24037b02215b0852708bab55d9f1305ee6cb777ad46ae2573bb20602052604060002060405160e081018181106001600160401b0382111761092857604052815481526001820154906020810191825260018060a01b039586600285015416936040830194855260c060ff60068a60038501541693606087019485528b6004820154166080880152600581015460a08801520154169301926107dc81611bf5565b8084526107e881611bf5565b6107f181611bf5565b61089e57879051168786169182820361087b5750505061084d866108569360016006946108427f342f23eb94ceccfe2f1a7b9ef0f2b6ceee6d92a1d28deb4be11b441956072b1b9b8951168a611f21565b525194511685611fcf565b01918254611cec565b9055604080516001600160a01b0390921682526020820192909252908190810161031b565b9187916064936040519363081a088360e21b855260048501528301526044820152fd5b5061069060ff92604051906108b282611901565b600182526020368184013760006108c883611c39565b5251926108d484611bf5565b6108dd84611bf5565b604051948594632eb59bcb60e01b865260606004870152600e60648701526d576974686472617753746174757360901b6084870152169084015260a0604484015260a4830190611c70565b85634e487b7160e01b60005260416004526000fd5b8360c491846040519263f3a719b160e01b845260806004850152600a6084850152691dda5d1a191c985dd25960b21b60a4850152830152600160448301526064820152fd5b836044916040519162b0d32560e11b8352336004840152820152fd5b3461049f57604036600319011261049f576109b76118bf565b6109bf6118d5565b600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b576109ed336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561045e5750610a1c82611a23565b60018060a01b03821660005260205260406000209160018301805460ff8116610a4481611bf5565b60018103610aa75750600090945560ff1993909316909255604080513381526001600160a01b03938416602082015292909116908201527fa26fd9a7de5a05da98a4950f7f780a5d544872077fcf1fb2cbb32cefcdd826eb90806060810161031b565b60405190610ab482611901565b60018252602036818401376001610aca83611c39565b52610ad481611bf5565b610690604051928392632eb59bcb60e01b845260048401611ca7565b3461049f5760a036600319011261049f576004356001600160401b03811161049f573660238201121561049f5780600401356001600160401b0381116103ff5760405191610b48601f8301601f191660200184611954565b818352366024838301011161049f57816000926024602093018386013783010152610b716118d5565b610b796118eb565b90600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b57610ba8336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561045e5750610bd781611a23565b60018060a01b038316600052602052600160ff816040600020015416610bfc81611bf5565b03610f345760006064351215610f1a57600160ff1b6064358114610eee57606435600003906001610c2c84611b40565b0154908082146000841216610eee5782828102058214606435151715610eee5760843515610f0457828202146084356000191416610eee57608435910205610c7382611b07565b60018060a01b038416600052602052806040600020541215610e9c5750610c9a8282611fcf565b83516001600160401b0381116103ff57610cb48254611bff565b601f8111610e58575b50806020601f8211600114610df157600091610de6575b508160011b916000199060031b1c19161781555b60643560018201554260038201556084356004820155610d0782611b07565b60018060a01b0384166000526020526006604060002054910155610d2a81611b07565b60018060a01b0383166000526020526040600020546040519260e084528451948560e086015260005b868110610dcf57505060006101008686018101919091523360208601526001600160a01b03938416604086015292166060840152608083015260643560a083015260843560c08301527f66c868dec8229742e6599df4708edad414d35b82372732cdcee9ea82adc11f6892601f01601f191682018290030190a1005b806020809284010151610100828901015201610d53565b905085015186610cd4565b91508260005260206000206000925b601f1983168410610e40576001935082601f19811610610e27575b5050811b018155610ce8565b87015160001960f88460031b161c191690558680610e1b565b87810151825560209384019360019092019101610e00565b826000526020600020601f830160051c810160208410610e95575b601f830160051c82018110610e89575050610cbd565b60008155600101610e73565b5080610e73565b608492610ea883611b07565b6001600160a01b039182166000818152602092909252604091829020549151632c22b6c160e11b8152949092166004850152602484019190915260448301526064820152fd5b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60405163308ef6cd60e21b81526064356004820152602490fd5b90610f6160405192610f4584611901565b60018452602036818601376001610f5b85611c39565b52611a23565b9060018060a01b031660005260205260ff60016040600020015416610ad481611bf5565b3461049f57604036600319011261049f576001600160401b0360043581811161049f57610fb690369060040161198c565b9060243590811161049f57610fcf90369060040161198c565b90600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b57610ffe336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561045e57508051825180820361141357505060005b81518110156113c8576110478183611c5c565b516000527f789f235d4a18fa93b2c978498e44ac1aabf0a4c57ab0a0fdc991d7fbc4a9492e60205260406000209060028201546000527f316cd9f80e16af2a12ce33cac96aeb1f3125dc040f5be132549ff7c414a113d4918260205260406000206110b28387611c5c565b519060ff60138401541694600595868110156113b257806113435750600b840154828701546110ed916001600160a01b039182169116611f21565b82600e8501556110fc84611d03565b9260039182860154926040600096019182515160005260205260406000209060408351015184118061132a575b156112cb575050670de0b6b3a7640000939450611155929160406111509251015190611f14565b611ef7565b04905b81156112bb57600b8301546001600160a01b031691670de0b6b3a76400009190829061119190600161118987611b40565b015490611ef7565b049160018060a01b038783015416906111aa8286611fcf565b938082810204821481151715610eee576111ca9160048601549102611f0a565b936111d481611a95565b600083815260209182526040808220600a8a01546001600160a01b0316835290925220541561127b575b505060076112719493926112769761126a9361122560018060a01b03600b89015416611a95565b9160018060a01b0391015416600052602052604060002060018060a01b03600a87015416600052602052604060002061125f858254611cec565b905501918254611cec565b905561270f565b611be6565b611034565b611289909594939295611ace565b90600052602052604060002090815490600182018211610eee57600191909101909155919290919060076112716111fe565b505061127692506112719061270f565b60408351015184109182611312575b50506112e9575b505050611158565b670de0b6b3a76400009394506113089291604061115092510151611f14565b04908780806112e1565b60ff925001541661132281611cf9565b158b806112da565b50600160ff828401541661133d81611cf9565b14611129565b6040519061135082611901565b6001825260203681840137600061136683611c39565b52610690604051928392632eb59bcb60e01b845260606004850152600b60648501526a547261646553746174757360a81b6084850152602484015260a0604484015260a4830190611c70565b634e487b7160e01b600052602160045260246000fd5b7f26dbd4b957e8e9ba5590f3e5c8b47cc0e72fd237396fa46f5eede2ada934e8496114058361031b86604051938493604085526040850190611bb2565b908382036020850152611bb2565b60449250604051916301e4697960e41b835260048301526024820152fd5b3461049f57606036600319011261049f5761144a6118bf565b6114526118d5565b604435906001600160401b03821161049f573660238301121561049f5781600401359061147e82611975565b9261148c6040519485611954565b82845260208401906024829460051b8201019036821161049f57602401915b81831061189f57505050600080516020612c628339815191525460ff8160a01c1661048d5760c81c60ff1661047b576114e3336119ea565b600080516020612c82833981519152908160005260205260ff604060002054161561045e575060009261151585611a23565b60018060a01b0383166000526020526040600020936115348387611fcf565b61153d87611a5c565b60018060a01b038516600052602052604060002054611851576115608488611f21565b600760068201549101549081811061181857505084549082519461158386611975565b956115916040519788611954565b8087526115a0601f1991611975565b0136602088013760005b84518110156116ee576001600160a01b036115c58287611c5c565b5116906115d18a611a95565b60018060a01b03881660005260205260406000208260005260205260406000205491826115fe838b611c5c565b526116088b611ace565b60018060a01b0389166000526020526040600020805480600019810111610eee576000190190556116e9927f01d50ceb5c24ecd3677c023e7ee4cabc483d72aa142a834c9921bbeae02f46e19060a09061166184611b07565b600180841b038c16600052602052604060002061167f828254611cec565b8155600180841b036002820154169160019182600180871b039101541660405193845260208401526040830152600660608301526080820152a16116c28b611a95565b60018060a01b03891660005260205260406000209060005260205260006040812055611be6565b6115aa565b509293909491956116fe88611ace565b60018060a01b038316600052602052604060002054156117ff575b50604080518781526001600160a01b0389811660208301529092169082015260a06060820181905293519381018490529260c08401929060005b8181106117e05750505091611792827f0b45ef470c1c1f33e0de77d6ccfe6d9d336714f67d30d84a27aa134a7351b0df94838095036080850152611bb2565b0390a161179b57005b604080516001600160a01b03909316835260208301919091527f0a2dd0469f500665e2765d9d6d7dd4268f6838a74f5520333e4e8dcc159c608e91908190810161031b565b82516001600160a01b0316855260209485019490920191600101611753565b9450600060019586810160ff1981541690555587611719565b60405163ae07f4db60e01b81526001600160a01b0389811660048301528616602482015260448101919091526064810191909152608490fd5b6064878561185e82611a5c565b6001600160a01b0391821660008181526020929092526040918290205491516303cd28c960e31b815293909216600484015260248301919091526044820152fd5b82356001600160a01b038116810361049f578152602092830192016114ab565b600435906001600160a01b038216820361049f57565b602435906001600160a01b038216820361049f57565b604435906001600160a01b038216820361049f57565b604081019081106001600160401b038211176103ff57604052565b61010081019081106001600160401b038211176103ff57604052565b61012081019081106001600160401b038211176103ff57604052565b90601f801991011681019081106001600160401b038211176103ff57604052565b6001600160401b0381116103ff5760051b60200190565b81601f8201121561049f578035916119a383611975565b926119b16040519485611954565b808452602092838086019260051b82010192831161049f578301905b8282106119db575050505090565b813581529083019083016119cd565b6001600160a01b031660009081527ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548b46020526040902090565b6001600160a01b031660009081527ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548bc6020526040902090565b6001600160a01b031660009081527f789f235d4a18fa93b2c978498e44ac1aabf0a4c57ab0a0fdc991d7fbc4a949316020526040902090565b6001600160a01b031660009081527ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548be6020526040902090565b6001600160a01b031660009081527ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548bf6020526040902090565b6001600160a01b031660009081527fdd1d6d04e1f24037b02215b0852708bab55d9f1305ee6cb777ad46ae2573bb186020526040902090565b6001600160a01b031660009081527ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548b66020526040902090565b6001600160a01b031660009081527f789f235d4a18fa93b2c978498e44ac1aabf0a4c57ab0a0fdc991d7fbc4a949306020526040902090565b90815180825260208080930193019160005b828110611bd2575050505090565b835185529381019392810192600101611bc4565b6000198114610eee5760010190565b600311156113b257565b90600182811c92168015611c2f575b6020831014611c1957565b634e487b7160e01b600052602260045260246000fd5b91607f1691611c0e565b805115611c465760200190565b634e487b7160e01b600052603260045260246000fd5b8051821015611c465760209160051b010190565b90815180825260208080930193019160005b828110611c90575050505090565b835160ff1685529381019392810192600101611c82565b60a09060ff611ce994936060835260116060840152704c69717569646174696f6e53746174757360781b60808401521660208201528160408201520190611c70565b90565b91908201809211610eee57565b600211156113b257565b906040918251906101e082018281106001600160401b038211176103ff578452819381548352600180830154602090818601528251611d418161191c565b60028501548152600385015482820152600485015484820152600585015460608201526006850154608082015260ff6007860154818116611d8181611cf9565b60a084015260081c16611d9381611cf9565b60c08201528351611da381611901565b6008860154815260098601548382015260e082015285840152600a8401546001600160a01b039081166060870152600b850154811660808701528351600c8601805480835260009182528482209196929182860191885b818110611ee45750505081611e10910382611954565b60a0880152600d860190519384859385845492838152019388528588209588915b838310611eca575050505050611e4992500382611954565b60c0840152600e82015460e0840152600f82015461010084015260108201546101208401526011820154610140840152601282015461016084015260ff601383015416906005821015611eb657506101c09160159161018085015260148101546101a08501520154910152565b634e487b7160e01b81526021600452602490fd5b875481168652968401968896509481019491840191611e31565b8254845292870192918801918801611dfa565b81810292918115918404141715610eee57565b8115610f04570490565b91908203918211610eee57565b90611f2b82611a23565b9060018060a01b03169081600052602052600260ff60016040600020015416611f5381611bf5565b03611f5c575050565b611f8260405192611f6c84611901565b60018452602036818601376002610f5b85611c39565b9060005260205260ff60016040600020015416610ad481611bf5565b611fa790611a23565b9060018060a01b031660005260205260ff60016040600020015416611fcb81611bf5565b1590565b611fd890611a23565b9060018060a01b03166000526020526040600020546000527ffce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548bd602052604060002090565b916001600160a01b0382811692909190831561223a5761203c90856122b7565b5082600052600384016020526040928360002093845415612195578554946001810195600261206d88548093611cec565b920161207b81548094611cec565b86811061215f575085928681101561214e5750805480612136575b5050818110156121225750906120de60a095949392877f5b4709a444ca1757f6d29baa2f98e3238bf021804cb4685fb17c9b50d9f533dd98548061210c575b50508854611f14565b875583600288015416936001880154169181519485526020850152830152606082015260066080820152a190565b6121199060009293611f14565b915538806120d5565b92509250506121319250611f14565b905590565b60009193506121459087611f14565b92553880612096565b945096505050506121319250611f14565b60018a0154855163db42144d60e01b81529089166001600160a01b03166004820152602481018890526044810191909152606490fd5b9192935050835482811061220357917f5b4709a444ca1757f6d29baa2f98e3238bf021804cb4685fb17c9b50d9f533dd93916121d38260a095611f14565b8655826002870154169260018701541690805193845260006020850152830152606082015260066080820152a190565b6001850154915163db42144d60e01b81529184166001600160a01b0316600483015260248201929092526044810191909152606490fd5b60405163eac0d38960e01b81526020600482015260066024820152653830b93a3ca160d11b6044820152606490fd5b611ce99160018060a01b031660005260038101602052600261229660406000209254600184015490611cec565b91015490611cec565b8054821015611c465760005260206000200190600090565b600180820154919290916122d4906001600160a01b031682611f9e565b156126c85760058301541580156126cd575b6126c8576001600160a01b0381166000908152600384016020908152604080832080547fdd1d6d04e1f24037b02215b0852708bab55d9f1305ee6cb777ad46ae2573bb19909352922054036125ff57805480156125f8576003820154908142106125d9576123548183611cec565b918180871b04600203610eee5761236d91861b90611cec565b904210156125a8575b42101561258e575b61238d81546111508142611f0a565b600382015582810154159081612581575b506123fd575b600283015491830154604080516001600160a01b03948516815292841660208401529216918101919091527fa4cbd04abd4338dda0251107d9540e567d73a399eee8294003add55d10b1ff7e9080606081015b0390a190565b6001600160a01b0381161561223a576124168184612269565b8061255957506001600160a01b0381166000908152600484016020819052604090912054600585015460001994929190858101908111610eee57808203612500575b505060058501549384156124ea577fa4cbd04abd4338dda0251107d9540e567d73a399eee8294003add55d10b1ff7e9401612496816005880161229f565b81549060018060a01b039060031b1b19169055600586015560018060a01b038316600052602052600060408120556003840160205260006003604082208281558284820155826002820155015591506123a4565b634e487b7160e01b600052603160045260246000fd5b61250d906005880161229f565b905460039190911b1c6001600160a01b031661252c826005890161229f565b81549060031b9083821b9160018060a01b03901b1916179055600052816020526040600020553880612458565b60405163c546fe0760e01b81526001600160a01b039290921660048301526024820152604490fd5b600291500154153861239e565b6000600282016125a081548754611cec565b86555561237e565b60008483016125b981548854611cec565b875582421082146125d35760028401908154905555612376565b55612376565b604051630a057dbf60e21b815242600482015260248101839052604490fd5b5050505090565b6001600160a01b03821660009081527fdd1d6d04e1f24037b02215b0852708bab55d9f1305ee6cb777ad46ae2573bb1960205260408120548083557fa4cbd04abd4338dda0251107d9540e567d73a399eee8294003add55d10b1ff7e949290806126b55750425b600382015582810190612680600283549201918254611cec565b905555600284015490840154604080516001600160a01b039384168152938316602085015291169082015280606081016123f7565b806111506126c39242611f0a565b612666565b505090565b506001600160a01b03811660008181526004850160205260409020546126f6906005860161229f565b905460039190911b1c6001600160a01b031614156122e6565b600c8082019081549160005b8360ff821610612a7b5750505050612749601382019160ff1992600484825416179055426015820155611d03565b90604090818301515160005260207f316cd9f80e16af2a12ce33cac96aeb1f3125dc040f5be132549ff7c414a113d48152826000209383519261278b84611938565b8554845260019060ff8288015416151584860152600287019186519283916000918054886127b882611bff565b80875296828516928315612a5b57505050600114612a1c575b50506127df92500382611954565b8484015260ff6003860154166127f481611cf9565b606084015260048501546080840152600585015492610100600760a083019760ff60018060a01b03978881168b5260a01c16151560c0850152600681015460e0850152015491015280516000527f789f235d4a18fa93b2c978498e44ac1aabf0a4c57ab0a0fdc991d7fbc4a9493280835284600020549582516000527f789f235d4a18fa93b2c978498e44ac1aabf0a4c57ab0a0fdc991d7fbc4a94933948585528660002054606085016128aa83825116611b79565b546000199a908b8101908111610eee57826129349261291b8361290f6128df8a966128da886129399b5116611b79565b61229f565b90549060031b1c6128f6856128da89895116611b79565b90919082549060031b91821b91600019901b1916179055565b6128da85855116611b79565b90549060031b1c600052888b528c600020555116611b79565b612bf6565b608085019861294a838b5116611a5c565b8385511660005287528860002054908101908111610eee5789826129df85936129c38b60009f8f986129f6998c8a612987816128f6965116611a5c565b9151166000528452600061299f878f9284902061229f565b90549060031b1c948b6129b4818d5116611a5c565b9251166000525260002061229f565b6129cf85855116611a5c565b858951168f528b528c8e2061229f565b90549060031b1c8c528989528a8c20555116611a5c565b91511687528352612a08858720612bf6565b815186528252848481205551845252812055565b87925060005281600020906000915b858310612a435750506127df935082010138806127d1565b80548388018501528694508893909201918101612a2b565b9250925093506127df9592501682840152151560051b82010138806127d1565b815415611c465781600052602080600020546000527f789f235d4a18fa93b2c978498e44ac1aabf0a4c57ab0a0fdc991d7fbc4a9493581526040908160002042600782015560058101906003918260ff19825416179055835191612ade83611938565b815483527f789f235d4a18fa93b2c978498e44ac1aabf0a4c57ab0a0fdc991d7fbc4a9492e600183015494858186015260028401548786015282840154956060860196875260086004958681015460808901528560a0890152600681015460c08901524260e08901520154610100870152600052528460002094888601935192612b688486612c20565b9360001992838614612be15750508454918201918211612bcc575092612934612bb695936128f6612bab94612b9f6011988661229f565b9054911b1c918461229f565b519201918254611f14565b905560ff809116908114610eee5760010161271b565b601190634e487b7160e01b6000525260246000fd5b51631910c89760e01b81529182015260249150fd5b80549081156124ea5760001991820191612c10838361229f565b909182549160031b1b1916905555565b9060005b8254811015612c585781612c38828561229f565b90549060031b1c14612c5257612c4d90611be6565b612c24565b91505090565b5050506000199056fefce96d8b9b34f73081d511b432ae5a90a254efc831e060fda6888a0e03c548aac35c2894450ee6fa0ab4127235d39b3ced1e755e04a3e684cf701ae523099917a164736f6c6343000813000a