{
  "contractName": "GSNRecipientERC20Fee",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldRelayHub",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newRelayHub",
          "type": "address"
        }
      ],
      "name": "RelayHubChanged",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "transactionFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "maxPossibleCharge",
          "type": "uint256"
        }
      ],
      "name": "acceptRelayedCall",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getHubAddr",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "context",
          "type": "bytes"
        },
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "actualCharge",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "preRetVal",
          "type": "bytes32"
        }
      ],
      "name": "postRelayedCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "context",
          "type": "bytes"
        }
      ],
      "name": "preRelayedCall",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "relayHubVersion",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405273d216153c06e857cd7f72665e0af1d7d82172f4946000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006557600080fd5b506040516200368e3803806200368e83398181016040528101906200008b91906200018e565b81816040516200009b906200010e565b620000a892919062000242565b604051809103906000f080158015620000c5573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000376565b611e38806200185683390190565b6000620001336200012d84620002b1565b6200027d565b9050828152602081018484840111156200014c57600080fd5b6200015984828562000300565b509392505050565b600082601f8301126200017357600080fd5b8151620001858482602086016200011c565b91505092915050565b60008060408385031215620001a257600080fd5b600083015167ffffffffffffffff811115620001bd57600080fd5b620001cb8582860162000161565b925050602083015167ffffffffffffffff811115620001e957600080fd5b620001f78582860162000161565b9150509250929050565b60006200020e82620002e4565b6200021a8185620002ef565b93506200022c81856020860162000300565b620002378162000365565b840191505092915050565b600060408201905081810360008301526200025e818562000201565b9050818103602083015262000274818462000201565b90509392505050565b6000604051905081810181811067ffffffffffffffff82111715620002a757620002a662000336565b5b8060405250919050565b600067ffffffffffffffff821115620002cf57620002ce62000336565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200032057808201518184015260208101905062000303565b8381111562000330576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6114d080620003866000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806374e861d61461006757806380274db71461008557806383947ea0146100b5578063ad61ccd5146100e6578063e06e0e2214610104578063fc0c546a14610120575b600080fd5b61006f61013e565b60405161007c9190610f3e565b60405180910390f35b61009f600480360381019061009a9190610bf1565b610167565b6040516100ac9190610ffe565b60405180910390f35b6100cf60048036038101906100ca9190610ad2565b6101ee565b6040516100dd9291906110d6565b60405180910390f35b6100ee61032f565b6040516100fb9190611034565b60405180910390f35b61011e60048036038101906101199190610c32565b61036c565b005b6101286103f3565b6040516101359190611019565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061017161013e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d590611076565b60405180910390fd5b6101e78261041d565b9050919050565b6000606082600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b815260040161024e9190610f3e565b60206040518083038186803b15801561026657600080fd5b505afa15801561027a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029e9190610cad565b10156102ee576102e56000808111156102e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b610496565b91509150610321565b61031c8a848a8a6040516020016103089493929190610fb9565b6040516020818303038152906040526104c0565b915091505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b61037461013e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890611076565b60405180910390fd5b6103ed848484846104d0565b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000838060200190518101906104369190610a33565b91509150610489823083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610582909392919063ffffffff16565b6000801b92505050919050565b6000606082600b6104a791906111aa565b6040518060200160405280600081525091509150915091565b6000606060008391509150915091565b600080600080878060200190518101906104ea9190610a6f565b9350935093509350600061050f612710620186a0610508919061128b565b838561060b565b9050808761051d919061128b565b965061057785888661052f919061128b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106459092919063ffffffff16565b505050505050505050565b610605846323b872dd60e01b8585856040516024016105a393929190610f59565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106cb565b50505050565b6000606482606461061c91906111aa565b84866106289190611231565b6106329190611231565b61063c9190611200565b90509392505050565b6106c68363a9059cbb60e01b8484604051602401610664929190610f90565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106cb565b505050565b600061072d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107929092919063ffffffff16565b905060008151111561078d578080602001905181019061074d9190610bc8565b61078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906110b6565b60405180910390fd5b5b505050565b60606107a184846000856107aa565b90509392505050565b6060824710156107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e690611056565b60405180910390fd5b6107f8856108be565b610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e90611096565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108609190610f27565b60006040518083038185875af1925050503d806000811461089d576040519150601f19603f3d011682016040523d82523d6000602084013e6108a2565b606091505b50915091506108b28282866108d1565b92505050949350505050565b600080823b905060008111915050919050565b606083156108e157829050610931565b6000835111156108f45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109289190611034565b60405180910390fd5b9392505050565b600061094b61094684611137565b611106565b90508281526020810184848401111561096357600080fd5b61096e848285611347565b509392505050565b60008135905061098581611427565b92915050565b60008151905061099a8161143e565b92915050565b6000813590506109af81611455565b92915050565b6000815190506109c481611455565b92915050565b6000813590506109d98161146c565b92915050565b600082601f8301126109f057600080fd5b8135610a00848260208601610938565b91505092915050565b600081359050610a1881611483565b92915050565b600081519050610a2d81611483565b92915050565b60008060408385031215610a4657600080fd5b6000610a548582860161098b565b9250506020610a6585828601610a1e565b9150509250929050565b60008060008060808587031215610a8557600080fd5b6000610a938782880161098b565b9450506020610aa487828801610a1e565b9350506040610ab587828801610a1e565b9250506060610ac687828801610a1e565b91505092959194509250565b60008060008060008060008060006101208a8c031215610af157600080fd5b6000610aff8c828d01610976565b9950506020610b108c828d01610976565b98505060408a013567ffffffffffffffff811115610b2d57600080fd5b610b398c828d016109df565b9750506060610b4a8c828d01610a09565b9650506080610b5b8c828d01610a09565b95505060a0610b6c8c828d01610a09565b94505060c0610b7d8c828d01610a09565b93505060e08a013567ffffffffffffffff811115610b9a57600080fd5b610ba68c828d016109df565b925050610100610bb88c828d01610a09565b9150509295985092959850929598565b600060208284031215610bda57600080fd5b6000610be8848285016109b5565b91505092915050565b600060208284031215610c0357600080fd5b600082013567ffffffffffffffff811115610c1d57600080fd5b610c29848285016109df565b91505092915050565b60008060008060808587031215610c4857600080fd5b600085013567ffffffffffffffff811115610c6257600080fd5b610c6e878288016109df565b9450506020610c7f878288016109a0565b9350506040610c9087828801610a09565b9250506060610ca1878288016109ca565b91505092959194509250565b600060208284031215610cbf57600080fd5b6000610ccd84828501610a1e565b91505092915050565b610cdf816112bf565b82525050565b610cee816112ef565b82525050565b6000610cff82611167565b610d09818561117d565b9350610d19818560208601611356565b610d2281611416565b840191505092915050565b6000610d3882611167565b610d42818561118e565b9350610d52818560208601611356565b80840191505092915050565b610d6781611323565b82525050565b6000610d7882611172565b610d828185611199565b9350610d92818560208601611356565b610d9b81611416565b840191505092915050565b6000610db3602683611199565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e19602483611199565b91507f47534e526563697069656e743a2063616c6c6572206973206e6f742052656c6160008301527f79487562000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e7f601d83611199565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000610ebf602a83611199565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b610f2181611319565b82525050565b6000610f338284610d2d565b915081905092915050565b6000602082019050610f536000830184610cd6565b92915050565b6000606082019050610f6e6000830186610cd6565b610f7b6020830185610cd6565b610f886040830184610f18565b949350505050565b6000604082019050610fa56000830185610cd6565b610fb26020830184610f18565b9392505050565b6000608082019050610fce6000830187610cd6565b610fdb6020830186610f18565b610fe86040830185610f18565b610ff56060830184610f18565b95945050505050565b60006020820190506110136000830184610ce5565b92915050565b600060208201905061102e6000830184610d5e565b92915050565b6000602082019050818103600083015261104e8184610d6d565b905092915050565b6000602082019050818103600083015261106f81610da6565b9050919050565b6000602082019050818103600083015261108f81610e0c565b9050919050565b600060208201905081810360008301526110af81610e72565b9050919050565b600060208201905081810360008301526110cf81610eb2565b9050919050565b60006040820190506110eb6000830185610f18565b81810360208301526110fd8184610cf4565b90509392505050565b6000604051905081810181811067ffffffffffffffff8211171561112d5761112c6113e7565b5b8060405250919050565b600067ffffffffffffffff821115611152576111516113e7565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006111b582611319565b91506111c083611319565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111f5576111f4611389565b5b828201905092915050565b600061120b82611319565b915061121683611319565b925082611226576112256113b8565b5b828204905092915050565b600061123c82611319565b915061124783611319565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156112805761127f611389565b5b828202905092915050565b600061129682611319565b91506112a183611319565b9250828210156112b4576112b3611389565b5b828203905092915050565b60006112ca826112f9565b9050919050565b60006112dc826112f9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061132e82611335565b9050919050565b6000611340826112f9565b9050919050565b82818337600083830152505050565b60005b83811015611374578082015181840152602081019050611359565b83811115611383576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b611430816112bf565b811461143b57600080fd5b50565b611447816112d1565b811461145257600080fd5b50565b61145e816112e3565b811461146957600080fd5b50565b611475816112ef565b811461148057600080fd5b50565b61148c81611319565b811461149757600080fd5b5056fea26469706673582212201a787bdfc2dc3813856eae04327b95b5a0f0db6e5dfe1d1cf8cbfed551a8d16964736f6c6343000800003360806040523480156200001157600080fd5b5060405162001e3838038062001e3883398181016040528101906200003791906200026c565b81818160039080519060200190620000519291906200014a565b5080600490805190602001906200006a9291906200014a565b506012600560006101000a81548160ff021916908360ff160217905550505060006200009b6200014260201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350505062000410565b600033905090565b82805462000158906200037c565b90600052602060002090601f0160209004810192826200017c5760008555620001c8565b82601f106200019757805160ff1916838001178555620001c8565b82800160010185558215620001c8579182015b82811115620001c7578251825591602001919060010190620001aa565b5b509050620001d79190620001db565b5090565b5b80821115620001f6576000816000905550600101620001dc565b5090565b6000620002116200020b8462000313565b620002df565b9050828152602081018484840111156200022a57600080fd5b6200023784828562000346565b509392505050565b600082601f8301126200025157600080fd5b815162000263848260208601620001fa565b91505092915050565b600080604083850312156200028057600080fd5b600083015167ffffffffffffffff8111156200029b57600080fd5b620002a9858286016200023f565b925050602083015167ffffffffffffffff811115620002c757600080fd5b620002d5858286016200023f565b9150509250929050565b6000604051905081810181811067ffffffffffffffff82111715620003095762000308620003e1565b5b8060405250919050565b600067ffffffffffffffff821115620003315762000330620003e1565b5b601f19601f8301169050602081019050919050565b60005b838110156200036657808201518184015260208101905062000349565b8381111562000376576000848401525b50505050565b600060028204905060018216806200039557607f821691505b60208210811415620003ac57620003ab620003b2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611a1880620004206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610276578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100f5565b806370a0823114610200578063715018a6146102305780638da5cb5b1461023a57806395d89b4114610258576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806340c10f19146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f91906116ad565b60405180910390f35b610132600480360381019061012d9190611348565b6103b4565b60405161013f9190611692565b60405180910390f35b6101506103d2565b60405161015d91906117af565b60405180910390f35b610180600480360381019061017b91906112f9565b6103dc565b60405161018d9190611692565b60405180910390f35b61019e610442565b6040516101ab91906117ca565b60405180910390f35b6101ce60048036038101906101c99190611348565b610459565b6040516101db9190611692565b60405180910390f35b6101fe60048036038101906101f99190611348565b610505565b005b61021a60048036038101906102159190611294565b6105aa565b60405161022791906117af565b60405180910390f35b6102386105f2565b005b61024261074a565b60405161024f9190611677565b60405180910390f35b610260610774565b60405161026d91906116ad565b60405180910390f35b610290600480360381019061028b9190611348565b610806565b60405161029d9190611692565b60405180910390f35b6102c060048036038101906102bb9190611348565b6108b2565b6040516102cd9190611692565b60405180910390f35b6102f060048036038101906102eb91906112bd565b6108d0565b6040516102fd91906117af565b60405180910390f35b610320600480360381019061031b9190611294565b610948565b005b60606003805461033190611913565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611913565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b60006103c86103c1610b0f565b8484610b17565b6001905092915050565b6000600254905090565b60006103e661074a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561042d57610424848484610b68565b6001905061043b565b610438848484610dd5565b90505b9392505050565b6000600560009054906101000a900460ff16905090565b60006104fb610466610b0f565b848460016000610474610b0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104f69190611801565b610b17565b6001905092915050565b61050d610b0f565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461059c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105939061172f565b60405180910390fd5b6105a68282610e8d565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105fa610b0f565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106809061172f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461078390611913565b80601f01602080910402602001604051908101604052809291908181526020018280546107af90611913565b80156107fc5780601f106107d1576101008083540402835291602001916107fc565b820191906000526020600020905b8154815290600101906020018083116107df57829003601f168201915b5050505050905090565b60006108a8610813610b0f565b848460016000610821610b0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108a39190611857565b610b17565b6001905092915050565b60006108c66108bf610b0f565b8484610b68565b6001905092915050565b60006108da61074a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610935577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610942565b61093f8383611013565b90505b92915050565b610950610b0f565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d69061172f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906116ef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610b1f61074a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b5757610b63565b610b6283838361109a565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf9061174f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f906116cf565b60405180910390fd5b610c53838383611265565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9d9190611857565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d299190611801565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dc891906117af565b60405180910390a3505050565b6000610de2848484610b68565b610e8284610dee610b0f565b84600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e38610b0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7d9190611857565b610b17565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef49061178f565b60405180910390fd5b610f0960008383611265565b80600254610f179190611801565b600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f679190611801565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161100791906117af565b60405180910390a35050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561110a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111019061176f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561117a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111719061170f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161125891906117af565b60405180910390a3505050565b505050565b600081359050611279816119b4565b92915050565b60008135905061128e816119cb565b92915050565b6000602082840312156112a657600080fd5b60006112b48482850161126a565b91505092915050565b600080604083850312156112d057600080fd5b60006112de8582860161126a565b92505060206112ef8582860161126a565b9150509250929050565b60008060006060848603121561130e57600080fd5b600061131c8682870161126a565b935050602061132d8682870161126a565b925050604061133e8682870161127f565b9150509250925092565b6000806040838503121561135b57600080fd5b60006113698582860161126a565b925050602061137a8582860161127f565b9150509250929050565b61138d8161188b565b82525050565b61139c8161189d565b82525050565b60006113ad826117e5565b6113b781856117f0565b93506113c78185602086016118e0565b6113d0816119a3565b840191505092915050565b60006113e86023836117f0565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061144e6026836117f0565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114b46022836117f0565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061151a6020836117f0565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061155a6025836117f0565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115c06024836117f0565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611626601f836117f0565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b611662816118c9565b82525050565b611671816118d3565b82525050565b600060208201905061168c6000830184611384565b92915050565b60006020820190506116a76000830184611393565b92915050565b600060208201905081810360008301526116c781846113a2565b905092915050565b600060208201905081810360008301526116e8816113db565b9050919050565b6000602082019050818103600083015261170881611441565b9050919050565b60006020820190508181036000830152611728816114a7565b9050919050565b600060208201905081810360008301526117488161150d565b9050919050565b600060208201905081810360008301526117688161154d565b9050919050565b60006020820190508181036000830152611788816115b3565b9050919050565b600060208201905081810360008301526117a881611619565b9050919050565b60006020820190506117c46000830184611659565b92915050565b60006020820190506117df6000830184611668565b92915050565b600081519050919050565b600082825260208201905092915050565b600061180c826118c9565b9150611817836118c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561184c5761184b611945565b5b828201905092915050565b6000611862826118c9565b915061186d836118c9565b9250828210156118805761187f611945565b5b828203905092915050565b6000611896826118a9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156118fe5780820151818401526020810190506118e3565b8381111561190d576000848401525b50505050565b6000600282049050600182168061192b57607f821691505b6020821081141561193f5761193e611974565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6119bd8161188b565b81146119c857600080fd5b50565b6119d4816118c9565b81146119df57600080fd5b5056fea2646970667358221220236262e5a981e8e35c109fca88e4b7cd6a8ff395e0f0e8a267fea9f3cdbfdcd364736f6c63430008000033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806374e861d61461006757806380274db71461008557806383947ea0146100b5578063ad61ccd5146100e6578063e06e0e2214610104578063fc0c546a14610120575b600080fd5b61006f61013e565b60405161007c9190610f3e565b60405180910390f35b61009f600480360381019061009a9190610bf1565b610167565b6040516100ac9190610ffe565b60405180910390f35b6100cf60048036038101906100ca9190610ad2565b6101ee565b6040516100dd9291906110d6565b60405180910390f35b6100ee61032f565b6040516100fb9190611034565b60405180910390f35b61011e60048036038101906101199190610c32565b61036c565b005b6101286103f3565b6040516101359190611019565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061017161013e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d590611076565b60405180910390fd5b6101e78261041d565b9050919050565b6000606082600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b815260040161024e9190610f3e565b60206040518083038186803b15801561026657600080fd5b505afa15801561027a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029e9190610cad565b10156102ee576102e56000808111156102e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b610496565b91509150610321565b61031c8a848a8a6040516020016103089493929190610fb9565b6040516020818303038152906040526104c0565b915091505b995099975050505050505050565b60606040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250905090565b61037461013e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890611076565b60405180910390fd5b6103ed848484846104d0565b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000838060200190518101906104369190610a33565b91509150610489823083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610582909392919063ffffffff16565b6000801b92505050919050565b6000606082600b6104a791906111aa565b6040518060200160405280600081525091509150915091565b6000606060008391509150915091565b600080600080878060200190518101906104ea9190610a6f565b9350935093509350600061050f612710620186a0610508919061128b565b838561060b565b9050808761051d919061128b565b965061057785888661052f919061128b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106459092919063ffffffff16565b505050505050505050565b610605846323b872dd60e01b8585856040516024016105a393929190610f59565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106cb565b50505050565b6000606482606461061c91906111aa565b84866106289190611231565b6106329190611231565b61063c9190611200565b90509392505050565b6106c68363a9059cbb60e01b8484604051602401610664929190610f90565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506106cb565b505050565b600061072d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107929092919063ffffffff16565b905060008151111561078d578080602001905181019061074d9190610bc8565b61078c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610783906110b6565b60405180910390fd5b5b505050565b60606107a184846000856107aa565b90509392505050565b6060824710156107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e690611056565b60405180910390fd5b6107f8856108be565b610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e90611096565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108609190610f27565b60006040518083038185875af1925050503d806000811461089d576040519150601f19603f3d011682016040523d82523d6000602084013e6108a2565b606091505b50915091506108b28282866108d1565b92505050949350505050565b600080823b905060008111915050919050565b606083156108e157829050610931565b6000835111156108f45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109289190611034565b60405180910390fd5b9392505050565b600061094b61094684611137565b611106565b90508281526020810184848401111561096357600080fd5b61096e848285611347565b509392505050565b60008135905061098581611427565b92915050565b60008151905061099a8161143e565b92915050565b6000813590506109af81611455565b92915050565b6000815190506109c481611455565b92915050565b6000813590506109d98161146c565b92915050565b600082601f8301126109f057600080fd5b8135610a00848260208601610938565b91505092915050565b600081359050610a1881611483565b92915050565b600081519050610a2d81611483565b92915050565b60008060408385031215610a4657600080fd5b6000610a548582860161098b565b9250506020610a6585828601610a1e565b9150509250929050565b60008060008060808587031215610a8557600080fd5b6000610a938782880161098b565b9450506020610aa487828801610a1e565b9350506040610ab587828801610a1e565b9250506060610ac687828801610a1e565b91505092959194509250565b60008060008060008060008060006101208a8c031215610af157600080fd5b6000610aff8c828d01610976565b9950506020610b108c828d01610976565b98505060408a013567ffffffffffffffff811115610b2d57600080fd5b610b398c828d016109df565b9750506060610b4a8c828d01610a09565b9650506080610b5b8c828d01610a09565b95505060a0610b6c8c828d01610a09565b94505060c0610b7d8c828d01610a09565b93505060e08a013567ffffffffffffffff811115610b9a57600080fd5b610ba68c828d016109df565b925050610100610bb88c828d01610a09565b9150509295985092959850929598565b600060208284031215610bda57600080fd5b6000610be8848285016109b5565b91505092915050565b600060208284031215610c0357600080fd5b600082013567ffffffffffffffff811115610c1d57600080fd5b610c29848285016109df565b91505092915050565b60008060008060808587031215610c4857600080fd5b600085013567ffffffffffffffff811115610c6257600080fd5b610c6e878288016109df565b9450506020610c7f878288016109a0565b9350506040610c9087828801610a09565b9250506060610ca1878288016109ca565b91505092959194509250565b600060208284031215610cbf57600080fd5b6000610ccd84828501610a1e565b91505092915050565b610cdf816112bf565b82525050565b610cee816112ef565b82525050565b6000610cff82611167565b610d09818561117d565b9350610d19818560208601611356565b610d2281611416565b840191505092915050565b6000610d3882611167565b610d42818561118e565b9350610d52818560208601611356565b80840191505092915050565b610d6781611323565b82525050565b6000610d7882611172565b610d828185611199565b9350610d92818560208601611356565b610d9b81611416565b840191505092915050565b6000610db3602683611199565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e19602483611199565b91507f47534e526563697069656e743a2063616c6c6572206973206e6f742052656c6160008301527f79487562000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e7f601d83611199565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000610ebf602a83611199565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b610f2181611319565b82525050565b6000610f338284610d2d565b915081905092915050565b6000602082019050610f536000830184610cd6565b92915050565b6000606082019050610f6e6000830186610cd6565b610f7b6020830185610cd6565b610f886040830184610f18565b949350505050565b6000604082019050610fa56000830185610cd6565b610fb26020830184610f18565b9392505050565b6000608082019050610fce6000830187610cd6565b610fdb6020830186610f18565b610fe86040830185610f18565b610ff56060830184610f18565b95945050505050565b60006020820190506110136000830184610ce5565b92915050565b600060208201905061102e6000830184610d5e565b92915050565b6000602082019050818103600083015261104e8184610d6d565b905092915050565b6000602082019050818103600083015261106f81610da6565b9050919050565b6000602082019050818103600083015261108f81610e0c565b9050919050565b600060208201905081810360008301526110af81610e72565b9050919050565b600060208201905081810360008301526110cf81610eb2565b9050919050565b60006040820190506110eb6000830185610f18565b81810360208301526110fd8184610cf4565b90509392505050565b6000604051905081810181811067ffffffffffffffff8211171561112d5761112c6113e7565b5b8060405250919050565b600067ffffffffffffffff821115611152576111516113e7565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006111b582611319565b91506111c083611319565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111f5576111f4611389565b5b828201905092915050565b600061120b82611319565b915061121683611319565b925082611226576112256113b8565b5b828204905092915050565b600061123c82611319565b915061124783611319565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156112805761127f611389565b5b828202905092915050565b600061129682611319565b91506112a183611319565b9250828210156112b4576112b3611389565b5b828203905092915050565b60006112ca826112f9565b9050919050565b60006112dc826112f9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061132e82611335565b9050919050565b6000611340826112f9565b9050919050565b82818337600083830152505050565b60005b83811015611374578082015181840152602081019050611359565b83811115611383576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b611430816112bf565b811461143b57600080fd5b50565b611447816112d1565b811461145257600080fd5b50565b61145e816112e3565b811461146957600080fd5b50565b611475816112ef565b811461148057600080fd5b50565b61148c81611319565b811461149757600080fd5b5056fea26469706673582212201a787bdfc2dc3813856eae04327b95b5a0f0db6e5dfe1d1cf8cbfed551a8d16964736f6c63430008000033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
