{
  "_format": "hh-sol-artifact-1",
  "contractName": "TestMintableERC721",
  "sourceName": "contracts/test/L2ERC721Bridge.t.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_remoteToken",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BRIDGE",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REMOTE_CHAIN_ID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REMOTE_TOKEN",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseTokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bridge",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "remoteChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "remoteToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b506040516200312a3803806200312a833981016040819052620000349162000595565b816001826040518060400160405280600481526020016315195cdd60e21b815250604051806040016040528060038152602001621514d560ea1b8152508181816000908162000084919062000672565b50600162000093828262000672565b5050506001600160a01b038516620001185760405162461bcd60e51b815260206004820152603360248201527f4f7074696d69736d4d696e7461626c654552433732313a20627269646765206360448201527f616e6e6f7420626520616464726573732830290000000000000000000000000060648201526084015b60405180910390fd5b83600003620001905760405162461bcd60e51b815260206004820152603660248201527f4f7074696d69736d4d696e7461626c654552433732313a2072656d6f7465206360448201527f6861696e2069642063616e6e6f74206265207a65726f0000000000000000000060648201526084016200010f565b6001600160a01b0383166200020e5760405162461bcd60e51b815260206004820152603960248201527f4f7074696d69736d4d696e7461626c654552433732313a2072656d6f7465207460448201527f6f6b656e2063616e6e6f7420626520616464726573732830290000000000000060648201526084016200010f565b60808490526001600160a01b0383811660a081905290861660c0526200024290601462000298602090811b62000f2017901c565b62000258856200045860201b620011631760201c565b6040516020016200026b9291906200077c565b604051602081830303815290604052600a90816200028a919062000672565b5050505050505050620008d3565b60606000620002a9836002620007ec565b620002b69060026200080e565b6001600160401b03811115620002d057620002d0620005cd565b6040519080825280601f01601f191660200182016040528015620002fb576020820181803683370190505b509050600360fc1b8160008151811062000319576200031962000829565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106200034b576200034b62000829565b60200101906001600160f81b031916908160001a905350600062000371846002620007ec565b6200037e9060016200080e565b90505b600181111562000400576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620003b657620003b662000829565b1a60f81b828281518110620003cf57620003cf62000829565b60200101906001600160f81b031916908160001a90535060049490941c93620003f8816200083f565b905062000381565b508315620004515760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016200010f565b9392505050565b606081600003620004805750506040805180820190915260018152600360fc1b602082015290565b8160005b8115620004b05780620004978162000859565b9150620004a89050600a836200088b565b915062000484565b6000816001600160401b03811115620004cd57620004cd620005cd565b6040519080825280601f01601f191660200182016040528015620004f8576020820181803683370190505b5090505b8415620005705762000510600183620008a2565b91506200051f600a86620008bc565b6200052c9060306200080e565b60f81b81838151811062000544576200054462000829565b60200101906001600160f81b031916908160001a90535062000568600a866200088b565b9450620004fc565b949350505050565b80516001600160a01b03811681146200059057600080fd5b919050565b60008060408385031215620005a957600080fd5b620005b48362000578565b9150620005c46020840162000578565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005f857607f821691505b6020821081036200061957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066d57600081815260208120601f850160051c81016020861015620006485750805b601f850160051c820191505b81811015620006695782815560010162000654565b5050505b505050565b81516001600160401b038111156200068e576200068e620005cd565b620006a6816200069f8454620005e3565b846200061f565b602080601f831160018114620006de5760008415620006c55750858301515b600019600386901b1c1916600185901b17855562000669565b600085815260208120601f198616915b828110156200070f57888601518255948401946001909101908401620006ee565b50858210156200072e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000815160005b8181101562000761576020818501810151868301520162000745565b8181111562000771576000828601525b509290920192915050565b6832ba3432b932bab69d60b91b815260006200079c60098301856200073e565b600160fe1b8152620007b260018201856200073e565b712f746f6b656e5552493f75696e743235363d60701b815260120195945050505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008095762000809620007d6565b500290565b60008219821115620008245762000824620007d6565b500190565b634e487b7160e01b600052603260045260246000fd5b600081620008515762000851620007d6565b506000190190565b6000600182016200086e576200086e620007d6565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826200089d576200089d62000875565b500490565b600082821015620008b757620008b7620007d6565b500390565b600082620008ce57620008ce62000875565b500690565b60805160a05160c05161280462000926600039600081816103b90152818161045101528181610b570152610c790152600081816101e0015261039301526000818161030001526103df01526128046000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80637d1d0c5b116100ee578063c87b56dd11610097578063e78cea9211610071578063e78cea92146103b7578063e9518196146103dd578063e985e9c514610403578063ee9a31a21461044c57600080fd5b8063c87b56dd14610376578063d547cfb714610389578063d6c0b2c41461039157600080fd5b8063a1448194116100c8578063a14481941461033d578063a22cb46514610350578063b88d4fde1461036357600080fd5b80637d1d0c5b146102fb57806395d89b41146103225780639dc29fac1461032a57600080fd5b806323b872dd1161015b57806342842e0e1161013557806342842e0e146102af5780634f6ccce7146102c25780636352211e146102d557806370a08231146102e857600080fd5b806323b872dd146102765780632f745c591461028957806340c10f191461029c57600080fd5b8063081812fc1161018c578063081812fc1461023c578063095ea7b31461024f57806318160ddd1461026457600080fd5b806301ffc9a7146101b3578063033964be146101db57806306fdde0314610227575b600080fd5b6101c66101c1366004612251565b610473565b60405190151581526020015b60405180910390f35b6102027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61022f610522565b6040516101d291906122e4565b61020261024a3660046122f7565b6105b4565b61026261025d366004612339565b6105e8565b005b6008545b6040519081526020016101d2565b610262610284366004612363565b610779565b610268610297366004612339565b61081a565b6102626102aa366004612339565b6108e9565b6102626102bd366004612363565b6108f7565b6102686102d03660046122f7565b610912565b6102026102e33660046122f7565b6109d0565b6102686102f636600461239f565b610a62565b6102687f000000000000000000000000000000000000000000000000000000000000000081565b61022f610b30565b610262610338366004612339565b610b3f565b61026261034b366004612339565b610c61565b61026261035e3660046123ba565b610d78565b610262610371366004612425565b610d83565b61022f6103843660046122f7565b610e2b565b61022f610e92565b7f0000000000000000000000000000000000000000000000000000000000000000610202565b7f0000000000000000000000000000000000000000000000000000000000000000610202565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b6101c661041136600461251f565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f74259ebf000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061050b57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b8061051a575061051a84611298565b949350505050565b60606000805461053190612552565b80601f016020809104026020016040519081016040528092919081815260200182805461055d90612552565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b5050505050905090565b60006105bf826112ee565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105f3826109d0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806106de57506106de8133610411565b61076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016106ac565b610774838361137c565b505050565b610783338261141c565b61080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016106ac565b6107748383836114db565b600061082583610a62565b82106108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016106ac565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b6108f3828261174d565b5050565b61077483838360405180602001604052806000815250610d83565b600061091d60085490565b82106109ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016106ac565b600882815481106109be576109be6125a5565b90600052602060002001549050919050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610a5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016106ac565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016106ac565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461053190612552565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d4d696e7461626c654552433732313a206f6e6c792062726960448201527f6467652063616e2063616c6c20746869732066756e6374696f6e00000000000060648201526084016106ac565b610c0d8161191b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca582604051610c5591815260200190565b60405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d4d696e7461626c654552433732313a206f6e6c792062726960448201527f6467652063616e2063616c6c20746869732066756e6374696f6e00000000000060648201526084016106ac565b610d3082826119f4565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688582604051610c5591815260200190565b6108f3338383611a0e565b610d8d338361141c565b610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016106ac565b610e2584848484611b3b565b50505050565b6060610e36826112ee565b6000610e40611bde565b90506000815111610e605760405180602001604052806000815250610e8b565b80610e6a84611163565b604051602001610e7b9291906125d4565b6040516020818303038152906040525b9392505050565b600a8054610e9f90612552565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecb90612552565b8015610f185780601f10610eed57610100808354040283529160200191610f18565b820191906000526020600020905b815481529060010190602001808311610efb57829003601f168201915b505050505081565b60606000610f2f836002612632565b610f3a90600261266f565b67ffffffffffffffff811115610f5257610f526123f6565b6040519080825280601f01601f191660200182016040528015610f7c576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610fb357610fb36125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611016576110166125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611052846002612632565b61105d90600161266f565b90505b60018111156110fa577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061109e5761109e6125a5565b1a60f81b8282815181106110b4576110b46125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936110f381612687565b9050611060565b508315610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106ac565b6060816000036111a657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156111d057806111ba816126bc565b91506111c99050600a83612723565b91506111aa565b60008167ffffffffffffffff8111156111eb576111eb6123f6565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b5090505b841561051a5761122a600183612737565b9150611237600a8661274e565b61124290603061266f565b60f81b818381518110611257576112576125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611291600a86612723565b9450611219565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610a5c5750610a5c82611bed565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016106ac565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906113d6826109d0565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611428836109d0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611496575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b8061051a57508373ffffffffffffffffffffffffffffffffffffffff166114bc846105b4565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166114fb826109d0565b73ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016106ac565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ac565b61164b838383611cd0565b61165660008261137c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080546001929061168c908490612737565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906116c790849061266f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff82166117ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106ac565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106ac565b61186260008383611cd0565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080546001929061189890849061266f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000611926826109d0565b905061193481600084611cd0565b61193f60008361137c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290611975908490612737565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6108f3828260405180602001604052806000815250611dd6565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106ac565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611b468484846114db565b611b5284848484611e79565b610e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106ac565b6060600a805461053190612552565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611c8057507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610a5c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a5c565b73ffffffffffffffffffffffffffffffffffffffff8316611d3857611d3381600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611d75565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d7557611d75838261206c565b73ffffffffffffffffffffffffffffffffffffffff8216611d995761077481612123565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146107745761077482826121d2565b611de0838361174d565b611ded6000848484611e79565b610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106ac565b600073ffffffffffffffffffffffffffffffffffffffff84163b15612061576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611ef0903390899088908890600401612762565b6020604051808303816000875af1925050508015611f49575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611f46918101906127ab565b60015b612016573d808015611f77576040519150601f19603f3d011682016040523d82523d6000602084013e611f7c565b606091505b50805160000361200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106ac565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061051a565b506001949350505050565b6000600161207984610a62565b6120839190612737565b6000838152600760205260409020549091508082146120e35773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b60085460009061213590600190612737565b6000838152600960205260408120546008805493945090928490811061215d5761215d6125a5565b90600052602060002001549050806008838154811061217e5761217e6125a5565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806121b6576121b66127c8565b6001900381819060005260206000200160009055905550505050565b60006121dd83610a62565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461137957600080fd5b60006020828403121561226357600080fd5b8135610e8b81612223565b60005b83811015612289578181015183820152602001612271565b83811115610e255750506000910152565b600081518084526122b281602086016020860161226e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e8b602083018461229a565b60006020828403121561230957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461233457600080fd5b919050565b6000806040838503121561234c57600080fd5b61235583612310565b946020939093013593505050565b60008060006060848603121561237857600080fd5b61238184612310565b925061238f60208501612310565b9150604084013590509250925092565b6000602082840312156123b157600080fd5b610e8b82612310565b600080604083850312156123cd57600080fd5b6123d683612310565b9150602083013580151581146123eb57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561243b57600080fd5b61244485612310565b935061245260208601612310565b925060408501359150606085013567ffffffffffffffff8082111561247657600080fd5b818701915087601f83011261248a57600080fd5b81358181111561249c5761249c6123f6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156124e2576124e26123f6565b816040528281528a60208487010111156124fb57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561253257600080fd5b61253b83612310565b915061254960208401612310565b90509250929050565b600181811c9082168061256657607f821691505b60208210810361259f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600083516125e681846020880161226e565b8351908301906125fa81836020880161226e565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561266a5761266a612603565b500290565b6000821982111561268257612682612603565b500190565b60008161269657612696612603565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126ed576126ed612603565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612732576127326126f4565b500490565b60008282101561274957612749612603565b500390565b60008261275d5761275d6126f4565b500690565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526127a1608083018461229a565b9695505050505050565b6000602082840312156127bd57600080fd5b8151610e8b81612223565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c634300080f000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80637d1d0c5b116100ee578063c87b56dd11610097578063e78cea9211610071578063e78cea92146103b7578063e9518196146103dd578063e985e9c514610403578063ee9a31a21461044c57600080fd5b8063c87b56dd14610376578063d547cfb714610389578063d6c0b2c41461039157600080fd5b8063a1448194116100c8578063a14481941461033d578063a22cb46514610350578063b88d4fde1461036357600080fd5b80637d1d0c5b146102fb57806395d89b41146103225780639dc29fac1461032a57600080fd5b806323b872dd1161015b57806342842e0e1161013557806342842e0e146102af5780634f6ccce7146102c25780636352211e146102d557806370a08231146102e857600080fd5b806323b872dd146102765780632f745c591461028957806340c10f191461029c57600080fd5b8063081812fc1161018c578063081812fc1461023c578063095ea7b31461024f57806318160ddd1461026457600080fd5b806301ffc9a7146101b3578063033964be146101db57806306fdde0314610227575b600080fd5b6101c66101c1366004612251565b610473565b60405190151581526020015b60405180910390f35b6102027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d2565b61022f610522565b6040516101d291906122e4565b61020261024a3660046122f7565b6105b4565b61026261025d366004612339565b6105e8565b005b6008545b6040519081526020016101d2565b610262610284366004612363565b610779565b610268610297366004612339565b61081a565b6102626102aa366004612339565b6108e9565b6102626102bd366004612363565b6108f7565b6102686102d03660046122f7565b610912565b6102026102e33660046122f7565b6109d0565b6102686102f636600461239f565b610a62565b6102687f000000000000000000000000000000000000000000000000000000000000000081565b61022f610b30565b610262610338366004612339565b610b3f565b61026261034b366004612339565b610c61565b61026261035e3660046123ba565b610d78565b610262610371366004612425565b610d83565b61022f6103843660046122f7565b610e2b565b61022f610e92565b7f0000000000000000000000000000000000000000000000000000000000000000610202565b7f0000000000000000000000000000000000000000000000000000000000000000610202565b7f0000000000000000000000000000000000000000000000000000000000000000610268565b6101c661041136600461251f565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b6102027f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f74259ebf000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841682148061050b57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b8061051a575061051a84611298565b949350505050565b60606000805461053190612552565b80601f016020809104026020016040519081016040528092919081815260200182805461055d90612552565b80156105aa5780601f1061057f576101008083540402835291602001916105aa565b820191906000526020600020905b81548152906001019060200180831161058d57829003601f168201915b5050505050905090565b60006105bf826112ee565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105f3826109d0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806106de57506106de8133610411565b61076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016106ac565b610774838361137c565b505050565b610783338261141c565b61080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016106ac565b6107748383836114db565b600061082583610a62565b82106108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016106ac565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600660209081526040808320938352929052205490565b6108f3828261174d565b5050565b61077483838360405180602001604052806000815250610d83565b600061091d60085490565b82106109ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016106ac565b600882815481106109be576109be6125a5565b90600052602060002001549050919050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610a5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016106ac565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016106ac565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461053190612552565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d4d696e7461626c654552433732313a206f6e6c792062726960448201527f6467652063616e2063616c6c20746869732066756e6374696f6e00000000000060648201526084016106ac565b610c0d8161191b565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca582604051610c5591815260200190565b60405180910390a25050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610d26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d4d696e7461626c654552433732313a206f6e6c792062726960448201527f6467652063616e2063616c6c20746869732066756e6374696f6e00000000000060648201526084016106ac565b610d3082826119f4565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688582604051610c5591815260200190565b6108f3338383611a0e565b610d8d338361141c565b610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016106ac565b610e2584848484611b3b565b50505050565b6060610e36826112ee565b6000610e40611bde565b90506000815111610e605760405180602001604052806000815250610e8b565b80610e6a84611163565b604051602001610e7b9291906125d4565b6040516020818303038152906040525b9392505050565b600a8054610e9f90612552565b80601f0160208091040260200160405190810160405280929190818152602001828054610ecb90612552565b8015610f185780601f10610eed57610100808354040283529160200191610f18565b820191906000526020600020905b815481529060010190602001808311610efb57829003601f168201915b505050505081565b60606000610f2f836002612632565b610f3a90600261266f565b67ffffffffffffffff811115610f5257610f526123f6565b6040519080825280601f01601f191660200182016040528015610f7c576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610fb357610fb36125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611016576110166125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611052846002612632565b61105d90600161266f565b90505b60018111156110fa577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061109e5761109e6125a5565b1a60f81b8282815181106110b4576110b46125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936110f381612687565b9050611060565b508315610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106ac565b6060816000036111a657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156111d057806111ba816126bc565b91506111c99050600a83612723565b91506111aa565b60008167ffffffffffffffff8111156111eb576111eb6123f6565b6040519080825280601f01601f191660200182016040528015611215576020820181803683370190505b5090505b841561051a5761122a600183612737565b9150611237600a8661274e565b61124290603061266f565b60f81b818381518110611257576112576125a5565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611291600a86612723565b9450611219565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610a5c5750610a5c82611bed565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016106ac565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906113d6826109d0565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611428836109d0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611496575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b8061051a57508373ffffffffffffffffffffffffffffffffffffffff166114bc846105b4565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b8273ffffffffffffffffffffffffffffffffffffffff166114fb826109d0565b73ffffffffffffffffffffffffffffffffffffffff161461159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016106ac565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ac565b61164b838383611cd0565b61165660008261137c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080546001929061168c908490612737565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906116c790849061266f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff82166117ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106ac565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106ac565b61186260008383611cd0565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080546001929061189890849061266f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000611926826109d0565b905061193481600084611cd0565b61193f60008361137c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290611975908490612737565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6108f3828260405180602001604052806000815250611dd6565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106ac565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611b468484846114db565b611b5284848484611e79565b610e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106ac565b6060600a805461053190612552565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611c8057507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610a5c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a5c565b73ffffffffffffffffffffffffffffffffffffffff8316611d3857611d3381600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611d75565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d7557611d75838261206c565b73ffffffffffffffffffffffffffffffffffffffff8216611d995761077481612123565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146107745761077482826121d2565b611de0838361174d565b611ded6000848484611e79565b610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106ac565b600073ffffffffffffffffffffffffffffffffffffffff84163b15612061576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611ef0903390899088908890600401612762565b6020604051808303816000875af1925050508015611f49575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611f46918101906127ab565b60015b612016573d808015611f77576040519150601f19603f3d011682016040523d82523d6000602084013e611f7c565b606091505b50805160000361200e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106ac565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061051a565b506001949350505050565b6000600161207984610a62565b6120839190612737565b6000838152600760205260409020549091508082146120e35773ffffffffffffffffffffffffffffffffffffffff841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b50600091825260076020908152604080842084905573ffffffffffffffffffffffffffffffffffffffff9094168352600681528383209183525290812055565b60085460009061213590600190612737565b6000838152600960205260408120546008805493945090928490811061215d5761215d6125a5565b90600052602060002001549050806008838154811061217e5761217e6125a5565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806121b6576121b66127c8565b6001900381819060005260206000200160009055905550505050565b60006121dd83610a62565b73ffffffffffffffffffffffffffffffffffffffff9093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461137957600080fd5b60006020828403121561226357600080fd5b8135610e8b81612223565b60005b83811015612289578181015183820152602001612271565b83811115610e255750506000910152565b600081518084526122b281602086016020860161226e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e8b602083018461229a565b60006020828403121561230957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461233457600080fd5b919050565b6000806040838503121561234c57600080fd5b61235583612310565b946020939093013593505050565b60008060006060848603121561237857600080fd5b61238184612310565b925061238f60208501612310565b9150604084013590509250925092565b6000602082840312156123b157600080fd5b610e8b82612310565b600080604083850312156123cd57600080fd5b6123d683612310565b9150602083013580151581146123eb57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561243b57600080fd5b61244485612310565b935061245260208601612310565b925060408501359150606085013567ffffffffffffffff8082111561247657600080fd5b818701915087601f83011261248a57600080fd5b81358181111561249c5761249c6123f6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156124e2576124e26123f6565b816040528281528a60208487010111156124fb57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561253257600080fd5b61253b83612310565b915061254960208401612310565b90509250929050565b600181811c9082168061256657607f821691505b60208210810361259f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600083516125e681846020880161226e565b8351908301906125fa81836020880161226e565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561266a5761266a612603565b500290565b6000821982111561268257612682612603565b500190565b60008161269657612696612603565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126ed576126ed612603565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612732576127326126f4565b500490565b60008282101561274957612749612603565b500390565b60008261275d5761275d6126f4565b500690565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526127a1608083018461229a565b9695505050505050565b6000602082840312156127bd57600080fd5b8151610e8b81612223565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
