Contract 0x2fb6ebbca683a14e7baad171dbc4b637444a4675

Contract Overview

Balance:
0.‍0350550915 AVAX

AVAX Value:
$0.97 (@ $27.61/AVAX)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe40053976f63d642a9870cf4b020f6977d591402699e4a8832999a6b1f87a163Release Influ177417592022-07-24 11:20:5322 days 19 hrs ago0xde2edeccabf55f18cf69c92b6fedff463895fc20 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍00224445 26
0x045f7724448045cb80656e4b81ccf984968560a9fd30ff2aee3a40c6d67fa74dAdd Influ163745092022-06-22 15:40:2454 days 15 hrs ago0x64761372be8fc41a45d6bf6b9098a9f11bbecfbd IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍006164574 26
0x5ad98038fec2e007423970ada26207598571d94a1ef22e44dbd5c397afecf0f2Release Influ161782022022-06-18 3:03:3259 days 4 hrs ago0x82a5d2e60dfb8c5ab6b3633ce831ea743b633ba2 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002129114 26
0xbba646e086c3ac25cdccaec3ea7f6fa10a3841edb947044bf301a0fb5c4cabefRelease Influ161737522022-06-18 0:35:3759 days 6 hrs ago0xadb97470f5b8794cb2a702e1110d5abaf1f82a59 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002575274 26
0x96d068e4e42f3ca39b679a94044f4a89e572761757f7c545d55728278377ed8dRelease Influ161705782022-06-17 22:49:0959 days 8 hrs ago0xdd381c2d4379bf52a579886c09edda7177e289ce IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0x50283528a6b5c5b878dd03785748dc0b456fcce1c68af9ef0b61cff0c4081963Release Influ161696682022-06-17 22:18:4659 days 8 hrs ago0xdd381c2d4379bf52a579886c09edda7177e289ce IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0x24215a32dc03d8c6a911d3bccb8d65321c388815a21d06a3270f7b387a2aee1dRelease Influ161654972022-06-17 19:59:2059 days 11 hrs ago0xdd381c2d4379bf52a579886c09edda7177e289ce IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002128802 26
0x0415fa5e40b2974040625bb23a0eff72f61033ce980ffff13fbf30658f5e76b3Release Influ161653232022-06-17 19:53:3759 days 11 hrs ago0x2e76dba28465d07005e68c22ab9d7ca831096d50 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0xe413ebb8b7dacaf595b7e678360f8e9be095f53d8f303c9da0c418a01e128e05Release Influ161645032022-06-17 19:26:1759 days 11 hrs ago0x253197dad535199ae84ce9f51a36643cda554f44 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0xef48e0860a70ad1ff24245c730aee0466ebc084ae29a34430031b966f10c7dbeRelease Influ161616342022-06-17 17:50:3259 days 13 hrs ago0x2e76dba28465d07005e68c22ab9d7ca831096d50 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0xb9f7d5d8f41bca8d06bc08eef9bedc2933e942f00b2f65b3ef1c6d05a3f85d37Release Influ161590862022-06-17 16:25:5159 days 14 hrs ago0xadb97470f5b8794cb2a702e1110d5abaf1f82a59 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002575274 26
0xaf7e877e00e642566621814df774a06ff81c6fac03fa95153dccdad336f35843Release Influ161542912022-06-17 13:46:1059 days 17 hrs ago0x2e76dba28465d07005e68c22ab9d7ca831096d50 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002128802 26
0xc4325d6e30d47bf5b4f9833edceed8e60053a2b1dc258b5a93d7ef41bf528e19Release Influ161530992022-06-17 13:07:0859 days 18 hrs ago0x2e76dba28465d07005e68c22ab9d7ca831096d50 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍000695318 26
0x984c08cacae7857bdb8fafde82dd8f797058038cc5af63af0b09b36a32ffa52fRelease Influ161530962022-06-17 13:07:0259 days 18 hrs ago0x2e76dba28465d07005e68c22ab9d7ca831096d50 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍000695318 26
0x9404b98b27202721dfffbabc257d68a3964c5b636aa26fbbd725ed8b6cd9a961Release Influ161530942022-06-17 13:06:5859 days 18 hrs ago0x2e76dba28465d07005e68c22ab9d7ca831096d50 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0xb008822040357b5f1d8aea3a10792d23d5b93d9bc46611d12840167530feada3Release Influ161418202022-06-17 6:51:0260 days 21 mins ago0x253197dad535199ae84ce9f51a36643cda554f44 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002128802 26
0x8a65813d1d436fa95030eaa3ffe3f24667f63746d9afe7bce8533602fe04e2a2Release Influ161263872022-06-16 22:19:3360 days 8 hrs ago0x19d2d592ef251b1a79cf7b2bfda14e8dc62f2aea IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002709902181 33.‍09723343
0x555c77743aaab68fe6e9d04364a5cabfb03fe8b9243e5791adbbbd337a41bf40Release Influ161235392022-06-16 20:45:0160 days 10 hrs ago0x253197dad535199ae84ce9f51a36643cda554f44 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0xbf5ed01774e69e9869bc7295a67760b460cd9731578eb9d820d58cf36f1ee517Release Influ161170972022-06-16 17:11:0460 days 14 hrs ago0x253197dad535199ae84ce9f51a36643cda554f44 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002128802 26
0x557e3d5cd6c1f37f26b02495bcb36adb5e6e3a327151024b763a084803328504Release Influ160993672022-06-16 7:27:5160 days 23 hrs ago0x82a5d2e60dfb8c5ab6b3633ce831ea743b633ba2 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍0021700585 26.‍5
0x22846a0a5dd9fd72d5439fdc8f9d677a3d221a02f31ea2ed6f47fee7ec2b6a5fRelease Influ160962352022-06-16 5:41:5861 days 1 hr ago0x253197dad535199ae84ce9f51a36643cda554f44 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002128802 26
0xc72616efe67f172826d30e668cee13111cb6e2ec5ffa30f37c2bc4dbcb917a2dRelease Influ160750142022-06-15 18:07:1761 days 13 hrs ago0x19d2d592ef251b1a79cf7b2bfda14e8dc62f2aea IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍008311206191 101.‍508435723
0xfbf7c65cef3e4a2c8d49553abe84eaf88a7380275c93783650f11544719a4a48Release Influ160740012022-06-15 17:36:4561 days 13 hrs ago0x253197dad535199ae84ce9f51a36643cda554f44 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
0x6aa566491164a1947a8f1f03d3b579388006f9176f8794727e87cbe5bbe779c2Release Influ160648142022-06-15 12:34:2861 days 18 hrs ago0xe04b94b0d21dc1d10785d2fbad2c6f7c65d42402 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍003018938 26
0x05e7047059c3f76ec2a1bd6d8095b3a15e80eea96a33ea376e6d1f33f0400dafRelease Influ160510782022-06-15 5:03:1762 days 2 hrs ago0x253197dad535199ae84ce9f51a36643cda554f44 IN  0x2fb6ebbca683a14e7baad171dbc4b637444a46750 AVAX0.‍002573402 26
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5dd7fb72f01fb8f490910915a36baeea776d4d3fac182f7baf20b6adce91af4f187082462022-08-16 6:53:4618 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a4675 Trader Joe: Router0.‍075074130054147681 AVAX
0x5dd7fb72f01fb8f490910915a36baeea776d4d3fac182f7baf20b6adce91af4f187082462022-08-16 6:53:4618 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍075074130054147681 AVAX
0x5dd7fb72f01fb8f490910915a36baeea776d4d3fac182f7baf20b6adce91af4f187082462022-08-16 6:53:4618 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a46750xbb602aeb053c8624ac018bc7567fe16a9658cb010.‍150162294883960597 AVAX
0x5dd7fb72f01fb8f490910915a36baeea776d4d3fac182f7baf20b6adce91af4f187082462022-08-16 6:53:4618 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍150162294883960597 AVAX
0x3f40de8bba74fa43769bee7570d92808652887353b73ad900aae6111b54299c4187078882022-08-16 6:41:4330 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a4675 Trader Joe: Router0.‍010390818732215502 AVAX
0x3f40de8bba74fa43769bee7570d92808652887353b73ad900aae6111b54299c4187078882022-08-16 6:41:4330 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍010390818732215502 AVAX
0x3f40de8bba74fa43769bee7570d92808652887353b73ad900aae6111b54299c4187078882022-08-16 6:41:4330 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a46750xbb602aeb053c8624ac018bc7567fe16a9658cb010.‍02078190628494832 AVAX
0x3f40de8bba74fa43769bee7570d92808652887353b73ad900aae6111b54299c4187078882022-08-16 6:41:4330 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍02078190628494832 AVAX
0xecb4950ad6e6e049a9290c9b850d5b1a391b3d09cb19d69348389d3baca29e93187078622022-08-16 6:40:5031 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a4675 Trader Joe: Router0.‍103845816965549393 AVAX
0xecb4950ad6e6e049a9290c9b850d5b1a391b3d09cb19d69348389d3baca29e93187078622022-08-16 6:40:5031 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍103845816965549393 AVAX
0xecb4950ad6e6e049a9290c9b850d5b1a391b3d09cb19d69348389d3baca29e93187078622022-08-16 6:40:5031 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a46750xbb602aeb053c8624ac018bc7567fe16a9658cb010.‍207718486613867461 AVAX
0xecb4950ad6e6e049a9290c9b850d5b1a391b3d09cb19d69348389d3baca29e93187078622022-08-16 6:40:5031 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍207718486613867461 AVAX
0x80804226cdca7925411d8998f67adf4ce3312c1066d4aed075c04a3eb5990395187078492022-08-16 6:40:2532 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a4675 Trader Joe: Router0.‍103872658694932529 AVAX
0x80804226cdca7925411d8998f67adf4ce3312c1066d4aed075c04a3eb5990395187078492022-08-16 6:40:2532 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍103872658694932529 AVAX
0x80804226cdca7925411d8998f67adf4ce3312c1066d4aed075c04a3eb5990395187078492022-08-16 6:40:2532 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a46750xbb602aeb053c8624ac018bc7567fe16a9658cb010.‍207772181645711159 AVAX
0x80804226cdca7925411d8998f67adf4ce3312c1066d4aed075c04a3eb5990395187078492022-08-16 6:40:2532 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍207772181645711159 AVAX
0x66b887d701547e3d5ff70d1b84246aa996dced0798012e2921cebcd4c3ee13a3187078382022-08-16 6:40:0332 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a4675 Trader Joe: Router0.‍103899511996123136 AVAX
0x66b887d701547e3d5ff70d1b84246aa996dced0798012e2921cebcd4c3ee13a3187078382022-08-16 6:40:0332 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍103899511996123136 AVAX
0x66b887d701547e3d5ff70d1b84246aa996dced0798012e2921cebcd4c3ee13a3187078382022-08-16 6:40:0332 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a46750xbb602aeb053c8624ac018bc7567fe16a9658cb010.‍207825899828156421 AVAX
0x66b887d701547e3d5ff70d1b84246aa996dced0798012e2921cebcd4c3ee13a3187078382022-08-16 6:40:0332 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍207825899828156421 AVAX
0x9d5e65e2a38c78b089fd65534b91c3ac9eb551227b63c17ccd8ed92c7ee61c7f187078302022-08-16 6:39:4632 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a4675 Trader Joe: Router0.‍103926418363845766 AVAX
0x9d5e65e2a38c78b089fd65534b91c3ac9eb551227b63c17ccd8ed92c7ee61c7f187078302022-08-16 6:39:4632 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍103926418363845766 AVAX
0x9d5e65e2a38c78b089fd65534b91c3ac9eb551227b63c17ccd8ed92c7ee61c7f187078302022-08-16 6:39:4632 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a46750xbb602aeb053c8624ac018bc7567fe16a9658cb010.‍207879724172126256 AVAX
0x9d5e65e2a38c78b089fd65534b91c3ac9eb551227b63c17ccd8ed92c7ee61c7f187078302022-08-16 6:39:4632 mins ago Trader Joe: Router 0x2fb6ebbca683a14e7baad171dbc4b637444a46750.‍207879724172126256 AVAX
0x9be5b72d7e626a2faffe4134067964aa28bbca5239f11f12d5159e74c30fd1a4187078182022-08-16 6:39:2333 mins ago 0x2fb6ebbca683a14e7baad171dbc4b637444a4675 Trader Joe: Router0.‍104523081873402468 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Swapper_3_1

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 9 : Swapper_3_1.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import "./PaymentSplitter.sol";
import "./IJoeRouter02.sol";
import "./Owners.sol";


