3 txs
22 calls
constructor
constructor((address pendleMarket, uint8 slippage, uint32 curveSlippage, address curvePool, address ibToken, address quoteToken)[] routes)
functions
getRouteData
viewfunction getRouteData(address, address) view returns (address pendleMarket, address sy, address pt, address yt, uint8 slippage, uint32 curveSlippage, address ib, address curvePool, uint8 curveInputCoinIndex, uint8 curveOutputCoinIndex)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addPairs
nonpayablefunction addPairs(tuple[] routes)
redeemDust
nonpayablefunction redeemDust(address token, address recipient)
renounceOwnership
nonpayablefunction renounceOwnership()
swapCallback
nonpayablefunction swapCallback(int256 ptToAccount, int256 syToAccount, bytes _data)
swapExactInput
nonpayablefunction swapExactInput(address recipient, address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, bytes data) returns (uint256 amountOut)
swapExactOutput
nonpayablefunction swapExactOutput(address recipient, address tokenIn, address tokenOut, uint256 maxAmountIn, uint256 amountOut, bytes data) returns (uint256 amountIn)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
NewPair
event NewPair(address indexed ptToken, address indexed quoteToken, address pendleMarket, uint8 slippage)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
ApproxFail
error ApproxFail()
ApproximationFailed
error ApproximationFailed()
ApproxParamsInvalid
error ApproxParamsInvalid(uint256 guessMin, uint256 guessMax, uint256 eps)
InsufficientAmount
error InsufficientAmount()
MarketExchangeRateBelowOne
error MarketExchangeRateBelowOne(int256 exchangeRate)
MarketExpired
error MarketExpired()
MarketProportionMustNotEqualOne
error MarketProportionMustNotEqualOne()
MarketProportionTooHigh
error MarketProportionTooHigh(int256 proportion, int256 maxProportion)
MarketRateScalarBelowZero
error MarketRateScalarBelowZero(int256 rateScalar)
MarketZeroTotalPtOrTotalAsset
error MarketZeroTotalPtOrTotalAsset(int256 totalPt, int256 totalAsset)
NotSupported
error NotSupported()
TooMuchRequested
error TooMuchRequested()
UnknownPair
error UnknownPair()
WrongInput
error WrongInput()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60808060405234620007c95762005c878038038091620000208285620009f7565b8339810190602081830312620007c95780516001600160401b0391828211620007c9570182601f82011215620007c9578051918211620009a857604051926200007060208460051b0185620009f7565b828452602060c0818601940283010191818311620007c957602001925b8284106200090857600180546001600160a01b0319908116909155600080543392811683178255604051889360a0926001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3620000f481620009be565b828152826020820152826040820152826060820152826080820152015280519060005b8281106200012f5760405161523c908162000a4b8239f35b8151811015620008f257600581901b82016020015180519091906001600160a01b031615620006d857670de0b6b3a764000060ff6020840151161015620006d857620f424063ffffffff6040840151161015620006d8578151604051630b2339af60e21b815290606090829060049082906001600160a01b03165afa928315620007d75760009360009260009162000875575b506080820151604051637d2d278360e11b81526001600160a01b03918216600482015290602090829060249082908a165afa908115620007d75760009162000851575b5015620006d8576080820151604051633c21b3eb60e11b81526001600160a01b03918216600482015290602090829060249082908a165afa908115620007d7576000916200081b575b5015620006d8576060820151604051630293577560e41b81526000199691879190602090829060049082906001600160a01b03165afa908115620007d757600091620007e3575b506000905b808210620006f95750506000198760000b148015620006ea575b620006d85760019660ff8092898060a01b03875116948a8060a01b036080890151168360208a0151169063ffffffff60408b0151168d8060a01b0360608c0151169260405199620003058b620009da565b8a528e8060a01b03851660208b01528e8060a01b038d1660408b01528e8060a01b038b1660608b015260808a015260a089015260c088015260e08701528284166101008701528282166101208701528a8060a01b03885116968b8060a01b0360808a015116908460208b01511663ffffffff60408c015116918e8060a01b0360608d015116946040519b6200039a8d620009da565b8c528f8060a01b031660208c01528e8060a01b038d1660408c01528e8060a01b031660608b015260808a015260a089015260c088015260e08701521661010085015216610120830152858060a01b03841660005260026020526040600020868060a01b0360a0850151166000526020526005610120604060002092888060a01b03815116898060a01b0319855416178455888401898060a01b036020830151168a8060a01b031982541617905560028401898060a01b036040830151168a8060a01b0319825416179055888060a01b03606082015116898060a01b0319600386015416176003850155620004ae60ff608083015116600386019081549060ff60a01b9060a01b169060ff60a01b1916179055565b60a08181015160038601805463ffffffff60a81b191660a89290921b63ffffffff60a81b1691909117905560c08201516004860180548c841b8d900380199182169381169390931790915560e0840151868801805461010087015160ff60a01b1991909416929094169190911792909216921b60ff60a01b1691909117905501519101805460ff60a81b191660a89290921b60ff60a81b1691909117905560a08281015186821b8790039081166000908152600260208181526040808420898616855282529283902086518154861990811691871691909117825591870151818c01805484169187169190911790559286015191830180548216928516929092179091556060850151600383018054608088015160ff60a01b1991909416929095169190911793909316931b60ff60a01b169290921781556101209160059160a085810151825463ffffffff60a81b191660a89190911b63ffffffff60a81b161790915560c08501516004830180548b841b8c900380199182169381169390931790915560e087015194909301805461010088015160ff60a01b199190951695909216949094171691901b60ff60a01b16178155910151815460ff60a81b191660a89190911b60ff60a81b1617905560a0818101518251602093840151604080519489901b899003928316855260ff91909116948401949094529081169316917fe546beeeab60a56b73c1b949bb268220b489f63cd1a9b947e6e8a34013d0824391a30162000117565b60405163f50b9e3d60e01b8152600490fd5b506000198160000b14620002b4565b909760018060a01b0360608701511660208a60246040518094819363c661065760e01b835260048301525afa908115620007d75760009162000790575b5060808701516001600160a01b03918216911681036200076257505060018860000b985b01906200029a565b60a08701519199916001600160a01b03161462000783575b6001906200075a565b600081900b92506200077a565b90506020813d602011620007ce575b81620007ae60209383620009f7565b81010312620007c957620007c29062000a1b565b8c62000736565b600080fd5b3d91506200079f565b6040513d6000823e3d90fd5b90506020813d60201162000812575b816200080160209383620009f7565b81010312620007c957518a62000295565b3d9150620007f2565b62000842915060203d60201162000849575b620008398183620009f7565b81019062000a30565b886200024e565b503d6200082d565b6200086e915060203d6020116200084957620008398183620009f7565b8862000205565b94505090506060833d606011620008e9575b816200089660609383620009f7565b81010312620007c9578251906001600160a01b0382168203620007c9576020840151936001600160a01b0385168503620007c95760400151916001600160a01b0383168303620007c957939187620001c2565b3d915062000887565b634e487b7160e01b600052603260045260246000fd5b60c084830312620007c957604051906200092282620009be565b6200092d8562000a1b565b8252602085015160ff81168103620007c957602083015260408501519063ffffffff82168203620007c95782602092604060c095015260606200097281890162000a1b565b9082015260806200098581890162000a1b565b9082015260a06200099881890162000a1b565b908201528152019301926200008d565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b03821117620009a857604052565b61014081019081106001600160401b03821117620009a857604052565b601f909101601f19168101906001600160401b03821190821017620009a857604052565b51906001600160a01b0382168203620007c957565b90816020910312620007c957518015158103620007c9579056fe608080604052600436101561001357600080fd5b600090813560e01c90816321629ed014612cb4575080632f1ccfbe146122e7578063715018a61461224257806379ba5097146121135780637d4f036a146117ed5780638da5cb5b1461179c578063c089b97b14610843578063c93475cb1461075a578063e30c397814610708578063f2fde38b1461065b5763fa483e721461009a57600080fd5b346102825760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610282578060043567ffffffffffffffff60243560443582811161062b576100f1903690600401612e08565b8585138015610652575b15610642578101906020818303126106425780359084821161064e57019060a082820312610642576040519361013085612faf565b61013983612de7565b855261014760208401612de7565b906020860191825261015b60408501612de7565b6040870152606084013593841515850361064a5760608701948552608081013591821161064a570182601f82011215610646576101c8928160206101a19335910161336b565b608086015273ffffffffffffffffffffffffffffffffffffffff80865116915116906135f0565b9173ffffffffffffffffffffffffffffffffffffffff8351163303610642578581131561029557505050608061021873ffffffffffffffffffffffffffffffffffffffff604084015116936133a2565b910151823b156102905761025f928492836040518096819582947f1b9d082d0000000000000000000000000000000000000000000000000000000084523360048501613457565b03925af180156102855761027257505080f35b61027b90612fcb565b6102825780f35b80fd5b6040513d84823e3d90fd5b505050fd5b9093506102a39194506133a2565b9151610365575b50602090608473ffffffffffffffffffffffffffffffffffffffff8060c08601956102e18587848a5116930192848451169061348c565b51169451168560405195869485937f20e8c565000000000000000000000000000000000000000000000000000000008552336004860152602485015280604485015260648401525af1801561028557610338575080f35b602090813d831161035e575b61034e8183612fdf565b810103126103595780f35b600080fd5b503d610344565b60e08301516101008401516101208501516040517f67df02ca00000000000000000000000000000000000000000000000000000000815260ff928316600f90810b60048301529290911690910b602482015260448101849052906020908290606490829073ffffffffffffffffffffffffffffffffffffffff165afa908115610637578591610601575b5063ffffffff60a085015116620f4240918282018092116105d457906104149161340b565b0490816003558473ffffffffffffffffffffffffffffffffffffffff6040830151166080830151813b156105d057829161047f916040519485809481937f1b9d082d0000000000000000000000000000000000000000000000000000000083528a3060048501613457565b03925af180156105c557610598575b508173ffffffffffffffffffffffffffffffffffffffff6104cc92511673ffffffffffffffffffffffffffffffffffffffff60e0870151169061348c565b60e08301516101008401516101208501516040517fddc1f59d00000000000000000000000000000000000000000000000000000000815260ff928316600f90810b60048301529290911690910b6024820152604481019290925260648201839052306084830152602090829060a4908290889073ffffffffffffffffffffffffffffffffffffffff165af1801561058d57156102aa57602090813d8311610586575b6105788183612fdf565b8101031261035957386102aa565b503d61056e565b6040513d86823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff6104cc92966105bc8593612fcb565b9692505061048e565b6040513d88823e3d90fd5b8280fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b90506020813d60201161062f575b8161061c60209383612fdf565b8101031261062b5751386103ef565b8480fd5b3d915061060f565b6040513d87823e3d90fd5b8580fd5b8780fd5b8880fd5b8680fd5b508583136100fb565b50346102825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028257610693612da1565b61069b612ec8565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b503461028257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028257602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346102825760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028257610792612da1565b73ffffffffffffffffffffffffffffffffffffffff6107af612dc4565b916107b8612ec8565b16604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa91821561058d57849261080a575b6108079350613020565b80f35b91506020833d821161083b575b8161082460209383612fdf565b81010312610837576108079251916107fd565b8380fd5b3d9150610817565b50346102825760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102825767ffffffffffffffff90600435828111611798573660238201121561179857806004013592831161179857602460c084028201013681116105d0576108b6612ec8565b604051936108ca60208260051b0186612fdf565b84526024602085019201915b818310611708575050508060a06040516108ef81612f47565b8281528260208201528260408201528260608201528260808201520152815191815b83811061091c578280f35b81518110156116db5760208160051b8301015173ffffffffffffffffffffffffffffffffffffffff8151161561143b57670de0b6b3a764000060ff602083015116101561143b57620f424063ffffffff604083015116101561143b5780606073ffffffffffffffffffffffffffffffffffffffff6004935116604051938480927f2c8ce6bc0000000000000000000000000000000000000000000000000000000082525afa8015610637578586938792611640575b5073ffffffffffffffffffffffffffffffffffffffff608084015116604051907ffa5a4f06000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115611616578891611621575b501561143b5773ffffffffffffffffffffffffffffffffffffffff608084015116604051907f784367d6000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa9081156116165788916115e7575b501561143b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff806004602073ffffffffffffffffffffffffffffffffffffffff606088015116604051928380927f293577500000000000000000000000000000000000000000000000000000000082525afa9081156115dc578a916115a6575b5089905b8082106114905750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828a0b148015611465575b61143b57845173ffffffffffffffffffffffffffffffffffffffff1692608086015173ffffffffffffffffffffffffffffffffffffffff16602087015160ff1690604088015163ffffffff16606089015173ffffffffffffffffffffffffffffffffffffffff169260405197610bef89612f92565b885273ffffffffffffffffffffffffffffffffffffffff8516602089015273ffffffffffffffffffffffffffffffffffffffff8b16604089015273ffffffffffffffffffffffffffffffffffffffff89166060890152608088015260a087015260c086015260e085015260ff831661010085015260ff8216610120850152855173ffffffffffffffffffffffffffffffffffffffff1694608087015173ffffffffffffffffffffffffffffffffffffffff1690602088015160ff16604089015163ffffffff169160608a015173ffffffffffffffffffffffffffffffffffffffff169460405199610cdf8b612f92565b8a5273ffffffffffffffffffffffffffffffffffffffff1660208a015273ffffffffffffffffffffffffffffffffffffffff8b1660408a015273ffffffffffffffffffffffffffffffffffffffff166060890152608088015260a087015260c086015260e085015260ff1661010084015260ff1661012083015273ffffffffffffffffffffffffffffffffffffffff8416875260026020526040872060a084015173ffffffffffffffffffffffffffffffffffffffff1688526020526040872090805173ffffffffffffffffffffffffffffffffffffffff1682547fffffffffffffffffffffffff00000000000000000000000000000000000000001617825560018201602082015173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905560028201604082015173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff000000000000000000000000000000000000000016179055606081015173ffffffffffffffffffffffffffffffffffffffff1660038301547fffffffffffffffffffffffff000000000000000000000000000000000000000016176003830155608081015160ff166003830190610f0a91907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000083549260a01b169116179055565b60a081015160038301549060a81b78ffffffff00000000000000000000000000000000000000000016907fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff161760038301556004820160c082015173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905560e081015173ffffffffffffffffffffffffffffffffffffffff1660058301547fffffffffffffffffffffffff00000000000000000000000000000000000000001617600583015561010081015160ff16600583019061104291907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000083549260a01b169116179055565b610120015160058201549060a81b75ff00000000000000000000000000000000000000000016907fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1617906005015560a082015173ffffffffffffffffffffffffffffffffffffffff16865260026020526040862073ffffffffffffffffffffffffffffffffffffffff8416875260205260408620815173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff00000000000000000000000000000000000000001617815560018101602083015173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905560028101604083015173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905560038101606083015173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff000000000000000000000000000000000000000016178155608083015160ff1661123b9082907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000083549260a01b169116179055565b60a083015181549060a81b78ffffffff00000000000000000000000000000000000000000016907fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff161790556004810160c083015173ffffffffffffffffffffffffffffffffffffffff1681547fffffffffffffffffffffffff0000000000000000000000000000000000000000161790556005019060e081015173ffffffffffffffffffffffffffffffffffffffff1682547fffffffffffffffffffffffff00000000000000000000000000000000000000001617825561010081015160ff166113679083907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000083549260a01b169116179055565b610120015181549060a81b75ff00000000000000000000000000000000000000000016907fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1617905560a081015173ffffffffffffffffffffffffffffffffffffffff1691815173ffffffffffffffffffffffffffffffffffffffff16916020015160ff16604051928352602083015273ffffffffffffffffffffffffffffffffffffffff169060407fe546beeeab60a56b73c1b949bb268220b489f63cd1a9b947e6e8a34013d0824391a3600101610911565b60046040517ff50b9e3d000000000000000000000000000000000000000000000000000000008152fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818a0b14610b7a565b90926024602073ffffffffffffffffffffffffffffffffffffffff60608a015116604051928380927fc66106570000000000000000000000000000000000000000000000000000000082528960048301525afa90811561159b578c9161155d575b50608088015173ffffffffffffffffffffffffffffffffffffffff918216911681036115275750506001838b0b935b0190610b45565b73ffffffffffffffffffffffffffffffffffffffff60a08996939601511614611553575b600190611520565b808b0b925061154b565b90506020813d602011611593575b8161157860209383612fdf565b8101031261158f57611589906138e5565b386114f1565b8b80fd5b3d915061156b565b6040513d8e823e3d90fd5b90506020813d6020116115d4575b816115c160209383612fdf565b810103126115d0575138610b41565b8980fd5b3d91506115b4565b6040513d8c823e3d90fd5b611609915060203d60201161160f575b6116018183612fdf565b8101906130c3565b38610ac0565b503d6115f7565b6040513d8a823e3d90fd5b61163a915060203d60201161160f576116018183612fdf565b38610a46565b935050506060823d6060116116d3575b8161165d60609383612fdf565b8101031261062b5781519173ffffffffffffffffffffffffffffffffffffffff831683036106425760208101519073ffffffffffffffffffffffffffffffffffffffff8216820361064e57604001519273ffffffffffffffffffffffffffffffffffffffff8416840361064e57909290386109d1565b3d9150611650565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b60c0833603126108375760405161171e81612f47565b61172784612de7565b8152602084013560ff81168103610642576020820152604084013563ffffffff8116810361064257604082015260c0916020916060611767878201612de7565b908201526080611778818801612de7565b9082015260a0611789818801612de7565b908201528152019201916108d6565b5080fd5b503461028257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102825773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b5034610282576117fc36612e36565b93929094879692975061180f84826135f0565b936004602073ffffffffffffffffffffffffffffffffffffffff604088015116604051928380927f2f13b60c0000000000000000000000000000000000000000000000000000000082525afa9081156121085789916120e9575b5015611a54575073ffffffffffffffffffffffffffffffffffffffff80604086015116911614600014611a2a576118d06020946118d7926118c88a9873ffffffffffffffffffffffffffffffffffffffff60608901511693369161336b565b913390615108565b3084615068565b918573ffffffffffffffffffffffffffffffffffffffff8060c0840151166119088660e0860192848451169061348c565b51169261199860ff61012081610100870151169501511691604051988997889687957fddc1f59d000000000000000000000000000000000000000000000000000000008752600f0b90600f0b600487019360809373ffffffffffffffffffffffffffffffffffffffff939796929760a0870198600f0b8752600f0b60208701526040860152606085015216910152565b03925af1918215611a1e5780926119e9575b5050905b81106119bf57602090604051908152f35b60046040517f5945ea56000000000000000000000000000000000000000000000000000000008152fd5b9091506020823d602011611a16575b81611a0560209383612fdf565b8101031261028257505138806119aa565b3d91506119f8565b604051903d90823e3d90fd5b60046040517fa0387940000000000000000000000000000000000000000000000000000000008152fd5b604085015188979596949593949273ffffffffffffffffffffffffffffffffffffffff90811691168103611d1257505073ffffffffffffffffffffffffffffffffffffffff85511690333b15610646578791611adf859260405195869485947f1b9d082d0000000000000000000000000000000000000000000000000000000086526004860161371b565b038183335af180156105c557908691611cfe575b505073ffffffffffffffffffffffffffffffffffffffff835116604051916020830183811067ffffffffffffffff821117611cd15791611b6c939160409384528883528884518096819582947f29910b110000000000000000000000000000000000000000000000000000000084523060048501613457565b03925af19081156106375791611b91879594926020948891611ca1575b503084615068565b918673ffffffffffffffffffffffffffffffffffffffff8060c084015116611bc28660e0860192848451169061348c565b511692611c5260ff61012081610100870151169501511691604051998a97889687957fddc1f59d000000000000000000000000000000000000000000000000000000008752600f0b90600f0b600487019360809373ffffffffffffffffffffffffffffffffffffffff939796929760a0870198600f0b8752600f0b60208701526040860152606085015216910152565b03925af1928315611a1e5792611c6c575b50505b906119ae565b9091506020823d602011611c99575b81611c8860209383612fdf565b810103126102825750513880611c63565b3d9150611c7b565b611cc3915060403d604011611cca575b611cbb8183612fdf565b8101906137df565b5038611b89565b503d611cb1565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b611d0790612fcb565b61062b578438611af3565b9096989794939592333b156115d0576040517f1b9d082d0000000000000000000000000000000000000000000000000000000081528a8180611d5a87868d306004860161371b565b038183335af180156120de576120cb575b5073ffffffffffffffffffffffffffffffffffffffff60e08501611d9389838351168661348c565b511692602060ff610100870151169460a4610120968a60ff898b015116936040519d8e9586947fddc1f59d000000000000000000000000000000000000000000000000000000008652600f0b6004860152600f0b602485015260448401528160648401523060848401525af19788156120c0578798612080575b50611e9a9291611e5a9173ffffffffffffffffffffffffffffffffffffffff611e6e999a9b60405195611e3f87612faf565b8652166020850152336040850152896060850152369161336b565b608082015260405195869160208301613783565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101865285612fdf565b60ff6080830151166064018060641161205357611eb96064918961340b565b049060405191611ec883612faf565b8883526020830152856040830152600a606083015266038d7ea4c68000608083015260248173ffffffffffffffffffffffffffffffffffffffff855116604051928380927f794052f30000000000000000000000000000000000000000000000000000000082523060048301525afa9182156115dc5796611f86611fc297948297946040979473ffffffffffffffffffffffffffffffffffffffff9d9e9b8592612026575b50508b611f7f8e60608801511661398f565b4292613a7f565b50998a925116928551978895869485937f5b709f1700000000000000000000000000000000000000000000000000000000855260048501613457565b03925af1928315611a1e575091612006575b501115611c66575b60046040517fd8d149ce000000000000000000000000000000000000000000000000000000008152fd5b61201f915060403d604011611cca57611cbb8183612fdf565b5038611fd4565b6120459250803d1061204c575b61203d8183612fdf565b810190613906565b3880611f6d565b503d612033565b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9092919697506020813d6020116120b8575b8161209f60209383612fdf565b810103126120b4575196959091611e9a611e0d565b8a80fd5b3d9150612092565b6040513d89823e3d90fd5b6120d6919650612fcb565b889438611d6b565b6040513d8d823e3d90fd5b612102915060203d60201161160f576116018183612fdf565b38611869565b6040513d8b823e3d90fd5b503461028257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102825760015473ffffffffffffffffffffffffffffffffffffffff33818316036121be577fffffffffffffffffffffffff0000000000000000000000000000000000000000809216600155825491339083161783553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b503461028257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028257612279612ec8565b8073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff0000000000000000000000000000000000000000806001541660015582549081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610282576122f636612e36565b87929591969493975061230984836135f0565b916004602073ffffffffffffffffffffffffffffffffffffffff606086015116604051928380927f2f13b60c0000000000000000000000000000000000000000000000000000000082525afa908115610637578591612c95575b501561273a5773ffffffffffffffffffffffffffffffffffffffff80604085015116911614600014611a2a5760e08201516101008301516101208401516040517f67df02ca00000000000000000000000000000000000000000000000000000000815260ff928316600f90810b60048301529290911690910b602482015260448101889052906020908290606490829073ffffffffffffffffffffffffffffffffffffffff165afa90811561058d578491612708575b5063ffffffff60a08401511680620f424001620f4240116126db57620f4240916124459183019061340b565b0483602073ffffffffffffffffffffffffffffffffffffffff6060860151166004604051809481937f1d52edc40000000000000000000000000000000000000000000000000000000083525af19081156106375790889291869161269c575b50806124b9670de0b6b3a764000092846137f5565b9209612659575b6124f2602093826118c86124f9949c73ffffffffffffffffffffffffffffffffffffffff60608a01511693369161336b565b3085615068565b6125398173ffffffffffffffffffffffffffffffffffffffff60c08701511673ffffffffffffffffffffffffffffffffffffffff60e0880151169061348c565b60e0840151610100850151610120909501516040517fddc1f59d00000000000000000000000000000000000000000000000000000000815260ff968716600f90810b60048301529690911690950b602486015260448501919091526064840191909152306084840152829060a4908290869073ffffffffffffffffffffffffffffffffffffffff165af180156102855761262e575b50509073ffffffffffffffffffffffffffffffffffffffff6125f1939216613020565b905b811161260457602090604051908152f35b60046040517f24df576f000000000000000000000000000000000000000000000000000000008152fd5b602090813d8311612652575b6126448183612fdf565b8101031261028257806125ce565b503d61263a565b905060018101811161266f5786906001016124c0565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b919250506020813d6020116126d3575b816126b960209383612fdf565b8101031261062b5751879190670de0b6b3a76400006124a4565b3d91506126ac565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b90506020813d602011612732575b8161272360209383612fdf565b81010312610837575138612419565b3d9150612716565b966127969073ffffffffffffffffffffffffffffffffffffffff604051996127618b612faf565b1692838a5273ffffffffffffffffffffffffffffffffffffffff871660208b01523360408b0152600160608b0152369161336b565b6080880152604082015173ffffffffffffffffffffffffffffffffffffffff1603612bc05760e08101516101008201516101208301516040517f67df02ca00000000000000000000000000000000000000000000000000000000815260ff928316600f90810b60048301529290911690910b602482015260448101879052906020908290606490829073ffffffffffffffffffffffffffffffffffffffff165afa908115612bb5578391612b83575b5063ffffffff60a083015116620f42408101811161266f57620f424061287461288593826128b194019061340b565b049760405192839160208301613783565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612fdf565b60ff6080830151166064036064811161266f576128d06064918a61340b565b04604051906128de82612faf565b8152886020820152836040820152600a606082015266038d7ea4c680006080820152602461012073ffffffffffffffffffffffffffffffffffffffff855116604051928380927f794052f30000000000000000000000000000000000000000000000000000000082523060048301525afa908115610637579061298f92918691612b62575b508961298873ffffffffffffffffffffffffffffffffffffffff60608801511661398f565b4292614e1a565b505090888211611fdc5760406129ef859273ffffffffffffffffffffffffffffffffffffffff8651169083519485809481937f29910b11000000000000000000000000000000000000000000000000000000008352893060048501613457565b03925af190811561058d579088918591612b42575b5010611fdc5785612a19602092983085615068565b612a598173ffffffffffffffffffffffffffffffffffffffff60c08701511673ffffffffffffffffffffffffffffffffffffffff60e0880151169061348c565b60e0840151610100850151610120909501516040517fddc1f59d00000000000000000000000000000000000000000000000000000000815260ff968716600f90810b60048301529690911690950b602486015260448501919091526064840191909152306084840152829060a4908290869073ffffffffffffffffffffffffffffffffffffffff165af1801561028557612b17575b50509073ffffffffffffffffffffffffffffffffffffffff612b11939216613020565b906125f3565b602090813d8311612b3b575b612b2d8183612fdf565b810103126102825780612aee565b503d612b23565b612b5b915060403d604011611cca57611cbb8183612fdf565b5038612a04565b612b7d91506101203d6101201161204c5761203d8183612fdf565b38612963565b90506020813d602011612bad575b81612b9e60209383612fdf565b810103126105d0575138612845565b3d9150612b91565b6040513d85823e3d90fd5b612bfa92509381604094612c2673ffffffffffffffffffffffffffffffffffffffff612c5b98999599511694875196879160208301613783565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101875286612fdf565b8551968795869485937f5b709f1700000000000000000000000000000000000000000000000000000000855260048501613457565b03925af1801561028557612c77575b5060035490600355612b11565b612c8f9060403d604011611cca57611cbb8183612fdf565b50612c6a565b612cae915060203d60201161160f576116018183612fdf565b38612363565b9050346117985760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126117985760ff610140926040612cf5612da1565b91612cfe612dc4565b73ffffffffffffffffffffffffffffffffffffffff8094168252600260205283838320911682526020522090808254169163ffffffff8260018301541683600284015416600384015491600586600487015416950154968952602089015260408801528381166060880152858160a01c16608088015260a81c1660a086015260c0850152811660e0840152818160a01c1661010084015260a81c16610120820152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361035957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361035957565b359073ffffffffffffffffffffffffffffffffffffffff8216820361035957565b9181601f840112156103595782359167ffffffffffffffff8311610359576020838186019501011161035957565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103595773ffffffffffffffffffffffffffffffffffffffff90600435828116810361035957926024358381168103610359579260443590811681036103595791606435916084359160a4359067ffffffffffffffff821161035957612ec491600401612e08565b9091565b73ffffffffffffffffffffffffffffffffffffffff600054163303612ee957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60c0810190811067ffffffffffffffff821117612f6357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610140810190811067ffffffffffffffff821117612f6357604052565b60a0810190811067ffffffffffffffff821117612f6357604052565b67ffffffffffffffff8111612f6357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612f6357604052565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261308791613082606483612fdf565b6130db565b565b67ffffffffffffffff8111612f6357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b90816020910312610359575180151581036103595790565b73ffffffffffffffffffffffffffffffffffffffff16604051604081019181831067ffffffffffffffff841117612f6357613158926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161315261320d565b9161323d565b8051908282159283156131f5575b505050156131715750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b61320593508201810191016130c3565b388281613166565b3d15613238573d9061321e82613089565b9161322c6040519384612fdf565b82523d6000602084013e565b606090565b919290156132b85750815115613251575090565b3b1561325a5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156132cb5750805190602001fd5b613309906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061330d565b0390fd5b919082519283825260005b8481106133575750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201613318565b92919261337782613089565b916133856040519384612fdf565b829481845281830111610359578281602093846000960137010152565b7f800000000000000000000000000000000000000000000000000000000000000081146133cf5760000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b919082018092116133cf57565b818102929181159184041417156133cf57565b8115613428570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b613489939273ffffffffffffffffffffffffffffffffffffffff6060931682526020820152816040820152019061330d565b90565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820181815273ffffffffffffffffffffffffffffffffffffffff851660248401526044830195909552949390926134ec8460648101611e6e565b73ffffffffffffffffffffffffffffffffffffffff90818416600080809588519082855af19061351a61320d565b826135be575b50816135b3575b5015613537575b50505050509050565b60405196602088015216602486015280604486015260448552608085019085821067ffffffffffffffff831117613586575061357b939461308291604052826130db565b80388080808061352e565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b90503b151538613527565b805191925081159182156135d6575b50509038613520565b6135e992506020809183010191016130c3565b38806135cd565b9190604090815161360081612f92565b60ff83600080845280602085015280828501528060608501528060808501528060a08501528060c08501528060e0850152610100948186860152816101208096015273ffffffffffffffffffffffffffffffffffffffff809916825260026020528883832091168252602052209584519361367a85612f92565b60058289541698898752836001820154166020880152836002820154168888015263ffffffff600382015485811660608a0152868160a01c1660808a015260a81c1660a08801528360048201541660c0880152015491821660e0860152828260a01c169085015260a81c169082015292156136f25750565b600490517ffee00694000000000000000000000000000000000000000000000000000000008152fd5b9293806080957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09473ffffffffffffffffffffffffffffffffffffffff601f951687526020870152606060408701528160608701528686013760008582860101520116010190565b60c06080613489936020845273ffffffffffffffffffffffffffffffffffffffff8082511660208601528060208301511660408601526040820151166060850152606081015115158285015201519160a080820152019061330d565b9190826040910312610359576020825192015190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818309818302918280831092039180830392146138d457670de0b6b3a76400009082821115613876577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669940990828211900360ee1b910360121c170290565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152fd5b5050670de0b6b3a764000091500490565b519073ffffffffffffffffffffffffffffffffffffffff8216820361035957565b809161012092839103126103595760405191820182811067ffffffffffffffff821117612f6357604052805182526020810151602083015260408101516040830152613954606082016138e5565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100809101519082015290565b602073ffffffffffffffffffffffffffffffffffffffff600460009360405194859384927f1d52edc4000000000000000000000000000000000000000000000000000000008452165af1908115613a19576000916139eb575090565b906020823d8211613a11575b81613a0460209383612fdf565b8101031261028257505190565b3d91506139f7565b6040513d6000823e3d90fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146133cf5760010190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116133cf57565b9490939192613a916000918688613c85565b93604084015115613bc3575b815b6060850151811015613b9957613ab58186614d40565b613acc613ac4828a8a8d61499f565b5091906133a2565b84811180159190613b5e57608089015182613b07575b5050613af957508552613af490613a25565b613a9f565b985095505050509250509190565b909150670de0b6b3a7640000908103818111613b3157613b27908761340b565b0411153880613ae2565b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811161266f576020860152613af490613a25565b60046040517ffa711db2000000000000000000000000000000000000000000000000000000008152fd5b6020840180518851613bf8613bfe613be460608b015160408c015190613f53565b670de0b6b3a76400009283918c519061400f565b0561412c565b81810190828212888212908015821691151617613b3157613c2f613c4a949392613c2a613c4393613fbd565b614122565b613c3d60208d015185613f14565b9061400f565b0590613f53565b6103e7908181029181830414901517156126db576103e8900480821015613c7d5750905b52613c7884614da8565b613a9d565b905090613c6e565b929160409081516080810181811067ffffffffffffffff821117612f6357835260009182825260208201968388528483018481526060840196858852849960a084018581511115613eeb57519485039485116105d4576080840151976301e1338096878a0299808b05891490151715612053577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff998a88116115d05787613d2b9161404e565b89811315613ebb578152602086015189811215613eb3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905b8a811315613ea5575b613d82670de0b6b3a764000096879261340b565b04908b82116120b45790613d959161400f565b80845286519081158015613e9d575b613e6757505085519188613dc2896101008a0151965194519661340b565b048b81116120b457613dd39061412c565b948512613e37575092613e1260c09593613c2a613e0d613e0886613c2a613e02613e219e9d9b613e189a613f14565b91613fbd565b613f6c565b613fbd565b90613f53565b9052015161340b565b049182116102825750613e339061412c565b9052565b8460249151907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b604492508351917fb1c4aefb00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b508015613da4565b613eae906133a2565b613d6e565b600190613d65565b6024908351907f1ca418760000000000000000000000000000000000000000000000000000000082526004820152fd5b600489517fb2094b59000000000000000000000000000000000000000000000000000000008152fd5b919091600083820193841291129080158216911516176133cf57565b90670de0b6b3a7640000600083820393128184128116918413901516176133cf57565b818103929160001380158285131691841216176133cf57565b670de0b6b3a76400008114613f9357613f8e81613c2a613e0261348994613f30565b61450e565b60046040517fa9c8b14d000000000000000000000000000000000000000000000000000000008152fd5b90670de0b6b3a7640000918281029281840514901517156133cf57565b9081600003918083057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14901517156133cf57565b8181029291600082127f80000000000000000000000000000000000000000000000000000000000000008214166133cf5781840514901517156133cf57565b8115613428577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82147f80000000000000000000000000000000000000000000000000000000000000008214166133cf570590565b156140aa57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b8015613428576ec097ce7bc90715b34b9f10000000000590565b8115613428570590565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc0000811215806144fb575b61415f906140a3565b600081126144e6576064906806f05b59d3b20000008112614483577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b0280829168ad78ebc5ac62000000811215614447575b50806856bc75e2d6310000008492121561440d575b682b5e3af16b188000008112156143d5575b6815af1d78b58c40000081121561439d575b680ad78ebc5ac6200000811215614366575b8181121561432f575b6802b5e3af16b18800008112156142f8575b68015af1d78b58c400008112156142c1575b60028282800205056003838383020505600484848302050560058585830205056006868683020505600787878302050590600888888402050592600989898602050594600a8a8a8802050596600b8b8b8a02050598600c8c8c8c0205059a0101010101010101010101010205020590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000083920193020591614250565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800008392019302059161423e565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000008392019302059161422c565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000083920193020591614223565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000083920193020591614211565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e7800000839201930205916141ff565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf000000839201930205916141ed565b6e01855144814a7ff805980ff008400092507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e000000019050826141d8565b6803782dace9d900000081126144d3577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef7380926141c2565b68056bc75e2d63100000826001926141c2565b6144f29060000361412c565b61348990614108565b5068070c1cc73b00c80000811315614156565b60008113156145f15780670c7d713b49da000012806145e0575b156145d757670de0b6b3a7640000906ec097ce7bc90715b34b9f10000000009061457b908302828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302614122565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b0590565b6134899061464f565b50670f43fc2c04ee00008112614528565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6f7574206f6620626f756e6473000000000000000000000000000000000000006044820152fd5b670de0b6b3a764000081126149885760649060007e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c000000000000082121561495d575b73011798004d755d3c8bc8e03204cf44619e00000082121561493c575b8202908202816e01855144814a7ff805980ff00840008281811215614915575b5050506b02df0ab5a80a22c61ab5a700808212156148f5575b50693f1fce3da636ea5cf850808212156148d5575b50690127fa27722cc06cc5e2808212156148b5575b5068280e60114edb805d0380821215614895575b50680ebc5fb417461211108082121561487e575b506808f00f760a4b2db55d8082121561485e575b506806f5f17757889379378082121561483e575b506806248f33704b2866038082121561481f575b506805c548670b9510e7ac80821215614800575b506147bf68056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102614122565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b010590565b68056bc75e2d631000006756bc75e2d631000092020591019038614783565b68056bc75e2d6310000067ad78ebc5ac6200009202059101903861476f565b68056bc75e2d6310000068015af1d78b58c400009202059101903861475b565b68056bc75e2d631000006802b5e3af16b188000092020591019038614747565b68056bc75e2d631000008092020591019038614733565b68056bc75e2d63100000680ad78ebc5ac62000009202059101903861471f565b68056bc75e2d631000006815af1d78b58c4000009202059101903861470b565b68056bc75e2d63100000682b5e3af16b18800000920205910190386146f6565b68056bc75e2d631000006856bc75e2d631000000920205910190386146e1565b68056bc75e2d631000009192945068ad78ebc5ac62000000935002059101903880806146c8565b6b1425982cf597cd205cef7380909105906803782dace9d9000000016146a8565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b200000061468b565b61499461499991614108565b61464f565b60000390565b93919284516020830151835190604085015192848112614c4157613c2a613e026149d3936149cd8885613f53565b93613f14565b670d529ae9e8600000808213614c0a57506149fd9291613c2a613e0d6149f893613f6c565b613f14565b670de0b6b3a764000090818112614bb2576060614a25614a2083613c2a87613fbd565b613fda565b940151906000809413600014614be35781613c2a614a4292613fbd565b828112614bb2575081614a5f614a5960e093613f30565b8661400f565b05965b0151917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9283811161179857876064614a9e614aa5938361400f565b0595613f53565b918183128015614b975715614b8f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff925b82811315614b81575b818102918183041490151715614b545786614afa916133fe565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908111614b545786614b2e9161341e565b9283116102825750614b476134899392614b4e9261400f565b9585614c9f565b93614c9f565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b614b8a906133a2565b614ae0565b600192614ad7565b505050613489929150614bad614b4e9186614c9f565b614b47565b602490604051907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b50614c04614a2082614bff614bf960e095613f30565b8861400f565b61404e565b96614a62565b60449250604051917ffc68d09e00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e656761746976650000000000000000000000000000000000000000000000006044820152fd5b6000821215614d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915b6000811315614d2957905b670de0b6b3a7640000918281029281840414901517156133cf57614cf99161341e565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610359576134899161400f565b614d32906133a2565b90614cd6565b600191614ccb565b901580614d9b575b614d94576020815191015180821115614d855760046040517ffa711db2000000000000000000000000000000000000000000000000000000008152fd5b614d8e916133fe565b60011c90565b6040015190565b5060408101511515614d48565b8051906020810151908183118015614e05575b614dc457505050565b606493506080015190604051927fb301af04000000000000000000000000000000000000000000000000000000008452600484015260248301526044820152fd5b50670de0b6b3a7640000608082015111614dbb565b93929094614e2b6000928787613c85565b95604085015115614ed8575b825b6060860151811015613b9957614e4f8187614d40565b614e63614e5b826133a2565b848b8b61499f565b50878210801590614eca5760808a015181614ea2575b50614e935750506020870152614e8e90613a25565b614e39565b91995097509550919350505050565b670de0b6b3a76400009150810180821161205357614ec0908a61340b565b0482111538614e79565b5050508652614e8e90613a25565b6020850180518460208a01614eed8151613a52565b808303614f1857505080821015614f105750905b52614f0b85614da8565b614e37565b905090614f01565b614f2281846133fe565b600180820180921161503b571c908b51614f3d838551613f53565b614f478285613f14565b8b821380615032575b15614fd4578f613c43670de0b6b3a764000091614fb28f96613f8e614fb797613c2a614f97614f8a8f8f90614f9d97613c3d915190613f14565b613c2a613e02858d61400f565b98613fbd565b6040614fa98451614108565b93015195613f53565b61400f565b1215614fcc5750614fc790613a52565b614eed565b925091614eed565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964207074546f4d61726b657400000000000000000000000000006044820152fd5b508b8113614f50565b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b9173ffffffffffffffffffffffffffffffffffffffff8060c0816020870151169501511690604051937f769f8e5d0000000000000000000000000000000000000000000000000000000085521660048401528160248401526044830152606482015260208160a481600080968160848401525af1918215611a1e5780926150ee57505090565b9091506020823d8211613a115781613a0460209383612fdf565b9092919273ffffffffffffffffffffffffffffffffffffffff809116911691813b156103595761516e93604051928380927f1b9d082d00000000000000000000000000000000000000000000000000000000825281600098899687938a60048501613457565b03925af18015612bb5576151f4575b50602082916024604051809481937fbcb7ea5d0000000000000000000000000000000000000000000000000000000083523060048401525af1918215611a1e57916151c6575090565b90506020813d82116151ec575b816151e060209383612fdf565b81010312610359575190565b3d91506151d3565b91615200602093612fcb565b9161517d56fea26469706673582212204f9ac62975024b1d74075975ce4aae16ce58f7a71d624139ed4c58894cf9650764736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000