{
  "_format": "hh-sol-artifact-1",
  "contractName": "Semver_Test",
  "sourceName": "contracts/test/Semver.t.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "version",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "opaqueData",
          "type": "bytes"
        }
      ],
      "name": "TransactionDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "excludedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifactSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedArtifactSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "targetedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_behindProxy_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_version_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60008054600160ff1991821681178355600480549092168117909155601b805460806001600160a01b03199182168117909255601c80546101009083168117909155601d80546102009316831790559184905260a092909252606460c05260e09290925261c350909152602061014052600861016052674e4f4e5f5a45524f60c01b610180526060610120527fced1f90d33a6ca7cfbe479a1c2415c4287f559420415e3188c786e36414529be601e5560405260226101a0818152906200241e6101c039601f90620000d290826200018c565b50348015620000e057600080fd5b5062000258565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011257607f821691505b6020821081036200013357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018757600081815260208120601f850160051c81016020861015620001625750805b601f850160051c820191505b8181101562000183578281556001016200016e565b5050505b505050565b81516001600160401b03811115620001a857620001a8620000e7565b620001c081620001b98454620000fd565b8462000139565b602080601f831160018114620001f85760008415620001df5750858301515b600019600386901b1c1916600185901b17855562000183565b600085815260208120601f198616915b82811015620002295788860151825594840194600190910190840162000208565b5085821015620002485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610100516121906200028e60003960005050600050506000505060005050600050506121906000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063850ebe421161008c578063b5508aa911610066578063b5508aa91461015e578063ba414fa614610166578063e20c9f711461017e578063fa7626d41461018657600080fd5b8063850ebe421461013957806385226c8114610141578063916a17c61461015657600080fd5b80633f7286f4116100bd5780633f7286f41461011457806366d9a9a01461011c5780637a03a21d1461013157600080fd5b80630a9254e4146100e45780631ed7831c146100ee5780633e5e3c231461010c575b600080fd5b6100ec610193565b005b6100f661021c565b6040516101039190610ea2565b60405180910390f35b6100f661028b565b6100f66102f8565b610124610365565b6040516101039190610efc565b6100ec610476565b6100ec61056a565b61014961073d565b604051610103919061106c565b61012461080d565b610149610915565b61016e6109e5565b6040519015158152602001610103565b6100f6610b45565b60005461016e9060ff1681565b6007600860006040516101a590610e88565b92835260208301919091526040820152606001604051809103906000f0801580156101d4573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561028157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156102815760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156102815760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561046d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561045557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104025790505b50505050508152505081526020019060010190610389565b50505050905090565b602154604080517f54fd4d5000000000000000000000000000000000000000000000000000000000815290516105689273ffffffffffffffffffffffffffffffffffffffff16916354fd4d509160048083019260009291908290030181865afa1580156104e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261052d919081019061111b565b6040518060400160405280600581526020017f372e382e30000000000000000000000000000000000000000000000000000000815250610bb2565b565b601b5460405160009173ffffffffffffffffffffffffffffffffffffffff169061059390610e95565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156105cc573d6000803e3d6000fd5b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b50506021546040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529084169250633659cfe69150602401600060405180830381600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b5050505061073a8173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401600060405180830381865afa1580156104e7573d6000803e3d6000fd5b50565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561046d578382906000526020600020018054610780906111e6565b80601f01602080910402602001604051908101604052809291908181526020018280546107ac906111e6565b80156107f95780601f106107ce576101008083540402835291602001916107f9565b820191906000526020600020905b8154815290600101906020018083116107dc57829003601f168201915b505050505081526020019060010190610761565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561046d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108fd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108aa5790505b50505050508152505081526020019060010190610831565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561046d578382906000526020600020018054610958906111e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610984906111e6565b80156109d15780601f106109a6576101008083540402835291602001916109d1565b820191906000526020600020905b8154815290600101906020018083116109b457829003601f168201915b505050505081526020019060010190610939565b60008054610100900460ff1615610a055750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610aaa917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611239565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae291611281565b6000604051808303816000865af19150503d8060008114610b1f576040519150601f19603f3d011682016040523d82523d6000602084013e610b24565b606091505b5091505080806020019051810190610b3c919061129d565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156102815760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575050505050905090565b80604051602001610bc39190611281565b6040516020818303038152906040528051906020012082604051602001610bea9190611281565b6040516020818303038152906040528051906020012014610d08577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610c8a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610cc191906112c6565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051610cf8919061130d565b60405180910390a1610d08610d0c565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e5a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ddb9291602001611239565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e1391611281565b6000604051808303816000865af19150503d8060008114610e50576040519150601f19603f3d011682016040523d82523d6000602084013e610e55565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6105178061135583390190565b6109188061186c83390190565b6020808252825182820181905260009190848201906040850190845b81811015610ef057835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610ebe565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610fe3578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b80831015610fce5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190610f8c565b50978a01979550505091870191600101610f24565b50919998505050505050505050565b60005b8381101561100d578181015183820152602001610ff5565b8381111561101c576000848401525b50505050565b6000815180845261103a816020860160208601610ff2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156110df577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526110cd858351611022565b94509285019290850190600101611093565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561112d57600080fd5b815167ffffffffffffffff8082111561114557600080fd5b818401915084601f83011261115957600080fd5b81518181111561116b5761116b6110ec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156111b1576111b16110ec565b816040528281528760208487010111156111ca57600080fd5b6111db836020830160208801610ff2565b979650505050505050565b600181811c908216806111fa57607f821691505b602082108103611233577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251611273816004850160208701610ff2565b919091016004019392505050565b60008251611293818460208701610ff2565b9190910192915050565b6000602082840312156112af57600080fd5b815180151581146112bf57600080fd5b9392505050565b60408152600a60408201527f202045787065637465640000000000000000000000000000000000000000000060608201526080602082015260006112bf6080830184611022565b60408152600a60408201527f2020202041637475616c0000000000000000000000000000000000000000000060608201526080602082015260006112bf608083018461102256fe60e060405234801561001057600080fd5b5060405161051738038061051783398101604081905261002f91610040565b60809290925260a05260c05261006e565b60008060006060848603121561005557600080fd5b8351925060208401519150604084015190509250925092565b60805160a05160c05161047d61009a600039600060a701526000607e015260006055015261047d6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b61003861004e565b604051610045919061025e565b60405180910390f35b60606100797f00000000000000000000000000000000000000000000000000000000000000006100f1565b6100a27f00000000000000000000000000000000000000000000000000000000000000006100f1565b6100cb7f00000000000000000000000000000000000000000000000000000000000000006100f1565b6040516020016100dd939291906102af565b604051602081830303815290604052905090565b60608160000361013457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561015e578061014881610354565b91506101579050600a836103bb565b9150610138565b60008167ffffffffffffffff811115610179576101796103cf565b6040519080825280601f01601f1916602001820160405280156101a3576020820181803683370190505b5090505b8415610226576101b86001836103fe565b91506101c5600a86610415565b6101d0906030610429565b60f81b8183815181106101e5576101e5610441565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061021f600a866103bb565b94506101a7565b949350505050565b60005b83811015610249578181015183820152602001610231565b83811115610258576000848401525b50505050565b602081526000825180602084015261027d81604085016020870161022e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600084516102c181846020890161022e565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516102fd816001850160208a0161022e565b6001920191820152835161031881600284016020880161022e565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361038557610385610325565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826103ca576103ca61038c565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008282101561041057610410610325565b500390565b6000826104245761042461038c565b500690565b6000821982111561043c5761043c610325565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a608060405234801561001057600080fd5b5060405161091838038061091883398101604081905261002f916100b2565b6100388161003e565b506100e2565b60006100566000805160206108f88339815191525490565b6000805160206108f8833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6000602082840312156100c457600080fd5b81516001600160a01b03811681146100db57600080fd5b9392505050565b610807806100f16000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300080f000a0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c8063850ebe421161008c578063b5508aa911610066578063b5508aa91461015e578063ba414fa614610166578063e20c9f711461017e578063fa7626d41461018657600080fd5b8063850ebe421461013957806385226c8114610141578063916a17c61461015657600080fd5b80633f7286f4116100bd5780633f7286f41461011457806366d9a9a01461011c5780637a03a21d1461013157600080fd5b80630a9254e4146100e45780631ed7831c146100ee5780633e5e3c231461010c575b600080fd5b6100ec610193565b005b6100f661021c565b6040516101039190610ea2565b60405180910390f35b6100f661028b565b6100f66102f8565b610124610365565b6040516101039190610efc565b6100ec610476565b6100ec61056a565b61014961073d565b604051610103919061106c565b61012461080d565b610149610915565b61016e6109e5565b6040519015158152602001610103565b6100f6610b45565b60005461016e9060ff1681565b6007600860006040516101a590610e88565b92835260208301919091526040820152606001604051809103906000f0801580156101d4573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060600d80548060200260200160405190810160405280929190818152602001828054801561028157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156102815760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156102815760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561046d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561045557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104025790505b50505050508152505081526020019060010190610389565b50505050905090565b602154604080517f54fd4d5000000000000000000000000000000000000000000000000000000000815290516105689273ffffffffffffffffffffffffffffffffffffffff16916354fd4d509160048083019260009291908290030181865afa1580156104e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261052d919081019061111b565b6040518060400160405280600581526020017f372e382e30000000000000000000000000000000000000000000000000000000815250610bb2565b565b601b5460405160009173ffffffffffffffffffffffffffffffffffffffff169061059390610e95565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f0801580156105cc573d6000803e3d6000fd5b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b50506021546040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529084169250633659cfe69150602401600060405180830381600087803b1580156106d457600080fd5b505af11580156106e8573d6000803e3d6000fd5b5050505061073a8173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401600060405180830381865afa1580156104e7573d6000803e3d6000fd5b50565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561046d578382906000526020600020018054610780906111e6565b80601f01602080910402602001604051908101604052809291908181526020018280546107ac906111e6565b80156107f95780601f106107ce576101008083540402835291602001916107f9565b820191906000526020600020905b8154815290600101906020018083116107dc57829003601f168201915b505050505081526020019060010190610761565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561046d57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108fd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108aa5790505b50505050508152505081526020019060010190610831565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561046d578382906000526020600020018054610958906111e6565b80601f0160208091040260200160405190810160405280929190818152602001828054610984906111e6565b80156109d15780601f106109a6576101008083540402835291602001916109d1565b820191906000526020600020905b8154815290600101906020018083116109b457829003601f168201915b505050505081526020019060010190610939565b60008054610100900460ff1615610a055750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b405760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610aaa917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001611239565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ae291611281565b6000604051808303816000865af19150503d8060008114610b1f576040519150601f19603f3d011682016040523d82523d6000602084013e610b24565b606091505b5091505080806020019051810190610b3c919061129d565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156102815760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610256575050505050905090565b80604051602001610bc39190611281565b6040516020818303038152906040528051906020012082604051602001610bea9190611281565b6040516020818303038152906040528051906020012014610d08577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610c8a9060208082526024908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b73747260408201527f696e675d00000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610cc191906112c6565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358382604051610cf8919061130d565b60405180910390a1610d08610d0c565b5050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610e5a5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ddb9291602001611239565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e1391611281565b6000604051808303816000865af19150503d8060008114610e50576040519150601f19603f3d011682016040523d82523d6000602084013e610e55565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b6105178061135583390190565b6109188061186c83390190565b6020808252825182820181905260009190848201906040850190845b81811015610ef057835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610ebe565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610fe3578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b80831015610fce5783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190610f8c565b50978a01979550505091870191600101610f24565b50919998505050505050505050565b60005b8381101561100d578181015183820152602001610ff5565b8381111561101c576000848401525b50505050565b6000815180845261103a816020860160208601610ff2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156110df577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526110cd858351611022565b94509285019290850190600101611093565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561112d57600080fd5b815167ffffffffffffffff8082111561114557600080fd5b818401915084601f83011261115957600080fd5b81518181111561116b5761116b6110ec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156111b1576111b16110ec565b816040528281528760208487010111156111ca57600080fd5b6111db836020830160208801610ff2565b979650505050505050565b600181811c908216806111fa57607f821691505b602082108103611233577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251611273816004850160208701610ff2565b919091016004019392505050565b60008251611293818460208701610ff2565b9190910192915050565b6000602082840312156112af57600080fd5b815180151581146112bf57600080fd5b9392505050565b60408152600a60408201527f202045787065637465640000000000000000000000000000000000000000000060608201526080602082015260006112bf6080830184611022565b60408152600a60408201527f2020202041637475616c0000000000000000000000000000000000000000000060608201526080602082015260006112bf608083018461102256fe60e060405234801561001057600080fd5b5060405161051738038061051783398101604081905261002f91610040565b60809290925260a05260c05261006e565b60008060006060848603121561005557600080fd5b8351925060208401519150604084015190509250925092565b60805160a05160c05161047d61009a600039600060a701526000607e015260006055015261047d6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806354fd4d5014610030575b600080fd5b61003861004e565b604051610045919061025e565b60405180910390f35b60606100797f00000000000000000000000000000000000000000000000000000000000000006100f1565b6100a27f00000000000000000000000000000000000000000000000000000000000000006100f1565b6100cb7f00000000000000000000000000000000000000000000000000000000000000006100f1565b6040516020016100dd939291906102af565b604051602081830303815290604052905090565b60608160000361013457505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561015e578061014881610354565b91506101579050600a836103bb565b9150610138565b60008167ffffffffffffffff811115610179576101796103cf565b6040519080825280601f01601f1916602001820160405280156101a3576020820181803683370190505b5090505b8415610226576101b86001836103fe565b91506101c5600a86610415565b6101d0906030610429565b60f81b8183815181106101e5576101e5610441565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061021f600a866103bb565b94506101a7565b949350505050565b60005b83811015610249578181015183820152602001610231565b83811115610258576000848401525b50505050565b602081526000825180602084015261027d81604085016020870161022e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600084516102c181846020890161022e565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516102fd816001850160208a0161022e565b6001920191820152835161031881600284016020880161022e565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361038557610385610325565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826103ca576103ca61038c565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008282101561041057610410610325565b500390565b6000826104245761042461038c565b500690565b6000821982111561043c5761043c610325565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea164736f6c634300080f000a608060405234801561001057600080fd5b5060405161091838038061091883398101604081905261002f916100b2565b6100388161003e565b506100e2565b60006100566000805160206108f88339815191525490565b6000805160206108f8833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6000602082840312156100c457600080fd5b81516001600160a01b03811681146100db57600080fd5b9392505050565b610807806100f16000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
