{
  "_format": "hh-sol-artifact-1",
  "contractName": "Distribution",
  "sourceName": "contracts/tokenPools/implementation/Distribution.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "theAccount",
          "type": "address"
        }
      ],
      "name": "AccountClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "theAccount",
          "type": "address"
        }
      ],
      "name": "AccountOptOut",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "accountsArray",
          "type": "address[]"
        }
      ],
      "name": "AccountsAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EntitlementStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposedGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldGovernance",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newGoveranance",
          "type": "address"
        }
      ],
      "name": "GovernanceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "OptOutWeiWithdrawn",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "airdropAccounts",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "entitlementBalanceWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalClaimedWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "optOutBalanceWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "airdroppedAtGenesisWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "entitlementStartTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClaimableAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getClaimableAmountOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTokenPoolSupplyData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_foundationAllocatedFundsWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalInflationAuthorizedWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalClaimedWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "optOutOfAirdrop",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "proposeGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposedGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "secondsTillNextClaim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "timeTill",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "toAddress",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "balance",
          "type": "uint256[]"
        }
      ],
      "name": "setClaimBalance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_entitlementStartTs",
          "type": "uint256"
        }
      ],
      "name": "setEntitlementStart",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalClaimedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalEntitlementWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalOptOutWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "transferGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_targetAddress",
          "type": "address"
        }
      ],
      "name": "withdrawOptOutWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawnOptOutWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200207438038062002074833981810160405260208110156200003757600080fd5b505180806001600160a01b0381161562000056576200005681620000ae565b506001600160a01b038116620000a6576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b505062000192565b600154600160a01b900460ff16156200010e576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b611ed280620001a26000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80637fd45d2b116100b8578063c373a08e1161007c578063c373a08e14610359578063d38bfff41461037f578063e28ef1f7146103a5578063e60eb6ff146103c2578063f2325e38146103ca578063f2a1f767146103d257610136565b80637fd45d2b146102d75780639d6a890f146102fd5780639f71043e14610323578063b5551ab71461032b578063c354bd6e1461035157610136565b80634bb5696a116100ff5780634bb5696a146102935780634e71d92d1461029b5780635aa6e675146102a35780635d36b190146102c757806360f7ac97146102cf57610136565b80626a1d511461013b57806326631201146101555780632dafdbbf1461021957806344a8ace21461023f57806344d94b4b1461028b575b600080fd5b6101436103da565b60408051918252519081900360200190f35b6102176004803603604081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b9193909290916020810190356401000000008111156101d857600080fd5b8201836020820111156101ea57600080fd5b8035906020019184602083028401116401000000008311171561020c57600080fd5b5090925090506103e0565b005b610221610687565b60408051938452602084019290925282820152519081900360600190f35b6102656004803603602081101561025557600080fd5b50356001600160a01b031661069b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101436106c4565b6101436106ca565b61014361075f565b6102ab610aab565b604080516001600160a01b039092168252519081900360200190f35b610217610aba565b6102ab610b7c565b610143600480360360208110156102ed57600080fd5b50356001600160a01b0316610b8b565b6102176004803603602081101561031357600080fd5b50356001600160a01b0316610c21565b610143610cfb565b6101436004803603602081101561034157600080fd5b50356001600160a01b0316610d01565b610143610f9f565b6102176004803603602081101561036f57600080fd5b50356001600160a01b031661102f565b6102176004803603602081101561039557600080fd5b50356001600160a01b031661108b565b610217600480360360208110156103bb57600080fd5b5035611104565b61014361122d565b610143611233565b610217611239565b60065481565b6103e86114ca565b604080518082019091526008815267746f6f206d616e7960c01b60208201526103e88411156104955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561045a578181015183820152602001610442565b50505050905090810190601f1680156104875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601781527f617272617973206c656e67746873206d69736d6174636800000000000000000060208201528382146105185760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060005b61ffff811684111561061d5760006105596105dc61271086868661ffff1681811061054357fe5b9050602002013561151d9092919063ffffffff16565b905060006105868286868661ffff1681811061057157fe5b9050602002013561162b90919063ffffffff16565b905060405180608001604052808281526020016000815260200160008152602001838152506002600089898761ffff168181106105bf57fe5b602090810292909201356001600160a01b0316835250818101929092526040908101600020835181559183015160018301558201516002820155606090910151600391820155546106109082611688565b600355505060010161051c565b507fc21490756c6f0185a8ad2363084fd0a45b06707979f77786b5e681bddc1d2fa1848460405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a150505050565b600354600654600454919260009290910190565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b60055481565b60006007546000141580156106e0575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107505760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5061075a336116e2565b905090565b6000600754600014158015610775575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107e55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5033600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b9183019190915261086d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906109105760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b503360008181526002602052604090209061092a90611977565b9250600083116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c650000815250906109b25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50600181018054840190556004546109ca9084611688565b60045560405133907f98220ba7e456cda59b84320240d405cb87d7d871ba13f798d6362297818d29fc90600090a2604051339084156108fc029085906000818181858888f19350505050158015610a25573d6000803e3d6000fd5b50505047610a31611be5565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610aa75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5090565b6000546001600160a01b031681565b6001546001600160a01b03163314610b09576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6000600754600014158015610ba1575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610c115760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50610c1b82611977565b92915050565b600154600160a01b900460ff1615610c77576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60045481565b6000610d0b6114ca565b60075415801590610d1d575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610d8d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b506000600554116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610e165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060065460055414156040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610ea15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50600654600554610eb19161162b565b6005546006556040519091507f79d406fa3c1c020905a48c371f891e33f8210c0e4ab4d5221dc01f531f7342db90600090a16040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f19573d6000803e3d6000fd5b5047610f23611be5565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610f995760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50919050565b6000600754600014158015610fb5575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906110255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5061075a33611977565b6110376114ca565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6110936114ca565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61110c6114ca565b6007546040805180820190915260088152676e6f74207a65726f60c01b6020820152901561117b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060078190556040517f11b09d9dabfa7c2fc728e40a9c71bbb893c699e75d271e7ca02ef02bead3e44390600090a1476111b3611be5565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b815250906112295760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5050565b60075481565b60035481565b33600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b918301919091526112c05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906113635760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060075415801590611376575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906113e65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50336000908152600260209081526040918290206001810154815484518086019095526015855274185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b938501939093529092911161147c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060405133907fdaa99ea0f252dcde78c690a59f1d9953dcca69dc3127eff6f919fc8b16ed873090600090a26001810154815403600282018190556005546114c391611688565b6005555050565b6000546001600160a01b0316331461151b576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b6000808211611566576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b8361157357506000611624565b8383028385828161158057fe5b0414156115995782818161159057fe5b04915050611624565b60008386816115a457fe5b04905060008487816115b257fe5b06905060008587816115c057fe5b04905060008688816115ce57fe5b06905061161c6115e8886115e28685611c0a565b90611c63565b6116166115f58686611c0a565b6116166116028987611c0a565b6116168d6116108c8b611c0a565b90611c0a565b90611688565b955050505050505b9392505050565b600082821115611682576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611624576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006007546000141580156116f8575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906117685760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b8152509061180a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906118ad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50601d6118cc62278d006115e26007544261162b90919063ffffffff16565b1060405180604001604052806015815260200174185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b815250906119475760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5061162461196d62278d006119676007544261162b90919063ffffffff16565b90611cca565b62278d009061162b565b600060075460001415801561198d575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906119fd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b81525090611a9f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b81525090611b425760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b506001600160a01b03831660009081526002602081815260408084208151608081018352815481526001820154938101939093529283015490820152600390910154606082015290611b92611d31565b8251909150600090611ba7908361213461151d565b9050611bbf611bba828560000151611dfa565b611e10565b6fffffffffffffffffffffffffffffffff16905082602001518103945050505050919050565b600061075a600654611c0460045460035461162b90919063ffffffff16565b9061162b565b600082611c1957506000610c1b565b82820282848281611c2657fe5b04146116245760405162461bcd60e51b8152600401808060200182810382526021815260200180611e7c6021913960400191505060405180910390fd5b6000808211611cb9576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611cc257fe5b049392505050565b6000808211611d20576040805162461bcd60e51b815260206004820152601860248201527f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000604482015290519081900360640190fd5b818381611d2957fe5b069392505050565b6000600754600014158015611d47575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090611db75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b506000611dd6620151806115e26007544261162b90919063ffffffff16565b9050611df4611dec61012c61161084601e611c63565b612134611dfa565b91505090565b6000818310611e095781611624565b5090919050565b6000600160801b8210610aa75760405162461bcd60e51b8152600401808060200182810382526027815260200180611e556027913960400191505060405180910390fdfe53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220fd109fbcc04f347c9945ec64f7ad8be1cfcc62132c0d12f13b7de9f9f8884ca064736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101365760003560e01c80637fd45d2b116100b8578063c373a08e1161007c578063c373a08e14610359578063d38bfff41461037f578063e28ef1f7146103a5578063e60eb6ff146103c2578063f2325e38146103ca578063f2a1f767146103d257610136565b80637fd45d2b146102d75780639d6a890f146102fd5780639f71043e14610323578063b5551ab71461032b578063c354bd6e1461035157610136565b80634bb5696a116100ff5780634bb5696a146102935780634e71d92d1461029b5780635aa6e675146102a35780635d36b190146102c757806360f7ac97146102cf57610136565b80626a1d511461013b57806326631201146101555780632dafdbbf1461021957806344a8ace21461023f57806344d94b4b1461028b575b600080fd5b6101436103da565b60408051918252519081900360200190f35b6102176004803603604081101561016b57600080fd5b81019060208101813564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b9193909290916020810190356401000000008111156101d857600080fd5b8201836020820111156101ea57600080fd5b8035906020019184602083028401116401000000008311171561020c57600080fd5b5090925090506103e0565b005b610221610687565b60408051938452602084019290925282820152519081900360600190f35b6102656004803603602081101561025557600080fd5b50356001600160a01b031661069b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101436106c4565b6101436106ca565b61014361075f565b6102ab610aab565b604080516001600160a01b039092168252519081900360200190f35b610217610aba565b6102ab610b7c565b610143600480360360208110156102ed57600080fd5b50356001600160a01b0316610b8b565b6102176004803603602081101561031357600080fd5b50356001600160a01b0316610c21565b610143610cfb565b6101436004803603602081101561034157600080fd5b50356001600160a01b0316610d01565b610143610f9f565b6102176004803603602081101561036f57600080fd5b50356001600160a01b031661102f565b6102176004803603602081101561039557600080fd5b50356001600160a01b031661108b565b610217600480360360208110156103bb57600080fd5b5035611104565b61014361122d565b610143611233565b610217611239565b60065481565b6103e86114ca565b604080518082019091526008815267746f6f206d616e7960c01b60208201526103e88411156104955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561045a578181015183820152602001610442565b50505050905090810190601f1680156104875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601781527f617272617973206c656e67746873206d69736d6174636800000000000000000060208201528382146105185760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060005b61ffff811684111561061d5760006105596105dc61271086868661ffff1681811061054357fe5b9050602002013561151d9092919063ffffffff16565b905060006105868286868661ffff1681811061057157fe5b9050602002013561162b90919063ffffffff16565b905060405180608001604052808281526020016000815260200160008152602001838152506002600089898761ffff168181106105bf57fe5b602090810292909201356001600160a01b0316835250818101929092526040908101600020835181559183015160018301558201516002820155606090910151600391820155546106109082611688565b600355505060010161051c565b507fc21490756c6f0185a8ad2363084fd0a45b06707979f77786b5e681bddc1d2fa1848460405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a150505050565b600354600654600454919260009290910190565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b60055481565b60006007546000141580156106e0575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107505760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5061075a336116e2565b905090565b6000600754600014158015610775575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107e55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5033600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b9183019190915261086d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906109105760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b503360008181526002602052604090209061092a90611977565b9250600083116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c650000815250906109b25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50600181018054840190556004546109ca9084611688565b60045560405133907f98220ba7e456cda59b84320240d405cb87d7d871ba13f798d6362297818d29fc90600090a2604051339084156108fc029085906000818181858888f19350505050158015610a25573d6000803e3d6000fd5b50505047610a31611be5565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610aa75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5090565b6000546001600160a01b031681565b6001546001600160a01b03163314610b09576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6000600754600014158015610ba1575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610c115760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50610c1b82611977565b92915050565b600154600160a01b900460ff1615610c77576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60045481565b6000610d0b6114ca565b60075415801590610d1d575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610d8d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b506000600554116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610e165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060065460055414156040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610ea15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50600654600554610eb19161162b565b6005546006556040519091507f79d406fa3c1c020905a48c371f891e33f8210c0e4ab4d5221dc01f531f7342db90600090a16040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f19573d6000803e3d6000fd5b5047610f23611be5565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610f995760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50919050565b6000600754600014158015610fb5575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906110255760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5061075a33611977565b6110376114ca565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6110936114ca565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61110c6114ca565b6007546040805180820190915260088152676e6f74207a65726f60c01b6020820152901561117b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060078190556040517f11b09d9dabfa7c2fc728e40a9c71bbb893c699e75d271e7ca02ef02bead3e44390600090a1476111b3611be5565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b815250906112295760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5050565b60075481565b60035481565b33600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b918301919091526112c05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906113635760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060075415801590611376575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906113e65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50336000908152600260209081526040918290206001810154815484518086019095526015855274185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b938501939093529092911161147c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060405133907fdaa99ea0f252dcde78c690a59f1d9953dcca69dc3127eff6f919fc8b16ed873090600090a26001810154815403600282018190556005546114c391611688565b6005555050565b6000546001600160a01b0316331461151b576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b6000808211611566576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b8361157357506000611624565b8383028385828161158057fe5b0414156115995782818161159057fe5b04915050611624565b60008386816115a457fe5b04905060008487816115b257fe5b06905060008587816115c057fe5b04905060008688816115ce57fe5b06905061161c6115e8886115e28685611c0a565b90611c63565b6116166115f58686611c0a565b6116166116028987611c0a565b6116168d6116108c8b611c0a565b90611c0a565b90611688565b955050505050505b9392505050565b600082821115611682576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611624576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006007546000141580156116f8575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906117685760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b8152509061180a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906118ad5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b50601d6118cc62278d006115e26007544261162b90919063ffffffff16565b1060405180604001604052806015815260200174185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b815250906119475760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5061162461196d62278d006119676007544261162b90919063ffffffff16565b90611cca565b62278d009061162b565b600060075460001415801561198d575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906119fd5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b81525090611a9f5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b81525090611b425760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b506001600160a01b03831660009081526002602081815260408084208151608081018352815481526001820154938101939093529283015490820152600390910154606082015290611b92611d31565b8251909150600090611ba7908361213461151d565b9050611bbf611bba828560000151611dfa565b611e10565b6fffffffffffffffffffffffffffffffff16905082602001518103945050505050919050565b600061075a600654611c0460045460035461162b90919063ffffffff16565b9061162b565b600082611c1957506000610c1b565b82820282848281611c2657fe5b04146116245760405162461bcd60e51b8152600401808060200182810382526021815260200180611e7c6021913960400191505060405180910390fd5b6000808211611cb9576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611cc257fe5b049392505050565b6000808211611d20576040805162461bcd60e51b815260206004820152601860248201527f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000604482015290519081900360640190fd5b818381611d2957fe5b069392505050565b6000600754600014158015611d47575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090611db75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561045a578181015183820152602001610442565b506000611dd6620151806115e26007544261162b90919063ffffffff16565b9050611df4611dec61012c61161084601e611c63565b612134611dfa565b91505090565b6000818310611e095781611624565b5090919050565b6000600160801b8210610aa75760405162461bcd60e51b8152600401808060200182810382526027815260200180611e556027913960400191505060405180910390fdfe53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220fd109fbcc04f347c9945ec64f7ad8be1cfcc62132c0d12f13b7de9f9f8884ca064736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