contract Swapper_3_1 is PaymentSplitter, Owners {
	struct Path {
		address[] pathIn;
		address[] pathOut;
	}

	struct MapPath {
		address[] keys;
		mapping(address => Path) values;
		mapping(address => uint256) indexOf;
		mapping(address => bool) inserted;
	}

	struct Sponso {
		address to;
		uint rate;
		uint until;
		uint released;
		uint claimable;
		address[] path;
		uint discountRate;
	}

	MapPath private mapPath;

	string[] public allInflus;
	mapping(string => bool) public influInserted;
	mapping(string => Sponso) public influData;
	
	address public polar;
	address public futur;
	address public distri;
	address public lpHandler;
	address public router;
	address public native;
	address public pair;

	uint public futurFee;
	uint public rewardsFee;
	uint public lpFee;

	bool private swapping = false;
	bool private swapLiquifyCreate = true;
	bool private swapLiquifyClaim = true;
	bool private swapFutur = true;
	bool private swapRewards = true;
	bool private swapLpPool = true;
	bool private swapPayee = false;

	uint public swapTokensAmountCreate;

	address public handler;

	bool public openSwapCreate = false;
	bool public openSwapClaim = false;

	constructor(
		address[] memory payees,
		uint256[] memory shares,
		address[] memory addresses,
		uint256[] memory fees,
		uint256 _swAmount,
		address _handler
	) PaymentSplitter(payees, shares) {
		polar = addresses[0];
		futur = addresses[1];
		distri = addresses[2];
		lpHandler = addresses[3];
		router = addresses[4];
		native = addresses[5];
		pair = addresses[6];

		futurFee = fees[0];
		rewardsFee = fees[1];
		lpFee = fees[2];

		swapTokensAmountCreate = _swAmount;

		handler = _handler;
	}
	
	modifier onlyHandler() {
		require(msg.sender == handler, "Swapper: Only Handler");
		_;
	}

	function addMapPath(
		address token, 
		address[] calldata pathIn,
		address[] calldata pathOut
	)
		external
		onlyOwners
	{
		require(!mapPath.inserted[token], "Swapper: Token already exists");
		mapPathSet(token, Path({
			pathIn: pathIn,
			pathOut: pathOut
		}));
	}

	function updateMapPath(
		address token, 
		address[] calldata pathIn,
		address[] calldata pathOut
	)
		external
		onlyOwners
	{
		require(mapPath.inserted[token], "Swapper: Token doesnt exist");
		mapPathSet(token, Path({
			pathIn: pathIn,
			pathOut: pathOut
		}));
	}
	
	function removeMapPath(
		address token
	)
		external
		onlyOwners
	{
		require(mapPath.inserted[token], "Swapper: Token doesnt exist");
		mapPathRemove(token);
	}

	function addInflu(
		string calldata name,
		address to,
		uint until,
		uint rate,
		address[] calldata path,
		uint discountRate
	) 
		external
		onlyOwners
	{
		require(!influInserted[name], "Swapper: Influ already exists");

		allInflus.push(name);
		influInserted[name] = true;

		influData[name] = Sponso({
			to: to,
			rate: rate,
			until: until,
			released: 0,
			claimable: 0,
			path: path,
			discountRate: discountRate
		});
	}

	function updateInflu(
		string calldata name,
		address to,
		uint until,
		uint rate,
		address[] calldata path,
		uint discountRate
	)
		external
		onlyOwners
	{
		require(influInserted[name], "Swapper: Influ doesnt exist exists");

		Sponso memory cur = influData[name];

		influData[name] = Sponso({
			to: to,
			rate: rate,
			until: until,
			released: cur.released,
			claimable: cur.claimable,
			path: path,
			discountRate: discountRate
		});
	}

	function releaseInflu(
		string calldata name
	) external
	{
		require(influInserted[name], "Swapper: Influ doesnt exist exists");
		
		Sponso storage cur = influData[name];
		
		require(cur.claimable > 0, "Swapper: Nothing to claim");

		uint amount;
		if (cur.path[cur.path.length - 1] != polar)
			amount =  IJoeRouter02(router).getAmountsOut(
				cur.claimable,
				cur.path
			)[cur.path.length - 1];
		else
			amount = cur.claimable;

		cur.released += cur.claimable;
		cur.claimable = 0;

		IERC20(cur.path[cur.path.length - 1])
			.transferFrom(futur, cur.to, amount);
	}

	function swapCreate(
		address tokenIn, 
		address user, 
		uint price,
		string calldata sponso
	) 
		external
		onlyHandler
	{
		require(openSwapCreate, "Swapper: Not open");
		_swapCreation(tokenIn, user, price, sponso);
	}

	function swapClaim(
		address tokenOut, 
		address user, 
		uint rewardsTotal,
		uint feesTotal
	) 
		external
		onlyHandler
	{
		require(openSwapClaim, "Swapper: Not open");
		_swapClaim(tokenOut, user, rewardsTotal, feesTotal);
	}
	
	// external setters
	function setPolar(address _new) external onlyOwners {
		require(_new != address(0), "Swapper: Polar cannot be address zero");
		polar = _new;
	}

	function setFutur(address _new) external onlyOwners {
		require(_new != address(0), "Swapper: Futur cannot be address zero");
		futur = _new;
	}

	function setDistri(address _new) external onlyOwners {
		require(_new != address(0), "Swapper: Distri cannot be address zero");
		distri = _new;
	}

	function setLpHandler(address _new) external onlyOwners {
		require(_new != address(0), "Swapper: LpHandler cannot be address zero");
		lpHandler = _new;
	}

	function setRouter(address _new) external onlyOwners {
		require(_new != address(0), "Swapper: Router cannot be address zero");
		router = _new;
	}

	function setNative(address _new) external onlyOwners {
		require(_new != address(0), "Swapper: Native cannot be address zero");
		native = _new;
	}

	function setPair(address _new) external onlyOwners {
		require(_new != address(0), "Swapper: Pair cannot be address zero");
		pair = _new;
	}

	function setFuturFee(uint _new) external onlyOwners {
		futurFee = _new;
	}

	function setRewardsFee(uint _new) external onlyOwners {
		rewardsFee = _new;
	}

	function setLpFee(uint _new) external onlyOwners {
		lpFee = _new;
	}

	function setSwapLiquifyCreate(bool _new) external onlyOwners {
		swapLiquifyCreate = _new;
	}
	
	function setSwapLiquifyClaim(bool _new) external onlyOwners {
		swapLiquifyClaim = _new;
	}
	
	function setSwapFutur(bool _new) external onlyOwners {
		swapFutur = _new;
	}
	
	function setSwapRewards(bool _new) external onlyOwners {
		swapRewards = _new;
	}
	
	function setSwapLpPool(bool _new) external onlyOwners {
		swapRewards = _new;
	}
	
	function setSwapPayee(bool _new) external onlyOwners {
		swapPayee = _new;
	}

	function setSwapTokensAmountCreate(uint _new) external onlyOwners {
		swapTokensAmountCreate = _new;
	}

	function setOpenSwapCreate(bool _new) external onlyOwners {
		openSwapCreate = _new;
	}
	
	function setOpenSwapClaim(bool _new) external onlyOwners {
		openSwapClaim = _new;
	}
	
	// external view
	function getMapPathSize() external view returns(uint) {
		return mapPath.keys.length;
	}
	
	function getMapPathKeysBetweenIndexes(
		uint iStart,
		uint iEnd
	) 
		external 
		view 
		returns(address[] memory)
	{
		address[] memory keys = new address[](iEnd - iStart);
		for (uint i = iStart; i < iEnd; i++)
			keys[i - iStart] = mapPath.keys[i];
		return keys;
	}
	
	function getMapPathBetweenIndexes(
		uint iStart,
		uint iEnd
	)
		external
		view
		returns (Path[] memory)
	{
		Path[] memory path = new Path[](iEnd - iStart);
		for (uint i = iStart; i < iEnd; i++)
			path[i - iStart] = mapPath.values[mapPath.keys[i]];
		return path;
	}

	function getMapPathForKey(address key) external view returns(Path memory) {
		require(mapPath.inserted[key], "Swapper: Key doesnt exist");
		return mapPath.values[key];
	}

	function getAllInfluSize() external view returns(uint) {
		return allInflus.length;
	}
	
	function getInfluDataPath(string memory name) external view returns(address[] memory) {
		return influData[name].path;
	}
	
	function getAllInflusBetweenIndexes(
		uint iStart,
		uint iEnd
	)
		external
		view
		returns (string[] memory)
	{
		string[] memory influ = new string[](iEnd - iStart);
		for (uint i = iStart; i < iEnd; i++)
			influ[i - iStart] = allInflus[i];
		return influ;
	}

	// internal
	function _swapCreation(
		address tokenIn, 
		address user, 
		uint price,
		string memory sponso
	) 
		internal
	{
		require(price > 0, "Swapper: Nothing to swap");
		
		if (bytes(sponso).length > 0) {
			require(influInserted[sponso], "Swapper: Influ doesnt exist");
			if (block.timestamp <= influData[sponso].until) {
				if (influData[sponso].discountRate > 0)
					price -= price * influData[sponso].discountRate / 10000;
				influData[sponso].claimable += price * influData[sponso].rate / 10000;
			}
		}

		if (tokenIn == polar) {
			IERC20(polar).transferFrom(user, address(this), price);
			_swapCreationPolar();
		} else {
			_swapCreationToken(tokenIn, user, price);
			_swapCreationPolar();
		}
	}

	function _swapCreationPolar() internal {
		uint256 contractTokenBalance = IERC20(polar).balanceOf(address(this));

		if (contractTokenBalance >= swapTokensAmountCreate && swapLiquifyCreate && !swapping) {
			swapping = true;
        
			if (swapFutur) {
				uint256 futurTokens = contractTokenBalance * futurFee / 10000;
				swapAndSendToFee(futur, futurTokens);
			}

			if (swapRewards) {
				uint256 rewardsPoolTokens = contractTokenBalance * rewardsFee / 10000;
				IERC20(polar).transfer(distri, rewardsPoolTokens);
			}

			if (swapLpPool) {
				uint256 swapTokens = contractTokenBalance * lpFee / 10000;
				swapAndLiquify(swapTokens);
			}

			if (swapPayee)
				swapTokensForEth(IERC20(polar).balanceOf(address(this)));

			swapping = false;
		}
	}

	function _swapCreationToken(address tokenIn, address user, uint price) internal {
		require(mapPath.inserted[tokenIn], "Swapper: Unknown token");

		uint toTransfer = IJoeRouter02(router).getAmountsIn(
			price,
			mapPath.values[tokenIn].pathIn
		)[0];

		IERC20(tokenIn).transferFrom(user, address(this), toTransfer);

        IERC20(tokenIn).approve(router, toTransfer);

        IJoeRouter02(router).swapExactTokensForTokensSupportingFeeOnTransferTokens(
            toTransfer,
            0, // if transfer fee
            mapPath.values[tokenIn].pathIn,
            address(this),
            block.timestamp
        );
	}

	function _swapClaim(
		address tokenOut, 
		address user, 
		uint rewardsTotal, 
		uint feesTotal
	) 
		internal 
	{
		if (rewardsTotal + feesTotal > 0) {
			if (swapLiquifyClaim)
				IERC20(polar).transferFrom(distri, address(this), rewardsTotal + feesTotal);
			else if (rewardsTotal > 0)
				IERC20(polar).transferFrom(distri, address(this), rewardsTotal);

			if (tokenOut == polar) {
				if (rewardsTotal > 0)
					IERC20(polar).transfer(user, rewardsTotal);
			} else {
				require(mapPath.inserted[tokenOut], "Swapper: Unknown token");

				IERC20(polar).approve(router, rewardsTotal);

				IJoeRouter02(router)
					.swapExactTokensForTokensSupportingFeeOnTransferTokens(
						rewardsTotal,
						0,
						mapPath.values[tokenOut].pathOut,
						user,
						block.timestamp
					);
			}
		}
	}
		
	function swapAndSendToFee(address destination, uint256 tokens) private {
        uint256 initialETHBalance = address(this).balance;

		swapTokensForEth(tokens);

		uint256 newBalance = (address(this).balance) - initialETHBalance;

		payable(destination).transfer(newBalance);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        uint256 initialBalance = address(this).balance;

        swapTokensForEth(half);

        uint256 newBalance = address(this).balance - initialBalance;

        addLiquidity(otherHalf, newBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
		address[] memory path = new address[](2);
		path[0] = polar;
		path[1] = native;

        IERC20(polar).approve(router, tokenAmount);

        IJoeRouter02(router).swapExactTokensForAVAXSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        IERC20(polar).approve(router, tokenAmount);

        IJoeRouter02(router).addLiquidityAVAX{value: ethAmount}(
            polar,
            tokenAmount,
            0,
            0,
            lpHandler,
            block.timestamp
        );
    }

	function mapPathSet(
        address key,
        Path memory value
    ) private {
        if (mapPath.inserted[key]) {
            mapPath.values[key] = value;
        } else {
            mapPath.inserted[key] = true;
            mapPath.values[key] = value;
            mapPath.indexOf[key] = mapPath.keys.length;
            mapPath.keys.push(key);
        }
    }

	function mapPathRemove(address key) private {
        if (!mapPath.inserted[key]) {
            return;
        }

        delete mapPath.inserted[key];
        delete mapPath.values[key];

        uint256 index = mapPath.indexOf[key];
        uint256 lastIndex = mapPath.keys.length - 1;
        address lastKey = mapPath.keys[lastIndex];

        mapPath.indexOf[lastKey] = index;
        delete mapPath.indexOf[key];

		if (lastIndex != index)
			mapPath.keys[index] = lastKey;
        mapPath.keys.pop();
    }
}

File 2 of 9 : PaymentSplitter.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (finance/PaymentSplitter.sol)

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/utils/Context.sol";

/**
 * @title PaymentSplitter
 * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware
 * that the Ether will be split in this way, since it is handled transparently by the contract.
 *
 * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each
 * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim
 * an amount proportional to the percentage of total shares they were assigned.
 *
 * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the
 * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release}
 * function.
 *
 * NOTE: This contract assumes that ERC20 tokens will behave similarly to native tokens (Ether). Rebasing tokens, and
 * tokens that apply fees during transfers, are likely to not be supported as expected. If in doubt, we encourage you
 * to run tests before sending real value to this contract.
 */
contract PaymentSplitter is Context {
    event PayeeAdded(address account, uint256 shares);
    event PaymentReleased(address to, uint256 amount);
    event ERC20PaymentReleased(IERC20 indexed token, address to, uint256 amount);
    event PaymentReceived(address from, uint256 amount);

    uint256 private _totalShares;
    uint256 private _totalReleased;

    mapping(address => uint256) private _shares;
    mapping(address => uint256) private _released;
    address[] private _payees;

    mapping(IERC20 => uint256) private _erc20TotalReleased;
    mapping(IERC20 => mapping(address => uint256)) private _erc20Released;

    /**
     * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at
     * the matching position in the `shares` array.
     *
     * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no
     * duplicates in `payees`.
     */
    constructor(address[] memory payees, uint256[] memory shares_) payable {
        require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch");
        require(payees.length > 0, "PaymentSplitter: no payees");

        for (uint256 i = 0; i < payees.length; i++) {
            _addPayee(payees[i], shares_[i]);
        }
    }

    /**
     * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully
     * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the
     * reliability of the events, and not the actual splitting of Ether.
     *
     * To learn more about this see the Solidity documentation for
     * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback
     * functions].
     */
    receive() external payable virtual {
        emit PaymentReceived(_msgSender(), msg.value);
    }

    /**
     * @dev Getter for the total shares held by payees.
     */
    function totalShares() public view returns (uint256) {
        return _totalShares;
    }

    /**
     * @dev Getter for the total amount of Ether already released.
     */
    function totalReleased() public view returns (uint256) {
        return _totalReleased;
    }

    /**
     * @dev Getter for the total amount of `token` already released. `token` should be the address of an IERC20
     * contract.
     */
    function totalReleased(IERC20 token) public view returns (uint256) {
        return _erc20TotalReleased[token];
    }

    /**
     * @dev Getter for the amount of shares held by an account.
     */
    function shares(address account) public view returns (uint256) {
        return _shares[account];
    }

    /**
     * @dev Getter for the amount of Ether already released to a payee.
     */
    function released(address account) public view returns (uint256) {
        return _released[account];
    }

    /**
     * @dev Getter for the amount of `token` tokens already released to a payee. `token` should be the address of an
     * IERC20 contract.
     */
    function released(IERC20 token, address account) public view returns (uint256) {
        return _erc20Released[token][account];
    }

    /**
     * @dev Getter for the address of the payee number `index`.
     */
    function payee(uint256 index) public view returns (address) {
        return _payees[index];
    }

    /**
     * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the
     * total shares and their previous withdrawals.
     */
    function release(address payable account) public virtual {
        require(_shares[account] > 0, "PaymentSplitter: account has no shares");

        uint256 totalReceived = address(this).balance + totalReleased();
        uint256 payment = _pendingPayment(account, totalReceived, released(account));

        require(payment != 0, "PaymentSplitter: account is not due payment");

        _released[account] += payment;
        _totalReleased += payment;

        Address.sendValue(account, payment);
        emit PaymentReleased(account, payment);
    }

    /**
     * @dev Triggers a transfer to `account` of the amount of `token` tokens they are owed, according to their
     * percentage of the total shares and their previous withdrawals. `token` must be the address of an IERC20
     * contract.
     */
    function release(IERC20 token, address account) public virtual {
        require(_shares[account] > 0, "PaymentSplitter: account has no shares");

        uint256 totalReceived = token.balanceOf(address(this)) + totalReleased(token);
        uint256 payment = _pendingPayment(account, totalReceived, released(token, account));

        require(payment != 0, "PaymentSplitter: account is not due payment");

        _erc20Released[token][account] += payment;
        _erc20TotalReleased[token] += payment;

        SafeERC20.safeTransfer(token, account, payment);
        emit ERC20PaymentReleased(token, account, payment);
    }

    /**
     * @dev internal logic for computing the pending payment of an `account` given the token historical balances and
     * already released amounts.
     */
    function _pendingPayment(
        address account,
        uint256 totalReceived,
        uint256 alreadyReleased
    ) private view returns (uint256) {
        return (totalReceived * _shares[account]) / _totalShares - alreadyReleased;
    }

    /**
     * @dev recover computed pending payments of an `account`
     */
	function getPendingOf(address account) public view returns(uint) {
        require(_shares[account] > 0, "PaymentSplitter: account has no shares");

        uint256 totalReceived = address(this).balance + totalReleased();
        uint256 payment = _pendingPayment(account, totalReceived, released(account));
		return payment;
	}

    /**
     * @dev Add a new payee to the contract.
     * @param account The address of the payee to add.
     * @param shares_ The number of shares owned by the payee.
     */
    function _addPayee(address account, uint256 shares_) private {
        require(account != address(0), "PaymentSplitter: account is the zero address");
        require(shares_ > 0, "PaymentSplitter: shares are 0");
        require(_shares[account] == 0, "PaymentSplitter: account already has shares");

        _payees.push(account);
        _shares[account] = shares_;
        _totalShares = _totalShares + shares_;
        emit PayeeAdded(account, shares_);
    }
}

File 3 of 9 : IJoeRouter02.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import "./IJoeRouter01.sol";

interface IJoeRouter02 is IJoeRouter01 {
    function removeLiquidityAVAXSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountAVAXMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountAVAX);

    function removeLiquidityAVAXWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountAVAXMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountAVAX);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactAVAXForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForAVAXSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

