{
  "_format": "hh-sol-artifact-1",
  "contractName": "SafeCall_Fails_Invariants",
  "sourceName": "contracts/test/invariants/SafeCall.t.sol",
  "abi": [
    {
      "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": "invariant_callWithMinGas_neverForwardsMinGas_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "minGas",
          "type": "uint64"
        }
      ],
      "name": "performSafeCallMinGas",
      "outputs": [],
      "stateMutability": "payable",
      "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"
    }
  ],
  "bytecode": "0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b50611e5f8061003d6000396000f3fe6080604052600436106100d25760003560e01c806385226c811161007f578063b5508aa911610059578063b5508aa9146101c4578063ba414fa6146101d9578063e20c9f71146101fe578063fa7626d41461021357600080fd5b806385226c811461017a578063916a17c61461019c5780639741e3b3146101b157600080fd5b80633e5e3c23116100b05780633e5e3c231461012e5780633f7286f41461014357806366d9a9a01461015857600080fd5b80630a9254e4146100d75780631ed7831c146100ee57806338c2d5aa14610119575b600080fd5b3480156100e357600080fd5b506100ec61022d565b005b3480156100fa57600080fd5b506101036103f7565b6040516101109190610f7d565b60405180910390f35b34801561012557600080fd5b506100ec610466565b34801561013a57600080fd5b5061010361053a565b34801561014f57600080fd5b506101036105a7565b34801561016457600080fd5b5061016d610614565b6040516101109190610fd7565b34801561018657600080fd5b5061018f610725565b6040516101109190611143565b3480156101a857600080fd5b5061016d6107f5565b6100ec6101bf3660046111c3565b6108fd565b3480156101d057600080fd5b5061018f610927565b3480156101e557600080fd5b506101ee6109f7565b6040519015158152602001610110565b34801561020a57600080fd5b50610103610b57565b34801561021f57600080fd5b506000546101ee9060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c600160405161025f90610f70565b73ffffffffffffffffffffffffffffffffffffffff909216825215156020820152604001604051809103906000f08015801561029f573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416178255600f805460018181019092557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180548316301790558254600e8054928301815560009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909201805491861691909316179091559054604080517fc88a5e6d0000000000000000000000000000000000000000000000000000000081529190931660048201526fffffffffffffffffffffffffffffffff60248201529151737109709ecfa91a80626ff3989d68f67f5b1dd12d9263c88a5e6d92604480830193919282900301818387803b1580156103dd57600080fd5b505af11580156103f1573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575b5050505050905090565b601b54604080517f82f161ca00000000000000000000000000000000000000000000000000000000815290516105389273ffffffffffffffffffffffffffffffffffffffff16916382f161ca9160048083019260209291908290030181865afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611222565b60006040518060400160405280601b81526020017f6e6f207375636365737366756c2063616c6c7320616c6c6f7765640000000000815250610bc4565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561071c57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561070457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106b15790505b50505050508152505081526020019060010190610638565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561071c5783829060005260206000200180546107689061123b565b80601f01602080910402602001604051908101604052809291908181526020018280546107949061123b565b80156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b505050505081526020019060010190610749565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561071c57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108e557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108925790505b50505050508152505081526020019060010190610819565b610922828267ffffffffffffffff163460405180602001604052806000815250610c0c565b505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561071c57838290600052602060002001805461096a9061123b565b80601f01602080910402602001604051908101604052809291908181526020018280546109969061123b565b80156109e35780601f106109b8576101008083540402835291602001916109e3565b820191906000526020600020905b8154815290600101906020018083116109c657829003601f168201915b50505050508152602001906001019061094b565b60008054610100900460ff1615610a175750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b525760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610abc917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161128e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610af4916112d6565b6000604051808303816000865af19150503d8060008114610b31576040519150601f19603f3d011682016040523d82523d6000602084013e610b36565b606091505b5091505080806020019051810190610b4e91906112f2565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b818314610922577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610bfa919061131b565b60405180910390a16109228383610c6a565b6000806000610c1c866000610dd6565b905080610c52576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b808214610dd2577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610cf69060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f202045787065637465640000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f2020202041637475616c0000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1610dd2610df4565b5050565b600080603f83619c4001026040850201603f5a021015949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f425760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ec3929160200161128e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610efb916112d6565b6000604051808303816000865af19150503d8060008114610f38576040519150601f19603f3d011682016040523d82523d6000602084013e610f3d565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610af08061136383390190565b6020808252825182820181905260009190848201906040850190845b81811015610fcb57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610f99565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110be578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156110a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611067565b50978a01979550505091870191600101610fff565b50919998505050505050505050565b60005b838110156110e85781810151838201526020016110d0565b838111156103f15750506000910152565b600081518084526111118160208601602086016110cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526111a48583516110f9565b9450928501929085019060010161116a565b5092979650505050505050565b600080604083850312156111d657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146111fa57600080fd5b9150602083013567ffffffffffffffff8116811461121757600080fd5b809150509250929050565b60006020828403121561123457600080fd5b5051919050565b600181811c9082168061124f57607f821691505b602082108103611288577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516112c88160048501602087016110cd565b919091016004019392505050565b600082516112e88184602087016110cd565b9190910192915050565b60006020828403121561130457600080fd5b8151801515811461131457600080fd5b9392505050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600061131460808301846110f956fe60a060405234801561001057600080fd5b50604051610af0380380610af083398101604081905261002f9161005a565b600080546001600160a01b0319166001600160a01b03939093169290921790915515156080526100a5565b6000806040838503121561006d57600080fd5b82516001600160a01b038116811461008457600080fd5b6020840151909250801515811461009a57600080fd5b809150509250929050565b608051610a226100ce600039600081816101310152818161034c01526103890152610a226000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806382f161ca1461003b578063e0f8035b14610056575b600080fd5b61004460015481565b60405190815260200160405180910390f35b61006961006436600461079d565b61006b565b005b60005473ffffffffffffffffffffffffffffffffffffffff90811690634c63e5629084163b1580156100be57506a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff851614155b6040518263ffffffff1660e01b81526004016100de911515815260200190565b60006040518083038186803b1580156100f657600080fd5b505afa15801561010a573d6000803e3d6000fd5b5050505061012d8367ffffffffffffffff166109c465ffffffffffff80166103d5565b92507f0000000000000000000000000000000000000000000000000000000000000000156101945761018d67ffffffffffffffff808616908516603f610174876040610843565b61017e91906108a2565b67ffffffffffffffff166103d5565b93506101ee565b6101eb67ffffffffffffffff8516603f6101af866040610843565b6101b991906108a2565b6101c590619c406108c9565b6101d1906103e86108c9565b67ffffffffffffffff1667ffffffffffffffff80166103d5565b93505b600080546040517f08e4e11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260ff8516602483015267ffffffffffffffff871660448301526080606483015260848201939093529116906308e4e1169060a401600060405180830381600087803b15801561028357600080fd5b505af1158015610297573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8616602482015267ffffffffffffffff8781166044808401919091528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9741e3b300000000000000000000000000000000000000000000000000000000179052600093506103409250339188169060ff86169061042a565b905080801561036c57507f00000000000000000000000000000000000000000000000000000000000000005b156103875760018054906000610381836108f5565b91905055505b7f00000000000000000000000000000000000000000000000000000000000000001580156103b3575080155b156103ce57600180549060006103c8836108f5565b91905055505b5050505050565b60006103e2848484610444565b90506104236040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082610680565b9392505050565b600080600080845160208601878a8af19695505050505050565b6000818311156104da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156104ea5750818411155b156104f6575082610423565b6000610502848461092d565b61050d906001610944565b90506003851115801561051f57508481115b156105365761052e8585610944565b915050610423565b61056160037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b85101580156105985750610595857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b81115b156105d1576105c7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b61052e908461092d565b828511156106275760006105e5848761092d565b905060006105f3838361095c565b90508060000361060857849350505050610423565b60016106148288610944565b61061e919061092d565b93505050610678565b8385101561067857600061063b868661092d565b90506000610649838361095c565b90508060000361065e57859350505050610423565b610668818661092d565b610673906001610944565b935050505b509392505050565b60006a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff1683836040516024016106b79291906109a0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc000000000000000000000000000000000000000000000000000000001790525161073891906109f9565b600060405180830381855afa9150503d8060008114610773576040519150601f19603f3d011682016040523d82523d6000602084013e610778565b606091505b505050505050565b803567ffffffffffffffff8116811461079857600080fd5b919050565b600080600080608085870312156107b357600080fd5b6107bc85610780565b93506107ca60208601610780565b9250604085013573ffffffffffffffffffffffffffffffffffffffff811681146107f357600080fd5b9150606085013560ff8116811461080957600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561086a5761086a610814565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806108bd576108bd610873565b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156108ec576108ec610814565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361092657610926610814565b5060010190565b60008282101561093f5761093f610814565b500390565b6000821982111561095757610957610814565b500190565b60008261096b5761096b610873565b500690565b60005b8381101561098b578181015183820152602001610973565b8381111561099a576000848401525b50505050565b60408152600083518060408401526109bf816060850160208801610970565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b60008251610a0b818460208701610970565b919091019291505056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "deployedBytecode": "0x6080604052600436106100d25760003560e01c806385226c811161007f578063b5508aa911610059578063b5508aa9146101c4578063ba414fa6146101d9578063e20c9f71146101fe578063fa7626d41461021357600080fd5b806385226c811461017a578063916a17c61461019c5780639741e3b3146101b157600080fd5b80633e5e3c23116100b05780633e5e3c231461012e5780633f7286f41461014357806366d9a9a01461015857600080fd5b80630a9254e4146100d75780631ed7831c146100ee57806338c2d5aa14610119575b600080fd5b3480156100e357600080fd5b506100ec61022d565b005b3480156100fa57600080fd5b506101036103f7565b6040516101109190610f7d565b60405180910390f35b34801561012557600080fd5b506100ec610466565b34801561013a57600080fd5b5061010361053a565b34801561014f57600080fd5b506101036105a7565b34801561016457600080fd5b5061016d610614565b6040516101109190610fd7565b34801561018657600080fd5b5061018f610725565b6040516101109190611143565b3480156101a857600080fd5b5061016d6107f5565b6100ec6101bf3660046111c3565b6108fd565b3480156101d057600080fd5b5061018f610927565b3480156101e557600080fd5b506101ee6109f7565b6040519015158152602001610110565b34801561020a57600080fd5b50610103610b57565b34801561021f57600080fd5b506000546101ee9060ff1681565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c600160405161025f90610f70565b73ffffffffffffffffffffffffffffffffffffffff909216825215156020820152604001604051809103906000f08015801561029f573d6000803e3d6000fd5b50601b80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416178255600f805460018181019092557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180548316301790558254600e8054928301815560009081527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909201805491861691909316179091559054604080517fc88a5e6d0000000000000000000000000000000000000000000000000000000081529190931660048201526fffffffffffffffffffffffffffffffff60248201529151737109709ecfa91a80626ff3989d68f67f5b1dd12d9263c88a5e6d92604480830193919282900301818387803b1580156103dd57600080fd5b505af11580156103f1573d6000803e3d6000fd5b50505050565b6060600d80548060200260200160405190810160405280929190818152602001828054801561045c57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575b5050505050905090565b601b54604080517f82f161ca00000000000000000000000000000000000000000000000000000000815290516105389273ffffffffffffffffffffffffffffffffffffffff16916382f161ca9160048083019260209291908290030181865afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611222565b60006040518060400160405280601b81526020017f6e6f207375636365737366756c2063616c6c7320616c6c6f7765640000000000815250610bc4565b565b6060600f80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561071c57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561070457602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116106b15790505b50505050508152505081526020019060010190610638565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561071c5783829060005260206000200180546107689061123b565b80601f01602080910402602001604051908101604052809291908181526020018280546107949061123b565b80156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b505050505081526020019060010190610749565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561071c57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108e557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108925790505b50505050508152505081526020019060010190610819565b610922828267ffffffffffffffff163460405180602001604052806000815250610c0c565b505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561071c57838290600052602060002001805461096a9061123b565b80601f01602080910402602001604051908101604052809291908181526020018280546109969061123b565b80156109e35780601f106109b8576101008083540402835291602001916109e3565b820191906000526020600020905b8154815290600101906020018083116109c657829003601f168201915b50505050508152602001906001019061094b565b60008054610100900460ff1615610a175750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610b525760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091610abc917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800161128e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610af4916112d6565b6000604051808303816000865af19150503d8060008114610b31576040519150601f19603f3d011682016040523d82523d6000602084013e610b36565b606091505b5091505080806020019051810190610b4e91906112f2565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561045c5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610431575050505050905090565b818314610922577f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf358381604051610bfa919061131b565b60405180910390a16109228383610c6a565b6000806000610c1c866000610dd6565b905080610c52576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b808214610dd2577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051610cf69060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f202045787065637465640000000000000000000000000000000000000000000060608201526020810183905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a160408051818152600a818301527f2020202041637475616c0000000000000000000000000000000000000000000060608201526020810184905290517fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a89181900360800190a1610dd2610df4565b5050565b600080603f83619c4001026040850201603f5a021015949350505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610f425760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ec3929160200161128e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610efb916112d6565b6000604051808303816000865af19150503d8060008114610f38576040519150601f19603f3d011682016040523d82523d6000602084013e610f3d565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610af08061136383390190565b6020808252825182820181905260009190848201906040850190845b81811015610fcb57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610f99565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156110be578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b808310156110a95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b0190611067565b50978a01979550505091870191600101610fff565b50919998505050505050505050565b60005b838110156110e85781810151838201526020016110d0565b838111156103f15750506000910152565b600081518084526111118160208601602086016110cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156111b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526111a48583516110f9565b9450928501929085019060010161116a565b5092979650505050505050565b600080604083850312156111d657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146111fa57600080fd5b9150602083013567ffffffffffffffff8116811461121757600080fd5b809150509250929050565b60006020828403121561123457600080fd5b5051919050565b600181811c9082168061124f57607f821691505b602082108103611288577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516112c88160048501602087016110cd565b919091016004019392505050565b600082516112e88184602087016110cd565b9190910192915050565b60006020828403121561130457600080fd5b8151801515811461131457600080fd5b9392505050565b60408152600560408201527f4572726f72000000000000000000000000000000000000000000000000000000606082015260806020820152600061131460808301846110f956fe60a060405234801561001057600080fd5b50604051610af0380380610af083398101604081905261002f9161005a565b600080546001600160a01b0319166001600160a01b03939093169290921790915515156080526100a5565b6000806040838503121561006d57600080fd5b82516001600160a01b038116811461008457600080fd5b6020840151909250801515811461009a57600080fd5b809150509250929050565b608051610a226100ce600039600081816101310152818161034c01526103890152610a226000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806382f161ca1461003b578063e0f8035b14610056575b600080fd5b61004460015481565b60405190815260200160405180910390f35b61006961006436600461079d565b61006b565b005b60005473ffffffffffffffffffffffffffffffffffffffff90811690634c63e5629084163b1580156100be57506a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff851614155b6040518263ffffffff1660e01b81526004016100de911515815260200190565b60006040518083038186803b1580156100f657600080fd5b505afa15801561010a573d6000803e3d6000fd5b5050505061012d8367ffffffffffffffff166109c465ffffffffffff80166103d5565b92507f0000000000000000000000000000000000000000000000000000000000000000156101945761018d67ffffffffffffffff808616908516603f610174876040610843565b61017e91906108a2565b67ffffffffffffffff166103d5565b93506101ee565b6101eb67ffffffffffffffff8516603f6101af866040610843565b6101b991906108a2565b6101c590619c406108c9565b6101d1906103e86108c9565b67ffffffffffffffff1667ffffffffffffffff80166103d5565b93505b600080546040517f08e4e11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260ff8516602483015267ffffffffffffffff871660448301526080606483015260848201939093529116906308e4e1169060a401600060405180830381600087803b15801561028357600080fd5b505af1158015610297573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8616602482015267ffffffffffffffff8781166044808401919091528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9741e3b300000000000000000000000000000000000000000000000000000000179052600093506103409250339188169060ff86169061042a565b905080801561036c57507f00000000000000000000000000000000000000000000000000000000000000005b156103875760018054906000610381836108f5565b91905055505b7f00000000000000000000000000000000000000000000000000000000000000001580156103b3575080155b156103ce57600180549060006103c8836108f5565b91905055505b5050505050565b60006103e2848484610444565b90506104236040518060400160405280600c81526020017f426f756e6420526573756c74000000000000000000000000000000000000000081525082610680565b9392505050565b600080600080845160208601878a8af19695505050505050565b6000818311156104da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e0000606482015260840160405180910390fd5b8284101580156104ea5750818411155b156104f6575082610423565b6000610502848461092d565b61050d906001610944565b90506003851115801561051f57508481115b156105365761052e8585610944565b915050610423565b61056160037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b85101580156105985750610595857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b81115b156105d1576105c7857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61092d565b61052e908461092d565b828511156106275760006105e5848761092d565b905060006105f3838361095c565b90508060000361060857849350505050610423565b60016106148288610944565b61061e919061092d565b93505050610678565b8385101561067857600061063b868661092d565b90506000610649838361095c565b90508060000361065e57859350505050610423565b610668818661092d565b610673906001610944565b935050505b509392505050565b60006a636f6e736f6c652e6c6f6773ffffffffffffffffffffffffffffffffffffffff1683836040516024016106b79291906109a0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc000000000000000000000000000000000000000000000000000000001790525161073891906109f9565b600060405180830381855afa9150503d8060008114610773576040519150601f19603f3d011682016040523d82523d6000602084013e610778565b606091505b505050505050565b803567ffffffffffffffff8116811461079857600080fd5b919050565b600080600080608085870312156107b357600080fd5b6107bc85610780565b93506107ca60208601610780565b9250604085013573ffffffffffffffffffffffffffffffffffffffff811681146107f357600080fd5b9150606085013560ff8116811461080957600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168183048111821515161561086a5761086a610814565b02949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806108bd576108bd610873565b92169190910492915050565b600067ffffffffffffffff8083168185168083038211156108ec576108ec610814565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361092657610926610814565b5060010190565b60008282101561093f5761093f610814565b500390565b6000821982111561095757610957610814565b500190565b60008261096b5761096b610873565b500690565b60005b8381101561098b578181015183820152602001610973565b8381111561099a576000848401525b50505050565b60408152600083518060408401526109bf816060850160208801610970565b602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b60008251610a0b818460208701610970565b919091019291505056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
