{
  "_format": "hh-sol-artifact-1",
  "contractName": "Proxy_Test",
  "sourceName": "contracts/test/Proxy.t.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "excludedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "excludeSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "excludedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifactSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedArtifactSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetArtifacts",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "targetedArtifacts_",
          "type": "string[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedContracts_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSelectors",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct StdInvariant.FuzzSelector[]",
          "name": "targetedSelectors_",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "targetSenders",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "targetedSenders_",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_delegatesToImpl_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_implementationKey_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_implementation_isZeroAddress_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_implementation_zeroAddressCaller_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_ownerKey_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_ownerProxyCall_notAdmin_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_proxyCallToImp_notAdmin_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_upgradeToAndCall_functionDoesNotExist_reverts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_upgradeToAndCall_isPayable_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_upgradeToAndCall_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "test_upgradeTo_clashingFunctionSignatures_succeeds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604090815260008054600160ff199182168117909255600480549091169091179055601b80546001600160a01b031916909117905534801561004257600080fd5b50615326806100526000396000f3fe60806040523480156200001157600080fd5b5060043610620001a15760003560e01c80637dfd7ed111620000e9578063aba0cf011162000097578063ba414fa6116200006e578063ba414fa6146200029c578063e20c9f7114620002b7578063fa7626d414620002c157600080fd5b8063aba0cf01146200027e578063b4c821dd1462000288578063b5508aa9146200029257600080fd5b806385226c8111620000cc57806385226c81146200025157806389f4619f146200026a578063916a17c6146200027457600080fd5b80637dfd7ed1146200023d578063829f35ea146200024757600080fd5b80633e5e3c23116200015357806350218d55116200012a57806350218d551462000210578063646af406146200021a57806366d9a9a0146200022457600080fd5b80633e5e3c2314620001f25780633f7286f414620001fc578063444a1e4f146200020657600080fd5b806318133bed116200018857806318133bed14620001bc5780631acf575314620001c65780631ed7831c14620001d057600080fd5b80630a9254e414620001a65780630cec200214620001b2575b600080fd5b620001b0620002cf565b005b620001b0620004f4565b620001b062000926565b620001b062000c79565b620001da62000dba565b604051620001e9919062004036565b60405180910390f35b620001da62000e2b565b620001da62000e9a565b620001b062000f09565b620001b06200160a565b620001b062001b60565b6200022e62001dda565b604051620001e9919062004092565b620001b062001eef565b620001b062002358565b6200025b6200268b565b604051620001e9919062004207565b620001b062002765565b6200022e62002d92565b620001b062002e9e565b620001b0620032a3565b6200025b620035c6565b620002a6620036a0565b6040519015158152602001620001e9565b620001da6200380a565b600054620002a69060ff1681565b601b5460405173ffffffffffffffffffffffffffffffffffffffff90911690620002f9906200400d565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000333573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000387906200401b565b604051809103906000f080158015620003a4573d6000803e3d6000fd5b50601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200045057600080fd5b505af115801562000465573d6000803e3d6000fd5b5050601c54601d546040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169250633659cfe69150602401600060405180830381600087803b158015620004d957600080fd5b505af1158015620004ee573d6000803e3d6000fd5b50505050565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200056057600080fd5b505af115801562000575573d6000803e3d6000fd5b5050601c54604080517f3659cfe6000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b158015620005e857600080fd5b505af1158015620005fd573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200067d57600080fd5b505af115801562000692573d6000803e3d6000fd5b5050604080519092507fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9150600090a2601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200074257600080fd5b505af115801562000757573d6000803e3d6000fd5b5050601c54604080517f3659cfe6000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b158015620007ca57600080fd5b505af1158015620007df573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200086357600080fd5b505af115801562000878573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620008ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200091491906200428b565b90506200092381604062003879565b50565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620009a657600080fd5b505af1158015620009bb573d6000803e3d6000fd5b5050601c546040517f8f2839700000000000000000000000000000000000000000000000000000000081526006600482015273ffffffffffffffffffffffffffffffffffffffff9091169250638f2839709150602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050601c5460009250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063667f9d709073ffffffffffffffffffffffffffffffffffffffff1662000aaa60017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620042f9565b60405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381865afa15801562000b19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b3f919062004313565b905062000b4e60068262003879565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815260066004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000bb557600080fd5b505af115801562000bca573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000c40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c6691906200428b565b905062000c7581600662003879565b5050565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815260006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000ce057600080fd5b505af115801562000cf5573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d9191906200428b565b601d549091506200092390829073ffffffffffffffffffffffffffffffffffffffff1662003879565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e2157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e215760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e215760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575050505050905090565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000f8957600080fd5b505af115801562000f9e573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200103a91906200428b565b601d549091506200106390829073ffffffffffffffffffffffffffffffffffffffff1662003879565b60405162001071906200401b565b604051809103906000f0801580156200108e573d6000803e3d6000fd5b50601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c6564000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390608401600060405180830381600087803b1580156200118e57600080fd5b505af1158015620011a3573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200122757600080fd5b505af11580156200123c573d6000803e3d6000fd5b5050601c54601d54604080517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101919091526000604482015291169250634f1ef28691506064016000604051808303816000875af1158015620012c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200130d91908101906200435c565b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200138e57600080fd5b505af1158015620013a3573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001419573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200143f91906200428b565b90506200144d828262003879565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620014b957600080fd5b505af1158015620014ce573d6000803e3d6000fd5b5050601c54601d546040805160016024820181905260448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ab06ee50000000000000000000000000000000000000000000000000000000017905290517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169550634f1ef28694506200159d939092169160040162004433565b6000604051808303816000875af1158015620015bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200160591908101906200435c565b505050565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200167657600080fd5b505af11580156200168b573d6000803e3d6000fd5b5050601c546040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff9091169250638f2839709150602401600060405180830381600087803b158015620016fc57600080fd5b505af115801562001711573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200179157600080fd5b505af1158015620017a6573d6000803e3d6000fd5b5050601b546040805173ffffffffffffffffffffffffffffffffffffffff9092168252600160208301527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f935001905060405180910390a1601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200187e57600080fd5b505af115801562001893573d6000803e3d6000fd5b5050601c546040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff9091169250638f2839709150602401600060405180830381600087803b1580156200190457600080fd5b505af115801562001919573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200198957600080fd5b505af11580156200199e573d6000803e3d6000fd5b50505050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001a12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3891906200428b565b506040517fca669fa700000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001aa057600080fd5b505af115801562001ab5573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001b2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b5191906200428b565b90506200092381600162003879565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001be057600080fd5b505af115801562001bf5573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b15801562001c6657600080fd5b505af115801562001c7b573d6000803e3d6000fd5b5050601c546040516000935083925073ffffffffffffffffffffffffffffffffffffffff909116908281818181865af19150503d806000811462001cdc576040519150601f19603f3d011682016040523d82523d6000602084013e62001ce1565b606091505b509150915062001cf3826000620039b7565b60405160206024820152602560448201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160648201527f6c697a6564000000000000000000000000000000000000000000000000000000608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f08c379a000000000000000000000000000000000000000000000000000000000179052905062001605828262003bab565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001ee657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562001ecd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001e795790505b5050505050815250508152602001906001019062001dfe565b50505050905090565b601c546040517f9507d39a0000000000000000000000000000000000000000000000000000000081526001600482015260009173ffffffffffffffffffffffffffffffffffffffff1690639507d39a906024016020604051808303816000875af115801562001f62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f88919062004313565b905062001f9781600062003bb7565b5060405162001fa6906200401b565b604051809103906000f08015801562001fc3573d6000803e3d6000fd5b50601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156200208557600080fd5b505af11580156200209a573d6000803e3d6000fd5b5050601d5460405173ffffffffffffffffffffffffffffffffffffffff90911692507fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9150600090a2601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200216357600080fd5b505af115801562002178573d6000803e3d6000fd5b5050601c54601d546040805160016024820181905260448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ab06ee50000000000000000000000000000000000000000000000000000000017905290517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169550634f1ef286945062002247939092169160040162004433565b6000604051808303816000875af115801562002267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620022af91908101906200435c565b50601c546040517f9507d39a0000000000000000000000000000000000000000000000000000000081526001600482015260009173ffffffffffffffffffffffffffffffffffffffff1690639507d39a906024016020604051808303816000875af115801562002323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002349919062004313565b90506200092381600162003bb7565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620023d857600080fd5b505af1158015620023ed573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526006600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b1580156200245e57600080fd5b505af115801562002473573d6000803e3d6000fd5b5050601c5460009250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063667f9d709073ffffffffffffffffffffffffffffffffffffffff16620024dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620042f9565b60405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381865afa1580156200254b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002571919062004313565b90506200258060068262003879565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200260057600080fd5b505af115801562002615573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000c40573d6000803e3d6000fd5b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001ee6578382906000526020600020018054620026d1906200446c565b80601f0160208091040260200160405190810160405280929190818152602001828054620026ff906200446c565b8015620027505780601f10620027245761010080835404028352916020019162002750565b820191906000526020600020905b8154815290600101906020018083116200273257829003601f168201915b505050505081526020019060010190620026af565b6000604051620027759062004028565b604051809103906000f08015801562002792573d6000803e3d6000fd5b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200281657600080fd5b505af11580156200282b573d6000803e3d6000fd5b5050601c546040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529091169250633659cfe69150602401600060405180830381600087803b1580156200289d57600080fd5b505af1158015620028b2573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200293657600080fd5b505af11580156200294b573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620029c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029e791906200428b565b9050620029f5818362003879565b50604080518082018252600981527f75706772616465546f0000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb39162002a799190600401620044c1565b600060405180830381600087803b15801562002a9457600080fd5b505af115801562002aa9573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b15801562002b1a57600080fd5b505af115801562002b2f573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002bb357600080fd5b505af115801562002bc8573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b15801562002c3957600080fd5b505af115801562002c4e573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002cd257600080fd5b505af115801562002ce7573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002d5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d8391906200428b565b905062000c7581600062003879565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001ee657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562002e8557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002e315790505b5050505050815250508152602001906001019062002db6565b601b546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562002f2c57600080fd5b505af115801562002f41573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002fc557600080fd5b505af115801562002fda573d6000803e3d6000fd5b5050601c54601d546040805160016024820181905260448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ab06ee50000000000000000000000000000000000000000000000000000000017905290517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169550634f1ef2869450670de0b6b3a764000093620030b29316919060040162004433565b60006040518083038185885af1158015620030d1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200311a91908101906200435c565b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200319b57600080fd5b505af1158015620031b0573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200324c91906200428b565b601d549091506200327590829073ffffffffffffffffffffffffffffffffffffffff1662003879565b601c54620009239073ffffffffffffffffffffffffffffffffffffffff1631670de0b6b3a764000062003bb7565b601c546040517f1ab06ee5000000000000000000000000000000000000000000000000000000008152600160048201819052602482015273ffffffffffffffffffffffffffffffffffffffff90911690631ab06ee590604401600060405180830381600087803b1580156200331757600080fd5b505af11580156200332c573d6000803e3d6000fd5b5050601d546040517f9507d39a000000000000000000000000000000000000000000000000000000008152600160048201526000935073ffffffffffffffffffffffffffffffffffffffff9091169150639507d39a906024016020604051808303816000875af1158015620033a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033cb919062004313565b9050620033da81600062003bb7565b601c546040517f9507d39a0000000000000000000000000000000000000000000000000000000081526001600482015260009173ffffffffffffffffffffffffffffffffffffffff1690639507d39a906024016020604051808303816000875af11580156200344d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003473919062004313565b90506200348281600162003bb7565b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200350357600080fd5b505af115801562003518573d6000803e3d6000fd5b5050601c546040517f9507d39a000000000000000000000000000000000000000000000000000000008152600160048201526000935073ffffffffffffffffffffffffffffffffffffffff9091169150639507d39a906024016020604051808303816000875af115801562003591573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035b7919062004313565b905062000c7581600162003bb7565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001ee65783829060005260206000200180546200360c906200446c565b80601f01602080910402602001604051908101604052809291908181526020018280546200363a906200446c565b80156200368b5780601f106200365f576101008083540402835291602001916200368b565b820191906000526020600020905b8154815290600101906020018083116200366d57829003601f168201915b505050505081526020019060010190620035ea565b60008054610100900460ff1615620036c15750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620038055760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162003769917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620044d6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620037a39162004520565b6000604051808303816000865af19150503d8060008114620037e2576040519150601f19603f3d011682016040523d82523d6000602084013e620037e7565b606091505b50915050808060200190518101906200380191906200453e565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e215760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575050505050905090565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620039339060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f816040516200396c919062004562565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620039a59190620045c4565b60405180910390a162000c7562003cb7565b8015158215151462000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003a499060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262003ab4576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062003aeb565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162003afa919062004602565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162003b65576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062003b9c565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620039a591906200464b565b62000c75828262003e3a565b80821462000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003c459060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162003c7e919062004694565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620039a59190620046e0565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562003e0c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262003d899291602001620044d6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262003dc39162004520565b6000604051808303816000865af19150503d806000811462003e02576040519150601f19603f3d011682016040523d82523d6000602084013e62003e07565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62003e46828262003f43565b62000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003ed19060208082526023908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f65735d0000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf188160405162003f0a91906200471e565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf1882604051620039a5919062004770565b805182516001919003620040035760005b835181101562003ffc5782818151811062003f735762003f73620047ae565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684828151811062003fb55762003fb5620047ae565b01602001517fff00000000000000000000000000000000000000000000000000000000000000161462003fe757600091505b8062003ff381620047dd565b91505062003f54565b5062004007565b5060005b92915050565b610918806200481983390190565b60de806200513183390190565b61010b806200520f83390190565b6020808252825182820181905260009190848201906040850190845b818110156200408657835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162004052565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200417d578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b80831015620041675783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062004123565b50978a01979550505091870191600101620040ba565b50919998505050505050505050565b60005b83811015620041a95781810151838201526020016200418f565b83811115620004ee5750506000910152565b60008151808452620041d58160208601602086016200418c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200427e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200426b858351620041bb565b945092850192908501906001016200422e565b5092979650505050505050565b6000602082840312156200429e57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114620042c357600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156200430e576200430e620042ca565b500390565b6000602082840312156200432657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156200436f57600080fd5b815167ffffffffffffffff808211156200438857600080fd5b818401915084601f8301126200439d57600080fd5b815181811115620043b257620043b26200432d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715620043fb57620043fb6200432d565b816040528281528760208487010111156200441557600080fd5b620044288360208301602088016200418c565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000620044646040830184620041bb565b949350505050565b600181811c908216806200448157607f821691505b602082108103620044bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b602081526000620042c36020830184620041bb565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620045128160048501602087016200418c565b919091016004019392505050565b60008251620045348184602087016200418c565b9190910192915050565b6000602082840312156200455157600080fd5b81518015158114620042c357600080fd5b604081526000620045a060408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b604081526000620045a060408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b60408152600a60408201527f2020202020204c656674000000000000000000000000000000000000000000006060820152608060208201526000620042c36080830184620041bb565b60408152600a60408201527f20202020205269676874000000000000000000000000000000000000000000006060820152608060208201526000620042c36080830184620041bb565b604081526000620046d260408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b604081526000620046d260408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b6040815260006200475c60408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620044648185620041bb565b6040815260006200475c60408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620048115762004811620042ca565b506001019056fe608060405234801561001057600080fd5b5060405161091838038061091883398101604081905261002f916100b2565b6100388161003e565b506100e2565b60006100566000805160206108f88339815191525490565b6000805160206108f8833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6000602082840312156100c457600080fd5b81516001600160a01b03811681146100db57600080fd5b9392505050565b610807806100f16000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103608060405234801561001057600080fd5b5060bf8061001f6000396000f3fe60806040526004361060265760003560e01c80631ab06ee514602b5780639507d39a14604a575b600080fd5b604860363660046079565b60009182526020829052604090912055565b005b60676055366004609a565b60009081526020819052604090205490565b60405190815260200160405180910390f35b60008060408385031215608b57600080fd5b50508035926020909101359150565b60006020828403121560ab57600080fd5b503591905056fea164736f6c634300080f000a608060405234801561001057600080fd5b5060ec8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633659cfe614602d575b600080fd5b603c603836600460a4565b603e565b005b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f75706772616465546f0000000000000000000000000000000000000000000000604482015260640160405180910390fd5b60006020828403121560b557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460d857600080fd5b939250505056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001a15760003560e01c80637dfd7ed111620000e9578063aba0cf011162000097578063ba414fa6116200006e578063ba414fa6146200029c578063e20c9f7114620002b7578063fa7626d414620002c157600080fd5b8063aba0cf01146200027e578063b4c821dd1462000288578063b5508aa9146200029257600080fd5b806385226c8111620000cc57806385226c81146200025157806389f4619f146200026a578063916a17c6146200027457600080fd5b80637dfd7ed1146200023d578063829f35ea146200024757600080fd5b80633e5e3c23116200015357806350218d55116200012a57806350218d551462000210578063646af406146200021a57806366d9a9a0146200022457600080fd5b80633e5e3c2314620001f25780633f7286f414620001fc578063444a1e4f146200020657600080fd5b806318133bed116200018857806318133bed14620001bc5780631acf575314620001c65780631ed7831c14620001d057600080fd5b80630a9254e414620001a65780630cec200214620001b2575b600080fd5b620001b0620002cf565b005b620001b0620004f4565b620001b062000926565b620001b062000c79565b620001da62000dba565b604051620001e9919062004036565b60405180910390f35b620001da62000e2b565b620001da62000e9a565b620001b062000f09565b620001b06200160a565b620001b062001b60565b6200022e62001dda565b604051620001e9919062004092565b620001b062001eef565b620001b062002358565b6200025b6200268b565b604051620001e9919062004207565b620001b062002765565b6200022e62002d92565b620001b062002e9e565b620001b0620032a3565b6200025b620035c6565b620002a6620036a0565b6040519015158152602001620001e9565b620001da6200380a565b600054620002a69060ff1681565b601b5460405173ffffffffffffffffffffffffffffffffffffffff90911690620002f9906200400d565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103906000f08015801562000333573d6000803e3d6000fd5b50601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560405162000387906200401b565b604051809103906000f080158015620003a4573d6000803e3d6000fd5b50601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200045057600080fd5b505af115801562000465573d6000803e3d6000fd5b5050601c54601d546040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169250633659cfe69150602401600060405180830381600087803b158015620004d957600080fd5b505af1158015620004ee573d6000803e3d6000fd5b50505050565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200056057600080fd5b505af115801562000575573d6000803e3d6000fd5b5050601c54604080517f3659cfe6000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b158015620005e857600080fd5b505af1158015620005fd573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200067d57600080fd5b505af115801562000692573d6000803e3d6000fd5b5050604080519092507fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9150600090a2601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200074257600080fd5b505af115801562000757573d6000803e3d6000fd5b5050601c54604080517f3659cfe6000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b158015620007ca57600080fd5b505af1158015620007df573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200086357600080fd5b505af115801562000878573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620008ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200091491906200428b565b90506200092381604062003879565b50565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620009a657600080fd5b505af1158015620009bb573d6000803e3d6000fd5b5050601c546040517f8f2839700000000000000000000000000000000000000000000000000000000081526006600482015273ffffffffffffffffffffffffffffffffffffffff9091169250638f2839709150602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050601c5460009250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063667f9d709073ffffffffffffffffffffffffffffffffffffffff1662000aaa60017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620042f9565b60405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381865afa15801562000b19573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b3f919062004313565b905062000b4e60068262003879565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815260066004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000bb557600080fd5b505af115801562000bca573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000c40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c6691906200428b565b905062000c7581600662003879565b5050565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815260006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000ce057600080fd5b505af115801562000cf5573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000d6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d9191906200428b565b601d549091506200092390829073ffffffffffffffffffffffffffffffffffffffff1662003879565b6060600d80548060200260200160405190810160405280929190818152602001828054801562000e2157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000e215760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000e215760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575050505050905090565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000f8957600080fd5b505af115801562000f9e573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200103a91906200428b565b601d549091506200106390829073ffffffffffffffffffffffffffffffffffffffff1662003879565b60405162001071906200401b565b604051809103906000f0801580156200108e573d6000803e3d6000fd5b50601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c6564000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb390608401600060405180830381600087803b1580156200118e57600080fd5b505af1158015620011a3573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200122757600080fd5b505af11580156200123c573d6000803e3d6000fd5b5050601c54601d54604080517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015260248101919091526000604482015291169250634f1ef28691506064016000604051808303816000875af1158015620012c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200130d91908101906200435c565b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200138e57600080fd5b505af1158015620013a3573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001419573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200143f91906200428b565b90506200144d828262003879565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620014b957600080fd5b505af1158015620014ce573d6000803e3d6000fd5b5050601c54601d546040805160016024820181905260448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ab06ee50000000000000000000000000000000000000000000000000000000017905290517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169550634f1ef28694506200159d939092169160040162004433565b6000604051808303816000875af1158015620015bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200160591908101906200435c565b505050565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200167657600080fd5b505af11580156200168b573d6000803e3d6000fd5b5050601c546040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff9091169250638f2839709150602401600060405180830381600087803b158015620016fc57600080fd5b505af115801562001711573d6000803e3d6000fd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c29150608401600060405180830381600087803b1580156200179157600080fd5b505af1158015620017a6573d6000803e3d6000fd5b5050601b546040805173ffffffffffffffffffffffffffffffffffffffff9092168252600160208301527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f935001905060405180910390a1601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200187e57600080fd5b505af115801562001893573d6000803e3d6000fd5b5050601c546040517f8f2839700000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff9091169250638f2839709150602401600060405180830381600087803b1580156200190457600080fd5b505af115801562001919573d6000803e3d6000fd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200198957600080fd5b505af11580156200199e573d6000803e3d6000fd5b50505050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001a12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a3891906200428b565b506040517fca669fa700000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001aa057600080fd5b505af115801562001ab5573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af115801562001b2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b5191906200428b565b90506200092381600162003879565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001be057600080fd5b505af115801562001bf5573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b15801562001c6657600080fd5b505af115801562001c7b573d6000803e3d6000fd5b5050601c546040516000935083925073ffffffffffffffffffffffffffffffffffffffff909116908281818181865af19150503d806000811462001cdc576040519150601f19603f3d011682016040523d82523d6000602084013e62001ce1565b606091505b509150915062001cf3826000620039b7565b60405160206024820152602560448201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160648201527f6c697a6564000000000000000000000000000000000000000000000000000000608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f08c379a000000000000000000000000000000000000000000000000000000000179052905062001605828262003bab565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101562001ee657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562001ecd57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162001e795790505b5050505050815250508152602001906001019062001dfe565b50505050905090565b601c546040517f9507d39a0000000000000000000000000000000000000000000000000000000081526001600482015260009173ffffffffffffffffffffffffffffffffffffffff1690639507d39a906024016020604051808303816000875af115801562001f62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f88919062004313565b905062001f9781600062003bb7565b5060405162001fa6906200401b565b604051809103906000f08015801562001fc3573d6000803e3d6000fd5b50601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c290608401600060405180830381600087803b1580156200208557600080fd5b505af11580156200209a573d6000803e3d6000fd5b5050601d5460405173ffffffffffffffffffffffffffffffffffffffff90911692507fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9150600090a2601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200216357600080fd5b505af115801562002178573d6000803e3d6000fd5b5050601c54601d546040805160016024820181905260448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ab06ee50000000000000000000000000000000000000000000000000000000017905290517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169550634f1ef286945062002247939092169160040162004433565b6000604051808303816000875af115801562002267573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052620022af91908101906200435c565b50601c546040517f9507d39a0000000000000000000000000000000000000000000000000000000081526001600482015260009173ffffffffffffffffffffffffffffffffffffffff1690639507d39a906024016020604051808303816000875af115801562002323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002349919062004313565b90506200092381600162003bb7565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620023d857600080fd5b505af1158015620023ed573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526006600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b1580156200245e57600080fd5b505af115801562002473573d6000803e3d6000fd5b5050601c5460009250737109709ecfa91a80626ff3989d68f67f5b1dd12d915063667f9d709073ffffffffffffffffffffffffffffffffffffffff16620024dc60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620042f9565b60405160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381865afa1580156200254b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002571919062004313565b90506200258060068262003879565b601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200260057600080fd5b505af115801562002615573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562000c40573d6000803e3d6000fd5b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562001ee6578382906000526020600020018054620026d1906200446c565b80601f0160208091040260200160405190810160405280929190818152602001828054620026ff906200446c565b8015620027505780601f10620027245761010080835404028352916020019162002750565b820191906000526020600020905b8154815290600101906020018083116200273257829003601f168201915b505050505081526020019060010190620026af565b6000604051620027759062004028565b604051809103906000f08015801562002792573d6000803e3d6000fd5b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200281657600080fd5b505af11580156200282b573d6000803e3d6000fd5b5050601c546040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529091169250633659cfe69150602401600060405180830381600087803b1580156200289d57600080fd5b505af1158015620028b2573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200293657600080fd5b505af11580156200294b573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015620029c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029e791906200428b565b9050620029f5818362003879565b50604080518082018252600981527f75706772616465546f0000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb39162002a799190600401620044c1565b600060405180830381600087803b15801562002a9457600080fd5b505af115801562002aa9573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b15801562002b1a57600080fd5b505af115801562002b2f573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002bb357600080fd5b505af115801562002bc8573d6000803e3d6000fd5b5050601c546040517f3659cfe60000000000000000000000000000000000000000000000000000000081526000600482015273ffffffffffffffffffffffffffffffffffffffff9091169250633659cfe69150602401600060405180830381600087803b15801562002c3957600080fd5b505af115801562002c4e573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002cd257600080fd5b505af115801562002ce7573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562002d5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d8391906200428b565b905062000c7581600062003879565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101562001ee657600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562002e8557602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002e315790505b5050505050815250508152602001906001019062002db6565b601b546040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a76400006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d90604401600060405180830381600087803b15801562002f2c57600080fd5b505af115801562002f41573d6000803e3d6000fd5b5050601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562002fc557600080fd5b505af115801562002fda573d6000803e3d6000fd5b5050601c54601d546040805160016024820181905260448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ab06ee50000000000000000000000000000000000000000000000000000000017905290517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384169550634f1ef2869450670de0b6b3a764000093620030b29316919060040162004433565b60006040518083038185885af1158015620030d1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200311a91908101906200435c565b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200319b57600080fd5b505af1158015620031b0573d6000803e3d6000fd5b505050506000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801562003226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200324c91906200428b565b601d549091506200327590829073ffffffffffffffffffffffffffffffffffffffff1662003879565b601c54620009239073ffffffffffffffffffffffffffffffffffffffff1631670de0b6b3a764000062003bb7565b601c546040517f1ab06ee5000000000000000000000000000000000000000000000000000000008152600160048201819052602482015273ffffffffffffffffffffffffffffffffffffffff90911690631ab06ee590604401600060405180830381600087803b1580156200331757600080fd5b505af11580156200332c573d6000803e3d6000fd5b5050601d546040517f9507d39a000000000000000000000000000000000000000000000000000000008152600160048201526000935073ffffffffffffffffffffffffffffffffffffffff9091169150639507d39a906024016020604051808303816000875af1158015620033a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033cb919062004313565b9050620033da81600062003bb7565b601c546040517f9507d39a0000000000000000000000000000000000000000000000000000000081526001600482015260009173ffffffffffffffffffffffffffffffffffffffff1690639507d39a906024016020604051808303816000875af11580156200344d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003473919062004313565b90506200348281600162003bb7565b50601b546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200350357600080fd5b505af115801562003518573d6000803e3d6000fd5b5050601c546040517f9507d39a000000000000000000000000000000000000000000000000000000008152600160048201526000935073ffffffffffffffffffffffffffffffffffffffff9091169150639507d39a906024016020604051808303816000875af115801562003591573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035b7919062004313565b905062000c7581600162003bb7565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562001ee65783829060005260206000200180546200360c906200446c565b80601f01602080910402602001604051908101604052809291908181526020018280546200363a906200446c565b80156200368b5780601f106200365f576101008083540402835291602001916200368b565b820191906000526020600020905b8154815290600101906020018083116200366d57829003601f168201915b505050505081526020019060010190620035ea565b60008054610100900460ff1615620036c15750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620038055760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162003769917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620044d6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052620037a39162004520565b6000604051808303816000865af19150503d8060008114620037e2576040519150601f19603f3d011682016040523d82523d6000602084013e620037e7565b606091505b50915050808060200190518101906200380191906200453e565b9150505b919050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000e215760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831162000df5575050505050905090565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620039339060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f816040516200396c919062004562565b60405180910390a17f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f82604051620039a59190620045c4565b60405180910390a162000c7562003cb7565b8015158215151462000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003a499060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b626f6f60408201527f6c5d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838262003ab4576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062003aeb565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b60405162003afa919062004602565b60405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf35838162003b65576040518060400160405280600581526020017f66616c736500000000000000000000000000000000000000000000000000000081525062003b9c565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b604051620039a591906200464b565b62000c75828262003e3a565b80821462000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003c459060208082526022908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b75696e60408201527f745d000000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a88160405162003c7e919062004694565b60405180910390a17fb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a882604051620039a59190620046e0565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562003e0c5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc490608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262003d899291602001620044d6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262003dc39162004520565b6000604051808303816000865af19150503d806000811462003e02576040519150601f19603f3d011682016040523d82523d6000602084013e62003e07565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62003e46828262003f43565b62000c75577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405162003ed19060208082526023908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797460408201527f65735d0000000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf188160405162003f0a91906200471e565b60405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf1882604051620039a5919062004770565b805182516001919003620040035760005b835181101562003ffc5782818151811062003f735762003f73620047ae565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684828151811062003fb55762003fb5620047ae565b01602001517fff00000000000000000000000000000000000000000000000000000000000000161462003fe757600091505b8062003ff381620047dd565b91505062003f54565b5062004007565b5060005b92915050565b610918806200481983390190565b60de806200513183390190565b61010b806200520f83390190565b6020808252825182820181905260009190848201906040850190845b818110156200408657835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162004052565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b848110156200417d578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00186528251805173ffffffffffffffffffffffffffffffffffffffff168552880151888501889052805188860181905290890190839060608701905b80831015620041675783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062004123565b50978a01979550505091870191600101620040ba565b50919998505050505050505050565b60005b83811015620041a95781810151838201526020016200418f565b83811115620004ee5750506000910152565b60008151808452620041d58160208601602086016200418c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200427e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526200426b858351620041bb565b945092850192908501906001016200422e565b5092979650505050505050565b6000602082840312156200429e57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114620042c357600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156200430e576200430e620042ca565b500390565b6000602082840312156200432657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156200436f57600080fd5b815167ffffffffffffffff808211156200438857600080fd5b818401915084601f8301126200439d57600080fd5b815181811115620043b257620043b26200432d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715620043fb57620043fb6200432d565b816040528281528760208487010111156200441557600080fd5b620044288360208301602088016200418c565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000620044646040830184620041bb565b949350505050565b600181811c908216806200448157607f821691505b602082108103620044bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b602081526000620042c36020830184620041bb565b7fffffffff000000000000000000000000000000000000000000000000000000008316815260008251620045128160048501602087016200418c565b919091016004019392505050565b60008251620045348184602087016200418c565b9190910192915050565b6000602082840312156200455157600080fd5b81518015158114620042c357600080fd5b604081526000620045a060408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905073ffffffffffffffffffffffffffffffffffffffff8316602083015292915050565b604081526000620045a060408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b60408152600a60408201527f2020202020204c656674000000000000000000000000000000000000000000006060820152608060208201526000620042c36080830184620041bb565b60408152600a60408201527f20202020205269676874000000000000000000000000000000000000000000006060820152608060208201526000620042c36080830184620041bb565b604081526000620046d260408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b905082602083015292915050565b604081526000620046d260408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b6040815260006200475c60408301600a81527f2020457870656374656400000000000000000000000000000000000000000000602082015260400190565b8281036020840152620044648185620041bb565b6040815260006200475c60408301600a81527f2020202041637475616c00000000000000000000000000000000000000000000602082015260400190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620048115762004811620042ca565b506001019056fe608060405234801561001057600080fd5b5060405161091838038061091883398101604081905261002f916100b2565b6100388161003e565b506100e2565b60006100566000805160206108f88339815191525490565b6000805160206108f8833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6000602082840312156100c457600080fd5b81516001600160a01b03811681146100db57600080fd5b9392505050565b610807806100f16000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100be5780638f283970146100f8578063f851a440146101185761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61012d565b005b61006b61012d565b34801561008157600080fd5b5061006b6100903660046106d9565b610224565b6100a86100a33660046106f4565b610296565b6040516100b59190610777565b60405180910390f35b3480156100ca57600080fd5b506100d3610419565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b5565b34801561010457600080fd5b5061006b6101133660046106d9565b6104b0565b34801561012457600080fd5b506100d3610517565b60006101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905073ffffffffffffffffffffffffffffffffffffffff8116610201576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8061021e573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061027d575033155b1561028e5761028b816105a3565b50565b61028b61012d565b60606102c07fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102f7575033155b1561040a57610305846105a3565b6000808573ffffffffffffffffffffffffffffffffffffffff16858560405161032f9291906107ea565b600060405180830381855af49150503d806000811461036a576040519150601f19603f3d011682016040523d82523d6000602084013e61036f565b606091505b509150915081610401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c65640000000000000060648201526084016101f8565b91506104129050565b61041261012d565b9392505050565b60006104437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061047a575033155b156104a557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6104ad61012d565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610509575033155b1561028e5761028b8161060b565b60006105417fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610578575033155b156104a557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81905560405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006106357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61038390556040805173ffffffffffffffffffffffffffffffffffffffff8084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106d457600080fd5b919050565b6000602082840312156106eb57600080fd5b610412826106b0565b60008060006040848603121561070957600080fd5b610712846106b0565b9250602084013567ffffffffffffffff8082111561072f57600080fd5b818601915086601f83011261074357600080fd5b81358181111561075257600080fd5b87602082850101111561076457600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b818110156107a457858101830151858201604001528201610788565b818111156107b6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103608060405234801561001057600080fd5b5060bf8061001f6000396000f3fe60806040526004361060265760003560e01c80631ab06ee514602b5780639507d39a14604a575b600080fd5b604860363660046079565b60009182526020829052604090912055565b005b60676055366004609a565b60009081526020819052604090205490565b60405190815260200160405180910390f35b60008060408385031215608b57600080fd5b50508035926020909101359150565b60006020828403121560ab57600080fd5b503591905056fea164736f6c634300080f000a608060405234801561001057600080fd5b5060ec8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633659cfe614602d575b600080fd5b603c603836600460a4565b603e565b005b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f75706772616465546f0000000000000000000000000000000000000000000000604482015260640160405180910390fd5b60006020828403121560b557600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811460d857600080fd5b939250505056fea164736f6c634300080f000aa164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