File 4 of 9 : Owners.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;


contract Owners {
	
	address[] public owners;
	mapping(address => bool) public isOwner;

	constructor() {
		owners.push(msg.sender);
		isOwner[msg.sender] = true;
	}

	modifier onlySuperOwner() {
		require(owners[0] == msg.sender, "Owners: Only Super Owner");
		_;
	}
	
	modifier onlyOwners() {
		require(isOwner[msg.sender], "Owners: Only Owner");
		_;
	}

	function addOwner(address _new, bool _change) external onlySuperOwner {
		require(!isOwner[_new], "Owners: Already owner");
		isOwner[_new] = true;
		if (_change) {
			owners.push(owners[0]);
			owners[0] = _new;
		} else {
			owners.push(_new);
		}
	}

	function removeOwner(address _new) external onlySuperOwner {
		require(isOwner[_new], "Owners: Not owner");
		require(_new != owners[0], "Owners: Cannot remove super owner");
		for (uint i = 1; i < owners.length; i++) {
			if (owners[i] == _new) {
				owners[i] = owners[owners.length - 1];
				owners.pop();
				break;
			}
		}
		isOwner[_new] = false;
	}

	function getOwnersSize() external view returns(uint) {
		return owners.length;
	}
}

File 5 of 9 : SafeERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";
import "../../../utils/Address.sol";

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

