{
  "_format": "hh-sol-artifact-1",
  "contractName": "AMMSplitter",
  "sourceName": "contracts/product/AMMSplitter.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IUniswapV2Router",
          "name": "_uniRouter",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Router",
          "name": "_sushiRouter",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "_uniFactory",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "_sushiFactory",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_sendToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_receiveToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amountIn",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amountOut",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_uniTradeSize",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_sushiTradeSize",
          "type": "uint256"
        }
      ],
      "name": "TradeExactInputExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_sendToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_receiveToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amountIn",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amountOut",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_uniTradeSize",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_sushiTradeSize",
          "type": "uint256"
        }
      ],
      "name": "TradeExactOutputExecuted",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountOut",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        }
      ],
      "name": "getAmountsIn",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountIn",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        }
      ],
      "name": "getAmountsOut",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sushiFactory",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sushiRouter",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Router",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountOutMin",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactTokensForTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalOutput",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amountInMax",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_path",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_deadline",
          "type": "uint256"
        }
      ],
      "name": "swapTokensForExactTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalInput",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "uniFactory",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "uniRouter",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Router",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6101006040523480156200001257600080fd5b5060405162001cd238038062001cd2833981016040819052620000359162000065565b6001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e052620000e5565b600080600080608085870312156200007b578384fd5b84516200008881620000cc565b60208601519094506200009b81620000cc565b6040860151909350620000ae81620000cc565b6060860151909250620000c181620000cc565b939692955090935050565b6001600160a01b0381168114620000e257600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c611b5162000181600039806101445280610862528061097c52806109d352508061036e52806107f152806108e2528061091752508061021a528061034a5280610402528061050052806106685280610c385280610cda5250806101e252806103b852806104cb52806105de52806106335280610aee5280610b905250611b516000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806376771d4b1161005b57806376771d4b146100f35780638803dbee146100fb578063a0e47bf61461010e578063d06ca61f1461011657610088565b80631f00ca741461008d57806322984b24146100b657806338ed1739146100cb5780636d13582c146100eb575b600080fd5b6100a061009b366004611605565b610129565b6040516100ad919061178f565b60405180910390f35b6100be610142565b6040516100ad9190611724565b6100de6100d936600461164f565b610166565b6040516100ad9190611a14565b6100be610348565b6100be61036c565b6100de61010936600461164f565b610390565b6100be6105dc565b6100a0610124366004611605565b610600565b6060610138848484600061060b565b90505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610172858561074a565b60008585600081811061018157fe5b905060200201602081019061019691906114fd565b90506101b36001600160a01b03821633308b63ffffffff61077916565b6101bb61149a565b6101c687878b6107d7565b90506101db8160000151826020015184610ac6565b60006102117f000000000000000000000000000000000000000000000000000000000000000083600001518a8a8a8a6001610d5d565b905060006102497f000000000000000000000000000000000000000000000000000000000000000084602001518b8b8b8b6001610d5d565b905061025b828263ffffffff610ece16565b9450898510156102865760405162461bcd60e51b815260040161027d906119cd565b60405180910390fd5b6001600160a01b03871689896102a381600163ffffffff610efc16565b8181106102ac57fe5b90506020020160208101906102c191906114fd565b6001600160a01b03168a8a60008181106102d757fe5b90506020020160208101906102ec91906114fd565b6001600160a01b03167f0fd3d6cab20f5c58f315ceee314e574169f9b701ef8ea8af2887aa7b178a4b248e89886000015189602001516040516103329493929190611a75565b60405180910390a4505050509695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061039c858561074a565b6103a461149a565b6103af86868a6107d7565b905060006103e57f0000000000000000000000000000000000000000000000000000000000000000836000015189896000610f3e565b6000815181106103f157fe5b60200260200101519050600061042f7f000000000000000000000000000000000000000000000000000000000000000084602001518a8a6000610f3e565b60008151811061043b57fe5b602002602001015190506104588183610ece90919063ffffffff16565b93508884111561047a5760405162461bcd60e51b815260040161027d90611906565b60008888600081811061048957fe5b905060200201602081019061049e91906114fd565b90506104bb6001600160a01b03821633308863ffffffff61077916565b6104c6838383610ac6565b6104fa7f000000000000000000000000000000000000000000000000000000000000000085600001518b8b8b8b6000610d5d565b5061052f7f000000000000000000000000000000000000000000000000000000000000000085602001518b8b8b8b6000610d5d565b506001600160a01b038716898961054d81600163ffffffff610efc16565b81811061055657fe5b905060200201602081019061056b91906114fd565b6001600160a01b03168a8a600081811061058157fe5b905060200201602081019061059691906114fd565b6001600160a01b03167f047b1bcc9369469ca23899fad71880938a9ddc4bb412766b5665e558a9823796888f89600001518a602001516040516103329493929190611a75565b7f000000000000000000000000000000000000000000000000000000000000000081565b606061013884848460015b6060610617848461074a565b61061f61149a565b61062a8585886107d7565b9050606061065f7f00000000000000000000000000000000000000000000000000000000000000008360000151888888610f3e565b905060606106947f00000000000000000000000000000000000000000000000000000000000000008460200151898989610f3e565b90508567ffffffffffffffff811180156106ad57600080fd5b506040519080825280602002602001820160405280156106d7578160200160208202803683370190505b50935060005b845181101561073e5761071f8282815181106106f557fe5b602002602001015184838151811061070957fe5b6020026020010151610ece90919063ffffffff16565b85828151811061072b57fe5b60209081029190910101526001016106dd565b50505050949350505050565b60028114806107595750600381145b6107755760405162461bcd60e51b815260040161027d9061183d565b5050565b6107d1846323b872dd60e01b85858560405160240161079a93929190611752565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611058565b50505050565b6107df61149a565b600060028414156108db5760006108597f00000000000000000000000000000000000000000000000000000000000000008787600081811061081d57fe5b905060200201602081019061083291906114fd565b8888600181811061083f57fe5b905060200201602081019061085491906114fd565b6110e7565b905060006108b07f00000000000000000000000000000000000000000000000000000000000000008888600081811061088e57fe5b90506020020160208101906108a391906114fd565b8989600181811061083f57fe5b90506108d26108c5838363ffffffff610ece16565b839063ffffffff6111e716565b92505050610a95565b600061090e7f00000000000000000000000000000000000000000000000000000000000000008787600081811061081d57fe5b905060006109437f00000000000000000000000000000000000000000000000000000000000000008888600281811061088e57fe5b9050811580610950575080155b156109755760405180604001604052806000815260200186815250935050505061013b565b60006109ca7f0000000000000000000000000000000000000000000000000000000000000000898960008181106109a857fe5b90506020020160208101906109bd91906114fd565b8a8a600181811061083f57fe5b90506000610a217f00000000000000000000000000000000000000000000000000000000000000008a8a60028181106109ff57fe5b9050602002016020810190610a1491906114fd565b8b8b600181811061083f57fe5b9050811580610a2e575080155b15610a5557604051806040016040528088815260200160008152509550505050505061013b565b6000610a6385858585611211565b9050610a8d610a8082670de0b6b3a764000063ffffffff610ece16565b829063ffffffff6111e716565b955050505050505b610aa5838263ffffffff61129916565b808352610ab990849063ffffffff610efc16565b6020830152509392505050565b604051636eb1769f60e11b815283906001600160a01b0383169063dd62ed3e90610b169030907f000000000000000000000000000000000000000000000000000000000000000090600401611738565b60206040518083038186803b158015610b2e57600080fd5b505afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6691906115ed565b1015610c105760405163095ea7b360e01b81526001600160a01b0382169063095ea7b390610bbc907f00000000000000000000000000000000000000000000000000000000000000009060001990600401611776565b602060405180830381600087803b158015610bd657600080fd5b505af1158015610bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0e91906115cd565b505b604051636eb1769f60e11b815282906001600160a01b0383169063dd62ed3e90610c609030907f000000000000000000000000000000000000000000000000000000000000000090600401611738565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906115ed565b1015610d585760405163095ea7b360e01b81526001600160a01b0382169063095ea7b390610d06907f00000000000000000000000000000000000000000000000000000000000000009060001990600401611776565b602060405180830381600087803b158015610d2057600080fd5b505af1158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906115cd565b505050565b600086610d6c57506000610ec3565b8115610e29576040516338ed173960e01b81526001600160a01b038916906338ed173990610da9908a906000908b908b908b908b90600401611a37565b600060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dff9190810190611535565b610e1086600163ffffffff610efc16565b81518110610e1a57fe5b60200260200101519050610ec3565b604051634401edf760e11b81526001600160a01b03891690638803dbee90610e61908a90600019908b908b908b908b90600401611a37565b600060405180830381600087803b158015610e7b57600080fd5b505af1158015610e8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eb79190810190611535565b600081518110610e1a57fe5b979650505050505050565b600082820183811015610ef35760405162461bcd60e51b815260040161027d90611806565b90505b92915050565b6000610ef383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112b7565b606084610f8e578267ffffffffffffffff81118015610f5c57600080fd5b50604051908082528060200260200182016040528015610f86578160200160208202803683370190505b50905061104f565b811561101f5760405163d06ca61f60e01b81526001600160a01b0387169063d06ca61f90610fc490889088908890600401611a1d565b60006040518083038186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110189190810190611535565b905061104f565b6040516307c0329d60e21b81526001600160a01b03871690631f00ca7490610fc490889088908890600401611a1d565b95945050505050565b60606110ad826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112e39092919063ffffffff16565b805190915015610d5857808060200190518101906110cb91906115cd565b610d585760405162461bcd60e51b815260040161027d90611983565b600080846001600160a01b031663e6a4390585856040518363ffffffff1660e01b8152600401611118929190611738565b60206040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111689190611519565b6040516370a0823160e01b81529091506001600160a01b038416906370a0823190611197908490600401611724565b60206040518083038186803b1580156111af57600080fd5b505afa1580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104f91906115ed565b6000610ef38261120585670de0b6b3a764000063ffffffff6112f216565b9063ffffffff61132c16565b600080611243611227878763ffffffff610ece16565b611237868663ffffffff610ece16565b9063ffffffff6111e716565b90506000611257878663ffffffff6111e716565b9050600061126b878663ffffffff6111e716565b905061128d81611281858563ffffffff61129916565b9063ffffffff61129916565b98975050505050505050565b6000610ef3670de0b6b3a7640000611205858563ffffffff6112f216565b600081848411156112db5760405162461bcd60e51b815260040161027d91906117d3565b505050900390565b6060610138848460008561136e565b60008261130157506000610ef6565b8282028284828161130e57fe5b0414610ef35760405162461bcd60e51b815260040161027d906118c5565b6000610ef383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611424565b6060824710156113905760405162461bcd60e51b815260040161027d9061187f565b6113998561145b565b6113b55760405162461bcd60e51b815260040161027d9061194c565b60006060866001600160a01b031685876040516113d29190611708565b60006040518083038185875af1925050503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b5091509150610ec3828286611461565b600081836114455760405162461bcd60e51b815260040161027d91906117d3565b50600083858161145157fe5b0495945050505050565b3b151590565b6060831561147057508161013b565b8251156114805782518084602001fd5b8160405162461bcd60e51b815260040161027d91906117d3565b604051806040016040528060008152602001600081525090565b60008083601f8401126114c5578182fd5b50813567ffffffffffffffff8111156114dc578182fd5b60208301915083602080830285010111156114f657600080fd5b9250929050565b60006020828403121561150e578081fd5b8135610ef381611b03565b60006020828403121561152a578081fd5b8151610ef381611b03565b60006020808385031215611547578182fd5b825167ffffffffffffffff81111561155d578283fd5b80840185601f82011261156e578384fd5b8051915061158361157e83611ab7565b611a90565b828152838101908285018585028401860189101561159f578687fd5b8693505b848410156115c15780518352600193909301929185019185016115a3565b50979650505050505050565b6000602082840312156115de578081fd5b81518015158114610ef3578182fd5b6000602082840312156115fe578081fd5b5051919050565b600080600060408486031215611619578182fd5b83359250602084013567ffffffffffffffff811115611636578283fd5b611642868287016114b4565b9497909650939450505050565b60008060008060008060a08789031215611667578182fd5b8635955060208701359450604087013567ffffffffffffffff81111561168b578283fd5b61169789828a016114b4565b90955093505060608701356116ab81611b03565b80925050608087013590509295509295509295565b60008284526020808501945082825b858110156116fd5781356116e281611b03565b6001600160a01b0316875295820195908201906001016116cf565b509495945050505050565b6000825161171a818460208701611ad7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156117c7578351835292840192918401916001016117ab565b50909695505050505050565b60006020825282518060208401526117f2816040850160208701611ad7565b601f01601f19169190910160400192915050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526022908201527f414d4d53706c69747465723a20696e636f72726563742070617468206c656e676040820152610e8d60f31b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526026908201527f414d4d53706c69747465723a20494e53554646494349454e545f494e5055545f604082015265105353d5539560d21b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526027908201527f414d4d53706c69747465723a20494e53554646494349454e545f4f555450555460408201526617d05353d5539560ca1b606082015260800190565b90815260200190565b60008482526040602083015261104f6040830184866116c0565b600087825286602083015260a06040830152611a5760a0830186886116c0565b6001600160a01b039490941660608301525060800152949350505050565b93845260208401929092526040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611aaf57600080fd5b604052919050565b600067ffffffffffffffff821115611acd578081fd5b5060209081020190565b60005b83811015611af2578181015183820152602001611ada565b838111156107d15750506000910152565b6001600160a01b0381168114611b1857600080fd5b5056fea26469706673582212204ada1eae242a2bc4c9795a21b09ffa8c54ce7609bb6610dfca3c4f1213a6b8c364736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c806376771d4b1161005b57806376771d4b146100f35780638803dbee146100fb578063a0e47bf61461010e578063d06ca61f1461011657610088565b80631f00ca741461008d57806322984b24146100b657806338ed1739146100cb5780636d13582c146100eb575b600080fd5b6100a061009b366004611605565b610129565b6040516100ad919061178f565b60405180910390f35b6100be610142565b6040516100ad9190611724565b6100de6100d936600461164f565b610166565b6040516100ad9190611a14565b6100be610348565b6100be61036c565b6100de61010936600461164f565b610390565b6100be6105dc565b6100a0610124366004611605565b610600565b6060610138848484600061060b565b90505b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610172858561074a565b60008585600081811061018157fe5b905060200201602081019061019691906114fd565b90506101b36001600160a01b03821633308b63ffffffff61077916565b6101bb61149a565b6101c687878b6107d7565b90506101db8160000151826020015184610ac6565b60006102117f000000000000000000000000000000000000000000000000000000000000000083600001518a8a8a8a6001610d5d565b905060006102497f000000000000000000000000000000000000000000000000000000000000000084602001518b8b8b8b6001610d5d565b905061025b828263ffffffff610ece16565b9450898510156102865760405162461bcd60e51b815260040161027d906119cd565b60405180910390fd5b6001600160a01b03871689896102a381600163ffffffff610efc16565b8181106102ac57fe5b90506020020160208101906102c191906114fd565b6001600160a01b03168a8a60008181106102d757fe5b90506020020160208101906102ec91906114fd565b6001600160a01b03167f0fd3d6cab20f5c58f315ceee314e574169f9b701ef8ea8af2887aa7b178a4b248e89886000015189602001516040516103329493929190611a75565b60405180910390a4505050509695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061039c858561074a565b6103a461149a565b6103af86868a6107d7565b905060006103e57f0000000000000000000000000000000000000000000000000000000000000000836000015189896000610f3e565b6000815181106103f157fe5b60200260200101519050600061042f7f000000000000000000000000000000000000000000000000000000000000000084602001518a8a6000610f3e565b60008151811061043b57fe5b602002602001015190506104588183610ece90919063ffffffff16565b93508884111561047a5760405162461bcd60e51b815260040161027d90611906565b60008888600081811061048957fe5b905060200201602081019061049e91906114fd565b90506104bb6001600160a01b03821633308863ffffffff61077916565b6104c6838383610ac6565b6104fa7f000000000000000000000000000000000000000000000000000000000000000085600001518b8b8b8b6000610d5d565b5061052f7f000000000000000000000000000000000000000000000000000000000000000085602001518b8b8b8b6000610d5d565b506001600160a01b038716898961054d81600163ffffffff610efc16565b81811061055657fe5b905060200201602081019061056b91906114fd565b6001600160a01b03168a8a600081811061058157fe5b905060200201602081019061059691906114fd565b6001600160a01b03167f047b1bcc9369469ca23899fad71880938a9ddc4bb412766b5665e558a9823796888f89600001518a602001516040516103329493929190611a75565b7f000000000000000000000000000000000000000000000000000000000000000081565b606061013884848460015b6060610617848461074a565b61061f61149a565b61062a8585886107d7565b9050606061065f7f00000000000000000000000000000000000000000000000000000000000000008360000151888888610f3e565b905060606106947f00000000000000000000000000000000000000000000000000000000000000008460200151898989610f3e565b90508567ffffffffffffffff811180156106ad57600080fd5b506040519080825280602002602001820160405280156106d7578160200160208202803683370190505b50935060005b845181101561073e5761071f8282815181106106f557fe5b602002602001015184838151811061070957fe5b6020026020010151610ece90919063ffffffff16565b85828151811061072b57fe5b60209081029190910101526001016106dd565b50505050949350505050565b60028114806107595750600381145b6107755760405162461bcd60e51b815260040161027d9061183d565b5050565b6107d1846323b872dd60e01b85858560405160240161079a93929190611752565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611058565b50505050565b6107df61149a565b600060028414156108db5760006108597f00000000000000000000000000000000000000000000000000000000000000008787600081811061081d57fe5b905060200201602081019061083291906114fd565b8888600181811061083f57fe5b905060200201602081019061085491906114fd565b6110e7565b905060006108b07f00000000000000000000000000000000000000000000000000000000000000008888600081811061088e57fe5b90506020020160208101906108a391906114fd565b8989600181811061083f57fe5b90506108d26108c5838363ffffffff610ece16565b839063ffffffff6111e716565b92505050610a95565b600061090e7f00000000000000000000000000000000000000000000000000000000000000008787600081811061081d57fe5b905060006109437f00000000000000000000000000000000000000000000000000000000000000008888600281811061088e57fe5b9050811580610950575080155b156109755760405180604001604052806000815260200186815250935050505061013b565b60006109ca7f0000000000000000000000000000000000000000000000000000000000000000898960008181106109a857fe5b90506020020160208101906109bd91906114fd565b8a8a600181811061083f57fe5b90506000610a217f00000000000000000000000000000000000000000000000000000000000000008a8a60028181106109ff57fe5b9050602002016020810190610a1491906114fd565b8b8b600181811061083f57fe5b9050811580610a2e575080155b15610a5557604051806040016040528088815260200160008152509550505050505061013b565b6000610a6385858585611211565b9050610a8d610a8082670de0b6b3a764000063ffffffff610ece16565b829063ffffffff6111e716565b955050505050505b610aa5838263ffffffff61129916565b808352610ab990849063ffffffff610efc16565b6020830152509392505050565b604051636eb1769f60e11b815283906001600160a01b0383169063dd62ed3e90610b169030907f000000000000000000000000000000000000000000000000000000000000000090600401611738565b60206040518083038186803b158015610b2e57600080fd5b505afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6691906115ed565b1015610c105760405163095ea7b360e01b81526001600160a01b0382169063095ea7b390610bbc907f00000000000000000000000000000000000000000000000000000000000000009060001990600401611776565b602060405180830381600087803b158015610bd657600080fd5b505af1158015610bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0e91906115cd565b505b604051636eb1769f60e11b815282906001600160a01b0383169063dd62ed3e90610c609030907f000000000000000000000000000000000000000000000000000000000000000090600401611738565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb091906115ed565b1015610d585760405163095ea7b360e01b81526001600160a01b0382169063095ea7b390610d06907f00000000000000000000000000000000000000000000000000000000000000009060001990600401611776565b602060405180830381600087803b158015610d2057600080fd5b505af1158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906115cd565b505050565b600086610d6c57506000610ec3565b8115610e29576040516338ed173960e01b81526001600160a01b038916906338ed173990610da9908a906000908b908b908b908b90600401611a37565b600060405180830381600087803b158015610dc357600080fd5b505af1158015610dd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dff9190810190611535565b610e1086600163ffffffff610efc16565b81518110610e1a57fe5b60200260200101519050610ec3565b604051634401edf760e11b81526001600160a01b03891690638803dbee90610e61908a90600019908b908b908b908b90600401611a37565b600060405180830381600087803b158015610e7b57600080fd5b505af1158015610e8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eb79190810190611535565b600081518110610e1a57fe5b979650505050505050565b600082820183811015610ef35760405162461bcd60e51b815260040161027d90611806565b90505b92915050565b6000610ef383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112b7565b606084610f8e578267ffffffffffffffff81118015610f5c57600080fd5b50604051908082528060200260200182016040528015610f86578160200160208202803683370190505b50905061104f565b811561101f5760405163d06ca61f60e01b81526001600160a01b0387169063d06ca61f90610fc490889088908890600401611a1d565b60006040518083038186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110189190810190611535565b905061104f565b6040516307c0329d60e21b81526001600160a01b03871690631f00ca7490610fc490889088908890600401611a1d565b95945050505050565b60606110ad826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166112e39092919063ffffffff16565b805190915015610d5857808060200190518101906110cb91906115cd565b610d585760405162461bcd60e51b815260040161027d90611983565b600080846001600160a01b031663e6a4390585856040518363ffffffff1660e01b8152600401611118929190611738565b60206040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111689190611519565b6040516370a0823160e01b81529091506001600160a01b038416906370a0823190611197908490600401611724565b60206040518083038186803b1580156111af57600080fd5b505afa1580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104f91906115ed565b6000610ef38261120585670de0b6b3a764000063ffffffff6112f216565b9063ffffffff61132c16565b600080611243611227878763ffffffff610ece16565b611237868663ffffffff610ece16565b9063ffffffff6111e716565b90506000611257878663ffffffff6111e716565b9050600061126b878663ffffffff6111e716565b905061128d81611281858563ffffffff61129916565b9063ffffffff61129916565b98975050505050505050565b6000610ef3670de0b6b3a7640000611205858563ffffffff6112f216565b600081848411156112db5760405162461bcd60e51b815260040161027d91906117d3565b505050900390565b6060610138848460008561136e565b60008261130157506000610ef6565b8282028284828161130e57fe5b0414610ef35760405162461bcd60e51b815260040161027d906118c5565b6000610ef383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611424565b6060824710156113905760405162461bcd60e51b815260040161027d9061187f565b6113998561145b565b6113b55760405162461bcd60e51b815260040161027d9061194c565b60006060866001600160a01b031685876040516113d29190611708565b60006040518083038185875af1925050503d806000811461140f576040519150601f19603f3d011682016040523d82523d6000602084013e611414565b606091505b5091509150610ec3828286611461565b600081836114455760405162461bcd60e51b815260040161027d91906117d3565b50600083858161145157fe5b0495945050505050565b3b151590565b6060831561147057508161013b565b8251156114805782518084602001fd5b8160405162461bcd60e51b815260040161027d91906117d3565b604051806040016040528060008152602001600081525090565b60008083601f8401126114c5578182fd5b50813567ffffffffffffffff8111156114dc578182fd5b60208301915083602080830285010111156114f657600080fd5b9250929050565b60006020828403121561150e578081fd5b8135610ef381611b03565b60006020828403121561152a578081fd5b8151610ef381611b03565b60006020808385031215611547578182fd5b825167ffffffffffffffff81111561155d578283fd5b80840185601f82011261156e578384fd5b8051915061158361157e83611ab7565b611a90565b828152838101908285018585028401860189101561159f578687fd5b8693505b848410156115c15780518352600193909301929185019185016115a3565b50979650505050505050565b6000602082840312156115de578081fd5b81518015158114610ef3578182fd5b6000602082840312156115fe578081fd5b5051919050565b600080600060408486031215611619578182fd5b83359250602084013567ffffffffffffffff811115611636578283fd5b611642868287016114b4565b9497909650939450505050565b60008060008060008060a08789031215611667578182fd5b8635955060208701359450604087013567ffffffffffffffff81111561168b578283fd5b61169789828a016114b4565b90955093505060608701356116ab81611b03565b80925050608087013590509295509295509295565b60008284526020808501945082825b858110156116fd5781356116e281611b03565b6001600160a01b0316875295820195908201906001016116cf565b509495945050505050565b6000825161171a818460208701611ad7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156117c7578351835292840192918401916001016117ab565b50909695505050505050565b60006020825282518060208401526117f2816040850160208701611ad7565b601f01601f19169190910160400192915050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526022908201527f414d4d53706c69747465723a20696e636f72726563742070617468206c656e676040820152610e8d60f31b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526026908201527f414d4d53706c69747465723a20494e53554646494349454e545f494e5055545f604082015265105353d5539560d21b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526027908201527f414d4d53706c69747465723a20494e53554646494349454e545f4f555450555460408201526617d05353d5539560ca1b606082015260800190565b90815260200190565b60008482526040602083015261104f6040830184866116c0565b600087825286602083015260a06040830152611a5760a0830186886116c0565b6001600160a01b039490941660608301525060800152949350505050565b93845260208401929092526040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611aaf57600080fd5b604052919050565b600067ffffffffffffffff821115611acd578081fd5b5060209081020190565b60005b83811015611af2578181015183820152602001611ada565b838111156107d15750506000910152565b6001600160a01b0381168114611b1857600080fd5b5056fea26469706673582212204ada1eae242a2bc4c9795a21b09ffa8c54ce7609bb6610dfca3c4f1213a6b8c364736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
