{
  "_format": "hh-sol-artifact-1",
  "contractName": "Faucet",
  "sourceName": "contracts/fuseFaucet/Faucet.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "whitelistedRoot",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayerOrWhitelisted",
          "type": "address"
        }
      ],
      "name": "WalletTopped",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RELAYER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "banAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bans",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "canTop",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentDay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dailyNewWalletsCount",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasPrice",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasRefund",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasTopping",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGasPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIdentity",
      "outputs": [
        {
          "internalType": "contract IIdentityV2",
          "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": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getToppingAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getToppingAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "goodDollar_unused",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "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": "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": "contract NameService",
          "name": "_ns",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_gasPrice",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxDailyNewWallets",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxDailyToppings",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxPerWeekMultiplier",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxSwapAmount_unused",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minTopping",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nameService",
      "outputs": [
        {
          "internalType": "contract NameService",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "notFirstTime",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "onTokenTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "perDayRoughLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "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": "uint64",
          "name": "_price",
          "type": "uint64"
        }
      ],
      "name": "setGasPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasUnits",
          "type": "uint256"
        }
      ],
      "name": "setGasTopping",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_minTop",
          "type": "uint8"
        }
      ],
      "name": "setMinTopping",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voting",
          "type": "address"
        }
      ],
      "name": "setVotingContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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 payable",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "topWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "toppings",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "wallets",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "lastDayTopped",
          "type": "uint128"
        },
        {
          "internalType": "uint32",
          "name": "dailyToppingCount",
          "type": "uint32"
        },
        {
          "internalType": "uint128",
          "name": "weeklyToppingSum",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "lastWeekTopped",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612c0561004c60003960008181610a2301528181610a6301528181611070015281816110b001526111280152612c056000f3fe6080604052600436106101fb5760003560e01c806301ffc9a714610207578063089c25fa1461023c578063151267991461026a5780631ece9b121461027f578063248a9ca3146102ad5780632f2ff15d146102cd5780632f5a3d15146102ef57806336568abe146103055780633659cfe61461032557806336afc6fa146103455780633771dcf81461035a5780633e6326fc1461037a578063455259cb1461039b5780634f1ef286146103b057806352d1902d146103c357806354fd4d50146103d85780635b61e2c1146104125780635bc758e2146104525780635c9302c9146104685780636294c3111461047e5780636bdd72421461049e57806370c63591146104be57806378e97925146104de5780637befab10146104f45780637f49f7091461051957806389b08f111461053957806391d14854146105cb578063926d7d7f146105eb57806393a08de41461060d578063969172c91461062b578063a069c1ac14610650578063a217fddf14610670578063a4c0ed3614610685578063aa31e459146106a5578063aaab4c1d146106d6578063ad285cad1461070a578063c1fc006a14610738578063c573cb4014610759578063c5da10331461077a578063c8eb7549146107b3578063d547741f146107d3578063e97eefd2146107f3578063f84b40f514610813578063fe173b971461082957600080fd5b3661020257005b600080fd5b34801561021357600080fd5b50610227610222366004612437565b610851565b60405190151581526020015b60405180910390f35b34801561024857600080fd5b5061025c610257366004612476565b610888565b604051908152602001610233565b34801561027657600080fd5b5061025c610950565b34801561028b57600080fd5b50610105546102a0906001600160a01b031681565b6040516102339190612493565b3480156102b957600080fd5b5061025c6102c83660046124a7565b610960565b3480156102d957600080fd5b506102ed6102e83660046124c0565b610975565b005b3480156102fb57600080fd5b5061025c60fc5481565b34801561031157600080fd5b506102ed6103203660046124c0565b610996565b34801561033157600080fd5b506102ed610340366004612476565b610a19565b34801561035157600080fd5b506102a0610ae1565b34801561036657600080fd5b506102ed610375366004612476565b610b68565b34801561038657600080fd5b50610100546102a0906001600160a01b031681565b3480156103a757600080fd5b5061025c611040565b6102ed6103be366004612536565b611066565b3480156103cf57600080fd5b5061025c61111b565b3480156103e457600080fd5b50610106546103fd90600160401b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b34801561041e57600080fd5b506101055461043a90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561045e57600080fd5b5061025c60fd5481565b34801561047457600080fd5b5061025c60ff5481565b34801561048a57600080fd5b506102ed6104993660046125f9565b6111c9565b3480156104aa57600080fd5b506102ed6104b9366004612653565b6113c2565b3480156104ca57600080fd5b506102ed6104d93660046124a7565b6113fb565b3480156104ea57600080fd5b5061025c60fe5481565b34801561050057600080fd5b50610104546103fd90600160601b900463ffffffff1681565b34801561052557600080fd5b506102ed610534366004612476565b61141d565b34801561054557600080fd5b50610592610554366004612476565b61010360205260009081526040902080546005909101546001600160801b038083169263ffffffff600160801b918290041692808316929190041684565b604080516001600160801b03958616815263ffffffff909416602085015291841691830191909152919091166060820152608001610233565b3480156105d757600080fd5b506102276105e63660046124c0565b611463565b3480156105f757600080fd5b5061025c600080516020612b8983398151915281565b34801561061957600080fd5b50610104546103fd9063ffffffff1681565b34801561063757600080fd5b50610104546103fd90600160801b900463ffffffff1681565b34801561065c57600080fd5b506102ed61066b366004612476565b61148e565b34801561067c57600080fd5b5061025c600081565b34801561069157600080fd5b506102276106a036600461266e565b6114bd565b3480156106b157600080fd5b506102276106c0366004612476565b6101026020526000908152604090205460ff1681565b3480156106e257600080fd5b50610106546106f890600160601b900460ff1681565b60405160ff9091168152602001610233565b34801561071657600080fd5b5061025c610725366004612476565b6101086020526000908152604090205481565b34801561074457600080fd5b50610107546102a0906001600160a01b031681565b34801561076557600080fd5b506101065461043a906001600160401b031681565b34801561078657600080fd5b5061025c6107953660046124c0565b61010160209081526000928352604080842090915290825290205481565b3480156107bf57600080fd5b506102ed6107ce3660046126f6565b6116a8565b3480156107df57600080fd5b506102ed6107ee3660046124c0565b6116d5565b3480156107ff57600080fd5b5061022761080e366004612476565b6116f1565b34801561081f57600080fd5b5061025c60fb5481565b34801561083557600080fd5b506101045461043a90600160201b90046001600160401b031681565b60006001600160e01b03198216637965db0b60e01b148061088257506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080610893611040565b60fc546108a0919061272f565b610107549091506001600160a01b031615610882576101075460405163a3ec138d60e01b81526001600160a01b039091169063a3ec138d906108e6908690600401612493565b6040805180830381865afa92505050801561091e575060408051601f3d908101601f1916820190925261091b91810190612746565b60015b156108825760208101516001600160601b0316156109495761094182600261272f565b949350505050565b5092915050565b600061095b33610888565b905090565b600090815260c9602052604090206001015490565b61097e82610960565b6109878161196e565b6109918383611978565b505050565b6001600160a01b0381163314610a0b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a1582826119fe565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a615760405162461bcd60e51b8152600401610a02906127b0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a93611a65565b6001600160a01b031614610ab95760405162461bcd60e51b8152600401610a02906127ea565b610ac281611a81565b60408051600080825260208201909252610ade91839190611a8c565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610b44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095b9190612824565b60005a9050816000610b78610ae1565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610ba39190612493565b602060405180830381865afa158015610bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be49190612824565b90506001600160a01b03811615610bfb5780610bfd565b815b60ff54909250610c0b611bf7565b8060ff5414610c265761010680546001600160401b03191690555b60ff546001600160a01b038416600090815261010360205260409020546001600160801b039081169116141580610c8b5750610104546001600160a01b0384166000908152610103602052604090205463ffffffff918216600160801b909104909116105b610ccc5760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b6044820152606401610a02565b6001600160a01b0383166000908152610102602052604090205460ff16158015610d0f575061010554610106546001600160401b03600160a01b90920482169116105b80610d2257506001600160a01b03821615155b610d7d5760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b6064820152608401610a02565b6001600160a01b0383166000908152610103602052604090206005015462093a8090610db990600160801b90046001600160801b031642612841565b10610dee576001600160a01b038316600090815261010360205260409020426001600160801b0316600160801b026005909101555b61010454600160601b900463ffffffff16610e07611040565b60fb54610e14919061272f565b610e1e919061272f565b6001600160a01b038416600090815261010360205260409020600501546001600160801b031610610eae5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b6064820152608401610a02565b846000610eb9610ae1565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610ee49190612493565b602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190612824565b6001600160a01b0316141580610f4e5750610f4e600080516020612b8983398151915233611463565b610f8b5760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152606401610a02565b6001600160a01b038116600090815261010860205260409020544211610fdc5760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b6044820152606401610a02565b610fe586611c18565b505050505a610ff49082612841565b6110009061a410612854565b9050336108fc61100e611040565b611018908461272f565b6040518115909202916000818181858888f19350505050158015610991573d6000803e3d6000fd5b6000804811611061575061010454600160201b90046001600160401b031690565b504890565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110ae5760405162461bcd60e51b8152600401610a02906127b0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110e0611a65565b6001600160a01b0316146111065760405162461bcd60e51b8152600401610a02906127ea565b61110f82611a81565b610a1582826001611a8c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a02565b50600080516020612b6983398151915290565b600054610100900460ff16158080156111e95750600054600160ff909116105b8061120a57506111f830611f6f565b15801561120a575060005460ff166001145b61126d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a02565b6000805460ff191660011790558015611290576000805461ff0019166101001790555b611298611f7e565b6112a3600083611feb565b6001600160a01b038316156112ca576112ca600080516020612b8983398151915284611feb565b6101048054600160201b600160601b031916600160201b6001600160401b03871602179055620f424060fc81905561130390600261272f565b60fb5561010480544260fe5561010080546001600160a01b0319166001600160a01b03891617905563ffffffff63ffffffff60601b0119166003600160611b011790556101058054600160a01b600160e01b03191661027160a31b179055610106805460ff60601b1916600f60601b17905580156113bb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60006113cd8161196e565b5061010480546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b60006114068161196e565b60fc82905561141682600261272f565b60fb555050565b600080516020612b898339815191526114358161196e565b611442426203f480612854565b6001600160a01b039092166000908152610108602052604090209190915550565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006114998161196e565b5061010780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806114cc83850185612476565b6040805160028082526060820183529293508392600092602083019080368337019050509050338160008151811061150657611506612867565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115889190612824565b8160018151811061159b5761159b612867565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af11580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c919061287d565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590611652908a9060009086908e90429060040161289f565b6000604051808303816000875af1158015611671573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116999190810190612910565b50600198975050505050505050565b60006116b38161196e565b50610106805460ff909216600160601b0260ff60601b19909216919091179055565b6116de82610960565b6116e78161196e565b61099183836119fe565b6000806116fd83610888565b9050826001600160a01b03163181101561171a5750600092915050565b60006117306001600160a01b0385163183612841565b61010654909150600160601b900460ff168261174d83606461272f565b61175791906129a9565b1015611767575060009392505050565b6000611771610ae1565b6001600160a01b0316632d0e9b46866040518263ffffffff1660e01b815260040161179c9190612493565b602060405180830381865afa1580156117b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117dd9190612824565b90506001600160a01b038116156117f457806117f6565b845b945060006201518060fe544261180c9190612841565b61181691906129a9565b6001600160a01b03871660009081526101036020526040812054919250906001600160801b03808416911614158061187557506001600160a01b038716600090815261010360205260409020546003600160801b90910463ffffffff16105b80156118d257506001600160a01b0387166000908152610102602052604090205460ff161580156118bf575061010554610106546001600160401b03600160a01b90920482169116105b806118d257506001600160a01b03831615155b6001600160a01b038816600090815261010360205260409020600501549091506001600160801b038082169162093a809161191591600160801b90041642612841565b1061191e575060005b818015611962575061010454600160601b900463ffffffff1661193f611040565b60fb5461194c919061272f565b611956919061272f565b816001600160801b0316105b98975050505050505050565b610ade8133611ff5565b6119828282611463565b610a1557600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119ba3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611a088282611463565b15610a1557600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020612b69833981519152546001600160a01b031690565b6000610a158161196e565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611abf576109918361204e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b19575060408051601f3d908101601f19168201909252611b16918101906129cb565b60015b611b7c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a02565b600080516020612b698339815191528114611beb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a02565b506109918383836120e8565b6201518060fe5442611c099190612841565b611c1391906129a9565b60ff55565b806000611c23610ae1565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b8152600401611c4e9190612493565b602060405180830381865afa158015611c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8f9190612824565b90506001600160a01b03811615611ca65780611ca8565b825b92506000611cb584610888565b90506000611ccd6001600160a01b0386163183612841565b61010654909150600160601b900460ff1682611cea83606461272f565b611cf491906129a9565b1015611d2e5760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b6044820152606401610a02565b60ff546001600160a01b038616600090815261010360205260409020546001600160801b03918216911603611dba576001600160a01b038516600090815261010360205260409020805460019190601090611d97908490600160801b900463ffffffff166129e4565b92506101000a81548163ffffffff021916908363ffffffff160217905550611de8565b6001600160a01b038516600090815261010360205260409020805463ffffffff60801b1916600160801b1790555b60ff546001600160a01b03861660009081526101036020526040812080546001600160801b0319166001600160801b0393841617815560050180548493919291611e3491859116612a01565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b0385166000908152610102602052604090205460ff16158015611e8857506001600160a01b038316155b15611ecd5761010680546001600160401b0316906000611ea783612a21565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b0380861660009081526101026020526040808220805460ff19166001179055519186169183156108fc0291849190818181858888f19350505050158015611f1f573d6000803e3d6000fd5b50604080518281526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b03163b151590565b600054610100900460ff16611fe95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a02565b565b610a158282611978565b611fff8282611463565b610a155761200c81612113565b612017836020612125565b604051602001612028929190612a73565b60408051601f198184030181529082905262461bcd60e51b8252610a0291600401612ae2565b61205781611f6f565b6120b95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a02565b600080516020612b6983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6120f1836122c7565b6000825111806120fe5750805b156109915761210d8383612307565b50505050565b60606108826001600160a01b03831660145b6060600061213483600261272f565b61213f906002612854565b6001600160401b03811115612156576121566124f0565b6040519080825280601f01601f191660200182016040528015612180576020820181803683370190505b509050600360fc1b8160008151811061219b5761219b612867565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106121ca576121ca612867565b60200101906001600160f81b031916908160001a90535060006121ee84600261272f565b6121f9906001612854565b90505b6001811115612271576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061222d5761222d612867565b1a60f81b82828151811061224357612243612867565b60200101906001600160f81b031916908160001a90535060049490941c9361226a81612b15565b90506121fc565b5083156122c05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a02565b9392505050565b6122d08161204e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061231283611f6f565b61236d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a02565b600080846001600160a01b0316846040516123889190612b2c565b600060405180830381855af49150503d80600081146123c3576040519150601f19603f3d011682016040523d82523d6000602084013e6123c8565b606091505b50915091506123f08282604051806060016040528060278152602001612ba9602791396123f9565b95945050505050565b606083156124085750816122c0565b6122c0838381511561241d5781518083602001fd5b8060405162461bcd60e51b8152600401610a029190612ae2565b60006020828403121561244957600080fd5b81356001600160e01b0319811681146122c057600080fd5b6001600160a01b0381168114610ade57600080fd5b60006020828403121561248857600080fd5b81356122c081612461565b6001600160a01b0391909116815260200190565b6000602082840312156124b957600080fd5b5035919050565b600080604083850312156124d357600080fd5b8235915060208301356124e581612461565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561252e5761252e6124f0565b604052919050565b6000806040838503121561254957600080fd5b823561255481612461565b91506020838101356001600160401b038082111561257157600080fd5b818601915086601f83011261258557600080fd5b813581811115612597576125976124f0565b6125a9601f8201601f19168501612506565b915080825287848285010111156125bf57600080fd5b80848401858401376000848284010152508093505050509250929050565b80356001600160401b03811681146125f457600080fd5b919050565b6000806000806080858703121561260f57600080fd5b843561261a81612461565b9350612628602086016125dd565b9250604085013561263881612461565b9150606085013561264881612461565b939692955090935050565b60006020828403121561266557600080fd5b6122c0826125dd565b6000806000806060858703121561268457600080fd5b843561268f81612461565b93506020850135925060408501356001600160401b03808211156126b257600080fd5b818701915087601f8301126126c657600080fd5b8135818111156126d557600080fd5b8860208285010111156126e757600080fd5b95989497505060200194505050565b60006020828403121561270857600080fd5b813560ff811681146122c057600080fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761088257610882612719565b60006040828403121561275857600080fd5b604080519081016001600160401b038111828210171561277a5761277a6124f0565b604052825161278881612461565b815260208301516001600160601b03811681146127a457600080fd5b60208201529392505050565b6020808252602c90820152600080516020612b4983398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612b4983398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561283657600080fd5b81516122c081612461565b8181038181111561088257610882612719565b8082018082111561088257610882612719565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561288f57600080fd5b815180151581146122c057600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128ef5784516001600160a01b0316835293830193918301916001016128ca565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561292357600080fd5b82516001600160401b038082111561293a57600080fd5b818501915085601f83011261294e57600080fd5b815181811115612960576129606124f0565b8060051b9150612971848301612506565b818152918301840191848101908884111561298b57600080fd5b938501935b8385101561196257845182529385019390850190612990565b6000826129c657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129dd57600080fd5b5051919050565b63ffffffff81811683821601908082111561094957610949612719565b6001600160801b0381811683821601908082111561094957610949612719565b60006001600160401b038281166002600160401b03198101612a4557612a45612719565b6001019392505050565b60005b83811015612a6a578181015183820152602001612a52565b50506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612aa5816017850160208801612a4f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612ad6816028840160208801612a4f565b01602801949350505050565b6020815260008251806020840152612b01816040850160208701612a4f565b601f01601f19169190910160400192915050565b600081612b2457612b24612719565b506000190190565b60008251612b3e818460208701612a4f565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc802cf867c2da464d4ff0ebc4dfcccdfbd65d75a8bc1c273fb02e80bf3446b516416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203c4f69604b29df8f4aed4458a2b1dc6155276ffe62b118982db76720a2a1b09064736f6c63430008130033",
  "deployedBytecode": "0x6080604052600436106101fb5760003560e01c806301ffc9a714610207578063089c25fa1461023c578063151267991461026a5780631ece9b121461027f578063248a9ca3146102ad5780632f2ff15d146102cd5780632f5a3d15146102ef57806336568abe146103055780633659cfe61461032557806336afc6fa146103455780633771dcf81461035a5780633e6326fc1461037a578063455259cb1461039b5780634f1ef286146103b057806352d1902d146103c357806354fd4d50146103d85780635b61e2c1146104125780635bc758e2146104525780635c9302c9146104685780636294c3111461047e5780636bdd72421461049e57806370c63591146104be57806378e97925146104de5780637befab10146104f45780637f49f7091461051957806389b08f111461053957806391d14854146105cb578063926d7d7f146105eb57806393a08de41461060d578063969172c91461062b578063a069c1ac14610650578063a217fddf14610670578063a4c0ed3614610685578063aa31e459146106a5578063aaab4c1d146106d6578063ad285cad1461070a578063c1fc006a14610738578063c573cb4014610759578063c5da10331461077a578063c8eb7549146107b3578063d547741f146107d3578063e97eefd2146107f3578063f84b40f514610813578063fe173b971461082957600080fd5b3661020257005b600080fd5b34801561021357600080fd5b50610227610222366004612437565b610851565b60405190151581526020015b60405180910390f35b34801561024857600080fd5b5061025c610257366004612476565b610888565b604051908152602001610233565b34801561027657600080fd5b5061025c610950565b34801561028b57600080fd5b50610105546102a0906001600160a01b031681565b6040516102339190612493565b3480156102b957600080fd5b5061025c6102c83660046124a7565b610960565b3480156102d957600080fd5b506102ed6102e83660046124c0565b610975565b005b3480156102fb57600080fd5b5061025c60fc5481565b34801561031157600080fd5b506102ed6103203660046124c0565b610996565b34801561033157600080fd5b506102ed610340366004612476565b610a19565b34801561035157600080fd5b506102a0610ae1565b34801561036657600080fd5b506102ed610375366004612476565b610b68565b34801561038657600080fd5b50610100546102a0906001600160a01b031681565b3480156103a757600080fd5b5061025c611040565b6102ed6103be366004612536565b611066565b3480156103cf57600080fd5b5061025c61111b565b3480156103e457600080fd5b50610106546103fd90600160401b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b34801561041e57600080fd5b506101055461043a90600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561045e57600080fd5b5061025c60fd5481565b34801561047457600080fd5b5061025c60ff5481565b34801561048a57600080fd5b506102ed6104993660046125f9565b6111c9565b3480156104aa57600080fd5b506102ed6104b9366004612653565b6113c2565b3480156104ca57600080fd5b506102ed6104d93660046124a7565b6113fb565b3480156104ea57600080fd5b5061025c60fe5481565b34801561050057600080fd5b50610104546103fd90600160601b900463ffffffff1681565b34801561052557600080fd5b506102ed610534366004612476565b61141d565b34801561054557600080fd5b50610592610554366004612476565b61010360205260009081526040902080546005909101546001600160801b038083169263ffffffff600160801b918290041692808316929190041684565b604080516001600160801b03958616815263ffffffff909416602085015291841691830191909152919091166060820152608001610233565b3480156105d757600080fd5b506102276105e63660046124c0565b611463565b3480156105f757600080fd5b5061025c600080516020612b8983398151915281565b34801561061957600080fd5b50610104546103fd9063ffffffff1681565b34801561063757600080fd5b50610104546103fd90600160801b900463ffffffff1681565b34801561065c57600080fd5b506102ed61066b366004612476565b61148e565b34801561067c57600080fd5b5061025c600081565b34801561069157600080fd5b506102276106a036600461266e565b6114bd565b3480156106b157600080fd5b506102276106c0366004612476565b6101026020526000908152604090205460ff1681565b3480156106e257600080fd5b50610106546106f890600160601b900460ff1681565b60405160ff9091168152602001610233565b34801561071657600080fd5b5061025c610725366004612476565b6101086020526000908152604090205481565b34801561074457600080fd5b50610107546102a0906001600160a01b031681565b34801561076557600080fd5b506101065461043a906001600160401b031681565b34801561078657600080fd5b5061025c6107953660046124c0565b61010160209081526000928352604080842090915290825290205481565b3480156107bf57600080fd5b506102ed6107ce3660046126f6565b6116a8565b3480156107df57600080fd5b506102ed6107ee3660046124c0565b6116d5565b3480156107ff57600080fd5b5061022761080e366004612476565b6116f1565b34801561081f57600080fd5b5061025c60fb5481565b34801561083557600080fd5b506101045461043a90600160201b90046001600160401b031681565b60006001600160e01b03198216637965db0b60e01b148061088257506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080610893611040565b60fc546108a0919061272f565b610107549091506001600160a01b031615610882576101075460405163a3ec138d60e01b81526001600160a01b039091169063a3ec138d906108e6908690600401612493565b6040805180830381865afa92505050801561091e575060408051601f3d908101601f1916820190925261091b91810190612746565b60015b156108825760208101516001600160601b0316156109495761094182600261272f565b949350505050565b5092915050565b600061095b33610888565b905090565b600090815260c9602052604090206001015490565b61097e82610960565b6109878161196e565b6109918383611978565b505050565b6001600160a01b0381163314610a0b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a1582826119fe565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a615760405162461bcd60e51b8152600401610a02906127b0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a93611a65565b6001600160a01b031614610ab95760405162461bcd60e51b8152600401610a02906127ea565b610ac281611a81565b60408051600080825260208201909252610ade91839190611a8c565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610b44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095b9190612824565b60005a9050816000610b78610ae1565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610ba39190612493565b602060405180830381865afa158015610bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be49190612824565b90506001600160a01b03811615610bfb5780610bfd565b815b60ff54909250610c0b611bf7565b8060ff5414610c265761010680546001600160401b03191690555b60ff546001600160a01b038416600090815261010360205260409020546001600160801b039081169116141580610c8b5750610104546001600160a01b0384166000908152610103602052604090205463ffffffff918216600160801b909104909116105b610ccc5760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b6044820152606401610a02565b6001600160a01b0383166000908152610102602052604090205460ff16158015610d0f575061010554610106546001600160401b03600160a01b90920482169116105b80610d2257506001600160a01b03821615155b610d7d5760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b6064820152608401610a02565b6001600160a01b0383166000908152610103602052604090206005015462093a8090610db990600160801b90046001600160801b031642612841565b10610dee576001600160a01b038316600090815261010360205260409020426001600160801b0316600160801b026005909101555b61010454600160601b900463ffffffff16610e07611040565b60fb54610e14919061272f565b610e1e919061272f565b6001600160a01b038416600090815261010360205260409020600501546001600160801b031610610eae5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b6064820152608401610a02565b846000610eb9610ae1565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610ee49190612493565b602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190612824565b6001600160a01b0316141580610f4e5750610f4e600080516020612b8983398151915233611463565b610f8b5760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b6044820152606401610a02565b6001600160a01b038116600090815261010860205260409020544211610fdc5760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b6044820152606401610a02565b610fe586611c18565b505050505a610ff49082612841565b6110009061a410612854565b9050336108fc61100e611040565b611018908461272f565b6040518115909202916000818181858888f19350505050158015610991573d6000803e3d6000fd5b6000804811611061575061010454600160201b90046001600160401b031690565b504890565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110ae5760405162461bcd60e51b8152600401610a02906127b0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110e0611a65565b6001600160a01b0316146111065760405162461bcd60e51b8152600401610a02906127ea565b61110f82611a81565b610a1582826001611a8c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a02565b50600080516020612b6983398151915290565b600054610100900460ff16158080156111e95750600054600160ff909116105b8061120a57506111f830611f6f565b15801561120a575060005460ff166001145b61126d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a02565b6000805460ff191660011790558015611290576000805461ff0019166101001790555b611298611f7e565b6112a3600083611feb565b6001600160a01b038316156112ca576112ca600080516020612b8983398151915284611feb565b6101048054600160201b600160601b031916600160201b6001600160401b03871602179055620f424060fc81905561130390600261272f565b60fb5561010480544260fe5561010080546001600160a01b0319166001600160a01b03891617905563ffffffff63ffffffff60601b0119166003600160611b011790556101058054600160a01b600160e01b03191661027160a31b179055610106805460ff60601b1916600f60601b17905580156113bb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60006113cd8161196e565b5061010480546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b60006114068161196e565b60fc82905561141682600261272f565b60fb555050565b600080516020612b898339815191526114358161196e565b611442426203f480612854565b6001600160a01b039092166000908152610108602052604090209190915550565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006114998161196e565b5061010780546001600160a01b0319166001600160a01b0392909216919091179055565b6000806114cc83850185612476565b6040805160028082526060820183529293508392600092602083019080368337019050509050338160008151811061150657611506612867565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115889190612824565b8160018151811061159b5761159b612867565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af11580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c919061287d565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590611652908a9060009086908e90429060040161289f565b6000604051808303816000875af1158015611671573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116999190810190612910565b50600198975050505050505050565b60006116b38161196e565b50610106805460ff909216600160601b0260ff60601b19909216919091179055565b6116de82610960565b6116e78161196e565b61099183836119fe565b6000806116fd83610888565b9050826001600160a01b03163181101561171a5750600092915050565b60006117306001600160a01b0385163183612841565b61010654909150600160601b900460ff168261174d83606461272f565b61175791906129a9565b1015611767575060009392505050565b6000611771610ae1565b6001600160a01b0316632d0e9b46866040518263ffffffff1660e01b815260040161179c9190612493565b602060405180830381865afa1580156117b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117dd9190612824565b90506001600160a01b038116156117f457806117f6565b845b945060006201518060fe544261180c9190612841565b61181691906129a9565b6001600160a01b03871660009081526101036020526040812054919250906001600160801b03808416911614158061187557506001600160a01b038716600090815261010360205260409020546003600160801b90910463ffffffff16105b80156118d257506001600160a01b0387166000908152610102602052604090205460ff161580156118bf575061010554610106546001600160401b03600160a01b90920482169116105b806118d257506001600160a01b03831615155b6001600160a01b038816600090815261010360205260409020600501549091506001600160801b038082169162093a809161191591600160801b90041642612841565b1061191e575060005b818015611962575061010454600160601b900463ffffffff1661193f611040565b60fb5461194c919061272f565b611956919061272f565b816001600160801b0316105b98975050505050505050565b610ade8133611ff5565b6119828282611463565b610a1557600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119ba3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611a088282611463565b15610a1557600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020612b69833981519152546001600160a01b031690565b6000610a158161196e565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611abf576109918361204e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b19575060408051601f3d908101601f19168201909252611b16918101906129cb565b60015b611b7c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a02565b600080516020612b698339815191528114611beb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a02565b506109918383836120e8565b6201518060fe5442611c099190612841565b611c1391906129a9565b60ff55565b806000611c23610ae1565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b8152600401611c4e9190612493565b602060405180830381865afa158015611c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8f9190612824565b90506001600160a01b03811615611ca65780611ca8565b825b92506000611cb584610888565b90506000611ccd6001600160a01b0386163183612841565b61010654909150600160601b900460ff1682611cea83606461272f565b611cf491906129a9565b1015611d2e5760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b6044820152606401610a02565b60ff546001600160a01b038616600090815261010360205260409020546001600160801b03918216911603611dba576001600160a01b038516600090815261010360205260409020805460019190601090611d97908490600160801b900463ffffffff166129e4565b92506101000a81548163ffffffff021916908363ffffffff160217905550611de8565b6001600160a01b038516600090815261010360205260409020805463ffffffff60801b1916600160801b1790555b60ff546001600160a01b03861660009081526101036020526040812080546001600160801b0319166001600160801b0393841617815560050180548493919291611e3491859116612a01565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b0385166000908152610102602052604090205460ff16158015611e8857506001600160a01b038316155b15611ecd5761010680546001600160401b0316906000611ea783612a21565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b0380861660009081526101026020526040808220805460ff19166001179055519186169183156108fc0291849190818181858888f19350505050158015611f1f573d6000803e3d6000fd5b50604080518281526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b03163b151590565b600054610100900460ff16611fe95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a02565b565b610a158282611978565b611fff8282611463565b610a155761200c81612113565b612017836020612125565b604051602001612028929190612a73565b60408051601f198184030181529082905262461bcd60e51b8252610a0291600401612ae2565b61205781611f6f565b6120b95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a02565b600080516020612b6983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6120f1836122c7565b6000825111806120fe5750805b156109915761210d8383612307565b50505050565b60606108826001600160a01b03831660145b6060600061213483600261272f565b61213f906002612854565b6001600160401b03811115612156576121566124f0565b6040519080825280601f01601f191660200182016040528015612180576020820181803683370190505b509050600360fc1b8160008151811061219b5761219b612867565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106121ca576121ca612867565b60200101906001600160f81b031916908160001a90535060006121ee84600261272f565b6121f9906001612854565b90505b6001811115612271576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061222d5761222d612867565b1a60f81b82828151811061224357612243612867565b60200101906001600160f81b031916908160001a90535060049490941c9361226a81612b15565b90506121fc565b5083156122c05760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a02565b9392505050565b6122d08161204e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061231283611f6f565b61236d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a02565b600080846001600160a01b0316846040516123889190612b2c565b600060405180830381855af49150503d80600081146123c3576040519150601f19603f3d011682016040523d82523d6000602084013e6123c8565b606091505b50915091506123f08282604051806060016040528060278152602001612ba9602791396123f9565b95945050505050565b606083156124085750816122c0565b6122c0838381511561241d5781518083602001fd5b8060405162461bcd60e51b8152600401610a029190612ae2565b60006020828403121561244957600080fd5b81356001600160e01b0319811681146122c057600080fd5b6001600160a01b0381168114610ade57600080fd5b60006020828403121561248857600080fd5b81356122c081612461565b6001600160a01b0391909116815260200190565b6000602082840312156124b957600080fd5b5035919050565b600080604083850312156124d357600080fd5b8235915060208301356124e581612461565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561252e5761252e6124f0565b604052919050565b6000806040838503121561254957600080fd5b823561255481612461565b91506020838101356001600160401b038082111561257157600080fd5b818601915086601f83011261258557600080fd5b813581811115612597576125976124f0565b6125a9601f8201601f19168501612506565b915080825287848285010111156125bf57600080fd5b80848401858401376000848284010152508093505050509250929050565b80356001600160401b03811681146125f457600080fd5b919050565b6000806000806080858703121561260f57600080fd5b843561261a81612461565b9350612628602086016125dd565b9250604085013561263881612461565b9150606085013561264881612461565b939692955090935050565b60006020828403121561266557600080fd5b6122c0826125dd565b6000806000806060858703121561268457600080fd5b843561268f81612461565b93506020850135925060408501356001600160401b03808211156126b257600080fd5b818701915087601f8301126126c657600080fd5b8135818111156126d557600080fd5b8860208285010111156126e757600080fd5b95989497505060200194505050565b60006020828403121561270857600080fd5b813560ff811681146122c057600080fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761088257610882612719565b60006040828403121561275857600080fd5b604080519081016001600160401b038111828210171561277a5761277a6124f0565b604052825161278881612461565b815260208301516001600160601b03811681146127a457600080fd5b60208201529392505050565b6020808252602c90820152600080516020612b4983398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612b4983398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561283657600080fd5b81516122c081612461565b8181038181111561088257610882612719565b8082018082111561088257610882612719565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561288f57600080fd5b815180151581146122c057600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128ef5784516001600160a01b0316835293830193918301916001016128ca565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561292357600080fd5b82516001600160401b038082111561293a57600080fd5b818501915085601f83011261294e57600080fd5b815181811115612960576129606124f0565b8060051b9150612971848301612506565b818152918301840191848101908884111561298b57600080fd5b938501935b8385101561196257845182529385019390850190612990565b6000826129c657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129dd57600080fd5b5051919050565b63ffffffff81811683821601908082111561094957610949612719565b6001600160801b0381811683821601908082111561094957610949612719565b60006001600160401b038281166002600160401b03198101612a4557612a45612719565b6001019392505050565b60005b83811015612a6a578181015183820152602001612a52565b50506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612aa5816017850160208801612a4f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612ad6816028840160208801612a4f565b01602801949350505050565b6020815260008251806020840152612b01816040850160208701612a4f565b601f01601f19169190910160400192915050565b600081612b2457612b24612719565b506000190190565b60008251612b3e818460208701612a4f565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc802cf867c2da464d4ff0ebc4dfcccdfbd65d75a8bc1c273fb02e80bf3446b516416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203c4f69604b29df8f4aed4458a2b1dc6155276ffe62b118982db76720a2a1b09064736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