File 6 of 9 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 7 of 9 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 8 of 9 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 9 of 9 : IJoeRouter01.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

interface IJoeRouter01 {
    function factory() external pure returns (address);

    function WAVAX() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityAVAX(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountAVAXMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountAVAX,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityAVAX(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountAVAXMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountAVAX);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityAVAXWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountAVAXMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountAVAX);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactAVAXForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactAVAX(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForAVAX(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapAVAXForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"fees","type":"uint256[]"},{"internalType":"uint256","name":"_swAmount","type":"uint256"},{"internalType":"address","name":"_handler","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"until","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256","name":"discountRate","type":"uint256"}],"name":"addInflu","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"pathIn","type":"address[]"},{"internalType":"address[]","name":"pathOut","type":"address[]"}],"name":"addMapPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"},{"internalType":"bool","name":"_change","type":"bool"}],"name":"addOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allInflus","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distri","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"futur","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"futurFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllInfluSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"iStart","type":"uint256"},{"internalType":"uint256","name":"iEnd","type":"uint256"}],"name":"getAllInflusBetweenIndexes","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"getInfluDataPath","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"iStart","type":"uint256"},{"internalType":"uint256","name":"iEnd","type":"uint256"}],"name":"getMapPathBetweenIndexes","outputs":[{"components":[{"internalType":"address[]","name":"pathIn","type":"address[]"},{"internalType":"address[]","name":"pathOut","type":"address[]"}],"internalType":"struct Swapper_3_1.Path[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"key","type":"address"}],"name":"getMapPathForKey","outputs":[{"components":[{"internalType":"address[]","name":"pathIn","type":"address[]"},{"internalType":"address[]","name":"pathOut","type":"address[]"}],"internalType":"struct Swapper_3_1.Path","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"iStart","type":"uint256"},{"internalType":"uint256","name":"iEnd","type":"uint256"}],"name":"getMapPathKeysBetweenIndexes","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMapPathSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnersSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getPendingOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"handler","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"influData","outputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"until","type":"uint256"},{"internalType":"uint256","name":"released","type":"uint256"},{"internalType":"uint256","name":"claimable","type":"uint256"},{"internalType":"uint256","name":"discountRate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"influInserted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpHandler","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"native","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openSwapClaim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openSwapCreate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"owners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"polar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"releaseInflu","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeMapPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"removeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setDistri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setFutur","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setFuturFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setLpFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setLpHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setOpenSwapClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setOpenSwapCreate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setPolar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setRewardsFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setSwapFutur","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setSwapLiquifyClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setSwapLiquifyCreate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setSwapLpPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setSwapPayee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_new","type":"bool"}],"name":"setSwapRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setSwapTokensAmountCreate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"rewardsTotal","type":"uint256"},{"internalType":"uint256","name":"feesTotal","type":"uint256"}],"name":"swapClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"string","name":"sponso","type":"string"}],"name":"swapCreate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAmountCreate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"until","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256","name":"discountRate","type":"uint256"}],"name":"updateInflu","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"pathIn","type":"address[]"},{"internalType":"address[]","name":"pathOut","type":"address[]"}],"name":"updateMapPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601a805460ff60301b1960ff60281b1960ff60201b1963ff0000001962ff00001961ffff1990951661010017949094166201000017939093166301000000179290921664010000000017919091166501000000000017169055601c805461ffff60a01b191690553480156200007857600080fd5b5060405162005a5838038062005a588339810160408190526200009b9162000818565b858580518251146200010f5760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620001625760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f20706179656573000000000000604482015260640162000106565b60005b8251811015620001e657620001d18382815181106200019457634e487b7160e01b600052603260045260246000fd5b6020026020010151838381518110620001bd57634e487b7160e01b600052603260045260246000fd5b60200260200101516200053160201b60201c565b80620001dd816200095b565b91505062000165565b50506007805460018181019092557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b031916339081179091556000908152600860205260408120805460ff191690921790915585518692506200026357634e487b7160e01b600052603260045260246000fd5b6020026020010151601060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083600181518110620002b357634e487b7160e01b600052603260045260246000fd5b6020026020010151601160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550836002815181106200030357634e487b7160e01b600052603260045260246000fd5b6020026020010151601260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550836003815181106200035357634e487b7160e01b600052603260045260246000fd5b6020026020010151601360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083600481518110620003a357634e487b7160e01b600052603260045260246000fd5b6020026020010151601460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083600581518110620003f357634e487b7160e01b600052603260045260246000fd5b6020026020010151601560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550836006815181106200044357634e487b7160e01b600052603260045260246000fd5b6020026020010151601660006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826000815181106200049357634e487b7160e01b600052603260045260246000fd5b602002602001015160178190555082600181518110620004c357634e487b7160e01b600052603260045260246000fd5b602002602001015160188190555082600281518110620004f357634e487b7160e01b600052603260045260246000fd5b6020908102919091010151601955601b91909155601c80546001600160a01b0319166001600160a01b0390921691909117905550620009a592505050565b6001600160a01b0382166200059e5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b606482015260840162000106565b60008111620005f05760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a20736861726573206172652030000000604482015260640162000106565b6001600160a01b038216600090815260026020526040902054156200066c5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b606482015260840162000106565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b038416908117909155600090815260026020526040812082905554620006d490829062000940565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b80516001600160a01b03811681146200073557600080fd5b919050565b600082601f8301126200074b578081fd5b81516020620007646200075e836200091a565b620008e7565b828152818101908583018385028701840188101562000781578586fd5b855b85811015620007aa5762000797826200071d565b8452928401929084019060010162000783565b5090979650505050505050565b600082601f830112620007c8578081fd5b81516020620007db6200075e836200091a565b8281528181019085830183850287018401881015620007f8578586fd5b855b85811015620007aa57815184529284019290840190600101620007fa565b60008060008060008060c0878903121562000831578182fd5b86516001600160401b038082111562000848578384fd5b620008568a838b016200073a565b975060208901519150808211156200086c578384fd5b6200087a8a838b01620007b7565b9650604089015191508082111562000890578384fd5b6200089e8a838b016200073a565b95506060890151915080821115620008b4578384fd5b50620008c389828a01620007b7565b93505060808701519150620008db60a088016200071d565b90509295509295509295565b604051601f8201601f191681016001600160401b03811182821017156200091257620009126200098f565b604052919050565b60006001600160401b038211156200093657620009366200098f565b5060209081020190565b6000821982111562000956576200095662000979565b500190565b600060001982141562000972576200097262000979565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6150a380620009b56000396000f3fe6080604052600436106103dd5760003560e01c806385aa5e5a116101fd578063b164d1e911610118578063ce7c2ac2116100ab578063e33b7de31161007a578063e33b7de314610cdd578063ec2c86b614610cf2578063f508cc1714610d12578063f824673214610d32578063f887ea4014610d525761041d565b8063ce7c2ac214610c24578063d79779b214610c5a578063db7b935014610c90578063ddf7aa9f14610cb05761041d565b8063c0d78655116100e7578063c0d7865514610b7c578063c753695314610b9c578063c80916d414610bd7578063c857612d14610bf75761041d565b8063b164d1e914610afc578063ba44da1214610b1c578063ba9ec0b214610b3c578063bd9a99da14610b5c5761041d565b80639852595c11610190578063a8aa1b311161015f578063a8aa1b3114610a86578063ab57476114610aa6578063ac827bf314610abc578063b049791a14610adc5761041d565b80639852595c14610a105780639cc34de4146109655780639fa26e1314610a46578063a5c9336614610a665761041d565b80638fb712fb116101cc5780638fb712fb146109a557806392aaa2e9146109c557806393d038ea146109da578063942a6175146109fa5761041d565b806385aa5e5a1461092557806386b4f819146109455780638717bb16146109655780638b83209b146109855761041d565b80633a98ef39116102f857806351d00bf81161028b578063704ce43e1161025a578063704ce43e1461088157806376f4348f146108975780638187f516146108b857806381c8e159146108d857806384dfbfe2146109055761041d565b806351d00bf81461080c57806356b20abc14610821578063584a1c82146108415780635dd64c47146108615761041d565b806348b75044116102c757806348b750441461077f5780634c3919ec1461079f5780634e7cde58146107cc578063518e32d3146107ec5761041d565b80633a98ef39146106e45780633d7efb75146106f9578063406072a9146107195780634226483e1461075f5761041d565b806317087bee116103705780632bb14e1d1161033f5780632bb14e1d1461065e5780632ecce790146106745780632f54bf6e146106945780633a8e72b7146106c45761041d565b806317087bee146105cd578063173825d9146105fe578063191655871461061e578063258fd23c1461063e5761041d565b80630996dc30116103ac5780630996dc30146105565780630c7b1d7b1461057657806311ac6cf81461058b57806311b0b42d146105ad5761041d565b8063025e7c2714610422578063032cdbfc1461045f5780630441e6c5146104fb57806308680ade146105285761041d565b3661041d577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7703334604051610413929190614c61565b60405180910390a1005b600080fd5b34801561042e57600080fd5b5061044261043d366004614ad6565b610d72565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561046b57600080fd5b506104c461047a366004614a49565b8051602081830181018051600f825292820191909301209152805460018201546002830154600384015460048501546006909501546001600160a01b039094169492939192909186565b604080516001600160a01b0390971687526020870195909552938501929092526060840152608083015260a082015260c001610456565b34801561050757600080fd5b5061051b610516366004614ad6565b610d9c565b6040516104569190614d64565b34801561053457600080fd5b506105486105433660046146e8565b610e48565b604051908152602001610456565b34801561056257600080fd5b50601054610442906001600160a01b031681565b34801561058257600080fd5b50600754610548565b34801561059757600080fd5b506105ab6105a6366004614908565b610ed0565b005b3480156105b957600080fd5b50601554610442906001600160a01b031681565b3480156105d957600080fd5b50601c546105ee90600160a01b900460ff1681565b6040519015158152602001610456565b34801561060a57600080fd5b506105ab6106193660046146e8565b610f23565b34801561062a57600080fd5b506105ab6106393660046146e8565b6111fe565b34801561064a57600080fd5b506105ab6106593660046146e8565b61131e565b34801561066a57600080fd5b5061054860185481565b34801561068057600080fd5b506105ab61068f3660046149ad565b6113d3565b3480156106a057600080fd5b506105ee6106af3660046146e8565b60086020526000908152604090205460ff1681565b3480156106d057600080fd5b506105ab6106df3660046149ad565b61161f565b3480156106f057600080fd5b50600054610548565b34801561070557600080fd5b506105ab610714366004614704565b611840565b34801561072557600080fd5b50610548610734366004614940565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561076b57600080fd5b506105ab61077a366004614775565b611928565b34801561078b57600080fd5b506105ab61079a366004614940565b6119d9565b3480156107ab57600080fd5b506107bf6107ba3660046146e8565b611bbe565b6040516104569190614e76565b3480156107d857600080fd5b506105ab6107e7366004614ad6565b611d1e565b3480156107f857600080fd5b506105ab610807366004614829565b611d52565b34801561081857600080fd5b50600d54610548565b34801561082d57600080fd5b506105ab61083c36600461496d565b611f69565b34801561084d57600080fd5b50601354610442906001600160a01b031681565b34801561086d57600080fd5b506105ab61087c3660046146e8565b612239565b34801561088d57600080fd5b5061054860195481565b3480156108a357600080fd5b50601c546105ee90600160a81b900460ff1681565b3480156108c457600080fd5b506105ab6108d33660046146e8565b6122ef565b3480156108e457600080fd5b506108f86108f3366004614b06565b6123a2565b6040516104569190614cb1565b34801561091157600080fd5b506105ab610920366004614ad6565b61251b565b34801561093157600080fd5b506105ab610940366004614ad6565b61254f565b34801561095157600080fd5b506105ab6109603660046146e8565b612583565b34801561097157600080fd5b506105ab610980366004614908565b612626565b34801561099157600080fd5b506104426109a0366004614ad6565b612675565b3480156109b157600080fd5b506105ab6109c0366004614908565b6126b3565b3480156109d157600080fd5b50600954610548565b3480156109e657600080fd5b506105ab6109f53660046146e8565b6126fe565b348015610a0657600080fd5b50610548601b5481565b348015610a1c57600080fd5b50610548610a2b3660046146e8565b6001600160a01b031660009081526003602052604090205490565b348015610a5257600080fd5b506105ab610a613660046147ba565b6127b3565b348015610a7257600080fd5b506105ab610a81366004614ad6565b6128cb565b348015610a9257600080fd5b50601654610442906001600160a01b031681565b348015610ab257600080fd5b5061054860175481565b348015610ac857600080fd5b506105ab610ad7366004614908565b6128ff565b348015610ae857600080fd5b506105ab610af73660046147ba565b61294c565b348015610b0857600080fd5b506105ab610b17366004614908565b6129e4565b348015610b2857600080fd5b506105ab610b373660046146e8565b612a2d565b348015610b4857600080fd5b506105ab610b57366004614908565b612ae6565b348015610b6857600080fd5b50601154610442906001600160a01b031681565b348015610b8857600080fd5b506105ab610b973660046146e8565b612b33565b348015610ba857600080fd5b506105ee610bb7366004614a49565b8051602081830181018051600e8252928201919093012091525460ff1681565b348015610be357600080fd5b50601c54610442906001600160a01b031681565b348015610c0357600080fd5b50610c17610c12366004614a49565b612be9565b6040516104569190614c9e565b348015610c3057600080fd5b50610548610c3f3660046146e8565b6001600160a01b031660009081526002602052604090205490565b348015610c6657600080fd5b50610548610c753660046146e8565b6001600160a01b031660009081526005602052604090205490565b348015610c9c57600080fd5b50610c17610cab366004614b06565b612c66565b348015610cbc57600080fd5b50610cd0610ccb366004614b06565b612d5a565b6040516104569190614d11565b348015610ce957600080fd5b50600154610548565b348015610cfe57600080fd5b50601254610442906001600160a01b031681565b348015610d1e57600080fd5b506105ab610d2d366004614908565b612f3a565b348015610d3e57600080fd5b506105ab610d4d3660046146e8565b612f87565b348015610d5e57600080fd5b50601454610442906001600160a01b031681565b60078181548110610d8257600080fd5b6000918252602090912001546001600160a01b0316905081565b600d8181548110610dac57600080fd5b906000526020600020016000915090508054610dc790614fc8565b80601f0160208091040260200160405190810160405280929190818152602001828054610df390614fc8565b8015610e405780601f10610e1557610100808354040283529160200191610e40565b820191906000526020600020905b815481529060010190602001808311610e2357829003601f168201915b505050505081565b6001600160a01b038116600090815260026020526040812054610e865760405162461bcd60e51b8152600401610e7d90614db9565b60405180910390fd5b6000610e9160015490565b610e9b9047614f2e565b90506000610ec88483610ec3876001600160a01b031660009081526003602052604090205490565b61303d565b949350505050565b3360009081526008602052604090205460ff16610eff5760405162461bcd60e51b8152600401610e7d90614dff565b601a805491151566010000000000000266ff00000000000019909216919091179055565b336001600160a01b03166007600081548110610f4f57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614610fac5760405162461bcd60e51b815260206004820152601860248201527727bbb732b9399d1027b7363c9029bab832b91027bbb732b960411b6044820152606401610e7d565b6001600160a01b03811660009081526008602052604090205460ff166110085760405162461bcd60e51b815260206004820152601160248201527027bbb732b9399d102737ba1037bbb732b960791b6044820152606401610e7d565b600760008154811061102a57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b038281169116141561109b5760405162461bcd60e51b815260206004820152602160248201527f4f776e6572733a2043616e6e6f742072656d6f7665207375706572206f776e656044820152603960f91b6064820152608401610e7d565b60015b6007548110156111dc57816001600160a01b0316600782815481106110d357634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614156111ca57600780546110fe90600190614f85565b8154811061111c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600780546001600160a01b03909216918390811061115657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060078054806111a357634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190556111dc565b806111d481615003565b91505061109e565b506001600160a01b03166000908152600860205260409020805460ff19169055565b6001600160a01b0381166000908152600260205260409020546112335760405162461bcd60e51b8152600401610e7d90614db9565b600061123e60015490565b6112489047614f2e565b905060006112708383610ec3866001600160a01b031660009081526003602052604090205490565b90508061128f5760405162461bcd60e51b8152600401610e7d90614e2b565b6001600160a01b038316600090815260036020526040812080548392906112b7908490614f2e565b9250508190555080600160008282546112d09190614f2e565b909155506112e090508382613082565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051611311929190614c61565b60405180910390a1505050565b3360009081526008602052604090205460ff1661134d5760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b0381166113b15760405162461bcd60e51b815260206004820152602560248201527f537761707065723a2046757475722063616e6e6f742062652061646472657373604482015264207a65726f60d81b6064820152608401610e7d565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526008602052604090205460ff166114025760405162461bcd60e51b8152600401610e7d90614dff565b600e8888604051611414929190614c51565b9081526040519081900360200190205460ff166114435760405162461bcd60e51b8152600401610e7d90614d77565b6000600f8989604051611457929190614c51565b90815260408051918290036020908101832060e08401835280546001600160a01b031684526001810154848301526002810154848401526003810154606085015260048101546080850152600581018054845181850281018501909552808552919360a08601939092908301828280156114fa57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114dc575b5050505050815260200160068201548152505090506040518060e00160405280886001600160a01b031681526020018681526020018781526020018260600151815260200182608001518152602001858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250602001839052604051600f90611598908c908c90614c51565b9081526040805160209281900383019020835181546001600160a01b0319166001600160a01b03909116178155838301516001820155908301516002820155606083015160038201556080830151600482015560a08301518051919261160692600585019290910190614557565b5060c08201518160060155905050505050505050505050565b3360009081526008602052604090205460ff1661164e5760405162461bcd60e51b8152600401610e7d90614dff565b600e8888604051611660929190614c51565b9081526040519081900360200190205460ff16156116c05760405162461bcd60e51b815260206004820152601d60248201527f537761707065723a20496e666c7520616c7265616479206578697374730000006044820152606401610e7d565b600d80546001810182556000919091526116fd907fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50189896145bc565b506001600e8989604051611712929190614c51565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506040518060e00160405280876001600160a01b031681526020018581526020018681526020016000815260200160008152602001848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250602001829052604051600f906117ba908b908b90614c51565b9081526040805160209281900383019020835181546001600160a01b0319166001600160a01b03909116178155838301516001820155908301516002820155606083015160038201556080830151600482015560a08301518051919261182892600585019290910190614557565b5060c082015181600601559050505050505050505050565b601c546001600160a01b031633146118925760405162461bcd60e51b815260206004820152601560248201527429bbb0b83832b91d1027b7363c902430b7323632b960591b6044820152606401610e7d565b601c54600160a01b900460ff166118df5760405162461bcd60e51b815260206004820152601160248201527029bbb0b83832b91d102737ba1037b832b760791b6044820152606401610e7d565b61192185858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506131a092505050565b5050505050565b601c546001600160a01b0316331461197a5760405162461bcd60e51b815260206004820152601560248201527429bbb0b83832b91d1027b7363c902430b7323632b960591b6044820152606401610e7d565b601c54600160a81b900460ff166119c75760405162461bcd60e51b815260206004820152601160248201527029bbb0b83832b91d102737ba1037b832b760791b6044820152606401610e7d565b6119d38484848461342c565b50505050565b6001600160a01b038116600090815260026020526040902054611a0e5760405162461bcd60e51b8152600401610e7d90614db9565b6001600160a01b0382166000908152600560205260408120546040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b158015611a6657600080fd5b505afa158015611a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9e9190614aee565b611aa89190614f2e565b90506000611ae18383610ec387876001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b905080611b005760405162461bcd60e51b8152600401610e7d90614e2b565b6001600160a01b03808516600090815260066020908152604080832093871683529290529081208054839290611b37908490614f2e565b90915550506001600160a01b03841660009081526005602052604081208054839290611b64908490614f2e565b90915550611b759050848483613791565b836001600160a01b03167f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a8483604051611bb0929190614c61565b60405180910390a250505050565b60408051808201909152606080825260208201526001600160a01b0382166000908152600c602052604090205460ff16611c3a5760405162461bcd60e51b815260206004820152601960248201527f537761707065723a204b657920646f65736e74206578697374000000000000006044820152606401610e7d565b6001600160a01b0382166000908152600a60209081526040918290208251815460609381028201840185529381018481529093919284928491840182828015611cac57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c8e575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d0e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611cf0575b5050505050815250509050919050565b3360009081526008602052604090205460ff16611d4d5760405162461bcd60e51b8152600401610e7d90614dff565b601b55565b336001600160a01b03166007600081548110611d7e57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614611ddb5760405162461bcd60e51b815260206004820152601860248201527727bbb732b9399d1027b7363c9029bab832b91027bbb732b960411b6044820152606401610e7d565b6001600160a01b03821660009081526008602052604090205460ff1615611e3c5760405162461bcd60e51b815260206004820152601560248201527427bbb732b9399d1020b63932b0b23c9037bbb732b960591b6044820152606401610e7d565b6001600160a01b0382166000908152600860205260409020805460ff191660011790558015611f1957600780600081548110611e8857634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910154835460018101855593835290822090920180546001600160a01b0319166001600160a01b039093169290921790915560078054849290611ee657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611f65565b600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319166001600160a01b0384161790555b5050565b600e8282604051611f7b929190614c51565b9081526040519081900360200190205460ff16611faa5760405162461bcd60e51b8152600401610e7d90614d77565b6000600f8383604051611fbe929190614c51565b9081526020016040518091039020905060008160040154116120225760405162461bcd60e51b815260206004820152601960248201527f537761707065723a204e6f7468696e6720746f20636c61696d000000000000006044820152606401610e7d565b6010546005820180546000926001600160a01b0316919061204590600190614f85565b8154811061206357634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316146121475760145460048084015460405163d06ca61f60e01b81526001600160a01b039093169263d06ca61f926120b59291600588019101614e89565b60006040518083038186803b1580156120cd57600080fd5b505afa1580156120e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121099190810190614861565b600583015461211a90600190614f85565b8151811061213857634e487b7160e01b600052603260045260246000fd5b6020026020010151905061214e565b5060048101545b81600401548260030160008282546121669190614f2e565b90915550506000600483015560058201805461218490600190614f85565b815481106121a257634e487b7160e01b600052603260045260246000fd5b60009182526020909120015460115483546040516323b872dd60e01b81526001600160a01b03938416936323b872dd936121e793908216929116908690600401614c7a565b602060405180830381600087803b15801561220157600080fd5b505af1158015612215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119219190614924565b3360009081526008602052604090205460ff166122685760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b0381166122cd5760405162461bcd60e51b815260206004820152602660248201527f537761707065723a204e61746976652063616e6e6f742062652061646472657360448201526573207a65726f60d01b6064820152608401610e7d565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526008602052604090205460ff1661231e5760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b0381166123805760405162461bcd60e51b8152602060048201526024808201527f537761707065723a20506169722063616e6e6f742062652061646472657373206044820152637a65726f60e01b6064820152608401610e7d565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b606060006123b08484614f85565b67ffffffffffffffff8111156123d657634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561240957816020015b60608152602001906001900390816123f45790505b509050835b8381101561251357600d818154811061243757634e487b7160e01b600052603260045260246000fd5b90600052602060002001805461244c90614fc8565b80601f016020809104026020016040519081016040528092919081815260200182805461247890614fc8565b80156124c55780601f1061249a576101008083540402835291602001916124c5565b820191906000526020600020905b8154815290600101906020018083116124a857829003601f168201915b50505050508286836124d79190614f85565b815181106124f557634e487b7160e01b600052603260045260246000fd5b6020026020010181905250808061250b90615003565b91505061240e565b509392505050565b3360009081526008602052604090205460ff1661254a5760405162461bcd60e51b8152600401610e7d90614dff565b601955565b3360009081526008602052604090205460ff1661257e5760405162461bcd60e51b8152600401610e7d90614dff565b601855565b3360009081526008602052604090205460ff166125b25760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b0381166000908152600c602052604090205460ff1661261a5760405162461bcd60e51b815260206004820152601b60248201527f537761707065723a20546f6b656e20646f65736e7420657869737400000000006044820152606401610e7d565b612623816137e7565b50565b3360009081526008602052604090205460ff166126555760405162461bcd60e51b8152600401610e7d90614dff565b601a80549115156401000000000264ff0000000019909216919091179055565b60006004828154811061269857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b3360009081526008602052604090205460ff166126e25760405162461bcd60e51b8152600401610e7d90614dff565b601a8054911515620100000262ff000019909216919091179055565b3360009081526008602052604090205460ff1661272d5760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b0381166127915760405162461bcd60e51b815260206004820152602560248201527f537761707065723a20506f6c61722063616e6e6f742062652061646472657373604482015264207a65726f60d81b6064820152608401610e7d565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526008602052604090205460ff166127e25760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b0385166000908152600c602052604090205460ff1661284a5760405162461bcd60e51b815260206004820152601b60248201527f537761707065723a20546f6b656e20646f65736e7420657869737400000000006044820152606401610e7d565b6119218560405180604001604052808787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208781028281018201909352878252928301929091889188918291850190849080828437600092019190915250505091525061397c565b3360009081526008602052604090205460ff166128fa5760405162461bcd60e51b8152600401610e7d90614dff565b601755565b3360009081526008602052604090205460ff1661292e5760405162461bcd60e51b8152600401610e7d90614dff565b601a805491151563010000000263ff00000019909216919091179055565b3360009081526008602052604090205460ff1661297b5760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b0385166000908152600c602052604090205460ff161561284a5760405162461bcd60e51b815260206004820152601d60248201527f537761707065723a20546f6b656e20616c7265616479206578697374730000006044820152606401610e7d565b3360009081526008602052604090205460ff16612a135760405162461bcd60e51b8152600401610e7d90614dff565b601a80549115156101000261ff0019909216919091179055565b3360009081526008602052604090205460ff16612a5c5760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b038116612ac45760405162461bcd60e51b815260206004820152602960248201527f537761707065723a204c7048616e646c65722063616e6e6f742062652061646460448201526872657373207a65726f60b81b6064820152608401610e7d565b601380546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526008602052604090205460ff16612b155760405162461bcd60e51b8152600401610e7d90614dff565b601c8054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526008602052604090205460ff16612b625760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b038116612bc75760405162461bcd60e51b815260206004820152602660248201527f537761707065723a20526f757465722063616e6e6f742062652061646472657360448201526573207a65726f60d01b6064820152608401610e7d565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6060600f82604051612bfb9190614c35565b9081526040805191829003602090810183206005018054808302850183019093528284529190830182828015612c5a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c3c575b50505050509050919050565b60606000612c748484614f85565b67ffffffffffffffff811115612c9a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612cc3578160200160208202803683370190505b509050835b83811015612513576009805482908110612cf257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031682612d128784614f85565b81518110612d3057634e487b7160e01b600052603260045260246000fd5b6001600160a01b039092166020928302919091019091015280612d5281615003565b915050612cc8565b60606000612d688484614f85565b67ffffffffffffffff811115612d8e57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612dd357816020015b6040805180820190915260608082526020820152815260200190600190039081612dac5790505b509050835b838110156125135760098054600a9160009184908110612e0857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528281019390935260409182019020815181546060948102820185018452928101838152909391928492849190840182828015612e8657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612e68575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015612ee857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612eca575b505050505081525050828683612efe9190614f85565b81518110612f1c57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080612f3290615003565b915050612dd8565b3360009081526008602052604090205460ff16612f695760405162461bcd60e51b8152600401610e7d90614dff565b601c8054911515600160a81b0260ff60a81b19909216919091179055565b3360009081526008602052604090205460ff16612fb65760405162461bcd60e51b8152600401610e7d90614dff565b6001600160a01b03811661301b5760405162461bcd60e51b815260206004820152602660248201527f537761707065723a204469737472692063616e6e6f742062652061646472657360448201526573207a65726f60d01b6064820152608401610e7d565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0385168252600260205260408220548391906130649086614f66565b61306e9190614f46565b6130789190614f85565b90505b9392505050565b804710156130d25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610e7d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461311f576040519150601f19603f3d011682016040523d82523d6000602084013e613124565b606091505b505090508061319b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610e7d565b505050565b600082116131f05760405162461bcd60e51b815260206004820152601860248201527f537761707065723a204e6f7468696e6720746f207377617000000000000000006044820152606401610e7d565b80511561336f57600e816040516132079190614c35565b9081526040519081900360200190205460ff166132665760405162461bcd60e51b815260206004820152601b60248201527f537761707065723a20496e666c7520646f65736e7420657869737400000000006044820152606401610e7d565b600f816040516132769190614c35565b908152602001604051809103902060020154421161336f576000600f826040516132a09190614c35565b90815260200160405180910390206006015411156132ff57612710600f826040516132cb9190614c35565b908152602001604051809103902060060154836132e89190614f66565b6132f29190614f46565b6132fc9083614f85565b91505b612710600f826040516133129190614c35565b9081526020016040518091039020600101548361332f9190614f66565b6133399190614f46565b600f826040516133499190614c35565b908152602001604051809103902060040160008282546133699190614f2e565b90915550505b6010546001600160a01b0385811691161415613419576010546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906133b990869030908790600401614c7a565b602060405180830381600087803b1580156133d357600080fd5b505af11580156133e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061340b9190614924565b50613414613aab565b6119d3565b613424848484613d4b565b6119d3613aab565b60006134388284614f2e565b11156119d357601a5462010000900460ff16156134e9576010546012546001600160a01b03918216916323b872dd9116306134738587614f2e565b6040518463ffffffff1660e01b815260040161349193929190614c7a565b602060405180830381600087803b1580156134ab57600080fd5b505af11580156134bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e39190614924565b5061357b565b811561357b576010546012546040516323b872dd60e01b81526001600160a01b03928316926323b872dd926135279291169030908790600401614c7a565b602060405180830381600087803b15801561354157600080fd5b505af1158015613555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135799190614924565b505b6010546001600160a01b03858116911614156136215781156134145760105460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906135c99086908690600401614c61565b602060405180830381600087803b1580156135e357600080fd5b505af11580156135f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061361b9190614924565b506119d3565b6001600160a01b0384166000908152600c602052604090205460ff166136825760405162461bcd60e51b815260206004820152601660248201527529bbb0b83832b91d102ab735b737bbb7103a37b5b2b760511b6044820152606401610e7d565b60105460145460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926136b8929116908690600401614c61565b602060405180830381600087803b1580156136d257600080fd5b505af11580156136e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370a9190614924565b506014546001600160a01b038581166000908152600a60205260408082209051635c11d79560e01b81529290931692635c11d79592613759928792909160019091019089904290600401614ede565b600060405180830381600087803b15801561377357600080fd5b505af1158015613787573d6000803e3d6000fd5b5050505050505050565b61319b8363a9059cbb60e01b84846040516024016137b0929190614c61565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613fc0565b6001600160a01b0381166000908152600c602052604090205460ff1661380c57612623565b6001600160a01b0381166000908152600c60209081526040808320805460ff19169055600a9091528120906138418282614630565b61384f600183016000614630565b50506001600160a01b0381166000908152600b602052604081205460095490919061387c90600190614f85565b90506000600960000182815481106138a457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03908116808452600b90925260408084208790559087168352822091909155905081831461393557806009600001848154811061390657634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600980548061395457634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6001600160a01b0382166000908152600c602052604090205460ff16156139ee576001600160a01b0382166000908152600a602090815260409091208251805184936139cc928492910190614557565b5060208281015180516139e59260018501920190614557565b50905050611f65565b6001600160a01b0382166000908152600c60209081526040808320805460ff19166001179055600a8252909120825180518493613a2f928492910190614557565b506020828101518051613a489260018501920190614557565b5050600980546001600160a01b0385166000818152600b60205260408120839055600183018455929092527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055505050565b6010546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015613aef57600080fd5b505afa158015613b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b279190614aee565b9050601b548110158015613b425750601a54610100900460ff165b8015613b515750601a5460ff16155b1561262357601a805460ff1916600117908190556301000000900460ff1615613bac57600061271060175483613b879190614f66565b613b919190614f46565b601154909150613baa906001600160a01b031682614092565b505b601a54640100000000900460ff1615613c6957600061271060185483613bd29190614f66565b613bdc9190614f46565b60105460125460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92613c149216908590600401614c61565b602060405180830381600087803b158015613c2e57600080fd5b505af1158015613c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c669190614924565b50505b601a5465010000000000900460ff1615613ca757600061271060195483613c909190614f66565b613c9a9190614f46565b9050613ca5816140e1565b505b601a546601000000000000900460ff1615613d3e576010546040516370a0823160e01b8152306004820152613d3e916001600160a01b0316906370a082319060240160206040518083038186803b158015613d0157600080fd5b505afa158015613d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d399190614aee565b614120565b601a805460ff1916905550565b6001600160a01b0383166000908152600c602052604090205460ff16613dac5760405162461bcd60e51b815260206004820152601660248201527529bbb0b83832b91d102ab735b737bbb7103a37b5b2b760511b6044820152606401610e7d565b6014546001600160a01b038481166000908152600a602052604080822090516307c0329d60e21b815291939290921691631f00ca7491613df0918691600401614e89565b60006040518083038186803b158015613e0857600080fd5b505afa158015613e1c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e449190810190614861565b600081518110613e6457634e487b7160e01b600052603260045260246000fd5b60200260200101519050836001600160a01b03166323b872dd8430846040518463ffffffff1660e01b8152600401613e9e93929190614c7a565b602060405180830381600087803b158015613eb857600080fd5b505af1158015613ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef09190614924565b5060145460405163095ea7b360e01b81526001600160a01b038681169263095ea7b392613f2592909116908590600401614c61565b602060405180830381600087803b158015613f3f57600080fd5b505af1158015613f53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f779190614924565b506014546001600160a01b038581166000908152600a60205260408082209051635c11d79560e01b81529290931692635c11d79592613759928692909130904290600401614ede565b6000614015826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142b59092919063ffffffff16565b80519091501561319b57808060200190518101906140339190614924565b61319b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e7d565b4761409c82614120565b60006140a88247614f85565b6040519091506001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611921573d6000803e3d6000fd5b60006140ee600283614f46565b905060006140fc8284614f85565b90504761410883614120565b60006141148247614f85565b905061192183826142c4565b604080516002808252606082018352600092602083019080368337505060105482519293506001600160a01b03169183915060009061416f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526015548251911690829060019081106141ae57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260105460145460405163095ea7b360e01b81529183169263095ea7b3926141f392909116908690600401614c61565b602060405180830381600087803b15801561420d57600080fd5b505af1158015614221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142459190614924565b50601454604051633b158ab160e11b81526001600160a01b039091169063762b15629061427f908590600090869030904290600401614ea2565b600060405180830381600087803b15801561429957600080fd5b505af11580156142ad573d6000803e3d6000fd5b505050505050565b606061307884846000856143f6565b60105460145460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926142fa929116908690600401614c61565b602060405180830381600087803b15801561431457600080fd5b505af1158015614328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434c9190614924565b50601454601054601354604051637c8d9fb960e11b81526001600160a01b03928316600482015260248101869052600060448201819052606482015290821660848201524260a482015291169063f91b3f7290839060c4016060604051808303818588803b1580156143bd57600080fd5b505af11580156143d1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119219190614b27565b6060824710156144575760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e7d565b843b6144a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e7d565b600080866001600160a01b031685876040516144c19190614c35565b60006040518083038185875af1925050503d80600081146144fe576040519150601f19603f3d011682016040523d82523d6000602084013e614503565b606091505b509150915061451382828661451e565b979650505050505050565b6060831561452d57508161307b565b82511561453d5782518084602001fd5b8160405162461bcd60e51b8152600401610e7d9190614d64565b8280548282559060005260206000209081019282156145ac579160200282015b828111156145ac57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614577565b506145b892915061464a565b5090565b8280546145c890614fc8565b90600052602060002090601f0160209004810192826145ea57600085556145ac565b82601f106146035782800160ff198235161785556145ac565b828001600101855582156145ac579182015b828111156145ac578235825591602001919060010190614615565b508054600082559060005260206000209081019061262391905b5b808211156145b8576000815560010161464b565b60008083601f840112614670578182fd5b50813567ffffffffffffffff811115614687578182fd5b60208301915083602080830285010111156146a157600080fd5b9250929050565b60008083601f8401126146b9578182fd5b50813567ffffffffffffffff8111156146d0578182fd5b6020830191508360208285010111156146a157600080fd5b6000602082840312156146f9578081fd5b813561307b8161504a565b60008060008060006080868803121561471b578081fd5b85356147268161504a565b945060208601356147368161504a565b935060408601359250606086013567ffffffffffffffff811115614758578182fd5b614764888289016146a8565b969995985093965092949392505050565b6000806000806080858703121561478a578384fd5b84356147958161504a565b935060208501356147a58161504a565b93969395505050506040820135916060013590565b6000806000806000606086880312156147d1578081fd5b85356147dc8161504a565b9450602086013567ffffffffffffffff808211156147f8578283fd5b61480489838a0161465f565b9096509450604088013591508082111561481c578283fd5b506147648882890161465f565b6000806040838503121561483b578182fd5b82356148468161504a565b915060208301356148568161505f565b809150509250929050565b60006020808385031215614873578182fd5b825167ffffffffffffffff8082111561488a578384fd5b818501915085601f83011261489d578384fd5b8151818111156148af576148af615034565b83810291506148bf848301614efd565b8181528481019084860184860187018a10156148d9578788fd5b8795505b838610156148fb5780518352600195909501949186019186016148dd565b5098975050505050505050565b600060208284031215614919578081fd5b813561307b8161505f565b600060208284031215614935578081fd5b815161307b8161505f565b60008060408385031215614952578182fd5b823561495d8161504a565b915060208301356148568161504a565b6000806020838503121561497f578182fd5b823567ffffffffffffffff811115614995578283fd5b6149a1858286016146a8565b90969095509350505050565b60008060008060008060008060c0898b0312156149c8578586fd5b883567ffffffffffffffff808211156149df578788fd5b6149eb8c838d016146a8565b909a50985060208b01359150614a008261504a565b90965060408a0135955060608a0135945060808a01359080821115614a23578485fd5b50614a308b828c0161465f565b999c989b50969995989497949560a00135949350505050565b60006020808385031215614a5b578182fd5b823567ffffffffffffffff80821115614a72578384fd5b818501915085601f830112614a85578384fd5b813581811115614a9757614a97615034565b614aa9601f8201601f19168501614efd565b91508082528684828501011115614abe578485fd5b80848401858401378101909201929092529392505050565b600060208284031215614ae7578081fd5b5035919050565b600060208284031215614aff578081fd5b5051919050565b60008060408385031215614b18578182fd5b50508035926020909101359150565b600080600060608486031215614b3b578081fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015614b8c5781516001600160a01b031687529582019590820190600101614b67565b509495945050505050565b6000815480845260208085019450838352808320835b83811015614b8c5781546001600160a01b031687529582019560019182019101614bad565b60008151808452614bea816020860160208601614f9c565b601f01601f19169290920160200192915050565b6000815160408452614c136040850182614b54565b905060208301518482036020860152614c2c8282614b54565b95945050505050565b60008251614c47818460208701614f9c565b9190910192915050565b6000828483379101908152919050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020825261307b6020830184614b54565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015614d0457603f19888603018452614cf2858351614bd2565b94509285019290850190600101614cd6565b5092979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015614d0457603f19888603018452614d52858351614bfe565b94509285019290850190600101614d36565b60006020825261307b6020830184614bd2565b60208082526022908201527f537761707065723a20496e666c7520646f65736e742065786973742065786973604082015261747360f01b606082015260800190565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b60208082526012908201527127bbb732b9399d1027b7363c9027bbb732b960711b604082015260600190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b60006020825261307b6020830184614bfe565b6000838252604060208301526130786040830184614b97565b600086825285602083015260a06040830152614ec160a0830186614b54565b6001600160a01b0394909416606083015250608001529392505050565b600086825285602083015260a06040830152614ec160a0830186614b97565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f2657614f26615034565b604052919050565b60008219821115614f4157614f4161501e565b500190565b600082614f6157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615614f8057614f8061501e565b500290565b600082821015614f9757614f9761501e565b500390565b60005b83811015614fb7578181015183820152602001614f9f565b838111156119d35750506000910152565b600281046001821680614fdc57607f821691505b60208210811415614ffd57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156150175761501761501e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461262357600080fd5b801515811461262357600080fdfea2646970667358221220642d25691e4a25bee1dc25745ba6f5557c05bcfd429324f6aacee58233a4038064736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000001a055690d9db800000000000000000000000000001c1e6144841cd21afa0329635b8a45df7c3569ed0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000eec7dd68bb3cc56483212a945373bdc6c961ec92000000000000000000000000f7dc55b2f55304d1c1b0baf2650865e4047b0a860000000000000000000000009c16da532a789ac307918de96c2cde18ec99b7e200000000000000000000000047ee3f73e6b6b869cc84e2b3da1920850a3b728b0000000000000000000000001415028f037e881dfd446cf579187efd257456be00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000070000000000000000000000006c1c0319d8ddcb0ffe1a68c5b3829fd361587db4000000000000000000000000dad0c417c62a059044a4bb5e68f5e2f99f3dd70c000000000000000000000000ab3b24ba4c5911366c59cc870facc25b6ea3a053000000000000000000000000b760ef4751fe4e11c308d668f3ffb76acffb828500000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000d81cb1f7bce1d539f3de6e7431a637cb5c66669d000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000232800000000000000000000000000000000000000000000000000000000000001f4

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000001a055690d9db800000000000000000000000000001c1e6144841cd21afa0329635b8a45df7c3569ed0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000eec7dd68bb3cc56483212a945373bdc6c961ec92000000000000000000000000f7dc55b2f55304d1c1b0baf2650865e4047b0a860000000000000000000000009c16da532a789ac307918de96c2cde18ec99b7e200000000000000000000000047ee3f73e6b6b869cc84e2b3da1920850a3b728b0000000000000000000000001415028f037e881dfd446cf579187efd257456be00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000150000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000070000000000000000000000006c1c0319d8ddcb0ffe1a68c5b3829fd361587db4000000000000000000000000dad0c417c62a059044a4bb5e68f5e2f99f3dd70c000000000000000000000000ab3b24ba4c5911366c59cc870facc25b6ea3a053000000000000000000000000b760ef4751fe4e11c308d668f3ffb76acffb828500000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000d81cb1f7bce1d539f3de6e7431a637cb5c66669d000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000232800000000000000000000000000000000000000000000000000000000000001f4

