{
  "_format": "hh-sol-artifact-1",
  "contractName": "FeeCollector",
  "sourceName": "contracts/fee-collector/FeeCollector.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_wrappedToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_initHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_stakingRewards",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_miniChef",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_treasury",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_governor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FACTORY",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FEE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GOVERNOR_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "HARVEST_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_HARVEST_INCENTIVE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAIR_INIT_HASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PAUSE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RECOVERY_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "WRAPPED_TOKEN",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IPangolinPair[]",
          "name": "liquidityPairs",
          "type": "address[]"
        },
        {
          "internalType": "bool",
          "name": "claimMiniChef",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "minFinalBalance",
          "type": "uint256"
        }
      ],
      "name": "harvest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "harvestIncentive",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isRecoverable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "miniChef",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "miniChefPoolId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "liquidityPairs",
          "type": "address[]"
        }
      ],
      "name": "recoverLP",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_harvestIncentive",
          "type": "uint256"
        }
      ],
      "name": "setHarvestIncentive",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_miniChef",
          "type": "address"
        }
      ],
      "name": "setMiniChef",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "name": "setMiniChefPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "setRecoverable",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_stakingRewards",
          "type": "address"
        }
      ],
      "name": "setRewardsContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_rewardsDuration",
          "type": "uint256"
        }
      ],
      "name": "setRewardsDuration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_treasury",
          "type": "address"
        }
      ],
      "name": "setTreasury",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_treasuryFee",
          "type": "uint256"
        }
      ],
      "name": "setTreasuryFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakingRewards",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakingRewardsRewardToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferStakingOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "treasury",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "treasuryFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e06040526105dc600455600a6005553480156200001c57600080fd5b5060405162002cfb38038062002cfb8339810160408190526200003f91620003d5565b6001805460ff191690556001600160a01b03808a1660c05288811660805260a08890528616620000a85760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064015b60405180910390fd5b6000866001600160a01b031663d1af0c7d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010f91906200047e565b90506001600160a01b038116620001695760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964207374616b696e67207265776172640000000000000000000060448201526064016200009f565b60018054610100600160a81b0319166101006001600160a01b038a81169190910291909117909155600280546001600160a01b031990811684841617909155600680548216898416179055600787905560038054909116918616919091179055620001d6600083620002cc565b620002027f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c83620002cc565b6200022e7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d83620002cc565b6200025a7f0acf805600123ef007091da3b3ffb39474074c656c127aa68cb0ffec232a8ff883620002cc565b620002867f0acf805600123ef007091da3b3ffb39474074c656c127aa68cb0ffec232a8ff8806200036d565b620002a160008051602062002cdb83398151915284620002cc565b620002bc60008051602062002cdb833981519152806200036d565b50505050505050505050620004a3565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000369576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003283390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b80516001600160a01b0381168114620003d057600080fd5b919050565b60008060008060008060008060006101208a8c031215620003f557600080fd5b620004008a620003b8565b98506200041060208b01620003b8565b975060408a015196506200042760608b01620003b8565b95506200043760808b01620003b8565b945060a08a015193506200044e60c08b01620003b8565b92506200045e60e08b01620003b8565b91506200046f6101008b01620003b8565b90509295985092959850929598565b6000602082840312156200049157600080fd5b6200049c82620003b8565b9392505050565b60805160a05160c0516127e5620004f6600039600081816104f301528181611774015281816117af01526117fa0152600081816105d60152611bd601526000818161032d0152611b9b01526127e56000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c80637e2be19511610160578063cd6e7def116100d8578063d73792a91161008c578063f0f4426011610071578063f0f44260146105be578063fa881298146105d1578063fbb12d07146105f857600080fd5b8063d73792a9146105a2578063dfa0dfa5146105ab57600080fd5b8063cf3b69b6116100bd578063cf3b69b614610574578063cfabe8ed1461057c578063d547741f1461058f57600080fd5b8063cd6e7def14610558578063ce306b801461056157600080fd5b8063a217fddf1161012f578063cc1a378f11610114578063cc1a378f14610515578063cc32d17614610528578063ccc574901461053157600080fd5b8063a217fddf146104e6578063b7c71db4146104ee57600080fd5b80637e2be195146104815780638456cb591461049457806386da6f7c1461049c57806391d14854146104af57600080fd5b80633792a7fb1161020e5780635c975abb116101c2578063635cc7b8116101a7578063635cc7b81461044357806364b87a701461045657806377e741c71461046e57600080fd5b80635c975abb1461042557806361d027b31461043057600080fd5b80633f4ba83a116101f35780633f4ba83a146103f75780634005760a146103ff578063572996c71461041257600080fd5b80633792a7fb146103bd578063389ed267146103d057600080fd5b80632dd31000116102655780633024a3071161024a5780633024a3071461037a57806331993a1c1461038357806336568abe146103aa57600080fd5b80632dd31000146103285780632f2ff15d1461036757600080fd5b806301ffc9a71461029757806316242bee146102bf578063248a9ca3146102d45780632851bbc914610305575b600080fd5b6102aa6102a53660046122ba565b61061f565b60405190151581526020015b60405180910390f35b6102d26102cd36600461231f565b6106b8565b005b6102f76102e2366004612358565b60009081526020819052604090206001015490565b6040519081526020016102b6565b6102aa610313366004612371565b60086020526000908152604090205460ff1681565b61034f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b6565b6102d261037536600461238e565b61070e565b6102f760075481565b6102f77f0acf805600123ef007091da3b3ffb39474074c656c127aa68cb0ffec232a8ff881565b6102d26103b836600461238e565b610738565b6102d26103cb366004612358565b6107c9565b6102f77f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d81565b6102d26107da565b60065461034f906001600160a01b031681565b6102d2610420366004612371565b61080f565b60015460ff166102aa565b60035461034f906001600160a01b031681565b6102d26104513660046123ff565b61085d565b60015461034f9061010090046001600160a01b031681565b6102d261047c366004612358565b610b5d565b6102d261048f366004612358565b610bec565b6102d2610cad565b60025461034f906001600160a01b031681565b6102aa6104bd36600461238e565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102f7600081565b61034f7f000000000000000000000000000000000000000000000000000000000000000081565b6102d2610523366004612358565b610cdf565b6102f760045481565b6102f77f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5581565b6102f760055481565b6102d261056f36600461245c565b610d6a565b6102f760c881565b6102d261058a366004612371565b610ee5565b6102d261059d36600461238e565b610f41565b6102f761271081565b6102d26105b9366004612371565b610f66565b6102d26105cc366004612371565b6110e1565b6102f77f000000000000000000000000000000000000000000000000000000000000000081565b6102f77f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106b257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f0acf805600123ef007091da3b3ffb39474074c656c127aa68cb0ffec232a8ff86106e28161112f565b506001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000828152602081905260409020600101546107298161112f565b6107338383611139565b505050565b6001600160a01b03811633146107bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6107c582826111d7565b5050565b60006107d48161112f565b50600755565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d6108048161112f565b61080c611256565b50565b600061081a8161112f565b6001600160a01b03821661082d57600080fd5b506006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6108656112a8565b7f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c61088f8161112f565b6002546001600160a01b031684156108df576108df8686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508592506112fd915050565b8315610967576006546007546040517f18fccc7600000000000000000000000000000000000000000000000000000000815260048101919091523060248201526001600160a01b03909116906318fccc7690604401600060405180830381600087803b15801561094e57600080fd5b505af1158015610962573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156109ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d2919061249e565b905083811015610a245760405162461bcd60e51b815260206004820152600d60248201527f4869676820536c6970706167650000000000000000000000000000000000000060448201526064016107b2565b600061271060055483610a3791906124cd565b610a4191906124ec565b9050600061271060045484610a5691906124cd565b610a6091906124ec565b9050600081610a6f848661250e565b610a79919061250e565b90508015610b17576001546001600160a01b03610100909104811690610aa29087168284611416565b6040517f3c6b16ab000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03821690633c6b16ab90602401600060405180830381600087803b158015610afd57600080fd5b505af1158015610b11573d6000803e3d6000fd5b50505050505b8115610b3757600354610b37906001600160a01b03878116911684611416565b8215610b5157610b516001600160a01b0386163385611416565b50505050505050505050565b7f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f55610b878161112f565b61271082600554610b989190612525565b1115610be65760405162461bcd60e51b815260206004820152601660248201527f546f74616c2066656573206d757374203c3d203130300000000000000000000060448201526064016107b2565b50600455565b6000610bf78161112f565b60c8821115610c485760405162461bcd60e51b815260206004820152601360248201527f496e63656e7469766520746f6f206c617267650000000000000000000000000060448201526064016107b2565b61271060045483610c599190612525565b1115610ca75760405162461bcd60e51b815260206004820152601660248201527f546f74616c2066656573206d757374203c3d203130300000000000000000000060448201526064016107b2565b50600555565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d610cd78161112f565b61080c611496565b6000610cea8161112f565b6001546040517fcc1a378f000000000000000000000000000000000000000000000000000000008152600481018490526101009091046001600160a01b03169063cc1a378f906024015b600060405180830381600087803b158015610d4e57600080fd5b505af1158015610d62573d6000803e3d6000fd5b505050505050565b610d726112a8565b6000610d7d8161112f565b6003546001600160a01b03168260005b81811015610d625760086000878784818110610dab57610dab61253d565b9050602002016020810190610dc09190612371565b6001600160a01b0316815260208101919091526040016000205460ff16610e295760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74207265636f76657200000000000000000000000000000000000060448201526064016107b2565b6000868683818110610e3d57610e3d61253d565b9050602002016020810190610e529190612371565b6040516370a0823160e01b8152306004820152909150610ed49085906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec3919061249e565b6001600160a01b0384169190611416565b50610ede81612553565b9050610d8d565b6000610ef08161112f565b6001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526101009092049091169063f2fde38b90602401610d34565b600082815260208190526040902060010154610f5c8161112f565b61073383836111d7565b6000610f718161112f565b6001600160a01b038216610fc75760405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642061646472657373000000000000000000000000000000000060448201526064016107b2565b6000826001600160a01b031663d1af0c7d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061256d565b90506001600160a01b0381166110835760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964207374616b696e67207265776172640000000000000000000060448201526064016107b2565b600180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03958616021790556002805473ffffffffffffffffffffffffffffffffffffffff1916919093161790915550565b60006110ec8161112f565b6001600160a01b0382166110ff57600080fd5b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61080c81336114d1565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111933390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156107c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61125e611544565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60015460ff16156112fb5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107b2565b565b60005b825181101561073357600083828151811061131d5761131d61253d565b60209081029190910101516040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611396919061249e565b90508015611403576000806000806113ae8686611596565b9350935093509350876001600160a01b0316846001600160a01b0316146113da576113da848985611772565b876001600160a01b0316826001600160a01b0316146113fe576113fe828983611772565b505050505b50508061140f90612553565b9050611300565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261073390849061181f565b61149e6112a8565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361128b565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107c55761150281611904565b61150d836020611916565b60405160200161151e9291906125ba565b60408051601f198184030181529082905262461bcd60e51b82526107b291600401612667565b60015460ff166112fb5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107b2565b600080600080856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe919061256d565b9350856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561163e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611662919061256d565b9150856001600160a01b03166116788584611b46565b6001600160a01b0316146116ce5760405162461bcd60e51b815260206004820152600c60248201527f496e76616c69642070616972000000000000000000000000000000000000000060448201526064016107b2565b6116e26001600160a01b0387168787611416565b6040517f89afcb440000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038716906389afcb449060240160408051808303816000875af1158015611740573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611764919061267a565b949790965091945090915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614806117e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156117f357610733818484611c73565b61073381847f000000000000000000000000000000000000000000000000000000000000000085611dad565b6000611874826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120099092919063ffffffff16565b8051909150156107335780806020019051810190611892919061269e565b6107335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107b2565b60606106b26001600160a01b03831660145b606060006119258360026124cd565b611930906002612525565b67ffffffffffffffff811115611948576119486126bb565b6040519080825280601f01601f191660200182016040528015611972576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106119a9576119a961253d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611a0c57611a0c61253d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611a488460026124cd565b611a53906001612525565b90505b6001811115611af0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611a9457611a9461253d565b1a60f81b828281518110611aaa57611aaa61253d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611ae9816126d1565b9050611a56565b508315611b3f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107b2565b9392505050565b6000806000836001600160a01b0316856001600160a01b031610611b6b578385611b6e565b84845b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b16603482015291935091507f000000000000000000000000000000000000000000000000000000000000000090604801604051602081830303815290604052805190602001207f0000000000000000000000000000000000000000000000000000000000000000604051602001611c52939291907fff00000000000000000000000000000000000000000000000000000000000000815260609390931b6bffffffffffffffffffffffff191660018401526015830191909152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6000611c7f8383611b46565b90506000611c8f85838686612020565b9050611ca56001600160a01b0385168387611416565b826001600160a01b0316846001600160a01b03161015611d3557604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0384169163022c0d9f91611cfe919085903090602481016126e8565b600060405180830381600087803b158015611d1857600080fd5b505af1158015611d2c573d6000803e3d6000fd5b50505050611da6565b604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0384169163022c0d9f91611d739185913090602481016126e8565b600060405180830381600087803b158015611d8d57600080fd5b505af1158015611da1573d6000803e3d6000fd5b505050505b5050505050565b6000611db98484611b46565b90506000611dc78484611b46565b90506000611dd787848888612020565b90506000611de782848888612020565b9050611dfd6001600160a01b038816858a611416565b856001600160a01b0316876001600160a01b03161015611e8d57604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0386169163022c0d9f91611e56919086908890602481016126e8565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b50505050611efe565b604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0386169163022c0d9f91611ecb9186918890602481016126e8565b600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b505050505b846001600160a01b0316866001600160a01b03161015611f8e57604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0385169163022c0d9f91611f57919085903090602481016126e8565b600060405180830381600087803b158015611f7157600080fd5b505af1158015611f85573d6000803e3d6000fd5b50505050611fff565b604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0385169163022c0d9f91611fcc9185913090602481016126e8565b600060405180830381600087803b158015611fe657600080fd5b505af1158015611ffa573d6000803e3d6000fd5b505050505b5050505050505050565b6060612018848460008561212a565b949350505050565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120879190612743565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600080856001600160a01b0316876001600160a01b0316106120cf5782846120d2565b83835b909250905060006120e58a6103e56124cd565b905060006120f383836124cd565b9050600082612104866103e86124cd565b61210e9190612525565b905061211a81836124ec565b9c9b505050505050505050505050565b6060824710156121a25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107b2565b600080866001600160a01b031685876040516121be9190612793565b60006040518083038185875af1925050503d80600081146121fb576040519150601f19603f3d011682016040523d82523d6000602084013e612200565b606091505b50915091506122118783838761221c565b979650505050505050565b6060831561228b578251600003612284576001600160a01b0385163b6122845760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b2565b5081612018565b61201883838151156122a05781518083602001fd5b8060405162461bcd60e51b81526004016107b29190612667565b6000602082840312156122cc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b3f57600080fd5b6001600160a01b038116811461080c57600080fd5b801515811461080c57600080fd5b6000806040838503121561233257600080fd5b823561233d816122fc565b9150602083013561234d81612311565b809150509250929050565b60006020828403121561236a57600080fd5b5035919050565b60006020828403121561238357600080fd5b8135611b3f816122fc565b600080604083850312156123a157600080fd5b82359150602083013561234d816122fc565b60008083601f8401126123c557600080fd5b50813567ffffffffffffffff8111156123dd57600080fd5b6020830191508360208260051b85010111156123f857600080fd5b9250929050565b6000806000806060858703121561241557600080fd5b843567ffffffffffffffff81111561242c57600080fd5b612438878288016123b3565b909550935050602085013561244c81612311565b9396929550929360400135925050565b6000806020838503121561246f57600080fd5b823567ffffffffffffffff81111561248657600080fd5b612492858286016123b3565b90969095509350505050565b6000602082840312156124b057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156124e7576124e76124b7565b500290565b60008261250957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612520576125206124b7565b500390565b60008219821115612538576125386124b7565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198203612566576125666124b7565b5060010190565b60006020828403121561257f57600080fd5b8151611b3f816122fc565b60005b838110156125a557818101518382015260200161258d565b838111156125b4576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516125f281601785016020880161258a565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161262f81602884016020880161258a565b01602801949350505050565b6000815180845261265381602086016020860161258a565b601f01601f19169290920160200192915050565b602081526000611b3f602083018461263b565b6000806040838503121561268d57600080fd5b505080516020909101519092909150565b6000602082840312156126b057600080fd5b8151611b3f81612311565b634e487b7160e01b600052604160045260246000fd5b6000816126e0576126e06124b7565b506000190190565b8481528360208201526001600160a01b0383166040820152608060608201526000612716608083018461263b565b9695505050505050565b80516dffffffffffffffffffffffffffff8116811461273e57600080fd5b919050565b60008060006060848603121561275857600080fd5b61276184612720565b925061276f60208501612720565b9150604084015163ffffffff8116811461278857600080fd5b809150509250925092565b600082516127a581846020870161258a565b919091019291505056fea26469706673582212207c791ea85fca9fb53c7a043b5c87abb267791256910b8e33717b16a8665419ce64736f6c634300080d00337935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f55",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102925760003560e01c80637e2be19511610160578063cd6e7def116100d8578063d73792a91161008c578063f0f4426011610071578063f0f44260146105be578063fa881298146105d1578063fbb12d07146105f857600080fd5b8063d73792a9146105a2578063dfa0dfa5146105ab57600080fd5b8063cf3b69b6116100bd578063cf3b69b614610574578063cfabe8ed1461057c578063d547741f1461058f57600080fd5b8063cd6e7def14610558578063ce306b801461056157600080fd5b8063a217fddf1161012f578063cc1a378f11610114578063cc1a378f14610515578063cc32d17614610528578063ccc574901461053157600080fd5b8063a217fddf146104e6578063b7c71db4146104ee57600080fd5b80637e2be195146104815780638456cb591461049457806386da6f7c1461049c57806391d14854146104af57600080fd5b80633792a7fb1161020e5780635c975abb116101c2578063635cc7b8116101a7578063635cc7b81461044357806364b87a701461045657806377e741c71461046e57600080fd5b80635c975abb1461042557806361d027b31461043057600080fd5b80633f4ba83a116101f35780633f4ba83a146103f75780634005760a146103ff578063572996c71461041257600080fd5b80633792a7fb146103bd578063389ed267146103d057600080fd5b80632dd31000116102655780633024a3071161024a5780633024a3071461037a57806331993a1c1461038357806336568abe146103aa57600080fd5b80632dd31000146103285780632f2ff15d1461036757600080fd5b806301ffc9a71461029757806316242bee146102bf578063248a9ca3146102d45780632851bbc914610305575b600080fd5b6102aa6102a53660046122ba565b61061f565b60405190151581526020015b60405180910390f35b6102d26102cd36600461231f565b6106b8565b005b6102f76102e2366004612358565b60009081526020819052604090206001015490565b6040519081526020016102b6565b6102aa610313366004612371565b60086020526000908152604090205460ff1681565b61034f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102b6565b6102d261037536600461238e565b61070e565b6102f760075481565b6102f77f0acf805600123ef007091da3b3ffb39474074c656c127aa68cb0ffec232a8ff881565b6102d26103b836600461238e565b610738565b6102d26103cb366004612358565b6107c9565b6102f77f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d81565b6102d26107da565b60065461034f906001600160a01b031681565b6102d2610420366004612371565b61080f565b60015460ff166102aa565b60035461034f906001600160a01b031681565b6102d26104513660046123ff565b61085d565b60015461034f9061010090046001600160a01b031681565b6102d261047c366004612358565b610b5d565b6102d261048f366004612358565b610bec565b6102d2610cad565b60025461034f906001600160a01b031681565b6102aa6104bd36600461238e565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6102f7600081565b61034f7f000000000000000000000000000000000000000000000000000000000000000081565b6102d2610523366004612358565b610cdf565b6102f760045481565b6102f77f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f5581565b6102f760055481565b6102d261056f36600461245c565b610d6a565b6102f760c881565b6102d261058a366004612371565b610ee5565b6102d261059d36600461238e565b610f41565b6102f761271081565b6102d26105b9366004612371565b610f66565b6102d26105cc366004612371565b6110e1565b6102f77f000000000000000000000000000000000000000000000000000000000000000081565b6102f77f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106b257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f0acf805600123ef007091da3b3ffb39474074c656c127aa68cb0ffec232a8ff86106e28161112f565b506001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000828152602081905260409020600101546107298161112f565b6107338383611139565b505050565b6001600160a01b03811633146107bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6107c582826111d7565b5050565b60006107d48161112f565b50600755565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d6108048161112f565b61080c611256565b50565b600061081a8161112f565b6001600160a01b03821661082d57600080fd5b506006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6108656112a8565b7f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c61088f8161112f565b6002546001600160a01b031684156108df576108df8686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508592506112fd915050565b8315610967576006546007546040517f18fccc7600000000000000000000000000000000000000000000000000000000815260048101919091523060248201526001600160a01b03909116906318fccc7690604401600060405180830381600087803b15801561094e57600080fd5b505af1158015610962573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156109ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d2919061249e565b905083811015610a245760405162461bcd60e51b815260206004820152600d60248201527f4869676820536c6970706167650000000000000000000000000000000000000060448201526064016107b2565b600061271060055483610a3791906124cd565b610a4191906124ec565b9050600061271060045484610a5691906124cd565b610a6091906124ec565b9050600081610a6f848661250e565b610a79919061250e565b90508015610b17576001546001600160a01b03610100909104811690610aa29087168284611416565b6040517f3c6b16ab000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03821690633c6b16ab90602401600060405180830381600087803b158015610afd57600080fd5b505af1158015610b11573d6000803e3d6000fd5b50505050505b8115610b3757600354610b37906001600160a01b03878116911684611416565b8215610b5157610b516001600160a01b0386163385611416565b50505050505050505050565b7f7935bd0ae54bc31f548c14dba4d37c5c64b3f8ca900cb468fb8abd54d5894f55610b878161112f565b61271082600554610b989190612525565b1115610be65760405162461bcd60e51b815260206004820152601660248201527f546f74616c2066656573206d757374203c3d203130300000000000000000000060448201526064016107b2565b50600455565b6000610bf78161112f565b60c8821115610c485760405162461bcd60e51b815260206004820152601360248201527f496e63656e7469766520746f6f206c617267650000000000000000000000000060448201526064016107b2565b61271060045483610c599190612525565b1115610ca75760405162461bcd60e51b815260206004820152601660248201527f546f74616c2066656573206d757374203c3d203130300000000000000000000060448201526064016107b2565b50600555565b7f139c2898040ef16910dc9f44dc697df79363da767d8bc92f2e310312b816e46d610cd78161112f565b61080c611496565b6000610cea8161112f565b6001546040517fcc1a378f000000000000000000000000000000000000000000000000000000008152600481018490526101009091046001600160a01b03169063cc1a378f906024015b600060405180830381600087803b158015610d4e57600080fd5b505af1158015610d62573d6000803e3d6000fd5b505050505050565b610d726112a8565b6000610d7d8161112f565b6003546001600160a01b03168260005b81811015610d625760086000878784818110610dab57610dab61253d565b9050602002016020810190610dc09190612371565b6001600160a01b0316815260208101919091526040016000205460ff16610e295760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74207265636f76657200000000000000000000000000000000000060448201526064016107b2565b6000868683818110610e3d57610e3d61253d565b9050602002016020810190610e529190612371565b6040516370a0823160e01b8152306004820152909150610ed49085906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec3919061249e565b6001600160a01b0384169190611416565b50610ede81612553565b9050610d8d565b6000610ef08161112f565b6001546040517ff2fde38b0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526101009092049091169063f2fde38b90602401610d34565b600082815260208190526040902060010154610f5c8161112f565b61073383836111d7565b6000610f718161112f565b6001600160a01b038216610fc75760405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642061646472657373000000000000000000000000000000000060448201526064016107b2565b6000826001600160a01b031663d1af0c7d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061256d565b90506001600160a01b0381166110835760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964207374616b696e67207265776172640000000000000000000060448201526064016107b2565b600180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b03958616021790556002805473ffffffffffffffffffffffffffffffffffffffff1916919093161790915550565b60006110ec8161112f565b6001600160a01b0382166110ff57600080fd5b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61080c81336114d1565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111933390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156107c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61125e611544565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60015460ff16156112fb5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016107b2565b565b60005b825181101561073357600083828151811061131d5761131d61253d565b60209081029190910101516040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611396919061249e565b90508015611403576000806000806113ae8686611596565b9350935093509350876001600160a01b0316846001600160a01b0316146113da576113da848985611772565b876001600160a01b0316826001600160a01b0316146113fe576113fe828983611772565b505050505b50508061140f90612553565b9050611300565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261073390849061181f565b61149e6112a8565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361128b565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107c55761150281611904565b61150d836020611916565b60405160200161151e9291906125ba565b60408051601f198184030181529082905262461bcd60e51b82526107b291600401612667565b60015460ff166112fb5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016107b2565b600080600080856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe919061256d565b9350856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561163e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611662919061256d565b9150856001600160a01b03166116788584611b46565b6001600160a01b0316146116ce5760405162461bcd60e51b815260206004820152600c60248201527f496e76616c69642070616972000000000000000000000000000000000000000060448201526064016107b2565b6116e26001600160a01b0387168787611416565b6040517f89afcb440000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038716906389afcb449060240160408051808303816000875af1158015611740573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611764919061267a565b949790965091945090915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614806117e357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156117f357610733818484611c73565b61073381847f000000000000000000000000000000000000000000000000000000000000000085611dad565b6000611874826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120099092919063ffffffff16565b8051909150156107335780806020019051810190611892919061269e565b6107335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107b2565b60606106b26001600160a01b03831660145b606060006119258360026124cd565b611930906002612525565b67ffffffffffffffff811115611948576119486126bb565b6040519080825280601f01601f191660200182016040528015611972576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106119a9576119a961253d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611a0c57611a0c61253d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611a488460026124cd565b611a53906001612525565b90505b6001811115611af0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611a9457611a9461253d565b1a60f81b828281518110611aaa57611aaa61253d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611ae9816126d1565b9050611a56565b508315611b3f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107b2565b9392505050565b6000806000836001600160a01b0316856001600160a01b031610611b6b578385611b6e565b84845b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b16603482015291935091507f000000000000000000000000000000000000000000000000000000000000000090604801604051602081830303815290604052805190602001207f0000000000000000000000000000000000000000000000000000000000000000604051602001611c52939291907fff00000000000000000000000000000000000000000000000000000000000000815260609390931b6bffffffffffffffffffffffff191660018401526015830191909152603582015260550190565b60408051601f19818403018152919052805160209091012095945050505050565b6000611c7f8383611b46565b90506000611c8f85838686612020565b9050611ca56001600160a01b0385168387611416565b826001600160a01b0316846001600160a01b03161015611d3557604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0384169163022c0d9f91611cfe919085903090602481016126e8565b600060405180830381600087803b158015611d1857600080fd5b505af1158015611d2c573d6000803e3d6000fd5b50505050611da6565b604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0384169163022c0d9f91611d739185913090602481016126e8565b600060405180830381600087803b158015611d8d57600080fd5b505af1158015611da1573d6000803e3d6000fd5b505050505b5050505050565b6000611db98484611b46565b90506000611dc78484611b46565b90506000611dd787848888612020565b90506000611de782848888612020565b9050611dfd6001600160a01b038816858a611416565b856001600160a01b0316876001600160a01b03161015611e8d57604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0386169163022c0d9f91611e56919086908890602481016126e8565b600060405180830381600087803b158015611e7057600080fd5b505af1158015611e84573d6000803e3d6000fd5b50505050611efe565b604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0386169163022c0d9f91611ecb9186918890602481016126e8565b600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b505050505b846001600160a01b0316866001600160a01b03161015611f8e57604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0385169163022c0d9f91611f57919085903090602481016126e8565b600060405180830381600087803b158015611f7157600080fd5b505af1158015611f85573d6000803e3d6000fd5b50505050611fff565b604080516000808252602082019283905263022c0d9f60e01b9092526001600160a01b0385169163022c0d9f91611fcc9185913090602481016126e8565b600060405180830381600087803b158015611fe657600080fd5b505af1158015611ffa573d6000803e3d6000fd5b505050505b5050505050505050565b6060612018848460008561212a565b949350505050565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120879190612743565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150600080856001600160a01b0316876001600160a01b0316106120cf5782846120d2565b83835b909250905060006120e58a6103e56124cd565b905060006120f383836124cd565b9050600082612104866103e86124cd565b61210e9190612525565b905061211a81836124ec565b9c9b505050505050505050505050565b6060824710156121a25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107b2565b600080866001600160a01b031685876040516121be9190612793565b60006040518083038185875af1925050503d80600081146121fb576040519150601f19603f3d011682016040523d82523d6000602084013e612200565b606091505b50915091506122118783838761221c565b979650505050505050565b6060831561228b578251600003612284576001600160a01b0385163b6122845760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b2565b5081612018565b61201883838151156122a05781518083602001fd5b8060405162461bcd60e51b81526004016107b29190612667565b6000602082840312156122cc57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b3f57600080fd5b6001600160a01b038116811461080c57600080fd5b801515811461080c57600080fd5b6000806040838503121561233257600080fd5b823561233d816122fc565b9150602083013561234d81612311565b809150509250929050565b60006020828403121561236a57600080fd5b5035919050565b60006020828403121561238357600080fd5b8135611b3f816122fc565b600080604083850312156123a157600080fd5b82359150602083013561234d816122fc565b60008083601f8401126123c557600080fd5b50813567ffffffffffffffff8111156123dd57600080fd5b6020830191508360208260051b85010111156123f857600080fd5b9250929050565b6000806000806060858703121561241557600080fd5b843567ffffffffffffffff81111561242c57600080fd5b612438878288016123b3565b909550935050602085013561244c81612311565b9396929550929360400135925050565b6000806020838503121561246f57600080fd5b823567ffffffffffffffff81111561248657600080fd5b612492858286016123b3565b90969095509350505050565b6000602082840312156124b057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156124e7576124e76124b7565b500290565b60008261250957634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612520576125206124b7565b500390565b60008219821115612538576125386124b7565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198203612566576125666124b7565b5060010190565b60006020828403121561257f57600080fd5b8151611b3f816122fc565b60005b838110156125a557818101518382015260200161258d565b838111156125b4576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516125f281601785016020880161258a565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161262f81602884016020880161258a565b01602801949350505050565b6000815180845261265381602086016020860161258a565b601f01601f19169290920160200192915050565b602081526000611b3f602083018461263b565b6000806040838503121561268d57600080fd5b505080516020909101519092909150565b6000602082840312156126b057600080fd5b8151611b3f81612311565b634e487b7160e01b600052604160045260246000fd5b6000816126e0576126e06124b7565b506000190190565b8481528360208201526001600160a01b0383166040820152608060608201526000612716608083018461263b565b9695505050505050565b80516dffffffffffffffffffffffffffff8116811461273e57600080fd5b919050565b60008060006060848603121561275857600080fd5b61276184612720565b925061276f60208501612720565b9150604084015163ffffffff8116811461278857600080fd5b809150509250925092565b600082516127a581846020870161258a565b919091019291505056fea26469706673582212207c791ea85fca9fb53c7a043b5c87abb267791256910b8e33717b16a8665419ce64736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
