284 txs
1.6k calls
constructor
constructor(address _WETH, address _factory, address _dsFactory, address _aeroFactory, address _positionManager, address _mathLib, address _uniV2Router, address _sushiRouter, address _dsRouter, address _aeroRouter, address _uniV3Router)
functions
aeroFactory
viewfunction aeroFactory() view returns (address)
aeroRouter
viewfunction aeroRouter() view returns (address)
dsFactory
viewfunction dsFactory() view returns (address)
dsRouter
viewfunction dsRouter() view returns (address)
factory
viewfunction factory() view returns (address)
mathLib
viewfunction mathLib() view returns (address)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
positionManager
viewfunction positionManager() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
sushiRouter
viewfunction sushiRouter() view returns (address)
uniV2Router
viewfunction uniV2Router() view returns (address)
uniV3Router
viewfunction uniV3Router() view returns (address)
WETH
viewfunction WETH() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
clearToken
nonpayablefunction clearToken(address token, address to, uint256 minAmt)
dsZapOutETH
nonpayablefunction dsZapOutETH(tuple params, tuple lpSwap0, tuple lpSwap1)
dsZapOutToken
nonpayablefunction dsZapOutToken(tuple params, tuple lpSwap0, tuple lpSwap1)
initialize
nonpayablefunction initialize()
refundETH
payablefunction refundETH() payable
renounceOwnership
nonpayablefunction renounceOwnership()
sendTokensCallback
nonpayablefunction sendTokensCallback(address[] tokens, uint256[] amounts, address payee, bytes data)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unwrapWETH
payablefunction unwrapWETH(uint256 minAmt, address to) payable
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
zapIn
nonpayablefunction zapIn(address tokenIn, uint256 fundAmount, tuple params, tuple lpSwap, tuple fundSwap)
zapInETH
payablefunction zapInETH(tuple params, tuple lpSwap, tuple fundSwap) payable
zapInToken
nonpayablefunction zapInToken(address tokenIn, uint256 fundAmount, tuple params, tuple lpSwap, tuple fundSwap)
zapOutETH
nonpayablefunction zapOutETH(tuple params, tuple lpSwap0, tuple lpSwap1)
zapOutToken
nonpayablefunction zapOutToken(tuple params, tuple lpSwap0, tuple lpSwap1)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Upgraded
event Upgraded(address indexed implementation)
errors
NotEnoughTokens
error NotEnoughTokens()
NotEnoughWETH
error NotEnoughWETH()
NotGammaPool
error NotGammaPool()
NotWETH
error NotWETH()
SA_Fail
error SA_Fail()
ST_Fail
error ST_Fail()
STE_Fail
error STE_Fail()
STF_Fail
error STF_Fail()
creation bytecode
0x610200604052306080523480156200001657600080fd5b5060405162005fb938038062005fb9833981016040819052620000399162000146565b8a8a8a8a898989898989896200004f33620000b0565b6001600160a01b0390811660a05298891660c05296881660e05294871661010052928616610120529085166101405284166101605283166101805282166101a05281166101c052979097166101e05250620002299950505050505050505050565b600180546001600160a01b0319169055620000cb81620000ce565b50565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b80516001600160a01b03811681146200014157600080fd5b919050565b60008060008060008060008060008060006101608c8e0312156200016957600080fd5b620001748c62000129565b9a506200018460208d0162000129565b99506200019460408d0162000129565b9850620001a460608d0162000129565b9750620001b460808d0162000129565b9650620001c460a08d0162000129565b9550620001d460c08d0162000129565b9450620001e460e08d0162000129565b9350620001f56101008d0162000129565b9250620002066101208d0162000129565b9150620002176101408d0162000129565b90509295989b509295989b9093969950565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051615bd1620003e860003960008181610456015281816113c30152818161140c015281816114590152611780015260008181610352015281816129e501528181612a690152612aa501526000818161028b015281816136d6015261374d0152600081816103a60152818161363101526136a80152600081816103da015281816135820152613603015260008181610540015281816134d301526135540152600081816104e8015281816140ab01526142180152600081816104b401528181612bfe01526131c50152600081816105fc0152612b320152600081816105a801526125590152600081816101ec0152818161057401528181610b1901528181610b9001528181611531015281816115e301528181611c8801528181611d4501528181611dae01528181611e4101528181611efe01528181611f67015281816120140152818161207d0152818161212a0152818161219301528181613bfc01528181613c420152613cb90152600081816107b6015281816107f601528181610895015281816108d501526109680152615bd16000f3fe6080604052600436106101dc5760003560e01c8063791b98bc11610102578063c45a015511610095578063e16d9ce511610064578063e16d9ce51461063e578063e30c397814610651578063e4ceb6361461066f578063f2fde38b1461068f57600080fd5b8063c45a015514610596578063ccbe764a146105ca578063d72f924d146105ea578063da12592a1461061e57600080fd5b806389cdfb8f116100d157806389cdfb8f146104d65780638da5cb5b1461050a578063958c2e521461052e578063ad5c46481461056257600080fd5b8063791b98bc1461044457806379ba5097146104785780638129fc1c1461048d57806386f3d02a146104a257600080fd5b806352d1902d1161017a5780636d13582c116101495780636d13582c146103c8578063715018a6146103fc578063741d2dcf14610411578063779b89711461043157600080fd5b806352d1902d1461031d5780635fafa589146103405780636464a1eb14610374578063674c34d01461039457600080fd5b80631909c2a8116101b65780631909c2a8146102795780632592e0a7146102ca5780633659cfe6146102ea5780634f1ef2861461030a57600080fd5b80630802a4d81461023157806310e5baa51461025157806312210e8a1461027157600080fd5b3661022c57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461022a57604051635724f38560e01b815260040160405180910390fd5b005b600080fd5b34801561023d57600080fd5b5061022a61024c366004614cd7565b6106af565b34801561025d57600080fd5b5061022a61026c366004614cd7565b6106c1565b61022a6106ce565b34801561028557600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102d657600080fd5b5061022a6102e5366004614f03565b6106e0565b3480156102f657600080fd5b5061022a610305366004614fa7565b6107ac565b61022a610318366004614fc4565b61088b565b34801561032957600080fd5b5061033261095b565b6040519081526020016102c1565b34801561034c57600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038057600080fd5b5061022a61038f36600461505e565b610a0e565b3480156103a057600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d457600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561040857600080fd5b5061022a610aad565b34801561041d57600080fd5b5061022a61042c366004614cd7565b610abf565b61022a61043f366004615139565b610acc565b34801561045057600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048457600080fd5b5061022a610bbe565b34801561049957600080fd5b5061022a610c35565b3480156104ae57600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b506000546201000090046001600160a01b03166102ad565b34801561053a57600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561056e57600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a257600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d657600080fd5b5061022a6105e53660046151b6565b610d9e565b3480156105f657600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561062a57600080fd5b5061022a610639366004614f03565b610e3d565b61022a61064c3660046151f7565b611519565b34801561065d57600080fd5b506001546001600160a01b03166102ad565b34801561067b57600080fd5b5061022a61068a366004614cd7565b611651565b34801561069b57600080fd5b5061022a6106aa366004614fa7565b61165e565b6106bc83838360006116d6565b505050565b6106bc8383836001611c5c565b47156106de576106de3347612240565b565b6103e884116107365760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a20494e56414c49445f46554e445f414d4f554e54000060448201526064015b60405180910390fd5b6001600160a01b03851661078c5760405162461bcd60e51b815260206004820152601760248201527f4c505f5a41505045523a205a45524f5f41444452455353000000000000000000604482015260640161072d565b610798853330876122b4565b6107a58585858585610e3d565b5050505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f45760405162461bcd60e51b815260040161072d90615227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083d600080516020615b55833981519152546001600160a01b031690565b6001600160a01b0316146108635760405162461bcd60e51b815260040161072d90615273565b61086c816123a7565b60408051600080825260208201909252610888918391906123af565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108d35760405162461bcd60e51b815260040161072d90615227565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661091c600080516020615b55833981519152546001600160a01b031690565b6001600160a01b0316146109425760405162461bcd60e51b815260040161072d90615273565b61094b826123a7565b610957828260016123af565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109fb5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161072d565b50600080516020615b5583398151915290565b6000610a1c828401846152bf565b9050610a308160200151826040015161251a565b6001600160a01b0316336001600160a01b031614610a61576040516368e0934d60e01b815260040160405180910390fd5b610aa388888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050845191508790508989612589565b5050505050505050565b610ab5612605565b6106de6000612666565b6106bc83838360016116d6565b60003411610b125760405162461bcd60e51b8152602060048201526013602482015272098a0beb482a0a08aa47440b48aa49ebe8aa89606b1b604482015260640161072d565b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b7257600080fd5b505af1158015610b86573d6000803e3d6000fd5b5050505050610bb87f000000000000000000000000000000000000000000000000000000000000000082868686610e3d565b50505050565b60015433906001600160a01b03168114610c2c5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161072d565b61088881612666565b600054610100900460ff1615808015610c555750600054600160ff909116105b80610c6f5750303b158015610c6f575060005460ff166001145b610cd25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161072d565b6000805460ff191660011790558015610cf5576000805461ff0019166101001790555b6000546201000090046001600160a01b031615610d4d5760405162461bcd60e51b8152602060048201526016602482015275131417d690541411548e88125392551250531256915160521b604482015260640161072d565b610d5633612666565b8015610888576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e099190615311565b905081811015610e2c576040516308aeed0f60e21b815260040160405180910390fd5b8015610bb857610bb884848361267f565b60408301516001600160a01b0316610e675760405162461bcd60e51b815260040161072d9061532a565b60208301516001600160a01b0316610ec15760405162461bcd60e51b815260206004820152601d60248201527f4c505f5a41505045523a20494e56414c49445f504152414d5f43464d4d000000604482015260640161072d565b600083602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f299190615361565b9050600084602001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f939190615361565b9050816001600160a01b0316876001600160a01b031614158015610fc95750806001600160a01b0316876001600160a01b031614155b15610ff157610feb828289896000886000015189602001518a60400151612762565b90975095505b816001600160a01b0316876001600160a01b031614806110225750806001600160a01b0316876001600160a01b0316145b61106e5760405162461bcd60e51b815260206004820152601b60248201527f4c505f5a41505045523a20494e56414c49445f544f4b454e5f494e0000000000604482015260640161072d565b6000826001600160a01b0316886001600160a01b03161461108f5782611091565b815b60608601515190915015611153576110ac8560600151612935565b6001600160a01b0316816001600160a01b0316146110dc5760405162461bcd60e51b815260040161072d9061537e565b8451158015906110ec5750845187115b6111385760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a20494e56414c49445f53454c4c5f414d4f554e540000604482015260640161072d565b61114e8886600001516000886060015130612972565b611337565b8451158061116657506002856040015151105b1561126f5760408051600280825260608201835290916020830190803683375050506040860181905280518991906000906111a3576111a36153b5565b60200260200101906001600160a01b031690816001600160a01b0316815250508085604001516001815181106111db576111db6153b5565b6001600160a01b03928316602091820292909201810191909152875161ffff16878201528701516040805160016209351760e01b031981529051919092169163fff6cae991600480830192600092919082900301818387803b15801561124057600080fd5b505af1158015611254573d6000803e3d6000fd5b5050506020870151875161126c925085858c8c612b1c565b85525b84516112bd5760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a20494e56414c49445f53454c4c5f414d4f554e540000604482015260640161072d565b604085015180516112d0906001906153e1565b815181106112e0576112e06153b5565b60200260200101516001600160a01b0316816001600160a01b0316146113185760405162461bcd60e51b815260040161072d9061537e565b61133788866000015160008860400151896020015161ffff1630612f84565b604080516002808252606082018352909160208301908036833750505060808701526113638330613313565b866080015160008151811061137a5761137a6153b5565b6020026020010181815250506113908230613313565b86608001516001815181106113a7576113a76153b5565b60200260200101818152505042866060018181525050611406837f000000000000000000000000000000000000000000000000000000000000000088608001516000815181106113f9576113f96153b5565b60200260200101516133e3565b611442827f000000000000000000000000000000000000000000000000000000000000000088608001516001815181106113f9576113f96153b5565b60405163e7c0d71f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e7c0d71f9061148e90899060040161542f565b6000604051808303816000875af11580156114ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114d591908101906154fd565b50506114e18330613313565b965086156114f8576114f88387604001518961267f565b6115028230613313565b96508615610aa357610aa38287604001518961267f565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a49190615311565b9050828110156115c75760405163d666767760e01b815260040160405180910390fd5b80156106bc57604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561162f57600080fd5b505af1158015611643573d6000803e3d6000fd5b505050506106bc8282612240565b6106bc8383836000611c5c565b611666612605565b600180546001600160a01b0383166001600160a01b0319909116811790915561169e6000546001600160a01b03620100009091041690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60408401516001600160a01b03166117005760405162461bcd60e51b815260040161072d9061532a565b60208401516001600160a01b031661175a5760405162461bcd60e51b815260206004820152601d60248201527f4c505f5a41505045523a20494e56414c49445f504152414d5f43464d4d000000604482015260640161072d565b60408401805130909152600080836117a45761177e8760200151886000015161251a565b7f00000000000000000000000000000000000000000000000000000000000000006117b8565b602087015187516117b89061ffff166134c6565b915091506117cc8233308a606001516122b4565b6117db828289606001516133e3565b60408051600280825260608201835260009260208301908036833701905050905087602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561183e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118629190615361565b81600081518110611875576118756153b5565b60200260200101906001600160a01b031690816001600160a01b03168152505087602001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fb9190615361565b8160018151811061190e5761190e6153b5565b60200260200101906001600160a01b031690816001600160a01b031681525050606085156119d7576040805160028082526060820183529091602083019080368337019050509050611996838360008151811061196d5761196d6153b5565b602002602001015184600181518110611988576119886153b5565b60200260200101518c6137c3565b826000815181106119a9576119a96153b5565b60200260200101836001815181106119c3576119c36153b5565b602090810291909101019190915252611a4e565b604051635e46f84f60e11b81526001600160a01b0384169063bc8df09e90611a03908c90600401615543565b6000604051808303816000875af1158015611a22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a4a91908101906154fd565b5090505b60008860400151511180611a6757506000886060015151115b15611b175760608801515115611ac557611ac082600081518110611a8d57611a8d6153b5565b602002602001015182600081518110611aa857611aa86153b5565b60200260200101518a600001518b6060015189612972565b611b56565b611ac082600081518110611adb57611adb6153b5565b602002602001015182600081518110611af657611af66153b5565b60200260200101518a600001518b604001518c6020015161ffff168a612f84565b611b5682600081518110611b2d57611b2d6153b5565b60200260200101518683600081518110611b4957611b496153b5565b602002602001015161267f565b60008760400151511180611b6f57506000876060015151115b15611c1f5760608701515115611bcd57611bc882600181518110611b9557611b956153b5565b602002602001015182600181518110611bb057611bb06153b5565b602002602001015189600001518a6060015189612972565b611c51565b611bc882600181518110611be357611be36153b5565b602002602001015182600181518110611bfe57611bfe6153b5565b602002602001015189600001518a604001518b6020015161ffff168a612f84565b611c5182600181518110611c3557611c356153b5565b60200260200101518683600181518110611b4957611b496153b5565b505050505050505050565b60408401516001600160a01b0316611c865760405162461bcd60e51b815260040161072d9061532a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684602001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190615361565b6001600160a01b031603611e3f576000826040015151118015611d965750604082015180516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190611d73906001906153e1565b81518110611d8357611d836153b5565b60200260200101516001600160a01b0316145b80611dee57506000826060015151118015611dee57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611de38360600151612935565b6001600160a01b0316145b611e3a5760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a2050415448315f455849545f4e4f545f574554480000604482015260640161072d565b61221f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031684602001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ecf9190615361565b6001600160a01b031603611ff3576000836040015151118015611f4f5750604083015180516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190611f2c906001906153e1565b81518110611f3c57611f3c6153b5565b60200260200101516001600160a01b0316145b80611fa757506000836060015151118015611fa757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9c8460600151612935565b6001600160a01b0316145b611e3a5760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a2050415448305f455849545f4e4f545f574554480000604482015260640161072d565b60008360400151511180156120655750604083015180516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612042906001906153e1565b81518110612052576120526153b5565b60200260200101516001600160a01b0316145b806120bd575060008360600151511180156120bd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166120b28460600151612935565b6001600160a01b0316145b6121095760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a2050415448305f455849545f4e4f545f574554480000604482015260640161072d565b600082604001515111801561217b5750604082015180516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612158906001906153e1565b81518110612168576121686153b5565b60200260200101516001600160a01b0316145b806121d3575060008260600151511180156121d357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166121c88360600151612935565b6001600160a01b0316145b61221f5760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a2050415448315f455849545f4e4f545f574554480000604482015260640161072d565b60408401805130909152612235858585856116d6565b6107a5600082611519565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461228d576040519150601f19603f3d011682016040523d82523d6000602084013e612292565b606091505b50509050806106bc576040516325e5592160e21b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052600091829187169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b1790525161231691906155e2565b6000604051808303816000865af19150503d8060008114612353576040519150601f19603f3d011682016040523d82523d6000602084013e612358565b606091505b509150915081801561238257508051158061238257508080602001905181019061238291906155fe565b61239f5760405163e5c4a34160e01b815260040160405180910390fd5b505050505050565b610888612605565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156123e2576106bc836139dd565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561243c575060408051601f3d908101601f1916820190925261243991810190615311565b60015b61249f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161072d565b600080516020615b55833981519152811461250e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161072d565b506106bc838383613a79565b604080516001600160a01b03841660208083019190915261ffff84168284015282518083038401815260609092019092528051910120600090612580907f0000000000000000000000000000000000000000000000000000000000000000908490613a9e565b90505b92915050565b845160005b818110156125fc5760008484838181106125aa576125aa6153b5565b9050602002013511156125f4576125f48782815181106125cc576125cc6153b5565b602002602001015187878787868181106125e8576125e86153b5565b90506020020135613bfa565b60010161258e565b50505050505050565b6000546001600160a01b03620100009091041633146106de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161072d565b600180546001600160a01b031916905561088881613d0b565b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516126d991906155e2565b6000604051808303816000865af19150503d8060008114612716576040519150601f19603f3d011682016040523d82523d6000602084013e61271b565b606091505b509150915081801561274557508051158061274557508080602001905181019061274591906155fe565b6107a55760405163847ea61d60e01b815260040160405180910390fd5b6000806103e887116127b65760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a20494e56414c49445f46554e445f414d4f554e540000604482015260640161072d565b60008561ffff161180156127cb575060018451115b806127d7575060018351115b6128235760405162461bcd60e51b815260206004820152601c60248201527f4c505f5a41505045523a204e4f5f46554e445f535741505f5041544800000000604482015260640161072d565b8251156128945761283383612935565b9150816001600160a01b03168a6001600160a01b031614806128665750816001600160a01b0316896001600160a01b0316145b6128825760405162461bcd60e51b815260040161072d9061537e565b61288f8888888630612972565b61291c565b83600185516128a391906153e1565b815181106128b3576128b36153b5565b60200260200101519150816001600160a01b03168a6001600160a01b031614806128ee5750816001600160a01b0316896001600160a01b0316145b61290a5760405162461bcd60e51b815260040161072d9061537e565b61291c888888878961ffff1630612f84565b6129268230613313565b90509850989650505050505050565b6000815b61294281613d66565b156129575761295081613db8565b9050612939565b61296b600061296583613db8565b90613e01565b9392505050565b600061297d83613eb5565b5050509050806001600160a01b0316866001600160a01b0316146129e35760405162461bcd60e51b815260206004820152601d60248201527f4c505f5a41505045523a20494e56414c49445f554e4956335f50415448000000604482015260640161072d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a635760405162461bcd60e51b815260206004820152602160248201527f4c505f5a41505045523a20554e4956335f524f555445525f4e4f545f464f554e6044820152601160fa1b606482015260840161072d565b612a8e867f0000000000000000000000000000000000000000000000000000000000000000876133e3565b604051631cddb78560e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637376de1490612ae2908890889088908890429060040161564c565b600060405180830381600087803b158015612afc57600080fd5b505af1158015612b10573d6000803e3d6000fd5b50505050505050505050565b60006103e56103e861ffff8816600303612bcc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663172b0d9a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb29190615688565b612bc19060ff166103e86156ab565b61ffff169150612c7d565b8761ffff16600403612c7d5760405163cc56b2c560e01b81526001600160a01b038a81166004830152600060248301527f0000000000000000000000000000000000000000000000000000000000000000169063cc56b2c590604401602060405180830381865afa158015612c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c699190615311565b612c75906127106153e1565b915061271090505b604080516002808252606082018352600092602083019080368337019050509050896001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0091906156e4565b826001600160701b03169250816001600160701b031691505082600081518110612d2c57612d2c6153b5565b6020026020010183600181518110612d4657612d466153b5565b6001600160801b0393841660209182029290920101529116905260408051600280825260608201909252600091816020016020820280368337019050509050886001600160a01b0316876001600160a01b031603612e9e578581600081518110612db257612db26153b5565b60200260200101906001600160801b031690816001600160801b031681525050600181600181518110612de757612de76153b5565b60200260200101906001600160801b031690816001600160801b0316815250506000612e2785858486612e198f613f16565b612e228f613f16565b613fd5565b9050612e96858583600181518110612e4157612e416153b5565b602002602001015186600181518110612e5c57612e5c6153b5565b60200260200101516001600160801b031687600081518110612e8057612e806153b5565b60200260200101516001600160801b0316614383565b955050612f76565b600181600081518110612eb357612eb36153b5565b60200260200101906001600160801b031690816001600160801b0316815250508581600181518110612ee757612ee76153b5565b60200260200101906001600160801b031690816001600160801b0316815250506000612f1985858486612e198f613f16565b9050612f72858583600081518110612f3357612f336153b5565b602002602001015186600081518110612f4e57612f4e6153b5565b60200260200101516001600160801b031687600181518110612e8057612e806153b5565b9550505b505050509695505050505050565b82600081518110612f9757612f976153b5565b60200260200101516001600160a01b0316866001600160a01b0316148015612ff757508260018451612fc991906153e1565b81518110612fd957612fd96153b5565b60200260200101516001600160a01b0316866001600160a01b031614155b6130435760405162461bcd60e51b815260206004820152601760248201527f4c505f5a41505045523a20494e56414c49445f50415448000000000000000000604482015260640161072d565b600082116130935760405162461bcd60e51b815260206004820152601b60248201527f4c505f5a41505045523a20494e56414c49445f50524f544f434f4c0000000000604482015260640161072d565b600061309e836134c6565b90506130ab8782886133e3565b826004036132985760006002855160016130c59190615734565b6130cf9190615747565b6001600160401b038111156130e6576130e6614a0b565b60405190808252806020026020018201604052801561313857816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816131045790505b50905060005b6001865161314c91906153e1565b811015613215576040518060800160405280878381518110613170576131706153b5565b60200260200101516001600160a01b03168152602001878360016131949190615734565b815181106131a4576131a46153b5565b60200260200101516001600160a01b031681526020016000151581526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815250828281518110613202576132026153b5565b602090810291909101015260010161313e565b5060405163cac88ea960e01b81526001600160a01b0383169063cac88ea99061324a908a908a90869089904290600401615769565b6000604051808303816000875af1158015613269573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613291919081019061580b565b50506125fc565b6040516338ed173960e01b81526001600160a01b038216906338ed1739906132cc908990899089908890429060040161583f565b6000604051808303816000875af11580156132eb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aa3919081019061580b565b6040516001600160a01b038281166024830152600091829182919086169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b1790525161336991906155e2565b600060405180830381855afa9150503d80600081146133a4576040519150601f19603f3d011682016040523d82523d6000602084013e6133a9565b606091505b50915091508180156133bd57506020815110155b6133c657600080fd5b808060200190518101906133da9190615311565b95945050505050565b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b1790525161343d91906155e2565b6000604051808303816000865af19150503d806000811461347a576040519150601f19603f3d011682016040523d82523d6000602084013e61347f565b606091505b50915091508180156134a95750805115806134a95750808060200190518101906134a991906155fe565b6107a55760405163cbade9b160e01b815260040160405180910390fd5b60008082600103613578577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166135515760405162461bcd60e51b815260206004820152602160248201527f4c505f5a41505045523a20554e4956325f524f555445525f4e4f545f464f554e6044820152601160fa1b606482015260840161072d565b507f000000000000000000000000000000000000000000000000000000000000000061376d565b82600203613627577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166136005760405162461bcd60e51b815260206004820152602160248201527f4c505f5a41505045523a2053555348495f524f555445525f4e4f545f464f554e6044820152601160fa1b606482015260840161072d565b507f000000000000000000000000000000000000000000000000000000000000000061376d565b826003036136cc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166136a55760405162461bcd60e51b815260206004820152601e60248201527f4c505f5a41505045523a2044535f524f555445525f4e4f545f464f554e440000604482015260640161072d565b507f000000000000000000000000000000000000000000000000000000000000000061376d565b8260040361376d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661374a5760405162461bcd60e51b815260206004820181905260248201527f4c505f5a41505045523a204145524f5f524f555445525f4e4f545f464f554e44604482015260640161072d565b507f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b0381166125835760405162461bcd60e51b815260206004820152601d60248201527f4c505f5a41505045523a2050524f544f434f4c5f4e4f545f464f554e44000000604482015260640161072d565b600080826000015161ffff166004036138db57856001600160a01b0316630dede6c48686600087606001518860a00151600081518110613805576138056153b5565b60200260200101518960a00151600181518110613824576138246153b5565b60209081029190910101516040808c015190516001600160e01b031960e08a901b1681526001600160a01b039788166004820152958716602487015293151560448601526064850192909252608484015260a48301529190911660c482015260001960e48201526101040160408051808303816000875af11580156138ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d191906158b0565b90925090506139d4565b856001600160a01b031663baa2abde868686606001518760a00151600081518110613908576139086153b5565b60200260200101518860a00151600181518110613927576139276153b5565b60209081029190910101516040808b015190516001600160e01b031960e089901b1681526001600160a01b03968716600482015294861660248601526044850193909352606484019190915260848301529190911660a482015260001960c482015260e40160408051808303816000875af11580156139aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ce91906158b0565b90925090505b94509492505050565b6001600160a01b0381163b613a4a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161072d565b600080516020615b5583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613a82836143ce565b600082511180613a8f5750805b156106bc57610bb8838361440e565b60006127108361ffff161015613b2d57604051638c83803560e01b815261ffff84166004820152613b26906001600160a01b03861690638c83803590602401602060405180830381865afa158015613afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1e9190615361565b848487614433565b905061296b565b6040516334b1f0a960e21b815261ffff84166004820152613b26906001600160a01b0386169063d2c7c2a490602401602060405180830381865afa158015613b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9d9190615361565b604051603881018790526f5af43d82803e903d91602b57fd5bf3ff60248201526014810191909152733d602d80600a3d3981f3363d3d373d3d3d363d738152605881018490526037600c8201206078820152605560439091012090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015613c3b5750804710155b15613ce4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c9b57600080fd5b505af1158015613caf573d6000803e3d6000fd5b5050505050613cdf7f0000000000000000000000000000000000000000000000000000000000000000838361267f565b610bb8565b306001600160a01b03841603613cff57613cdf84838361267f565b610bb8848484846122b4565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60006003613d7660026014615734565b613d809190615734565b60146003613d8f600283615734565b613d999190615734565b613da39190615734565b613dad9190615734565b825110159050919050565b60606125836003613dcb60026014615734565b613dd59190615734565b6003613de360026014615734565b613ded9190615734565b8451613df991906153e1565b84919061449f565b600081613e0f816014615734565b1015613e525760405162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015260640161072d565b613e5d826014615734565b83511015613ea55760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015260640161072d565b500160200151600160601b900490565b6000808080613ec48582613e01565b9350613ed18560146145f6565b9150613ee9613ee260026014615734565b86906146a1565b9050613f0d6003613efc60026014615734565b613f069190615734565b8690613e01565b92509193509193565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051600091829182916001600160a01b03861691613f5c91906155e2565b600060405180830381855afa9150503d8060008114613f97576040519150601f19603f3d011682016040523d82523d6000602084013e613f9c565b606091505b5091509150818015613fb057506001815110155b613fb957600080fd5b80806020019051810190613fcd9190615688565b949350505050565b604080516002808252606080830184529260208301908036833701905050905060008560018151811061400a5761400a6153b5565b60200260200101516001600160801b03168560008151811061402e5761402e6153b5565b60200260200101516001600160801b031661404991906158d4565b9050600086600081518110614060576140606153b5565b60200260200101516001600160801b031686600181518110614084576140846153b5565b60200260200101516001600160801b031661409f91906158d4565b90508082111561420e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff280423886000815181106140eb576140eb6153b5565b602002602001015189600181518110614106576141066153b5565b602002602001015189600081518110614121576141216153b5565b60200260200101518a60018151811061413c5761413c6153b5565b60200260200101518e8e8c6040518863ffffffff1660e01b815260040161416997969594939291906158eb565b600060405180830381865afa158015614186573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141ae9190810190615931565b9250826001815181106141c3576141c36153b5565b60200260200101516000846000815181106141e0576141e06153b5565b60200260200101856001815181106141fa576141fa6153b5565b602090810291909101019190915252614377565b80821015614377577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff28042388600181518110614258576142586153b5565b602002602001015189600081518110614273576142736153b5565b60200260200101518960018151811061428e5761428e6153b5565b60200260200101518a6000815181106142a9576142a96153b5565b60200260200101518e8e8b6040518863ffffffff1660e01b81526004016142d697969594939291906158eb565b600060405180830381865afa1580156142f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261431b9190810190615931565b9250600083600181518110614332576143326153b5565b60200260200101518460008151811061434d5761434d6153b5565b6020026020010185600181518110614367576143676153b5565b6020908102919091010191909152525b50509695505050505050565b60008561439085856153e1565b61439a91906158d4565b856143a586856158d4565b6143af91906158d4565b6143b99190615747565b6143c4906001615734565b9695505050505050565b6143d7816139dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606125808383604051806060016040528060278152602001615b756027913961474c565b6000806144418686856147ba565b8051602091820120604080516001600160f81b03198185015260609690961b6001600160601b031916602187015260358601969096526055808601919091528551808603909101815260759094019094525050805191012092915050565b6060816144ad81601f615734565b10156144ec5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161072d565b826144f78382615734565b10156145365760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161072d565b6145408284615734565b845110156145845760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161072d565b6060821580156145a357604051915060008252602082016040526145ed565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156145dc5780518352602092830192016145c4565b5050858452601f01601f1916604052505b50949350505050565b600081614604816002615734565b10156146465760405162461bcd60e51b8152602060048201526011602482015270746f55696e7431365f6f766572666c6f7760781b604482015260640161072d565b614651826002615734565b835110156146985760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b604482015260640161072d565b50016002015190565b6000816146af816003615734565b10156146f15760405162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015260640161072d565b6146fc826003615734565b835110156147435760405162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015260640161072d565b50016003015190565b6060600080856001600160a01b03168560405161476991906155e2565b600060405180830381855af49150503d80600081146147a4576040519150601f19603f3d011682016040523d82523d6000602084013e6147a9565b606091505b50915091506143c48683838761496d565b6060836101008461ffff16106147e957604051806040016040528060018152602001606d60f81b815250614804565b604051806040016040528060018152602001601b60fa1b8152505b6101008561ffff161061483057604051806040016040528060018152602001606160f81b81525061484b565b604051806040016040528060018152602001600360fd1b8152505b6101008661ffff1610614886576040516001600160f01b031960f088901b1660208201526022016040516020818303038152906040526148b0565b6040516001600160f81b031960f888901b1660208201526021016040516020818303038152906040525b856101008861ffff16106148dd57604051806040016040528060018152602001603b60f81b8152506148f8565b604051806040016040528060018152602001601d60f91b8152505b6101008961ffff161061492457604051806040016040528060018152602001601760fa1b81525061493f565b604051806040016040528060018152602001605b60f81b8152505b60405160200161495597969594939291906159c1565b60405160208183030381529060405290509392505050565b606083156149dc5782516000036149d5576001600160a01b0385163b6149d55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161072d565b5081613fcd565b613fcd83838151156149f15781518083602001fd5b8060405162461bcd60e51b815260040161072d9190615b41565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715614a4357614a43614a0b565b60405290565b604051606081016001600160401b0381118282101715614a4357614a43614a0b565b604051601f8201601f191681016001600160401b0381118282101715614a9357614a93614a0b565b604052919050565b803561ffff81168114614aad57600080fd5b919050565b6001600160a01b038116811461088857600080fd5b8035614aad81614ab2565b60006001600160401b03821115614aeb57614aeb614a0b565b5060051b60200190565b600082601f830112614b0657600080fd5b81356020614b1b614b1683614ad2565b614a6b565b82815260059290921b84018101918181019086841115614b3a57600080fd5b8286015b84811015614b555780358352918301918301614b3e565b509695505050505050565b600082601f830112614b7157600080fd5b81356020614b81614b1683614ad2565b82815260059290921b84018101918181019086841115614ba057600080fd5b8286015b84811015614b55578035614bb781614ab2565b8352918301918301614ba4565b600082601f830112614bd557600080fd5b81356001600160401b03811115614bee57614bee614a0b565b614c01601f8201601f1916602001614a6b565b818152846020838601011115614c1657600080fd5b816020850160208301376000918101602001919091529392505050565b600060808284031215614c4557600080fd5b604051608081016001600160401b038282108183111715614c6857614c68614a0b565b8160405282935084358352614c7f60208601614a9b565b60208401526040850135915080821115614c9857600080fd5b614ca486838701614b60565b60408401526060850135915080821115614cbd57600080fd5b50614cca85828601614bc4565b6060830152505092915050565b600080600060608486031215614cec57600080fd5b83356001600160401b0380821115614d0357600080fd5b9085019060c08288031215614d1757600080fd5b614d1f614a21565b614d2883614a9b565b81526020830135614d3881614ab2565b60208201526040830135614d4b81614ab2565b80604083015250606083013560608201526080830135608082015260a083013582811115614d7857600080fd5b614d8489828601614af5565b60a08301525094506020860135915080821115614da057600080fd5b614dac87838801614c33565b93506040860135915080821115614dc257600080fd5b50614dcf86828701614c33565b9150509250925092565b600060c08284031215614deb57600080fd5b614df3614a21565b9050614dfe82614a9b565b8152614e0c60208301614ac7565b6020820152614e1d60408301614ac7565b60408201526060820135606082015260808201356001600160401b0380821115614e4657600080fd5b614e5285838601614af5565b608084015260a0840135915080821115614e6b57600080fd5b50614e7884828501614af5565b60a08301525092915050565b600060608284031215614e9657600080fd5b614e9e614a49565b9050614ea982614a9b565b815260208201356001600160401b0380821115614ec557600080fd5b614ed185838601614b60565b60208401526040840135915080821115614eea57600080fd5b50614ef784828501614bc4565b60408301525092915050565b600080600080600060a08688031215614f1b57600080fd5b8535614f2681614ab2565b94506020860135935060408601356001600160401b0380821115614f4957600080fd5b614f5589838a01614dd9565b94506060880135915080821115614f6b57600080fd5b614f7789838a01614c33565b93506080880135915080821115614f8d57600080fd5b50614f9a88828901614e84565b9150509295509295909350565b600060208284031215614fb957600080fd5b813561296b81614ab2565b60008060408385031215614fd757600080fd5b8235614fe281614ab2565b915060208301356001600160401b03811115614ffd57600080fd5b61500985828601614bc4565b9150509250929050565b60008083601f84011261502557600080fd5b5081356001600160401b0381111561503c57600080fd5b6020830191508360208260051b850101111561505757600080fd5b9250929050565b60008060008060008060006080888a03121561507957600080fd5b87356001600160401b038082111561509057600080fd5b61509c8b838c01615013565b909950975060208a01359150808211156150b557600080fd5b6150c18b838c01615013565b909750955060408a013591506150d682614ab2565b909350606089013590808211156150ec57600080fd5b818a0191508a601f83011261510057600080fd5b81358181111561510f57600080fd5b8b602082850101111561512157600080fd5b60208301945080935050505092959891949750929550565b60008060006060848603121561514e57600080fd5b83356001600160401b038082111561516557600080fd5b61517187838801614dd9565b9450602086013591508082111561518757600080fd5b61519387838801614c33565b935060408601359150808211156151a957600080fd5b50614dcf86828701614e84565b6000806000606084860312156151cb57600080fd5b83356151d681614ab2565b925060208401356151e681614ab2565b929592945050506040919091013590565b6000806040838503121561520a57600080fd5b82359150602083013561521c81614ab2565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000606082840312156152d157600080fd5b6152d9614a49565b82356152e481614ab2565b815260208301356152f481614ab2565b602082015261530560408401614a9b565b60408201529392505050565b60006020828403121561532357600080fd5b5051919050565b6020808252601b908201527f4c505f5a41505045523a20494e56414c49445f504152414d5f544f0000000000604082015260600190565b60006020828403121561537357600080fd5b815161296b81614ab2565b6020808252601c908201527f4c505f5a41505045523a20494e56414c49445f544f4b454e5f4f555400000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115612583576125836153cb565b600081518084526020808501945080840160005b8381101561542457815187529582019590820190600101615408565b509495945050505050565b6020815261ffff82511660208201526000602083015160018060a01b038082166040850152806040860151166060850152505060608301516080830152608083015160c060a084015261548560e08401826153f4565b905060a0840151601f198483030160c08501526133da82826153f4565b600082601f8301126154b357600080fd5b815160206154c3614b1683614ad2565b82815260059290921b840181019181810190868411156154e257600080fd5b8286015b84811015614b5557805183529183019183016154e6565b6000806040838503121561551057600080fd5b82516001600160401b0381111561552657600080fd5b615532858286016154a2565b925050602083015190509250929050565b6020815261ffff82511660208201526000602083015160018060a01b038082166040850152806040860151166060850152505060608301516080830152608083015160a083015260a083015160c080840152613fcd60e08401826153f4565b60005b838110156155bd5781810151838201526020016155a5565b50506000910152565b600081516155d88185602086016155a2565b9290920192915050565b600082516155f48184602087016155a2565b9190910192915050565b60006020828403121561561057600080fd5b8151801515811461296b57600080fd5b600081518084526156388160208601602086016155a2565b601f01601f19169290920160200192915050565b85815284602082015260a06040820152600061566b60a0830186615620565b6001600160a01b0394909416606083015250608001529392505050565b60006020828403121561569a57600080fd5b815160ff8116811461296b57600080fd5b61ffff8281168282160390808211156156c6576156c66153cb565b5092915050565b80516001600160701b0381168114614aad57600080fd5b6000806000606084860312156156f957600080fd5b615702846156cd565b9250615710602085016156cd565b9150604084015163ffffffff8116811461572957600080fd5b809150509250925092565b80820180821115612583576125836153cb565b60008261576457634e487b7160e01b600052601260045260246000fd5b500490565b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b818110156157df57855180516001600160a01b0390811685528682015181168786015285820151151586860152606091820151169084015294840194608090920191600101615795565b50506001600160a01b038816606087015293506157fb92505050565b8260808301529695505050505050565b60006020828403121561581d57600080fd5b81516001600160401b0381111561583357600080fd5b613fcd848285016154a2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561588f5784516001600160a01b03168352938301939183019160010161586a565b50506001600160a01b03969096166060850152505050608001529392505050565b600080604083850312156158c357600080fd5b505080516020909101519092909150565b8082028115828204841417612583576125836153cb565b6001600160801b03978816815295871660208701529386166040860152919094166060840152608083019390935260a082019290925260ff90911660c082015260e00190565b6000602080838503121561594457600080fd5b82516001600160401b0381111561595a57600080fd5b8301601f8101851361596b57600080fd5b8051615979614b1682614ad2565b81815260059190911b8201830190838101908783111561599857600080fd5b928401925b828410156159b65783518252928401929084019061599d565b979650505050505050565b72608060405234801561001057600080fd5b507360681b8152606088901b6001600160601b0319166013820152607f60f81b60278201527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060288201526102ab60f51b60488201528651600090615a3f81604a850160208c016155a2565b6a4030802b30001cb00079ff60a91b604a91840191820152703040302040c829319a58f854b0710dc0a960791b6055820152615aa0615a8a615a84606684018b6155c6565b896155c6565b696084526020816024817360b01b8152600a0190565b9050615ab8818760601b6001600160601b0319169052565b6202d7d360ed1b6014820152615b33615b12615b0c615ad960178501615a84565b7f573d6000fd5b5060805160003681823780813683855af491503d81823e8180158152600360fd1b602082015260210190565b866155c6565b742b9ec179ad9ec17eff50b239b7b631a180040a800560591b815260150190565b9a9950505050505050505050565b602081526000612580602083018461562056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122099faeca5d0a06566b1d8af4a0e1c5f6d7770ee23085bd318f9a694254197ac0c64736f6c6343000815003300000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000fd513630f697a9c1731f196185fb9eba6eaac20b000000000000000000000000cb85e1222f715a81b8edaeb73b28182fa37cffa800000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b72616376652cc82f17dd7a9b58f71cdb3b98b00000000000000000000000006c223e3dc9a1b2dbadcd96ef39deae1e421034130000000000000000000000004752ba5dbc23f44d87826276bf6fd6b1c372ad240000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b479975060000000000000000000000005fbe219e88f6c6f214ce6f5b1fcaa0294f31ae1b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000004689903fbbd2b49b872cf1f315bf60d2eb831698