-----Decoded View---------------
Arg [0] : payees (address[]): 0xeec7dd68bb3cc56483212a945373bdc6c961ec92,0xf7dc55b2f55304d1c1b0baf2650865e4047b0a86,0x9c16da532a789ac307918de96c2cde18ec99b7e2,0x47ee3f73e6b6b869cc84e2b3da1920850a3b728b,0x1415028f037e881dfd446cf579187efd257456be
Arg [1] : shares (uint256[]): 25,21,21,21,12
Arg [2] : addresses (address[]): 0x6c1c0319d8ddcb0ffe1a68c5b3829fd361587db4,0xdad0c417c62a059044a4bb5e68f5e2f99f3dd70c,0xab3b24ba4c5911366c59cc870facc25b6ea3a053,0xb760ef4751fe4e11c308d668f3ffb76acffb8285,0x60ae616a2155ee3d9a68541ba4544862310933d4,0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7,0xd81cb1f7bce1d539f3de6e7431a637cb5c66669d
Arg [3] : fees (uint256[]): 500,9000,500
Arg [4] : _swAmount (uint256): 30000000000000000000
Arg [5] : _handler (address): 0x1c1e6144841cd21afa0329635b8a45df7c3569ed

-----Encoded View---------------
30 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000340
Arg [4] : 000000000000000000000000000000000000000000000001a055690d9db80000
Arg [5] : 0000000000000000000000001c1e6144841cd21afa0329635b8a45df7c3569ed
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 000000000000000000000000eec7dd68bb3cc56483212a945373bdc6c961ec92
Arg [8] : 000000000000000000000000f7dc55b2f55304d1c1b0baf2650865e4047b0a86
Arg [9] : 0000000000000000000000009c16da532a789ac307918de96c2cde18ec99b7e2
Arg [10] : 00000000000000000000000047ee3f73e6b6b869cc84e2b3da1920850a3b728b
Arg [11] : 0000000000000000000000001415028f037e881dfd446cf579187efd257456be
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000015
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000015
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000015
Arg [17] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [19] : 0000000000000000000000006c1c0319d8ddcb0ffe1a68c5b3829fd361587db4
Arg [20] : 000000000000000000000000dad0c417c62a059044a4bb5e68f5e2f99f3dd70c
Arg [21] : 000000000000000000000000ab3b24ba4c5911366c59cc870facc25b6ea3a053
Arg [22] : 000000000000000000000000b760ef4751fe4e11c308d668f3ffb76acffb8285
Arg [23] : 00000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4
Arg [24] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7
Arg [25] : 000000000000000000000000d81cb1f7bce1d539f3de6e7431a637cb5c66669d
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [27] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [28] : 0000000000000000000000000000000000000000000000000000000000002328
Arg [29] : 00000000000000000000000000000000000000000000000000000000000001f4


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.