0 txs
0 calls
constructor
constructor(address _walletConfig, address _addyRegistry, address _wethAddr, address _trialFundsAsset, uint256 _trialFundsInitialAmount)
functions
ADDY_REGISTRY
viewfunction ADDY_REGISTRY() view returns (address)
apiVersion
purefunction apiVersion() pure returns (string)
canBeAmbassador
viewfunction canBeAmbassador() view returns (bool)
onERC721Received
viewfunction onERC721Received(address _operator, address _owner, uint256 _tokenId, bytes _data) view returns (bytes4)
trialFundsAsset
viewfunction trialFundsAsset() view returns (address)
trialFundsInitialAmount
viewfunction trialFundsInitialAmount() view returns (uint256)
walletConfig
viewfunction walletConfig() view returns (address)
wethAddr
viewfunction wethAddr() view returns (address)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB, int24 _tickLower, int24 _tickUpper, uint256 _minAmountA, uint256 _minAmountB, uint256 _minLpAmount) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB, int24 _tickLower, int24 _tickUpper, uint256 _minAmountA, uint256 _minAmountB) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB, int24 _tickLower, int24 _tickUpper, uint256 _minAmountA) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB, int24 _tickLower, int24 _tickUpper) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB, int24 _tickLower) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _amountA, uint256 _amountB) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _amountA) returns (uint256, uint256, uint256, uint256, uint256)
addLiquidity
nonpayablefunction addLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB) returns (uint256, uint256, uint256, uint256, uint256)
borrow
nonpayablefunction borrow(uint256 _legoId, address _borrowAsset, uint256 _amount) returns (address, uint256, uint256)
borrow
nonpayablefunction borrow(uint256 _legoId, address _borrowAsset) returns (address, uint256, uint256)
borrow
nonpayablefunction borrow(uint256 _legoId) returns (address, uint256, uint256)
claimRewards
nonpayablefunction claimRewards(uint256 _legoId, address _market, address _rewardToken, uint256 _rewardAmount, bytes32 _proof)
claimRewards
nonpayablefunction claimRewards(uint256 _legoId, address _market, address _rewardToken, uint256 _rewardAmount)
claimRewards
nonpayablefunction claimRewards(uint256 _legoId, address _market, address _rewardToken)
claimRewards
nonpayablefunction claimRewards(uint256 _legoId, address _market)
claimRewards
nonpayablefunction claimRewards(uint256 _legoId)
clawBackTrialFunds
nonpayablefunction clawBackTrialFunds() returns (bool)
convertEthToWeth
payablefunction convertEthToWeth() payable returns (uint256, address, uint256)
convertEthToWeth
payablefunction convertEthToWeth(uint256 _amount, uint256 _depositLegoId, address _depositVault) payable returns (uint256, address, uint256)
convertEthToWeth
payablefunction convertEthToWeth(uint256 _amount, uint256 _depositLegoId) payable returns (uint256, address, uint256)
convertEthToWeth
payablefunction convertEthToWeth(uint256 _amount) payable returns (uint256, address, uint256)
convertWethToEth
nonpayablefunction convertWethToEth() returns (uint256)
convertWethToEth
nonpayablefunction convertWethToEth(uint256 _amount, address _recipient, uint256 _withdrawLegoId, address _withdrawVaultToken) returns (uint256)
convertWethToEth
nonpayablefunction convertWethToEth(uint256 _amount, address _recipient, uint256 _withdrawLegoId) returns (uint256)
convertWethToEth
nonpayablefunction convertWethToEth(uint256 _amount, address _recipient) returns (uint256)
convertWethToEth
nonpayablefunction convertWethToEth(uint256 _amount) returns (uint256)
depositTokens
nonpayablefunction depositTokens(uint256 _legoId, address _asset, address _vault, uint256 _amount) returns (uint256, address, uint256, uint256)
depositTokens
nonpayablefunction depositTokens(uint256 _legoId, address _asset, address _vault) returns (uint256, address, uint256, uint256)
migrateWalletOut
nonpayablefunction migrateWalletOut(address _newWallet, address[] _assetsToMigrate, address[] _whitelistToMigrate) returns (bool)
rebalance
nonpayablefunction rebalance(uint256 _fromLegoId, address _fromAsset, address _fromVaultToken, uint256 _toLegoId, address _toVault, uint256 _fromVaultTokenAmount) returns (uint256, address, uint256, uint256)
rebalance
nonpayablefunction rebalance(uint256 _fromLegoId, address _fromAsset, address _fromVaultToken, uint256 _toLegoId, address _toVault) returns (uint256, address, uint256, uint256)
recoverNft
nonpayablefunction recoverNft(address _collection, uint256 _nftTokenId) returns (bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _liqToRemove, uint256 _minAmountA, uint256 _minAmountB) returns (uint256, uint256, uint256, bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _liqToRemove, uint256 _minAmountA) returns (uint256, uint256, uint256, bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB, uint256 _liqToRemove) returns (uint256, uint256, uint256, bool)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 _legoId, address _nftAddr, uint256 _nftTokenId, address _pool, address _tokenA, address _tokenB) returns (uint256, uint256, uint256, bool)
repayDebt
nonpayablefunction repayDebt(uint256 _legoId, address _paymentAsset, uint256 _paymentAmount) returns (address, uint256, uint256, uint256)
repayDebt
nonpayablefunction repayDebt(uint256 _legoId, address _paymentAsset) returns (address, uint256, uint256, uint256)
swapTokens
nonpayablefunction swapTokens(tuple[] _swapInstructions) returns (uint256, uint256, uint256)
transferFunds
nonpayablefunction transferFunds(address _recipient, uint256 _amount, address _asset) returns (uint256, uint256)
transferFunds
nonpayablefunction transferFunds(address _recipient, uint256 _amount) returns (uint256, uint256)
transferFunds
nonpayablefunction transferFunds(address _recipient) returns (uint256, uint256)
withdrawTokens
nonpayablefunction withdrawTokens(uint256 _legoId, address _asset, address _vaultToken, uint256 _vaultTokenAmount) returns (uint256, uint256, uint256)
withdrawTokens
nonpayablefunction withdrawTokens(uint256 _legoId, address _asset, address _vaultToken) returns (uint256, uint256, uint256)
events
UserWalletBorrow
event UserWalletBorrow(address indexed signer, address indexed borrowAsset, uint256 borrowAmount, uint256 usdValue, uint256 legoId, address legoAddr, bool isSignerAgent)
UserWalletDeposit
event UserWalletDeposit(address indexed signer, address indexed asset, address indexed vaultToken, uint256 assetAmountDeposited, uint256 vaultTokenAmountReceived, uint256 refundAssetAmount, uint256 usdValue, uint256 legoId, address legoAddr, bool isSignerAgent)
UserWalletEthConvertedToWeth
event UserWalletEthConvertedToWeth(address indexed signer, uint256 amount, uint256 paidEth, address indexed weth, bool isSignerAgent)
UserWalletFundsTransferred
event UserWalletFundsTransferred(address indexed signer, address indexed recipient, address indexed asset, uint256 amount, uint256 usdValue, bool isSignerAgent)
UserWalletLiquidityAdded
event UserWalletLiquidityAdded(address indexed signer, address indexed tokenA, address indexed tokenB, uint256 liqAmountA, uint256 liqAmountB, uint256 liquidityAdded, address pool, uint256 usdValue, uint256 refundAssetAmountA, uint256 refundAssetAmountB, uint256 nftTokenId, uint256 legoId, address legoAddr, bool isSignerAgent)
UserWalletLiquidityRemoved
event UserWalletLiquidityRemoved(address indexed signer, address indexed tokenA, address tokenB, uint256 removedAmountA, uint256 removedAmountB, uint256 usdValue, bool isDepleted, uint256 liquidityRemoved, address indexed lpToken, uint256 refundedLpAmount, uint256 legoId, address legoAddr, bool isSignerAgent)
UserWalletNftRecovered
event UserWalletNftRecovered(address indexed collection, uint256 nftTokenId, address indexed owner)
UserWalletRepayDebt
event UserWalletRepayDebt(address indexed signer, address indexed paymentAsset, uint256 paymentAmount, uint256 usdValue, uint256 remainingDebt, uint256 legoId, address indexed legoAddr, bool isSignerAgent)
UserWalletRewardsClaimed
event UserWalletRewardsClaimed(address signer, address market, address rewardToken, uint256 rewardAmount, uint256 usdValue, bytes32 proof, uint256 legoId, address legoAddr, bool isSignerAgent)
UserWalletSubscriptionPaid
event UserWalletSubscriptionPaid(address indexed recipient, address indexed asset, uint256 amount, uint256 usdValue, uint256 paidThroughBlock, bool isAgent)
UserWalletSwap
event UserWalletSwap(address indexed signer, address indexed tokenIn, address indexed tokenOut, uint256 swapAmount, uint256 toAmount, uint256 refundAssetAmount, uint256 usdValue, uint256 numTokens, uint256 legoId, address legoAddr, bool isSignerAgent)
UserWalletTransactionFeePaid
event UserWalletTransactionFeePaid(address indexed asset, address indexed protocolRecipient, uint256 protocolAmount, address indexed ambassadorRecipient, uint256 ambassadorAmount, uint256 fee, uint256 action)
UserWalletTrialFundsRecovered
event UserWalletTrialFundsRecovered(address indexed asset, uint256 amountRecovered, uint256 remainingAmount)
UserWalletWethConvertedToEth
event UserWalletWethConvertedToEth(address indexed signer, uint256 amount, address indexed weth, bool isSignerAgent)
UserWalletWithdrawal
event UserWalletWithdrawal(address indexed signer, address indexed asset, address indexed vaultToken, uint256 assetAmountReceived, uint256 vaultTokenAmountBurned, uint256 refundVaultTokenAmount, uint256 usdValue, uint256 legoId, address legoAddr, bool isSignerAgent)
errors
No errors.
creation bytecode
0x61563d5150346100d657602061575b5f395f518060a01c6100d657604052602061577b5f395f518060a01c6100d657606052602061579b5f395f518060a01c6100d65760805260206157bb5f395f518060a01c6100d65760a05260405115610079576060511561007357608051151561007b565b5f61007b565b5f5b156100d6576040515f5560805160035560605161563d5260a051156100aa5760206157db5f395f5115156100ac565b5f5b156100c45760a05160015560206157db5f395f516002555b61563d6100da6100003961565d610000f35b5f80fd5f3560e01c60056005600683060261547f01601b395f5160088160ff16838360181c0260181c0660031b8260081c61ffff1601601839505f51818160201c14600336111615613589578061fffe1636103482600116021761547b578060101c61ffff16565b6004358060a01c61547b576040526024358060a01c61547b576060526064356004018035610400811161547b57506020813501808260803750507f150b7a02000000000000000000000000000000000000000000000000000000006104a05260206104a0f35b60208060805260056040527f302e302e3300000000000000000000000000000000000000000000000000000060605260408160800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b60205f5463085070fd604052602060406004605c845afa610157573d5f5f3e3d5ffd5b3d602081183d60201002188060400160601161547b576040518060011c61547b576080525060809050f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611440526101b4565b606435611440525b6024358060a01c61547b57611400526044358060a01c61547b57611420525f5c60011461547b5760015f5d6101ea6115a061358b565b6115a0610140816114605e503360405260016060526114005160a05260016080526004356103e05260016103c0526101406114606106605e61022d6115c0613788565b6115c0516115a052608033604052600435606052606061140060805e6115a05160e0526101406114606101005e6102656115c0613b6b565b6115c05f5f5df35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6114405261029f565b606435611440525b6024358060a01c61547b57611400526044358060a01c61547b57611420525f5c60011461547b5760015f5d6102d56115a061358b565b6115a0610140816114605e503360405260026060526114005160a05260016080526004356103e05260016103c0526101406114606106605e6103186115c0613788565b6115c0516115a0526060336103e0526004356104005260606114006104205e6115a0516104805260016104a0526101406114606104c05e61035a6115c061447d565b6115c05f5f5df35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61146052610394565b60a435611460525b6024358060a01c61547b57611400526044358060a01c61547b57611420526084358060a01c61547b57611440525f5c60011461547b5760015f5d6103d96115c061358b565b6115c0610140816114805e503360405260046060526114005160a05260016080526004356103e0526064356104005260026103c0526101406114806106605e6104236115e0613788565b6115e0516115c0526060366115e037336103e0526004356104005260406114006104205e61146051610460526115c0516104805260016104a0526101406114806104c05e61047261164061447d565b6116406060816116a05e5060606116a06115e05e6080366116403733604052606435606052611400516080526114405160a0526115e05160c0526115c05160e0526101406114806101005e6104c86116c0613b6b565b6116c06080816117405e5060806117406116405e611620516116a051808281188284110218905090506116c05260606116406116e05e6116c0516117405260806116e05f5f5df35b600435600401600581351161547b5780355f816005811161547b57801561062857905b8060051b60208501013560208501016101c082026114200181358152602082013560208201526040820135604082015260608201358201600581351161547b5780355f816005811161547b5780156105b457905b8060051b6020850101358060a01c61547b57606086018260051b6020820101905052600101818118610587575b5050806060840152505060808201358201600481351161547b5780355f816004811161547b57801561061057905b8060051b6020850101358060a01c61547b5761012086018260051b60208201019050526001018181186105e2575b50508061012084015250505050600101818118610533575b5050806114005250505f5c60011461547b5760015f5d61140051611ce052611ce0511561547b5761065a611e4061358b565b611e4061014081611d005e50608036611e4037611ce051604052611400515f816005811161547b5780156106ae57905b6101c08102611420016101c082026080016101c082825e505060010181811861068a575b50508060605250610140611d006109405e6106ca612140614824565b612140610300816124405e506060612440611e405e6124a05160208160051b01806124a0611ea05e50503360405260106060526040611e4060a05e6002608052611ea05160208160051b0180611ea06103c05e5050610140611d006106605e610734612160613788565b6121605161214052611e4051604052611e0051606052611da05160805261075c612180614a98565b6121805161216052611e8051612180526060366121a0375f611ce0516005811161547b5780156108ad57905b80612200526101c0612200516114005181101561547b5702611420016101c0816122205e506121a0511561082857612280511561547b575f60051b6122a001516123e0526123e0516121a0511861547b576121c0516123e0516370a082316124005230612420526020612400602461241c845afa610808573d5f5f3e3d5ffd5b60203d1061547b5761240090505180828118828410021890509050612180525b6122205160405261218051606052612260516080526122805160208160051b018061228060a05e50506123405160208160051b01806123406101605e505033610200526121405161022052611da05161024052611de0516102605261088e6123e0614b19565b6123e06060816124405e5060606124406121a05e600101818118610788575b505061216051604052611e0051606052611e2051608052611da05160a0526108d3614e42565b611d405163beb6910361220052611e4051612220526121a051612240526121c05161226052611da05161228052803b1561547b575f612200608461221c5f855af1610920573d5f5f3e3d5ffd5b5061214051156109595760106101805260406121a06101a05e611dc0516101e052611d8051610200526109546122006140d8565b612200505b611e8051612200526121c051612220526121e0516122405260606122005f5f5df35b5f611400527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611420526109fa565b6024358060a01c61547b57611400527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611420526109fa565b6024358060a01c61547b5761140052604435611420525b5f5c60011461547b5760015f5d610a1261158061358b565b611580610140816114405e50336040526102006060526114005160a05260016080526004356103e05260016103c0526101406114406106605e610a566115a0613788565b6115a051611580526114e051638d17f9916115c0526004356115e05260206115c060246115dc845afa610a8b573d5f5f3e3d5ffd5b3d602081183d6020100218806115c0016115e01161547b576115c0518060a01c61547b5761160052506116009050516115a0526115a0511561547b576115a051604052610ad6614e96565b6060366115c0376115a05163ca5ccd826116205260406114006116405e3061168052611520516116a0526060611620608461163c5f855af1610b1a573d5f5f3e3d5ffd5b3d606081183d606010021880611620016116801161547b57611620518060a01c61547b576116c05260406116406116e05e506116c090506060816117205e5060606117206115c05e6115c051337fb4f60b6d7c721a35d810959a225a6333b40fb7c423655c1a6fba384b459c4d5e60406115e06116205e600435611660526115a05161168052611580516116a05260a0611620a360606115c06116205e60606116205f5f5df35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61142052610bf3565b604435611420525b6024358060a01c61547b57611400525f5c60011461547b5760015f5d610c1a61158061358b565b611580610140816114405e50336040526104006060526114005160a05260016080526004356103e05260016103c0526101406114406106605e610c5e6115a0613788565b6115a051611580526114e051638d17f9916115c0526004356115e05260206115c060246115dc845afa610c93573d5f5f3e3d5ffd5b3d602081183d6020100218806115c0016115e01161547b576115c0518060a01c61547b5761160052506116009050516115a0526115a0511561547b576115a051604052610cde614e96565b6114805163ea9129a86115e05260406114006116005e6001611640526101406114406116605e60206115e06101a46115fc845afa610d1e573d5f5f3e3d5ffd5b60203d1061547b576115e09050516115c05261140051604052611540516060526114e051608052610d50611600614a98565b611600516115e052606036611600376114005163095ea7b36116605260406115a06116805e6020611660604461167c5f855af1610d8f573d5f5f3e3d5ffd5b3d610da657803b1561547b5760016116c052610dd0565b3d602081183d602010021880611660016116801161547b57611660518060011c61547b576116c052505b6116c09050511561547b576115a05163a281d48e6116605261140051611680526115c0516116a052306116c052611520516116e0526080611660608461167c5f855af1610e1f573d5f5f3e3d5ffd5b3d608081183d608010021880611660016116e01161547b57611660518060a01c61547b576117005260606116806117205e5061170090506080816117805e5061178051611600526117a0516115c05260406117c06116205e6114005163095ea7b3611660526115a051611680525f6116a0526020611660604461167c5f855af1610eab573d5f5f3e3d5ffd5b3d610ec257803b1561547b5760016116c052610eec565b3d602081183d602010021880611660016116801161547b57611660518060011c61547b576116c052505b6116c09050511561547b576115e05160405261154051606052611560516080526114e05160a052610f1b614e42565b6114805163bfd303986116605261140051611680526114e0516116a052803b1561547b575f611660604461167c5f855af1610f58573d5f5f3e3d5ffd5b506115a05161160051337f10a026eed1b3f2463201f40983ab4e837f46769e2021e1c45e9fe662d04f325d6115c051611660526116205161168052611640516116a0526004356116c052611580516116e05260a0611660a461160051611660526115c0516116805260406116206116a05e60806116605f5f5df35b604036611400377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611440525f611460526110ef565b6024358060a01c61547b57611400525f611420527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611440525f611460526110ef565b6024358060a01c61547b57611400526044358060a01c61547b57611420527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611440525f611460526110ef565b6024358060a01c61547b57611400526044358060a01c61547b5761142052606435611440525f611460526110ef565b6024358060a01c61547b57611400526044358060a01c61547b576114205260406064611440375b5f5c60011461547b5760015f5d6111076115c061358b565b6115c0610140816114805e50336040526101006060526114205160a05260016080526004356103e05260016103c0526101406114806106605e61114b6115e0613788565b6115e0516115c05261152051638d17f99161160052600435611620526020611600602461161c845afa611180573d5f5f3e3d5ffd5b3d602081183d602010021880611600016116201161547b57611600518060a01c61547b5761164052506116409050516115e0526115e0511561547b576115e0516040526111cb614e96565b5f61160052611420511561121757611420516370a082316116205230611640526020611620602461163c845afa611204573d5f5f3e3d5ffd5b60203d1061547b57611620905051611600525b6115e051638aadf9ac61162052306116405260806114006116605e803b1561547b575f61162060a461163c5f855af1611252573d5f5f3e3d5ffd5b505f61162052611420511561129f57611420516370a082316116405230611660526020611640602461165c845afa61128c573d5f5f3e3d5ffd5b60203d1061547b57611640905051611620525b611620516116005180820382811161547b5790509050611640526115c051156112f95761010061018052611420516101a052611640516101c052611540516101e05261150051610200526112f46116606140d8565b611660505b5f611660526116405115611350576115605163c660d11261168052611420516116a052611640516116c0526020611680604461169c845afa61133d573d5f5f3e3d5ffd5b60203d1061547b57611680905051611660525b7fb844f7639707ebf08f2462f58c73435b2178a64ff68a85ffc13e04c632d3177b336116805260406114006116a05e60406116406116e05e6114605161172052600435611740526115e051611760526115c05161178052610120611680a15f5f5d005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611480527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6114a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000006114c052627fffff6114e052606036611500376115f7565b60c435611480527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6114a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000006114c052627fffff6114e052606036611500376115f7565b604060c4611480377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000006114c052627fffff6114e052606036611500376115f7565b604060c461148037610104358060020b811861547b576114c052627fffff6114e052606036611500376115f7565b604060c461148037610104358060020b811861547b576114c052610124358060020b811861547b576114e052606036611500376115f7565b604060c461148037610104358060020b811861547b576114c052610124358060020b811861547b576114e0526101443561150052604036611520376115f7565b604060c461148037610104358060020b811861547b576114c052610124358060020b811861547b576114e0526040610144611500375f611540526115f7565b604060c461148037610104358060020b811861547b576114c052610124358060020b811861547b576114e0526060610144611500375b6024358060a01c61547b57611400526064358060a01c61547b57611420526084358060a01c61547b576114405260a4358060a01c61547b57611460525f5c60011461547b5760015f5d61164b6116a061358b565b6116a0610140816115605e50336040526040606052604061144060a05e60026080526004356103e05260016103c0526101406115606106605e61168f6116c0613788565b6116c0516116a05261160051638d17f9916116e0526004356117005260206116e060246116fc845afa6116c4573d5f5f3e3d5ffd5b3d602081183d6020100218806116e0016117001161547b576116e0518060a01c61547b5761172052506117209050516116c0526116c0511561547b576040366116e037611480511561180e576115a05163ea9129a861172052611440516117405261148051611760526001611780526101406115606117a05e60206117206101a461173c845afa611757573d5f5f3e3d5ffd5b60203d1061547b576117209050516116e0526114405163095ea7b36117205260406116c06117405e6020611720604461173c5f855af1611799573d5f5f3e3d5ffd5b3d6117b057803b1561547b576001611780526117da565b3d602081183d602010021880611720016117401161547b57611720518060011c61547b5761178052505b6117809050511561547b57611440516040526116605160605261160051608052611805611720614a98565b61172051611700525b604036611720376114a05115611923576115a05163ea9129a86117605261146051611780526114a0516117a05260016117c0526101406115606117e05e60206117606101a461177c845afa611865573d5f5f3e3d5ffd5b60203d1061547b57611760905051611720526114605163095ea7b3611760526116c05161178052611720516117a0526020611760604461177c5f855af16118ae573d5f5f3e3d5ffd5b3d6118c557803b1561547b5760016117c0526118ef565b3d602081183d602010021880611760016117801161547b57611760518060011c61547b576117c052505b6117c09050511561547b5761146051604052611660516060526116005160805261191a611760614a98565b61176051611740525b6114005115611936576044351515611938565b5f5b6117605261176051156119f3576114005163b88d4fde6117c0526080306117e0526116c051611800526044356118205280611840526010611780527f556e64657273636f7265457263373231000000000000000000000000000000006117a052611780816117e00160208251018083835e508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050803b1561547b575f6117c060c46117dc5f855af16119f1573d5f5f3e3d5ffd5b505b60e036611780376116c05163cd3758fc611860526044356118805260606114206118a05e60406114c06119005e6116e051611940526117205161196052611500516119805260406115206119a05e306119e05261164051611a005260e06118606101a461187c5f855af1611a69573d5f5f3e3d5ffd5b60e03d1061547b57611860905060e081611a205e5060e0611a206117805e6117605115611af3573061140051636352211e61186052604435611880526020611860602461187c845afa611abe573d5f5f3e3d5ffd5b3d602081183d602010021880611860016118801161547b57611860518060a01c61547b576118a052506118a09050511861547b575b6117005160405261166051606052611680516080526116005160a052611b17614e42565b6116e05115611bdf576114405163095ea7b3611860526116c051611880525f6118a0526020611860604461187c5f855af1611b54573d5f5f3e3d5ffd5b3d611b6b57803b1561547b5760016118c052611b95565b3d602081183d602010021880611860016118801161547b57611860518060011c61547b576118c052505b6118c09050511561547b576115a05163bfd30398611860526114405161188052611600516118a052803b1561547b575f611860604461187c5f855af1611bdd573d5f5f3e3d5ffd5b505b6117405160405261166051606052611680516080526116005160a052611c03614e42565b6117205115611ccb576114605163095ea7b3611860526116c051611880525f6118a0526020611860604461187c5f855af1611c40573d5f5f3e3d5ffd5b3d611c5757803b1561547b5760016118c052611c81565b3d602081183d602010021880611860016118801161547b57611860518060011c61547b576118c052505b6118c09050511561547b576115a05163bfd30398611860526114605161188052611600516118a052803b1561547b575f611860604461187c5f855af1611cc9573d5f5f3e3d5ffd5b505b6114605161144051337fb930ea1ccc3205bd36659f9e9de95d337fca92f98dd2ba99ac71e18f552c2dfe60406117a06118605e611780516118a052611420516118c05260806117e06118e05e600435611960526116c051611980526116a0516119a052610160611860a460806117806118605e611840516118e05260a06118605f5f5df35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611480526040366114a037611daf565b60c435611480526040366114a037611daf565b604060c4611480375f6114c052611daf565b606060c4611480375b6024358060a01c61547b57611400526064358060a01c61547b57611420526084358060a01c61547b576114405260a4358060a01c61547b57611460525f5c60011461547b5760015f5d611e0361162061358b565b611620610140816114e05e50336040526080606052604061144060a05e60026080526004356103e05260016103c0526101406114e06106605e611e47611640613788565b611640516116205261158051638d17f99161166052600435611680526020611660602461167c845afa611e7c573d5f5f3e3d5ffd5b3d602081183d602010021880611660016116801161547b57611660518060a01c61547b576116a052506116a090505161164052611640511561547b575f6116605261148051611680526114005115611ed8576044351515611eda565b5f5b6116a0526116a0516120205761164051632abd8a266116c052611420516116e05260206116c060246116dc845afa611f14573d5f5f3e3d5ffd5b3d602081183d6020100218806116c0016116e01161547b576116c0518060a01c61547b576117005250611700905051611660526115205163ea9129a86116c05260406116606116e05e5f611720526101406114e06117405e60206116c06101a46116dc845afa611f86573d5f5f3e3d5ffd5b60203d1061547b576116c0905051611680526116605163095ea7b36116c052611640516116e052611680516117005260206116c060446116dc5f855af1611fcf573d5f5f3e3d5ffd5b3d611fe657803b1561547b57600161172052612010565b3d602081183d6020100218806116c0016116e01161547b576116c0518060011c61547b5761172052505b6117209050511561547b576120ce565b6114005163b88d4fde6117005260803061172052611640516117405260443561176052806117805260106116c0527f556e64657273636f7265457263373231000000000000000000000000000000006116e0526116c0816117200160208251018083835e508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050803b1561547b575f61170060c461171c5f855af16120cc573d5f5f3e3d5ffd5b505b60c0366116c037611640516304c388ae611780526044356117a05260606114206117c05e60406116606118205e60406114a06118605e306118a0526115c0516118c05260c061178061014461179c5f855af161212c573d5f5f3e3d5ffd5b3d60c081183d60c010021880611780016118401161547b5760a06117806118e05e611820518060011c61547b5761198052506118e0905060c0816119a05e5060c06119a06116c05e6116a051612201576116605163095ea7b361178052611640516117a0525f6117c0526020611780604461179c5f855af16121b0573d5f5f3e3d5ffd5b3d6121c757803b1561547b5760016117e0526121f1565b3d602081183d602010021880611780016117a01161547b57611780518060011c61547b576117e052505b6117e09050511561547b5761226c565b6117605161226c573061140051636352211e611780526044356117a0526020611780602461179c845afa612237573d5f5f3e3d5ffd5b3d602081183d602010021880611780016117a01161547b57611780518060a01c61547b576117c052506117c09050511861547b575b6115205163e5b655c161178052611440516117a0526116c0516117c052611580516117e052803b1561547b575f611780606461179c5f855af16122b1573d5f5f3e3d5ffd5b506115205163e5b655c161178052611460516117a0526116e0516117c052611580516117e052803b1561547b575f611780606461179c5f855af16122f7573d5f5f3e3d5ffd5b506116605161144051337fee40b88e54423d383437a0357b260498813431d7bf9028bc409a57601beebda461146051611780526116c0516117a05260406116e06117c05e611760516118005261172051611820526117405161184052600435611860526116405161188052611620516118a052610140611780a460606116c06117805e611760516117e05260806117805f5f5df35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611420525f611440526123e3565b602435611420525f611440526123e3565b602435611420526044358060a01c61547b57611440525b6004358060a01c61547b57611400525f5c60011461547b5760015f5d61240a6115a061358b565b6115a0610140816114605e503360405260086060526114405160a05260016080525f6103c0526101406114606106605e6124456115c0613788565b6115c0516115a0526040336101405260606114006101605e6115a0516101c0526101406114606101e05e61247a6115c0615180565b6115c05f5f5df35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61140052604036611420376124f0565b60043561140052604036611420376124f0565b60406004611400375f611440526124f0565b60406004611400376044358060a01c61547b57611440525b5f5c60011461547b5760015f5d6125086115a061358b565b6115a0610140816114605e506003546115a0523360405260206060526115a05160a0526001608052611420516103e05260016103c0526101406114606106605e6125536115e0613788565b6115e0516115c0526114005147808281188284100218905090506115e0526115e0511561547b576115a05163d0e30db061160052803b1561547b575f611600600461161c6115e051855af16125aa573d5f5f3e3d5ffd5b506115a051337f93088916ff0b243ede1aca19bfd9feb765df7b0f57c32e8230fa29d9abc520526115e0516116005234611620526115c051611640526060611600a3604036611600376114205115612652575f6116405233604052611420516060526115a0516080526114405160a0526115e05160c0526115c05160e0526101406114606101005e61263d611660613b6b565b6116606080816116e05e5060806116e06115e05e5b60606115e06116405e60606116405f5f5df35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611400526060366114203761271f565b600435611400526060366114203761271f565b600435611400526024358060a01c61547b57611420526040366114403761271f565b600435611400526024358060a01c61547b5761142052604435611440525f6114605261271f565b600435611400526024358060a01c61547b5761142052604435611440526064358060a01c61547b57611460525b5f5c60011461547b5760015f5d6127376115c061358b565b6115c0610140816114805e506003546115c0523360405260206060526115c05160a0526001608052611440516103e05260016103c0526101406114806106605e612782611600613788565b611600516115e05261140051611600525f611620526114405115612811575f61164052336103e05261144051610400526115c05161042052611460516104405261140051610460526115e0516104805260016104a0526101406114806104c05e6127ed61166061447d565b6116606060816116c05e506116c051611600526116e0516116405261170051611620525b611600516115c0516370a082316116405230611660526020611640602461165c845afa612840573d5f5f3e3d5ffd5b60203d1061547b576116409050518082811882841002189050905061160052611600511561547b576115c051632e1a7d4d611640526116005161166052803b1561547b575f611640602461165c5f855af161289d573d5f5f3e3d5ffd5b506115c051337fd8f7e4982d427cf42e788460cd37c9da22b60982814e4c4768373cc933572ed061160051611640526115e051611660526040611640a3611420511561292f573361014052611420516101605261160051610180525f6101a0526115e0516101c0526101406114806101e05e61291a611640615180565b6116406040816116805e5060406116806116005e5b60206116005f5f5df35b61294461094061358b565b610940610140816108005e503361088051811861296257600161297b565b61080051811861297357600161297b565b610840518118155b90501561547b5761090051612991576001612997565b61092051155b156129ab575f610940526020610940612ec8565b6109205161277481028161277482041861547b57905061271081049050610940525f61096052610900516370a082316109a052306109c05260206109a060246109bc845afa6129fc573d5f5f3e3d5ffd5b60203d1061547b576109a0905051610980526109805115612ae8576109805161094051808281188284100218905090506109a0526109005163a9059cbb6109c052610880516109e0526109a051610a005260206109c060446109dc5f855af1612a67573d5f5f3e3d5ffd5b3d612a7e57803b1561547b576001610a2052612aa8565b3d602081183d6020100218806109c0016109e01161547b576109c0518060011c61547b57610a2052505b610a209050511561547b57610960516109a05180820182811061547b579050905061096052610940516109a05180820382811161547b5790509050610940525b61094051612b005760016109a05260206109a0612ec8565b6108a05163d0ae835f61114052306111605261090051611180526107c0611140604461115c845afa612b34573d5f5f3e3d5ffd5b3d6107c081183d6107c010021880611140016111601161547b5761114061114051611140011061547b5761114051611140018161114001815160061b60200182011161547b57601e81511161547b5780515f81601e811161547b578015612bd957905b8060061b60208501018561114001604082011161547b578160061b611940018151815260208201518060a01c61547b5760208201525050600101818118612b97575b505080611920525050506119209050805160208160061b0180836109a05e5050505f6109a051601e811161547b578015612e2957905b8060061b6109c0016040816111405e5060603661118037610880516103e0526111405161040052610900516104205261116051610440527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61046052604036610480376101406108006104c05e612c876111e061447d565b6111e06060816112405e5060606112406111805e6111805161094051808281188284100218905090506111e0526109005163a9059cbb6112005261088051611220526111e051611240526020611200604461121c5f855af1612ceb573d5f5f3e3d5ffd5b3d612d0257803b1561547b57600161126052612d2c565b3d602081183d602010021880611200016112201161547b57611200518060011c61547b5761126052505b6112609050511561547b57610960516111e05180820182811061547b579050905061096052610940516111e05180820382811161547b57905090506109405261094051612e1e57611180516111e05180820382811161547b5790509050610900516370a082316112205230611240526020611220602461123c845afa612db4573d5f5f3e3d5ffd5b60203d1061547b5761122090505180828118828410021890509050611200526112005115612e29573360405261114051606052610900516080526111605160a0526112005160c0525f60e0526101406108006101005e612e15611220613b6b565b61122050612e29565b600101818118612c0f575b505061096051612e42575f611140526020611140612ec8565b6109205161092051610960518082811882841002189050905080820382811161547b5790509050611140526111405160025561114051612e81575f6001555b610900517fbc921739bde608c7f63d3072199c8f7f07ac6ab6b937dab79c3794f884516ee0610960516111605261114051611180526040611160a260016111605260206111605bf35b6004358060a01c61547b576040525f54638da5cb5b608052602060806004609c845afa612ef9573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a01161547b576080518060a01c61547b5760c0525060c0905051606052606051331861547b5730604051636352211e60805260243560a052602060806024609c845afa612f58573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a01161547b576080518060a01c61547b5760c0525060c090505114612f94575f60e052602060e061300a565b6040516342842e0e6080523060a05260605160c05260243560e052803b1561547b575f60806064609c5f855af1612fcd573d5f5f3e3d5ffd5b506060516040517f0af21393107d6ec0eeca14d8e419032a9ad62fed0faf704aeff33667f6803a0f60243560805260206080a36001608052602060805bf35b6004358060a01c61547b5761026052602435600401602881351161547b5780355f816028811161547b57801561306457905b8060051b6020850101358060a01c61547b578160051b6102a0015260010181811861303e575b505080610280525050604435600401601481351161547b5780355f816014811161547b5780156130b657905b8060051b6020850101358060a01c61547b578160051b6107c00152600101818118613090575b5050806107a05250506130ca610b8061358b565b610b8061014081610a405e50610a8051331861547b57610ac0516342af624e610b805261026051610ba0526020610b806024610b9c845afa61310e573d5f5f3e3d5ffd5b3d602081183d602010021880610b8001610ba01161547b57610b80518060011c61547b57610bc05250610bc09050511561547b574715613159575f5f5f5f47610260515ff11561547b575b5f610b80525f6110a0525f610280516028811161547b57801561330d57905b8060051b6102a001516115c0526115c05115613302576115c0516370a082316116005230611620526020611600602461161c845afa6131b9573d5f5f3e3d5ffd5b60203d1061547b576116009050516115e0526115e05115613302576115c05163a9059cbb6116005261026051611620526115e051611640526020611600604461161c5f855af161320b573d5f5f3e3d5ffd5b3d61322257803b1561547b5760016116605261324c565b3d602081183d602010021880611600016116201161547b57611600518060011c61547b5761166052505b6116609050511561547b57610a805163338c4ccb611600526115c051611620526020611600602461161c845afa613285573d5f5f3e3d5ffd5b3d602081183d602010021880611600016116201161547b57611600518060011c61547b5761164052506116409050516132df57610b80516027811161547b576115c0518160051b610ba0015260018101610b805250613302565b6110a0516027811161547b576115c0518160051b6110c00152600181016110a052505b600101818118613178575b50506102605163d34ddc056115e05260206115e060046115fc845afa613335573d5f5f3e3d5ffd5b3d602081183d6020100218806115e0016116001161547b576115e0518060a01c61547b5761162052506116209050516115c0526115c051636b4186c86115e0526060806116005280611600015f6107a0518083528060051b5f826014811161547b5780156133bd57905b8060051b6107c001518160051b60208801015260010181811861339f575b50508201602001915050905081019050806116205280611600015f610b80518083528060051b5f826028811161547b57801561341357905b8060051b610ba001518160051b6020880101526001018181186133f5575b50508201602001915050905081019050806116405280611600015f6110a0518083528060051b5f826028811161547b57801561346957905b8060051b6110c001518160051b60208801015260010181811861344b575b5050820160200191505090508101505060206115e0610d446115fc5f855af1613494573d5f5f3e3d5ffd5b3d602081183d6020100218806115e0016116001161547b576115e0518060011c61547b5761234052506123409050511561547b576110a0511561353f575f6110a0516028811161547b57801561353c57905b8060051b6110c001516115e052610a805163bfd30398611600526115e05161162052610ae05161164052803b1561547b575f611600604461161c5f855af1613530573d5f5f3e3d5ffd5b506001018181186134e6575b50505b60016115e05260206115e0f35b5f5460405260206040f35b60015460405260206040f35b60025460405260206040f35b60035460405260206040f35b602061563d60403960206040f35b005b602061563d6040395f54606052606051638da5cb5b608052602060806004609c845afa6135ba573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a01161547b576080518060a01c61547b5760c0525060c09050518152306020820152606051604082015260405160608201526040516347be091a60e052600161010052602060e0602460fc845afa613624573d5f5f3e3d5ffd5b3d602081183d60201002188060e0016101001161547b5760e0518060a01c61547b57610120525061012090505160808201526040516347be091a610140526002610160526020610140602461015c845afa613681573d5f5f3e3d5ffd5b3d602081183d602010021880610140016101601161547b57610140518060a01c61547b57610180525061018090505160a08201526040516347be091a6101a05260036101c05260206101a060246101bc845afa6136e0573d5f5f3e3d5ffd5b3d602081183d6020100218806101a0016101c01161547b576101a0518060a01c61547b576101e052506101e090505160c08201526040516347be091a610200526004610220526020610200602461021c845afa61373f573d5f5f3e3d5ffd5b3d602081183d602010021880610200016102201161547b57610200518060a01c61547b57610240525061024090505160e082015260015461010082015260025461012082015250565b6040516107a05261066051604051186137a1575f6107a0525b6107a0511561380c576106e051637879735a6107c0526107a0516107e05260206107c060246107dc845afa6137d8573d5f5f3e3d5ffd5b3d602081183d6020100218806107c0016107e01161547b576107c0518060011c61547b57610800525061080090505161547b575b610180366107c0376106a0516370e90023610940526101c06107a0516109605260605161098052806109a05280610960015f6080518083528060051b5f826019811161547b57801561387757905b8060051b60a001518160051b60208801015260010181811861385a575b50508201602001915050905081019050806109c05280610960015f6103c0518083528060051b5f826014811161547b5780156138cd57905b8060051b6103e001518160051b6020880101526001018181186138af575b505082016020019150509050810190506101406106606109e05e506101806109406107a461095c5f855af1613904573d5f5f3e3d5ffd5b3d61018081183d6101801002188061094001610ac01161547b578061094001610a001161547b57610940518060a01c61547b5761110052610960518060a01c61547b576111205260606109806111405e6109e0518060011c61547b576111a0528061094001610ac01161547b57610a00518060a01c61547b576111c052610a20518060a01c61547b576111e0526060610a406112005e610aa0518060011c61547b5761126052506111009050610180816112805e5060c06112806107c05e60c06113406108805e6108005115613a95576107e05163a9059cbb610940526107c0516109605261080051610980526020610940604461095c5f855af1613a0b573d5f5f3e3d5ffd5b3d613a2257803b1561547b5760016109a052613a4c565b3d602081183d602010021880610940016109601161547b57610940518060011c61547b576109a052505b6109a09050511561547b576107e0516107c0517f9047fce5f1af4e160b4559628c5598b14a71dc1682de7a05d4b41fe9cca0e7f360606108006109405e5f6109a0526080610940a35b6108c05115613b60576108a05163a9059cbb6109405261088051610960526108c051610980526020610940604461095c5f855af1613ad5573d5f5f3e3d5ffd5b3d613aec57803b1561547b5760016109a052613b16565b3d602081183d602010021880610940016109601161547b57610940518060011c61547b576109a052505b6109a09050511561547b576108a0516107a0517f9047fce5f1af4e160b4559628c5598b14a71dc1682de7a05d4b41fe9cca0e7f360606108c06109405e60016109a0526080610940a35b6107a0511515815250565b6101a051638d17f99161026052606051610280526020610260602461027c845afa613b98573d5f5f3e3d5ffd5b3d602081183d602010021880610260016102801161547b57610260518060a01c61547b576102a052506102a090505161024052610240511561547b576101405163ea9129a8610280526080516102a05260c0516102c0525f6102e0526101406101006103005e60206102806101a461029c845afa613c18573d5f5f3e3d5ffd5b60203d1061547b576102809050516102605260805163095ea7b36102805260406102406102a05e6020610280604461029c5f855af1613c59573d5f5f3e3d5ffd5b3d613c7057803b1561547b5760016102e052613c9a565b3d602081183d602010021880610280016102a01161547b57610280518060011c61547b576102e052505b6102e09050511561547b5760a03661028037610240516314f5c51c6103205260805161034052610260516103605260a05161038052306103a05260a0610320608461033c5f855af1613cee573d5f5f3e3d5ffd5b3d60a081183d60a010021880610320016103c01161547b57610320516103e052610340518060a01c61547b576104005260606103606104205e506103e0905060a0816104805e5060a06104806102805e60805163095ea7b36103205261024051610340525f610360526020610320604461033c5f855af1613d71573d5f5f3e3d5ffd5b3d613d8857803b1561547b57600161038052613db2565b3d602081183d602010021880610320016103401161547b57610320518060011c61547b5761038052505b6103809050511561547b576101405163dc770b4761032052608051610340526102a051610360526102c05161038052610280516103a0526101a0516103c052803b1561547b575f61032060a461033c5f855af1613e11573d5f5f3e3d5ffd5b506102a0516080516040517f2e8f3e88ea1d73710e5a712b87620f268ab61ae10ed457537086a625793ca7a761028051610320526102c0516103405260406102e06103605e6060516103a052610240516103c05260e0516103e05260e0610320a46102805181526102a05160208201526102c051604082015261030051606082015250565b60405115613ea957604051815250613fa6565b5f54638a44ec43608052602060806004609c845afa613eca573d5f5f3e3d5ffd5b3d602081183d60201002188060800160a01161547b576080518060a01c61547b5760c0525060c0905051606052606051613f07575f815250613fa6565b60605163d34ddc0560a052602060a0600460bc845afa613f29573d5f5f3e3d5ffd5b3d602081183d60201002188060a00160c01161547b5760a0518060a01c61547b5760e0525060e0905051608052608051631a3b730c60a052602060a0600460bc845afa613f78573d5f5f3e3d5ffd5b3d602081183d60201002188060a00160c01161547b5760a0518060a01c61547b5760e0525060e09050518152505b565b60a051613fb8575f8152506140d6565b60805161271081811861271083100218905060c05260605160c05180820281158383830414171561547b5790509050612710810490506040516370a082316101005230610120526020610100602461011c845afa614018573d5f5f3e3d5ffd5b60203d1061547b576101009050518082811882841002189050905060e05260e051156140bf5760405163a9059cbb6101005260a0516101205260e051610140526020610100604461011c5f855af1614072573d5f5f3e3d5ffd5b3d61408957803b1561547b576001610160526140b3565b3d602081183d602010021880610100016101201161547b57610100518060011c61547b5761016052505b6101609050511561547b575b60605160e051808281188284100218905090508152505b565b6101c0516140e75760016140ed565b6101a051155b156140fb575f81525061447b565b5f6102205260026101805118614190575f60405261411a610240613e96565b61024051610220526102005163c169d3346102405261022051610260526101a051610280526101c0516102a0526020610240606461025c5f855af1614161573d5f5f3e3d5ffd5b3d602081183d602010021880610240016102601161547b57610240518060011c61547b576102c052506102c050505b606036610240376101e051638714f7376102a052306102c052610180516102e05260606102a060446102bc845afa6141ca573d5f5f3e3d5ffd5b3d606081183d6060100218806102a0016103001161547b576102a051610320526102c0518060a01c61547b57610340526102e051610360525061032090506060816103805e5060606103806102405e6102405161422857600161422e565b61026051155b1561423c575f81525061447b565b610240516127108181186127108310021890506102a0526101c0516102a05180820281158383830414171561547b5790509050612710810490506101a0516370a082316102e052306103005260206102e060246102fc845afa6142a1573d5f5f3e3d5ffd5b60203d1061547b576102e0905051808281188284100218905090506102c0526102c0516142d1575f81525061447b565b6102c0516102e0525f61030052610280511561439a57610220516040526142f9610320613e96565b61032051610220526101a0516040526102e051606052610280516080526102205160a052614328610320613fa8565b6103205161030052610300511561439a576102e0516103005180820382811161547b57905090506101a0516370a082316103205230610340526020610320602461033c845afa61437a573d5f5f3e3d5ffd5b60203d1061547b57610320905051808281188284100218905090506102e0525b6102e05115614427576101a05163a9059cbb6103205261026051610340526102e051610360526020610320604461033c5f855af16143da573d5f5f3e3d5ffd5b3d6143f157803b1561547b5760016103805261441b565b3d602081183d602010021880610320016103401161547b57610320518060011c61547b5761038052505b6103809050511561547b575b61022051610260516101a0517f30cff72ae6ba42be1c2110417162efea35a1841a2b8b3b557090b2291e8ec46960406102e06103205e610240516103605261018051610380526080610320a46102c0518152505b565b61056051638d17f9916106205261040051610640526020610620602461063c845afa6144ab573d5f5f3e3d5ffd5b3d602081183d602010021880610620016106401161547b57610620518060a01c61547b57610660525061066090505161060052610600511561547b57610460516106205261044051156145ea576105005163ea9129a86106405260406104406106605e5f6106a0526101406104c06106c05e60206106406101a461065c845afa614537573d5f5f3e3d5ffd5b60203d1061547b57610640905051610620526104405163095ea7b36106405261060051610660527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610680526020610640604461065c5f855af161459d573d5f5f3e3d5ffd5b3d6145b457803b1561547b5760016106a0526145de565b3d602081183d602010021880610640016106601161547b57610640518060011c61547b576106a052505b6106a09050511561547b575b610620511561547b57608036610640376106005163c797bfe76106c052610420516106e05261062051610700526104405161072052306107405260806106c060846106dc5f855af161463e573d5f5f3e3d5ffd5b60803d1061547b576106c090506080816107605e5060806107606106405e61044051156146e6576104405163095ea7b36106c052610600516106e0525f6107005260206106c060446106dc5f855af1614699573d5f5f3e3d5ffd5b3d6146b057803b1561547b576001610720526146da565b3d602081183d6020100218806106c0016106e01161547b576106c0518060011c61547b5761072052505b6107209050511561547b575b6105005163bf550b726106e0526104405161070052610660516107205261042051610740526106405161076052610560516107805260206106e060a46106fc5f855af1614735573d5f5f3e3d5ffd5b60203d1061547b576106e09050516106c0526104a051614755575f61475c565b6106c05115155b156147b557600261018052610420516101a0526106c0516101c052610580516101e05261054051610200526147926107006140d8565b610700516106e052610640516106e05180820382811161547b5790509050610640525b61044051610420516103e0517f8882138b3c09c1b942bf9621d166e8710842561028fd55d326c3109031035cd460806106406106e05e61040051610760526106005161078052610480516107a05260e06106e0a46106405181526106605160208201526106a051604082015250565b6101c06060511561547b575f02608001606081019050805160208160051b018083610a805e505050610a8051610b40526002610b40511061547b57610a80511561547b575f60051b610aa00151610b60525f610b80526001604051186148b157610b40516001810381811161547b579050610a805181101561547b5760051b610aa00151610b8052614926565b6101c06040516001810381811161547b57905060605181101561547b5702608001606081019050805160208160051b018083610ba05e505050610ba051610c60526002610c60511061547b57610c60516001810381811161547b579050610ba05181101561547b5760051b610bc00151610b80525b610b60511561493a57610b8051151561493c565b5f5b1561547b575f610ba0525f6040516005811161547b5780156149f757905b80610e40526101c0610e405160605181101561547b570260800151610e6052610e60516001610e80525f610ba0516014811161547b5780156149bc57905b8060051b610bc0015183186149b1575f610e80526149bc565b600101818118614998575b5050610e80519050156149ec57610ba0516013811161547b57610e60518160051b610bc0015260018101610ba052505b60010181811861495a575b50506109805163ea9129a8610e6052610b6051610e80526101c06060511561547b575f0260800160208101905051610ea0526001610ec052610140610940610ee05e6020610e606101a4610e7c845afa614a53573d5f5f3e3d5ffd5b60203d1061547b57610e60905051610e4052610b60518152610b80516020820152610e40516040820152610ba05160208160051b016060830181610ba0825e50505050565b606051614aa6576001614aaf565b60605160405118155b15614abd575f815250614b17565b60805163e8689daa60a05260405160c052602060a0602460bc845afa614ae5573d5f5f3e3d5ffd5b3d602081183d60201002188060a00160c01161547b5760a0518060a01c61547b5760e0525060e0905051606051148152505b565b61024051638d17f9916102a0526040516102c05260206102a060246102bc845afa614b46573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c01161547b576102a0518060a01c61547b576102e052506102e090505161028052610280511561547b5760a0511561547b575f60051b60c001516102a05260a0516001810381811161547b57905060a05181101561547b5760051b60c001516102c0526102a05163095ea7b36102e05261028051610300526060516103205260206102e060446102fc5f855af1614bf1573d5f5f3e3d5ffd5b3d614c0857803b1561547b57600161034052614c32565b3d602081183d6020100218806102e0016103001161547b576102e0518060011c61547b5761034052505b6103409050511561547b576080366102e037610280516332f4bdc76103605260c0604060606103805e806103c05280610380015f60a0518083528060051b5f826005811161547b578015614c9f57905b8060051b60c001518160051b602088010152600101818118614c82575b50508201602001915050905081019050806103e05280610380015f610160518083528060051b5f826004811161547b578015614cf557905b8060051b61018001518160051b602088010152600101818118614cd7575b505082016020019150509050810190503061040052610260516104205250608061036061022461037c5f855af1614d2e573d5f5f3e3d5ffd5b60803d1061547b5761036090506080816105a05e5060806105a06102e05e6102a05163095ea7b36103605261028051610380525f6103a0526020610360604461037c5f855af1614d80573d5f5f3e3d5ffd5b3d614d9757803b1561547b5760016103c052614dc1565b3d602081183d602010021880610360016103801161547b57610360518060011c61547b576103c052505b6103c09050511561547b576102c0516102a051610200517fbcf0e7662cefa3f26cb474b68dc59df82105e36fb586c9d9c0d105c605b0618f60806102e06103605e60a0516103e0526040516104005261028051610420526102205161044052610100610360a46102c051815261030051602082015261034051604082015250565b60405115614e945760a051635f03f86d60e052306101005260605161012052602060e0604460fc845afa614e78573d5f5f3e3d5ffd5b60203d1061547b5760e090505160c05260805160c0511061547b575b565b6040366060375f60e052604051632f7ab0da61010052306101205260c0610100602461011c845afa614eca573d5f5f3e3d5ffd5b3d60c081183d60c010021880610100016101601161547b57610100518060a01c61547b576101e05261010061012051610100011061547b57610120516101000180518261010001825160200183011161547b576040811161547b5750602081510180826102005e50506101405161026052506101e0905060a0816102805e506102805160605260206102a05101806102a060805e506103005160e0526060511561517e5760805160a020610120526101208051610160526004610140526101409050805160200360031b6020820151811c811b905090506101005260403661012037600160e05118615038576060515a5f61010051816101a00152600481019050604051816101a00152602081019050806101805261018050506020610220610180516101a05f8686f190509050610240523d602081183d602010021861020052610200602081510180826102605e5050610240516101205260206102605101806102606101405e50615174565b600260e051186150d1576060515a5f61010051816101a0015260048101905030816101a00152602081019050604051816101a00152602081019050806101805261018050506020610240610180516101a05f8686f190509050610260523d602081183d602010021861022052610220602081510180826102805e5050610260516101205260206102805101806102806101405e50615174565b600360e05118615174576060515a5f61010051816101a0015260048101905030816101a00152602081019050604051816101a001526020810190506001816101a00152602081019050806101805261018050506020610260610180516101a05f8686f190509050610280523d602081183d602010021861024052610240602081510180826102a05e5050610280516101205260206102a05101806102a06101405e505b610120511561547b575b565b604036610320376101e05161016051146151f7576102205163cd69d33b6103605261016051610380526020610360602461037c845afa6151c2573d5f5f3e3d5ffd5b3d602081183d602010021880610360016103801161547b57610360518060011c61547b576103a052506103a09050511561547b575b6101a0516152765761018051478082811882841002189050905061032052610320511561547b575f5f5f5f61032051610160515ff11561547b576102c051634d02fef76103605261032051610380526020610360602461037c845afa61525f573d5f5f3e3d5ffd5b60203d1061547b5761036090505161034052615425565b6101a0516040526102e05160605261028051608052615296610380614a98565b61038051610360526102205163ea9129a8610380526101a0516103a052610180516103c05260016103e0526101406101e06104005e60206103806101a461039c845afa6152e5573d5f5f3e3d5ffd5b60203d1061547b57610380905051610320526101a05163a9059cbb61038052610160516103a052610320516103c0526020610380604461039c5f855af161532e573d5f5f3e3d5ffd5b3d61534557803b1561547b5760016103e05261536f565b3d602081183d602010021880610380016103a01161547b57610380518060011c61547b576103e052505b6103e09050511561547b576102c05163c660d112610380526101a0516103a052610320516103c0526020610380604461039c845afa6153b0573d5f5f3e3d5ffd5b60203d1061547b5761038090505161034052610360516040526102e051606052610300516080526102805160a0526153e6614e42565b6102205163bfd30398610380526101a0516103a052610280516103c052803b1561547b575f610380604461039c5f855af1615423573d5f5f3e3d5ffd5b505b6101a05161016051610140517fd2fef9f06baee5541b212dbad8a9f12ae76de8cbe0777c3f24ca4e94d3da63b360406103206103605e6101c0516103a0526060610360a461032051815261034051602082015250565b5f80fd01f8549d09006755650824e155a50b0471552508007754e508008655fd087576e14a26cb00659949f0c82482000478dccc9226f2008555e667e6143600e5150b7a02006400856c19a8c2158201854eb0d10e150a01457d5aa5f4356f0005640da73e104c00650c93499c13b300c5389ed34a1d9401057918e71e10990085aa73266e24b3002418b67a3626960025a3f159c010c800a552794c70026d00652582941000ca00050a21fe0f01340005e39ff19f238c00251b40cc3b1d8100e53340f99b1da60125d34ddc05354c000552f96b152eca0045caf5ef1926650005c407e2d501ac0085ed98efff300c0065871408f324c60044e993905f26a900457e2b41b515c101a5990dc9db23bb0045dcb6b42524d80064bfd53eab018200657494760905100025b4eccdce0bc100450c28d13e09e300651c69c0e202970085f8506e561d5000c54b3fd14809aa0045cb44a1b035630005372c9faa036200a5c5ebeaec097b00250da7689015420165f137844e038c00c519e64f5823cc00656c7b69cb100900450962ef790fd300259bb8974f149b0105d137a2890beb0065e0bfdbeb29390005978fae1714dc012594b51d37357b000586bdfcc93557000585582036875a4312171e5448643193da4235ac19bade0f9911802dc6f0eb5baca7196e19563d87181e1848184018401840185818401820a1657679706572830004010044000000000000000000000000f93058c1d5bd8af2fdc1851eff358688428cdca80000000000000000000000007bcd6d471d1a068012a79347c7a944d1df01a1ae0000000000000000000000004200000000000000000000000000000000000006000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000000000000000000000000000000000000000989680