0 txs
1 call
constructor
No constructor.
functions
addBackingToken
nonpayablefunction addBackingToken(address morpho, tuple morphoMarketParams, uint256 amount, bool cappedMax)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
unloop
nonpayablefunction unloop(address morpho, tuple morphoMarketParams, tuple unloopInfo)
events
AddBackingTokenToShort
event AddBackingTokenToShort(address indexed sender, address indexed exposureToken, address indexed backingToken, uint256 amount, bytes32 borrowMarketId)
UnloopShortExecuted
event UnloopShortExecuted(address indexed sender, address indexed exposureToken, address indexed backingToken, uint256 exposureAmountDecrease, uint256 backingAmountDecrease, uint256 backingTokensSold, uint256 exposureTokensBought, bytes32 borrowMarketId)
errors
ExitBackingAmountTooHigh
error ExitBackingAmountTooHigh(address token, uint256 attemptedExitAmount, uint256 availableExitAmount)
ExposureAmountTooHigh
error ExposureAmountTooHigh(address token, uint256 maxAmountToUnloop, uint256 attemptedAmountToUnloop)
InvalidCaller
error InvalidCaller()
InvalidMarketParams
error InvalidMarketParams()
NonZeroExitOnMaxUnloop
error NonZeroExitOnMaxUnloop(address token, uint256 exitAmount)
ReentrantCall
error ReentrantCall()
SwapTooExpensive
error SwapTooExpensive(address token, uint256 maxAmountIn, uint256 actualAmountIn)
SwapUnderfilled
error SwapUnderfilled(address token, uint256 expectedAmount, uint256 actualAmount)
UnrecognizedChain
error UnrecognizedChain(uint256)
creation bytecode
0x608060405234601c57600e6020565b613bba61002b8239613bba90f35b6026565b60405190565b5f80fdfe60806040526004361015610013575b610486565b61001d5f3561004c565b8063f4aadf4e14610047578063fa173a5f146100425763fa461e330361000e5761044f565b610355565b6102b2565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b61008690610064565b90565b6100928161007d565b0361009957565b5f80fd5b905035906100aa82610089565b565b5f80fd5b601f801991011690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b906100f1906100b0565b810190811067ffffffffffffffff82111761010b57604052565b6100ba565b9061012361011c610052565b92836100e7565b565b90565b61013181610125565b0361013857565b5f80fd5b9050359061014982610128565b565b919060a0838203126101bb576101b49061016560a0610110565b93610172825f830161009d565b5f860152610183826020830161009d565b6020860152610195826040830161009d565b60408601526101a7826060830161009d565b606086015260800161013c565b6080830152565b6100ac565b62ffffff1690565b6101d1816101c0565b036101d857565b5f80fd5b905035906101e9826101c8565b565b919060c08382031261026d576102669061020560c0610110565b93610212825f830161009d565b5f860152610223826020830161009d565b602086015261023582604083016101dc565b6040860152610247826060830161013c565b6060860152610259826080830161013c565b608086015260a00161013c565b60a0830152565b6100ac565b9091610180828403126102a8576102a561028e845f850161009d565b9361029c816020860161014b565b9360c0016101eb565b90565b61005c565b5f0190565b346102e1576102cb6102c5366004610272565b91610f9e565b6102d3610052565b806102dd816102ad565b0390f35b610058565b151590565b6102f4816102e6565b036102fb57565b5f80fd5b9050359061030c826102eb565b565b6101008183031261035057610325825f830161009d565b9261034d610336846020850161014b565b936103448160c0860161013c565b9360e0016102ff565b90565b61005c565b346103875761037161036836600461030e565b92919091611424565b610379610052565b80610383816102ad565b0390f35b610058565b90565b6103988161038c565b0361039f57565b5f80fd5b905035906103b08261038f565b565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156103f85781359167ffffffffffffffff83116103f35760200192600183028401116103ee57565b6103ba565b6103b6565b6103b2565b9160608383031261044a57610414825f85016103a3565b9261042283602083016103a3565b92604082013567ffffffffffffffff81116104455761044192016103be565b9091565b610060565b61005c565b346104815761046b6104623660046103fd565b92919091611552565b610473610052565b8061047d816102ad565b0390f35b610058565b5f80fd5b5f1c90565b90565b6104a66104a16104ab92610125565b61048f565b610125565b90565b6104ba6104bf9161048a565b610492565b90565b90565b6104d96104d46104de926104c2565b61048f565b610125565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61051d61052391939293610125565b92610125565b820391821161052e57565b6104e1565b90565b5f1b90565b61054f61054a61055492610125565b610536565b610533565b90565b61059b6105966105867f951ae9fc8e231369dc30d9a40f12c78bb800223594870e32a7cda666d14d45d56104ae565b61059060016104c5565b9061050e565b61053b565b90565b5f90565b9190916105ad610557565b916105b661059e565b50825c6105dc6105d66105d16105cc60016104c5565b61053b565b610533565b91610533565b146105f3575f936105f0926001855d610b5d565b5d565b5f7f37ed32e800000000000000000000000000000000000000000000000000000000815280610624600482016102ad565b0390fd5b610632905161007d565b90565b61063f9051610125565b90565b90565b61065961065461065e92610642565b61048f565b610125565b90565b61066a9061007d565b9052565b61067790610125565b9052565b91602061069c92949361069560408201965f830190610661565b019061066e565b565b6106b26106ad6106b792610064565b61048f565b610064565b90565b6106c39061069e565b90565b6106cf906106ba565b90565b6106db9061069e565b90565b6106e7906106d2565b90565b60409061071361071a949695939661070960608401985f850190610661565b602083019061066e565b019061066e565b565b61072690516101c0565b90565b6107329061069e565b90565b61073e90610729565b90565b61074a906106d2565b90565b6107569061038c565b7f80000000000000000000000000000000000000000000000000000000000000008114610782575f0390565b6104e1565b90565b61079e6107996107a392610787565b61048f565b610064565b90565b6107c373fffd8963efd1fc6a506488495d951d5263988d2661078a565b90565b6107da6107d56107df926104c2565b61048f565b610064565b90565b6107ee6107f491610064565b91610064565b90039073ffffffffffffffffffffffffffffffffffffffff821161081457565b6104e1565b90565b61083061082b61083592610819565b61048f565b610064565b90565b6108466401000276a361081c565b90565b61085561085b91610064565b91610064565b019073ffffffffffffffffffffffffffffffffffffffff821161087a57565b6104e1565b61088960a0610110565b90565b52565b906108999061007d565b9052565b52565b52565b906108ad90610125565b9052565b6108ba9061007d565b9052565b6108c7906101c0565b9052565b906040806108ff936108e35f8201515f8601906108b1565b6108f5602082015160208601906108b1565b01519101906108be565b565b61090a90610125565b9052565b90608080610966936109265f8201515f8601906108b1565b610938602082015160208601906108b1565b61094a604082015160408601906108b1565b61095c606082015160608601906108b1565b0151910190610901565b565b9060a0806109d2936109805f8201515f8601906108b1565b610992602082015160208601906108b1565b6109a4604082015160408601906108be565b6109b660608201516060860190610901565b6109c860808201516080860190610901565b0151910190610901565b565b906101e06080610a2e936109ee5f8201515f8601906108cb565b610a00602082015160608601906108b1565b610a1160408201518386019061090e565b610a246060820151610120860190610968565b0151910190610901565b565b9190610a44905f61020085019401906109d4565b565b5f80fd5b60e01b90565b90505190610a5d8261038f565b565b9190604083820312610a875780610a7b610a84925f8601610a50565b93602001610a50565b90565b61005c565b610a95906102e6565b9052565b610aa29061038c565b9052565b610aaf90610064565b9052565b5190565b60209181520190565b90825f9392825e0152565b610aea610af3602093610af893610ae181610ab3565b93848093610ab7565b95869101610ac0565b6100b0565b0190565b9193610b33610b4a9694610b29610b3d9497610b1f60a08801995f890190610661565b6020870190610a8c565b6040850190610a99565b6060830190610aa6565b6080818403910152610acb565b90565b610b55610052565b3d5f823e3d90fd5b919091610b6c60208401610628565b610b89610b83610b7e60208601610628565b61007d565b9161007d565b14158015610f6f575b610f3a57610ba260608301610635565b610bd4610bce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610125565b91610125565b1480610f14575b610ec357610bfb610beb826106c6565b84610bf5306106de565b916117f0565b9081610c0f610c095f610645565b91610125565b14610e9357610c1c611f1d565b610c2860208401610628565b92610c345f8201610628565b94610c4160608301610635565b610c73610c6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610125565b91610125565b145f14610e8257835b9586610c90610c8a87610125565b91610125565b11610e3c578581610ca09061007d565b90610caa9061007d565b10959083604001610cba9061071c565b90610cc492611f9f565b93610ccd6121c2565b85610cd791612585565b610ce090610735565b610ce990610741565b9363128acb089130610cfa906106de565b968899610d06906126cb565b610d0f9061074d565b985f1498610db5610dc997610d925f98610d89610dd49860409f610da699610d8091610e1857610d77610d53610d43610838565b610d4d60016107c6565b90610849565b9a5b9793959195610d6e610d6561087f565b995f8b0161088c565b6020890161088f565b6040870161089d565b606085016108a0565b608083016108a3565b610d9a610052565b94859160208301610a30565b602082018103825203846100e7565b610dbd610052565b9a8b998a988997610a4a565b875260048701610afc565b03925af18015610e1357610de6575b50565b610e069060403d8111610e0c575b610dfe81836100e7565b810190610a5f565b50610de3565b503d610df4565b610b4d565b610d77610e36610e266107a6565b610e3060016107c6565b906107e2565b9a610d55565b8685610e7e610e4c5f8701610628565b91925f9384937f9e65f81e000000000000000000000000000000000000000000000000000000008552600485016106ea565b0390fd5b610e8e60608301610635565b610c7c565b610ec193929150915f915f91610ebb610eb5610eaf5f96610645565b94610645565b94610645565b94611a7d565b565b50610edc6080610ed560208401610628565b9201610635565b90610f105f9283927f3cfcfff60000000000000000000000000000000000000000000000000000000084526004840161067b565b0390fd5b50610f2160808301610635565b610f33610f2d5f610645565b91610125565b1415610bdb565b5f7f494e780700000000000000000000000000000000000000000000000000000000815280610f6b600482016102ad565b0390fd5b50610f7b5f8401610628565b610f97610f91610f8c5f8601610628565b61007d565b9161007d565b1415610b92565b90610fa992916105a2565b565b9092610fb5610557565b92610fbe61059e565b50835c610fe4610fde610fd9610fd460016104c5565b61053b565b610533565b91610533565b14610ffb575f94610ff8936001865d6111fd565b5d565b5f7f37ed32e80000000000000000000000000000000000000000000000000000000081528061102c600482016102ad565b0390fd5b6110399061069e565b90565b61104590611030565b90565b611051906106d2565b90565b9050519061106182610128565b565b9060208282031261107c57611079915f01611054565b90565b61005c565b9190611094905f60208501940190610661565b565b61109f906106d2565b90565b67ffffffffffffffff81116110c0576110bc6020916100b0565b0190565b6100ba565b906110d76110d2836110a2565b610110565b918252565b369037565b906111066110ee836110c5565b926020806110fc86936110a2565b92019103906110dc565b565b5f91031261111257565b61005c565b9060808061116f9361112f5f8201515f8601906108b1565b611141602082015160208601906108b1565b611153604082015160408601906108b1565b611165606082015160608601906108b1565b0151910190610901565b565b90926111a59061119b6111b296946111916101008601975f870190611117565b60a085019061066e565b60c0830190610661565b60e0818403910152610acb565b90565b6111be90610533565b90565b6111ca906106d2565b90565b6111d690610533565b9052565b9160206111fb9294936111f460408201965f83019061066e565b01906111cd565b565b9092611356575b61122f6112349161122a61122261121d60208801610628565b61103c565b8286916127b8565b6106c6565b611096565b63238d6579838392611245306106de565b6112566112515f610645565b6110e1565b823b15611351575f94611287869261127c94611270610052565b998a9889978896610a4a565b865260048601611171565b03925af1801561134c57611320575b506112a0306106de565b6112ab5f8401610628565b906112ca6112c56112be60208701610628565b9495612876565b6111b5565b6113066113006112fa7f46d77e4afb151143160dd0bb2f514931e04bddc1243c4c590fc3db1528df4fb2946111c1565b946111c1565b946111c1565b9461131b611312610052565b928392836111da565b0390a4565b61133f905f3d8111611345575b61133781836100e7565b810190611108565b5f611296565b503d61132d565b610b4d565b610a46565b906113a9602061137761137261136d838801610628565b61103c565b611048565b6370a082319061139e611389306106de565b92611392610052565b95869485938493610a4a565b835260048301611081565b03915afa91821561141f576112349261122f925f916113f1575b50816113d76113d183610125565b91610125565b11155f146113ea57505b92915050611204565b90506113e1565b611412915060203d8111611418575b61140a81836100e7565b810190611063565b5f6113c3565b503d611400565b610b4d565b90611430939291610fab565b565b919060608382031261147e576114779061144c6060610110565b93611459825f830161009d565b5f86015261146a826020830161009d565b60208601526040016101dc565b6040830152565b6100ac565b9190610200838203126114f6576114ef9061149e60a0610110565b936114ab825f8301611432565b5f8601526114bc826060830161009d565b60208601526114ce826080830161014b565b60408601526114e18261012083016101eb565b60608601526101e00161013c565b6080830152565b6100ac565b906102008282031261151557611512915f01611483565b90565b61005c565b61152e61152961153392610642565b61048f565b61038c565b90565b61154a61154561154f9261038c565b61048f565b610125565b90565b919261156b919493611562612886565b908101906114fb565b9260608401519061158f61158a6115806121c2565b5f88015190612585565b610735565b92336115ab6115a56115a087610741565b61007d565b9161007d565b036117b757806115c36115bd5f61151a565b9161038c565b125f146117a1576115db6115d68261074d565b611536565b5b91816115f06115ea5f61151a565b9161038c565b135f14611792575061160190611536565b5b9461160f60608401610635565b61164161163b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610125565b91610125565b145f146117815761165460808201610635565b5b8261166861166283610125565b91610125565b1061173b57508561168c61168661168160a08701610635565b610125565b91610125565b116116e9576116d560206116e79697946116cf6116e095856116b2856116da9801610628565b916040820151908590916116c960808d9501610635565b94611a7d565b01610628565b61103c565b92610741565b9091612892565b565b858361173761170660a06116ff60208501610628565b9301610635565b925f9384937f3824a8c4000000000000000000000000000000000000000000000000000000008552600485016106ea565b0390fd5b905061177d61174b5f8501610628565b91925f9384937f131945b6000000000000000000000000000000000000000000000000000000008552600485016106ea565b0390fd5b61178d60608401610635565b611655565b61179c9150611536565b611602565b6117b26117ad8361074d565b611536565b6115dc565b5f7f48f5c3ed000000000000000000000000000000000000000000000000000000008152806117e8600482016102ad565b0390fd5b5f90565b9061181e9061181861182d946118046117ec565b5061180e83612876565b9085919091612ae1565b92612d83565b93925090509190919091613111565b90565b6fffffffffffffffffffffffffffffffff1690565b61184e81611830565b0361185557565b5f80fd5b9050519061186682611845565b565b91906060838203126118b4576118ad906118826060610110565b9361188f825f8301611054565b5f8601526118a08260208301611859565b6020860152604001611859565b6040830152565b6100ac565b906060828203126118d2576118cf915f01611868565b90565b61005c565b6118e0906111b5565b9052565b9160206119059294936118fe60408201965f8301906118d7565b0190610661565b565b61191661191c91939293610125565b92610125565b820180921161192757565b6104e1565b6119369051611830565b90565b61194d61194861195292611830565b61048f565b610125565b90565b61196961196461196e92610642565b61048f565b611830565b90565b9190604083820312611999578061198d611996925f8601611054565b93602001611054565b90565b61005c565b91936119d66119ee96946119cc6119e094976119c26101208801995f890190611117565b60a087019061066e565b60c085019061066e565b60e0830190610661565b610100818403910152610acb565b90565b611a27611a2e94611a1d60e094989795611a1361010086019a5f870190611117565b60a085019061066e565b60c0830190610661565b0190610661565b565b90959492611a7b94611a6a611a7492611a60608096611a5660a088019c5f89019061066e565b602087019061066e565b604085019061066e565b606083019061066e565b01906111cd565b565b939094919294611a8c81612876565b94611a9e611a99826106c6565b611096565b60606393c52062918890611acc611ab4306106de565b94611ad7611ac0610052565b96879586948594610a4a565b8452600484016118e4565b03915afa908115611e8a575f91611e5c575b5093611afe611af88992610125565b91610125565b1490815f14611e4157611b1b611b166040870161192c565b611939565b5b94611b2783156102e6565b80611e1c575b611daf5788611b44611b3e5f610645565b91610125565b11611c76575b50611b5e9150611b59906106c6565b611096565b90638720316d908492611b70306106de565b611b79306106de565b823b15611c71575f94611baa8692611b9f94611b93610052565b998a9889978896610a4a565b8652600486016119f1565b03925af18015611c6c57611c40575b50611bc3306106de565b91611c3b611bde6020611bd75f8801610628565b9601610628565b95611bec88939498916111b5565b90611c29611c23611c1d7f41ceda942fd6577ffbd646f42864a5929f0e228a706842f0414427a9d20db6e5986111c1565b986111c1565b986111c1565b98611c32610052565b95869586611a30565b0390a4565b611c5f905f3d8111611c65575b611c5781836100e7565b810190611108565b5f611bb9565b503d611c4d565b610b4d565b610a46565b825f14611da957611c865f610645565b5b925f14611d9557611ca5611c9f60206040930161192c565b5b611939565b92611cc4611cbc611cb75f8801610628565b61103c565b848c916127b8565b611cd5611cd0846106c6565b611096565b611d135f6320b76e81611d1e899598611ced306106de565b611cfe611cf986610645565b6110e1565b91611d07610052565b9b8c998a988997610a4a565b87526004870161199e565b03925af1908115611d9057611b5e92611b5992611d63575b50611d5d611d4d611d485f8701610628565b61103c565b82611d575f610645565b916127b8565b90611b4a565b611d839060403d8111611d89575b611d7b81836100e7565b810190611971565b50611d36565b503d611d71565b610b4d565b506040611ca5611da45f611955565b611ca0565b88611c87565b86611e18611de887611de3611dde6040611dd76080611dd060208a01610628565b9801610635565b970161192c565b611939565b61050e565b5f9384937fce24035a000000000000000000000000000000000000000000000000000000008552600485016106ea565b0390fd5b5085611e3b611e35611e306040850161192c565b611939565b91610125565b11611b2d565b611e5784611e5160808901610635565b90611907565b611b1c565b611e7d915060603d8111611e83575b611e7581836100e7565b8101906118b9565b5f611ae9565b503d611e6b565b610b4d565b611ed3611ece611ebe7f08e807f0e311ef1048643adc5ad6a1816eb08663ef138ef8a0dbdde4c66f79456104ae565b611ec860016104c5565b9061050e565b61053b565b90565b611f1a611f15611f057f439f1088d898f3d7db77e1b77d28920aa2581569b138503f27dfbbc6bae651da6104ae565b611f0f60016104c5565b9061050e565b61053b565b90565b611f25611e8f565b611f2d611ed6565b5c905d565b611f3c6060610110565b90565b5f90565b5f90565b611f4f611f32565b906020808084611f5d611f3f565b815201611f68611f3f565b815201611f73611f43565b81525050565b611f81611f47565b90565b611f8e6060610110565b90565b90611f9b906101c0565b9052565b91611fa8611f79565b5082611fbc611fb68461007d565b9161007d565b11611ff2575b611fe6611fef92611fdd611fd4611f84565b955f870161088f565b6020850161088f565b60408301611f91565b90565b611fe6611fef9293925050611fc2565b5f90565b731f98431c8ad98523631ae4a59f267346ea31f98490565b90565b61203561203061203a9261201e565b61048f565b610125565b90565b90565b61205461204f6120599261203d565b61048f565b610125565b90565b90565b61207361206e6120789261205c565b61048f565b610125565b90565b90565b61209261208d6120979261207b565b61048f565b610125565b90565b90565b6120b16120ac6120b69261209a565b61048f565b610125565b90565b73db1d10011ad0ff90774d0c6bb92e5c5c8b4461f790565b90565b6120e86120e36120ed926120d1565b61048f565b610125565b90565b7333128a8fc17869897dce68ed026d694621f6fdfd90565b90565b61211f61211a61212492612108565b61048f565b610125565b90565b73afe208a311b21f13ef87e33a90049fc17a7acdec90565b90565b61215661215161215b9261213f565b61048f565b610125565b90565b737a5028bda40e7b173c278c5342087826455ea25a90565b90565b61218d61218861219292612176565b61048f565b610125565b90565b731f9840000000000000000000000000000000000390565b91906121c0905f6020850194019061066e565b565b6121ca612002565b50466121df6121d960016104c5565b91610125565b1461236457466121f86121f2600a612021565b91610125565b14612359574661221261220c61a4b1612040565b91610125565b1461234e574661222b612225608961205f565b91610125565b14612343574661224461223e600561207e565b91610125565b14612338574661225d612257603861209d565b91610125565b1461232d57466122776122716121056120d4565b91610125565b14612322574661229161228b61a4ec61210b565b91610125565b1461231757466122ab6122a56101e0612142565b91610125565b1461230c57466122c46122be6082612179565b91610125565b14612301576122fd465f9182917f6b8c1984000000000000000000000000000000000000000000000000000000008352600483016121ad565b0390fd5b612309612195565b90565b61231461215e565b90565b61231f612127565b90565b61232a6120f0565b90565b6123356120b9565b90565b612340612006565b90565b61234b612006565b90565b612356612006565b90565b612361612006565b90565b61236c612006565b90565b60209181520190565b5f7f506f6f6c416464726573733a2077726f6e6720746f6b656e206f726465720000910152565b6123ac601e60209261236f565b6123b581612378565b0190565b6123ce9060208101905f81830391015261239f565b90565b156123d857565b6123e0610052565b7f08c379a000000000000000000000000000000000000000000000000000000000815280612410600482016123b9565b0390fd5b61241d906101c0565b9052565b60409061244a612451949695939661244060608401985f850190610661565b6020830190610661565b0190612414565b565b60200190565b90565b61247061246b61247592612459565b610536565b610533565b90565b6124a17fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5461245c565b90565b905090565b5f7fff00000000000000000000000000000000000000000000000000000000000000910152565b6124dc600180926124a4565b6124e5816124a9565b0190565b60601b90565b6124f8906124e9565b90565b612504906124ef565b90565b6125136125189161007d565b6124fb565b9052565b90565b61252b61253091610533565b61251c565b9052565b6020939261255d60146125659461255561254e89966124d0565b8092612507565b01809261251f565b01809261251f565b0190565b61257d61257861258292610125565b61048f565b610064565b90565b61267461267e9261265c6126799361259b612002565b506125cd6125aa5f8501610628565b6125c76125c16125bc60208801610628565b61007d565b9161007d565b106123d1565b9161261a6125dc5f8301610628565b61260b6125f760406125f060208701610628565b950161071c565b6125ff610052565b94859360208501612421565b602082018103825203826100e7565b61262c61262682610ab3565b91612453565b209161264d612639612478565b612641610052565b94859360208501612534565b602082018103825203826100e7565b61266e61266882610ab3565b91612453565b206104ae565b612569565b6106d2565b90565b5f90565b90565b61269c6126976126a192612685565b61048f565b610125565b90565b156126ab57565b5f80fd5b6126c36126be6126c892610125565b61048f565b61038c565b90565b612719906126d7612681565b506127148161270e6127087f8000000000000000000000000000000000000000000000000000000000000000612688565b91610125565b106126a4565b6126af565b90565b63ffffffff1690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b61275e6127596127639261271c565b610a4a565b612725565b90565b60ff1690565b61278061277b61278592610642565b61048f565b612766565b90565b6127919061276c565b9052565b9160206127b69294936127af60408201965f830190610661565b0190612788565b565b90916127f96004916127ea6127d063095ea7b361274a565b91866127da610052565b958694602086019081520161067b565b602082018103825203826100e7565b9061280e6128088284906131ab565b156102e6565b612818575b505050565b612865600461286a94612860849161285161283663095ea7b361274a565b915f90612841610052565b9687946020860190815201612795565b602082018103825203836100e7565b613394565b613394565b5f8080612813565b5f90565b60a090612881612872565b502090565b5f61288f611e8f565b5d565b916128d66004926128c76128db95936128ae63a9059cbb61274a565b926128b7610052565b968794602086019081520161067b565b602082018103825203836100e7565b613394565b565b67ffffffffffffffff81116128f55760208091020190565b6100ba565b61290381610533565b0361290a57565b5f80fd5b9050519061291b826128fa565b565b9092919261293261292d826128dd565b610110565b938185526020808601920283019281841161296f57915b8383106129565750505050565b60208091612964848661290e565b815201920191612949565b6103ba565b9080601f830112156129925781602061298f9351910161291d565b90565b6103b2565b906020828203126129c7575f82015167ffffffffffffffff81116129c2576129bf9201612974565b90565b610060565b61005c565b5190565b60209181520190565b60200190565b6129e890610533565b9052565b906129f9816020936129df565b0190565b60200190565b90612a20612a1a612a13846129cc565b80936129d0565b926129d9565b905f5b818110612a305750505090565b909192612a49612a4360019286516129ec565b946129fd565b9101919091612a23565b612a689160208201915f818403910152612a03565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b90612aa2826129cc565b811015612ab3576020809102010190565b612a6b565b612ac29051610533565b90565b612ad9612ad4612ade92610125565b61048f565b611830565b90565b612b09612b03612afe612b30955f95612af86117ec565b5061347f565b613587565b91611096565b612b25637784c685612b19610052565b95869485938493610a4a565b835260048301612a53565b03915afa8015612b9b57612b6c612b67612b62612b7193612b76955f91612b79575b50612b5c5f610645565b90612a98565b612ab8565b6104ae565b612ac5565b611939565b90565b612b9591503d805f833e612b8d81836100e7565b810190612997565b5f612b52565b610b4d565b919060c083820312612c2257612c1b90612bba60c0610110565b93612bc7825f8301611859565b5f860152612bd88260208301611859565b6020860152612bea8260408301611859565b6040860152612bfc8260608301611859565b6060860152612c0e8260808301611859565b608086015260a001611859565b60a0830152565b6100ac565b9060c082820312612c4057612c3d915f01612ba0565b90565b61005c565b9190612c58905f602085019401906118d7565b565b612c6e612c69612c7392610642565b61048f565b610064565b90565b612c7f90612c5a565b90565b612c8b9061069e565b90565b612c9790612c82565b90565b612ca3906106d2565b90565b612caf90611830565b9052565b9060a080612d1d93612ccb5f8201515f860190612ca6565b612cdd60208201516020860190612ca6565b612cef60408201516040860190612ca6565b612d0160608201516060860190612ca6565b612d1360808201516080860190612ca6565b0151910190612ca6565b565b9160a0612d41929493612d3a6101608201965f830190611117565b0190612cb3565b565b612d4f612d5591611830565b91611830565b01906fffffffffffffffffffffffffffffffff8211612d7057565b6104e1565b90612d7f90611830565b9052565b60c0612de691612d916117ec565b50612d9a6117ec565b50612da36117ec565b50612dac6117ec565b50612dbf612db985612876565b91611096565b612ddb635c60e39a612dcf610052565b95869485938493610a4a565b835260048301612c45565b03915afa9081156130d1575f916130a3575b5090612e1842612e12612e0d6080860161192c565b611939565b9061050e565b80612e2b612e255f610645565b91610125565b14158061307d575b8061304f575b612e97575b5050612e4b5f820161192c565b612e576020830161192c565b92612e94612e8e612e88612e82612e7c6060612e7560408a0161192c565b980161192c565b95611939565b96611939565b94611939565b92611939565b90565b6020612eb5612eb0612eab60608601610628565b612c8e565b612c9a565b638c00bf6b9390612ed88695612ee3612ecc610052565b97889586948594610a4a565b845260048401612d1f565b03915afa91821561304a57612f1f92612f19915f9161301c575b5091612f13612f0e6040870161192c565b611939565b92613648565b906136bb565b612f47612f2b826137c9565b612f416040850191612f3c8361192c565b612d43565b90612d75565b612f6e612f53826137c9565b612f685f850191612f638361192c565b612d43565b90612d75565b612f7a60a0830161192c565b612f8c612f865f611955565b91611830565b03612f98575b80612e3e565b612ffa612ff5612fbf61301693612fb9612fb460a0880161192c565b611939565b906136bb565b612fdb81612fd6612fd15f890161192c565b611939565b61050e565b612fef612fea6020880161192c565b611939565b91613814565b6137c9565b613010602084019161300b8361192c565b612d43565b90612d75565b5f612f92565b61303d915060203d8111613043575b61303581836100e7565b810190611063565b5f612efd565b503d61302b565b610b4d565b5061305c60608301610628565b61307661307061306b5f612c76565b61007d565b9161007d565b1415612e39565b5061308a6040840161192c565b61309c6130965f611955565b91611830565b1415612e33565b6130c4915060c03d81116130ca575b6130bc81836100e7565b810190612c27565b5f612df8565b503d6130b2565b610b4d565b6130e060016104c5565b90565b90565b6130fa6130f56130ff926130e3565b61048f565b610125565b90565b61310e620f42406130e6565b90565b91613143613134613149946131246117ec565b509361312e6130d6565b90611907565b9161313d613102565b90611907565b9161389f565b90565b5f90565b606090565b3d5f14613170576131653d6110c5565b903d5f602084013e5b565b613178613150565b9061316e565b9050519061318b826102eb565b565b906020828203126131a6576131a3915f0161317e565b90565b61005c565b905f80916131b761314c565b506131c184611048565b9082602082019151925af16131d4613155565b816131ff575b5090816131e6575b5090565b6131f991506131f490611048565b6138db565b5f6131e2565b905061320a81610ab3565b61321c6132165f610645565b91610125565b1490811561322c575b505f6131da565b6132479150602061323c82610ab3565b81830101910161318d565b5f613225565b67ffffffffffffffff811161326b576132676020916100b0565b0190565b6100ba565b9061328261327d8361324d565b610110565b918252565b5f7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564910152565b6132b86020613270565b906132c560208301613287565b565b6132cf6132ae565b90565b60207f6f74207375636365656400000000000000000000000000000000000000000000917f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201520152565b61332c602a60409261236f565b613335816132d2565b0190565b61334e9060208101905f81830391015261331f565b90565b1561335857565b613360610052565b7f08c379a00000000000000000000000000000000000000000000000000000000081528061339060048201613339565b0390fd5b6133dd916133a46133b392611048565b906133ad6132c7565b916138fb565b6133bc81610ab3565b6133ce6133c85f610645565b91610125565b149081156133df575b50613351565b565b6133fa915060206133ef82610ab3565b81830101910161318d565b5f6133d7565b90565b61341761341261341c92613400565b61048f565b610125565b90565b6134296002613403565b90565b91602061344d92949361344660408201965f8301906118d7565b019061066e565b565b91602061347092949361346960408201965f830190610661565b01906111cd565b565b61347c60016104c5565b90565b61351b6135299161350361352e9461349561059e565b50916134c96134a261341f565b916134ba6134ae610052565b9384926020840161342c565b602082018103825203826100e7565b6134db6134d582610ab3565b91612453565b20916134f46134e8610052565b9384926020840161344f565b602082018103825203826100e7565b61351561350f82610ab3565b91612453565b206104ae565b613523613472565b90611907565b61053b565b90565b606090565b90613548613543836128dd565b610110565b918252565b369037565b9061357761355f83613536565b9260208061356d86936128dd565b920191039061354d565b565b9061358390610533565b9052565b61358f613531565b506135be6135a56135a060016104c5565b613552565b916135b9836135b35f610645565b90612a98565b613579565b90565b6135d06135d691939293610125565b92610125565b916135e2838202610125565b9281840414901517156135f157565b6104e1565b90565b61360d613608613612926135f6565b61048f565b610125565b90565b613626670de0b6b3a76400006135f9565b90565b90565b61364061363b61364592613629565b61048f565b610125565b90565b6136b89161365e916136586117ec565b506135c1565b6136b36136878283613681600261367c613676613615565b91613403565b6135c1565b9161391d565b6136ad81846136a760036136a261369c613615565b9161362c565b6135c1565b9161391d565b92611907565b611907565b90565b906136d8916136c86117ec565b50906136d2613615565b9161391d565b90565b5f90565b5f7f6d61782075696e74313238206578636565646564000000000000000000000000910152565b6137106014613270565b9061371d602083016136df565b565b613727613706565b90565b61373261371f565b90565b5190565b6137586137616020936137669361374f81613735565b9384809361236f565b95869101610ac0565b6100b0565b0190565b61377f9160208201915f818403910152613739565b90565b1561378a5750565b6137c590613796610052565b9182917f08c379a00000000000000000000000000000000000000000000000000000000083526004830161376a565b0390fd5b613811906137d56136db565b5061380c816137fc6137f66fffffffffffffffffffffffffffffffff611939565b91610125565b111561380661372a565b90613782565b612ac5565b90565b9061384761383861384d94936138286117ec565b5093613832613102565b90611907565b916138416130d6565b90611907565b9161391d565b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61388961388f91610125565b91610125565b90811561389a570490565b613850565b6138b96138d893926138d3926138b36117ec565b506135c1565b6138cd836138c760016104c5565b9061050e565b90611907565b61387d565b90565b6138e361314c565b503b6138f76138f15f610645565b91610125565b1190565b9061391a9291613909613150565b50906139145f610645565b91613a0a565b90565b61393992916139349161392e6117ec565b506135c1565b61387d565b90565b613945906106d2565b90565b60207f722063616c6c0000000000000000000000000000000000000000000000000000917f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201520152565b6139a2602660409261236f565b6139ab81613948565b0190565b6139c49060208101905f818303910152613995565b90565b156139ce57565b6139d6610052565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613a06600482016139af565b0390fd5b915f8091613a609593613a1b613150565b50613a42613a283061393c565b31613a3b613a3585610125565b91610125565b10156139c7565b8591602082019151925af191613a56613155565b9092909192613aff565b90565b5f7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000910152565b613a97601d60209261236f565b613aa081613a63565b0190565b613ab99060208101905f818303910152613a8a565b90565b15613ac357565b613acb610052565b7f08c379a000000000000000000000000000000000000000000000000000000000815280613afb60048201613aa4565b0390fd5b919290613b0a613150565b505f14613b4e5750613b1b82610ab3565b613b2d613b275f610645565b91610125565b14613b37575b5090565b613b43613b48916138db565b613abc565b5f613b33565b8290613b5982610ab3565b613b6b613b655f610645565b91610125565b115f14613b7b5750805190602001fd5b613bb690613b87610052565b9182917f08c379a00000000000000000000000000000000000000000000000000000000083526004830161376a565b0390fd