{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC20FixedSupplyMock",
  "sourceName": "contracts/mocks/token/ERC20/preset/ERC20FixedSupplyMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "tokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "address[]",
          "name": "holders",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "allocations",
          "type": "uint256[]"
        },
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "increment",
          "type": "uint256"
        }
      ],
      "name": "ERC20AllowanceOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20ApprovalToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchMintValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchTransferValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decrement",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "ERC20PermitExpired",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitFromAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20PermitInvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ERC20SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20TotalSupplyOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523461066f5761363480380380610019816106a4565b928339810160c08282031261066f5781516001600160401b03811161066f57816100449184016106c9565b60208301519092906001600160401b03811161066f57826100669183016106c9565b9260408201519060ff821680920361066f5760608301516001600160401b03811161066f5783019284601f8501121561066f5783516100ac6100a782610734565b6106a4565b9460208087848152019260051b8201019087821161066f57602001915b8183106106845750505060808101516001600160401b03811161066f5781019480601f8701121561066f5785516101026100a782610734565b9660208089848152019260051b82010192831161066f57602001905b8282106106745750505060a00151916001600160a01b038316830361066f577fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60208190527f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f8054600160ff199182168117909255634e83a8c360e11b6000527fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a6680549091169091179055825190926001600160401b038211610545576000805160206135f48339815191525490600182811c92168015610665575b60208310146105255781601f8493116105e8575b50602090601f83116001146105665760009261055b575b50508160011b916000199060031b1c1916176000805160206135f4833981519152555b85516001600160401b038111610545576000805160206135b483398151915254600181811c9116801561053b575b602082101461052557601f81116104b3575b506020601f821160011461042e57819061039798600092610423575b50508160011b916000199060031b1c1916176000805160206135b4833981519152555b60ff196000805160206136148339815191525416176000805160206136148339815191525563a219a02560e01b600052806020526040600020600160ff19825416179055336103c4575b6307f5828d60e41b600090815260209190915260408082208054600160ff1991821681179092556303c130d960e41b84528284208054821683179055634ec7fbed60e11b845282842080548216831790556353f41a9760e01b8452828420805482168317905563602993f360e11b84529190922080549091169091179055608052610775565b604051612ce690816108ce823960805181818161170a01528181611b90015281816128d50152612a000152f35b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc80546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3610311565b0151905038806102a4565b601f198216976000805160206135b4833981519152600052816000209860005b81811061049b5750916103979991846001959410610482575b505050811b016000805160206135b4833981519152556102c7565b015160001960f88460031b161c19169055388080610467565b838301518b556001909a01996020938401930161044e565b6000805160206135b48339815191526000527f38f29baf5b4f1132a8b8d899467148f866f7b7a6d08f3c484abb8c5467292cef601f830160051c8101916020841061051b575b601f0160051c01905b81811061050f5750610288565b60008155600101610502565b90915081906104f9565b634e487b7160e01b600052602260045260246000fd5b90607f1690610276565b634e487b7160e01b600052604160045260246000fd5b015190503880610225565b6000805160206135f483398151915260009081528281209350601f198516905b8181106105d057509084600195949392106105b7575b505050811b016000805160206135f483398151915255610248565b015160001960f88460031b161c1916905538808061059c565b92936020600181928786015181550195019301610586565b6000805160206135f48339815191526000529091507fce6c9d9c5887233b79e8966827dc87013a092e23a7d6c4dfeb06be71659aa428601f840160051c8101916020851061065b575b90601f859493920160051c01905b81811061064c575061020e565b6000815584935060010161063f565b9091508190610631565b91607f16916101fa565b600080fd5b815181526020918201910161011e565b82516001600160a01b038116810361066f578152602092830192016100c9565b6040519190601f01601f191682016001600160401b0381118382101761054557604052565b81601f8201121561066f578051906001600160401b038211610545576106f8601f8301601f19166020016106a4565b928284526020838301011161066f5760005b82811061071f57505060206000918301015290565b8060208092840101518282870101520161070a565b6001600160401b0381116105455760051b60200190565b805182101561075f5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90815190805182036108bc5781156108b75760009260005b8381106107e85750505050806107a05750565b6000805160206135d4833981519152549080820191808311156107d15750506000805160206135d483398151915255565b6301b352fb60e11b60005260045260245260446000fd5b6001600160a01b036107fa828461074b565b511680156108a65761080c828561074b565b518061084a575b9060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060019594604051908152a30161078d565b959190868301928311156108955760008181527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee602052604090208054880190559195909190610813565b631550ab9f60e21b60005260046000fd5b6392fd9c8f60e01b60005260046000fd5b505050565b6332c1299b60e11b60005260046000fdfe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461191057806306fdde03146118b5578063095ea7b31461184857806318160ddd146117ed57806323b872dd1461172e5780632b4c9f16146116bf578063313ce5671461166157806331e66e1e146115de5780633644e5151461159d578063395093511461136d5780633c130d90146113125780634885b25414611264578063572b6c051461121957806370a082311461119457806373c8a958146110115780637ecebe0014610f8c57806388d695b214610f485780638da5cb5b14610ed757806395d89b4114610e64578063a457c2d714610df7578063a9059cbb14610d8a578063b88d4fde14610c7a578063c3666c3614610a3d578063d505accf146107ca578063dd62ed3e1461071b578063e0df5b6f146104d0578063eb7955491461040b578063f2fde38b146103185763f7ba94bd1461015b57600080fd5b346102bc5761016936611adf565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101aa6128be565b92541691169081036102eb57508181036102c15760005b8181106101ca57005b6101d5818387611f49565b3573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576101ff828587611f49565b359081471061028a57600080809381935af13d15610282573d9061022282612835565b916102306040519384611cda565b82523d6000602084013e5b1561024957506001016101c1565b80511561025857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b60609061023b565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761034f6119d5565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6103786128be565b9080549273ffffffffffffffffffffffffffffffffffffffff80851693168381036102eb575073ffffffffffffffffffffffffffffffffffffffff16928383036103be57005b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104426119d5565b60243560443567ffffffffffffffff81116102bc57610465903690600401611b4b565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee9261049e83836104976128be565b8097612694565b813b6104b0575b602060405160018152f35b6104c6946104bf91369161286f565b9280612b2f565b80808080806104a5565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043567ffffffffffffffff81116102bc5761051f903690600401611b4b565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061055e6128be565b92541691169081036102eb57507ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea9067ffffffffffffffff81116106ec576105a68254611c87565b601f81116106a4575b506000601f8211600114610609578192936000926105fe575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055600080f35b0135905083806105c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216938382526020822091805b86811061068c5750836001959610610654575b505050811b019055005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c1991013516905583808061064a565b90926020600181928686013581550194019101610637565b826000526020600020601f830160051c810191602084106106e2575b601f0160051c01905b8181106106d657506105af565b600081556001016106c9565b90915081906106c0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576107526119d5565b73ffffffffffffffffffffffffffffffffffffffff61076f6119f8565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346102bc5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576108016119d5565b6108096119f8565b6044359060643560843560ff81168091036102bc5773ffffffffffffffffffffffffffffffffffffffff8516917f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d8315610a13578142116109e5576020926000926080928685528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9845288604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528a8684015260a083015260c082015260c081526108eb60e082611cda565b5190206108f6611ea2565b9060405190868201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261093b606282611cda565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156109d95773ffffffffffffffffffffffffffffffffffffffff60005116036109af576109ad927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611ddd565b005b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b346102bc57610a4b36611a4c565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610a906128be565b92541691169081036102eb5750808214801590610c70575b6102c15760005b828110610ab857005b73ffffffffffffffffffffffffffffffffffffffff610ae0610adb83858a611f49565b611f88565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa9081156109d957600091610c42575b5015610c15575073ffffffffffffffffffffffffffffffffffffffff610b6f610adb83858a611f49565b1690610b7f610adb828689611f49565b91610b8b82878b611f49565b3592813b156102bc57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156109d957600192610c04575b5001610aaf565b6000610c0f91611cda565b88610bfd565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610c63915060203d8111610c69575b610c5b8183611cda565b8101906128a6565b89610b45565b503d610c51565b5082821415610aa8565b346102bc5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610cb16119d5565b610cb96119f8565b60443560643567ffffffffffffffff81116102bc57610cdc903690600401611b4b565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee93610d48848484610d0f6128be565b9873ffffffffffffffffffffffffffffffffffffffff8a1673ffffffffffffffffffffffffffffffffffffffff831603610d7957612694565b823b610d5957602060405160018152f35b610d6e95610d6891369161286f565b93612b2f565b8080808080806104a5565b610d85848b84846124b6565b612694565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a5610dc46119d5565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610df16128be565b90612694565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a5610e316119d5565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610e5e6128be565b906124b6565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610ed3610ebf7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a82611d1b565b604051918291602083526020830190611976565b0390f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346102bc576104a5610f5936611adf565b929091907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610f866128be565b90612255565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610fc36119d5565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b346102bc5761101f36611a4c565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806110626128be565b92541691169081036102eb575080831480159061118a575b6102c15760005b83811061108a57005b611095818388611f49565b3573ffffffffffffffffffffffffffffffffffffffff8116908181036102bc5760006020918a826110d6876110cf610adb828f8f90611f49565b938b611f49565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb000000000000000000000000000000000000000000000000000000008652166024830152604482015260448152611131606482611cda565b51925af1156109d9576000513d6111815750803b155b6111545750600101611081565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611147565b508583141561107a565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576111cb6119d5565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602061125a6112556119d5565b611b79565b6040519015158152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761129b6119d5565b60243567ffffffffffffffff81116102bc576112bb903690600401611a1b565b916044359267ffffffffffffffff84116102bc576112e06104a5943690600401611a1b565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61130c6128be565b90611fa9565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610ed3610ebf7ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea611d1b565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576113a46119d5565b6024356113af6128be565b9073ffffffffffffffffffffffffffffffffffffffff83169283156115595773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef6020526040600020846000526020526040600020549180611474575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b80830192808411156114fe57505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef83526040600020866000528352806040600020559250611425565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760206115d6611ea2565b604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760406116176129e9565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060ff7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a56117686119d5565b6117706119f8565b7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee9161179a6128be565b92604435938473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8516036117db575b5050612694565b6117e69184846124b6565b85846117d4565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a56118826119d5565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6118af6128be565b90611ddd565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610ed3610ebf7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611d1b565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102bc5761125a602091611bd8565b919082519283825260005b8481106119c05750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201611981565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc576020808501948460051b0101116102bc57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611a9591600401611a1b565b9290929160243567ffffffffffffffff81116102bc5781611ab891600401611a1b565b929092916044359067ffffffffffffffff82116102bc57611adb91600401611a1b565b9091565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611b2891600401611a1b565b929092916024359067ffffffffffffffff82116102bc57611adb91600401611a1b565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc57602083818601950101116102bc57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611bd15773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114611c81577f01ffc9a7000000000000000000000000000000000000000000000000000000008114611c7b576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b90600182811c92168015611cd0575b6020831014611ca157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611c96565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106ec57604052565b9060405191826000825492611d2f84611c87565b8084529360018116908115611d9d5750600114611d56575b50611d5492500383611cda565b565b90506000929192526020600020906000915b818310611d81575050906020611d549282010138611d47565b6020919350806001915483858901015201910190918492611d68565b60209350611d549592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138611d47565b929173ffffffffffffffffffffffffffffffffffffffff16928315611e5e5773ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260016020938383166000520183526040600020866000528352846040600020556040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff827ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b611ecb7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611d1b565b6020815191012060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152611f4360c082611cda565b51902090565b9190811015611f595760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b959490939291928581036102c157801561224c5773ffffffffffffffffffffffffffffffffffffffff8416600052866020526040600020549160009660009260005b818110612045575050505050505073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821603612033575b50505050565b61203c936124b6565b3880808061202d565b73ffffffffffffffffffffffffffffffffffffffff612068610adb83858b611f49565b1680156122085761207a828587611f49565b3580612144575b906020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8c16938492604051908152a38a15158061213a575b6120de575b50600101611feb565b8a8703908782101561210457600090815260208d905260409020908601905560016120d5565b878c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858b14156120d0565b9a8b8101908111156121de579a8c73ffffffffffffffffffffffffffffffffffffffff8b168381146121905750906040602093926000908482528552208181540190555b909150612081565b905088829892116121a8575090866020920196612188565b8888917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff897f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b92939490918185036102c15784156124ae5773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b8181106123475750505050508015158061233d575b6122b6575b5050505050565b80850394808610156122f357505073ffffffffffffffffffffffffffffffffffffffff1660005260205260406000209101905538808080806122af565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50838114156122aa565b73ffffffffffffffffffffffffffffffffffffffff61236a610adb838589611f49565b16801561246a5761237c828587611f49565b35806123d0575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a301612295565b96878101908111156121de579673ffffffffffffffffffffffffffffffffffffffff891682811461241d57509060019291604060008381528c602052208181540190555b90919250612383565b8c829c92116124345750908a60019392019a612414565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b92909173ffffffffffffffffffffffffffffffffffffffff8116938415612650576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84141580612647575b612583575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b80840393808510156125ec5750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260209282861660005283526040600020866000528352806040600020559261253b565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b50801515612536565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b929173ffffffffffffffffffffffffffffffffffffffff169283156127f157826126fe575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff82166000528060205260406000205483810390808210156127a557508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef97160361277e575b50509250506126b9565b83831660005281855260406000205586600052835260406000208581540190553880612774565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff81116106ec57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261287b82612835565b916128896040519384611cda565b8294818452818301116102bc578281602093846000960137010152565b908160209103126102bc575180151581036102bc5790565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156129da5732331480156129df575b6129da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612949575b5061294657503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa9081156109d9576000916129bb575b503861293c565b6129d4915060203d602011610c6957610c5b8183611cda565b386129b4565b503390565b5060183610612905565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015612b1d573233148015612b25575b612b1d57803314908115612a7c575b50612a4b576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116102bc5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa9081156109d957600091612afe575b5038612a3f565b612b17915060203d602011610c6957610c5b8183611cda565b38612af7565b506000903690565b5060183610612a30565b612b9e73ffffffffffffffffffffffffffffffffffffffff9294958360209516968460405197889687967f4fc358590000000000000000000000000000000000000000000000000000000088521660048701521660248501526044840152608060648401526084830190611976565b03816000865af19081156109d957600091612c2e575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc3585900000000000000000000000000000000000000000000000000000000911603612c015750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d602011612ca8575b81612c4760209383611cda565b81010312612ca45751907fffffffff0000000000000000000000000000000000000000000000000000000082168203612ca157507fffffffff00000000000000000000000000000000000000000000000000000000612bb4565b80fd5b5080fd5b3d9150612c3a56fea26469706673582212209e8f868bd5737c0b2fad5c278bcd90f962d9c945de40af8af037f2c4731e6f7c64736f6c634300081e0033335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a821da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf0335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a83",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461191057806306fdde03146118b5578063095ea7b31461184857806318160ddd146117ed57806323b872dd1461172e5780632b4c9f16146116bf578063313ce5671461166157806331e66e1e146115de5780633644e5151461159d578063395093511461136d5780633c130d90146113125780634885b25414611264578063572b6c051461121957806370a082311461119457806373c8a958146110115780637ecebe0014610f8c57806388d695b214610f485780638da5cb5b14610ed757806395d89b4114610e64578063a457c2d714610df7578063a9059cbb14610d8a578063b88d4fde14610c7a578063c3666c3614610a3d578063d505accf146107ca578063dd62ed3e1461071b578063e0df5b6f146104d0578063eb7955491461040b578063f2fde38b146103185763f7ba94bd1461015b57600080fd5b346102bc5761016936611adf565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806101aa6128be565b92541691169081036102eb57508181036102c15760005b8181106101ca57005b6101d5818387611f49565b3573ffffffffffffffffffffffffffffffffffffffff81168091036102bc576101ff828587611f49565b359081471061028a57600080809381935af13d15610282573d9061022282612835565b916102306040519384611cda565b82523d6000602084013e5b1561024957506001016101c1565b80511561025857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b60609061023b565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761034f6119d5565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6103786128be565b9080549273ffffffffffffffffffffffffffffffffffffffff80851693168381036102eb575073ffffffffffffffffffffffffffffffffffffffff16928383036103be57005b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104426119d5565b60243560443567ffffffffffffffff81116102bc57610465903690600401611b4b565b9190927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee9261049e83836104976128be565b8097612694565b813b6104b0575b602060405160018152f35b6104c6946104bf91369161286f565b9280612b2f565b80808080806104a5565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760043567ffffffffffffffff81116102bc5761051f903690600401611b4b565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061055e6128be565b92541691169081036102eb57507ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea9067ffffffffffffffff81116106ec576105a68254611c87565b601f81116106a4575b506000601f8211600114610609578192936000926105fe575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916179055600080f35b0135905083806105c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216938382526020822091805b86811061068c5750836001959610610654575b505050811b019055005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c1991013516905583808061064a565b90926020600181928686013581550194019101610637565b826000526020600020601f830160051c810191602084106106e2575b601f0160051c01905b8181106106d657506105af565b600081556001016106c9565b90915081906106c0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576107526119d5565b73ffffffffffffffffffffffffffffffffffffffff61076f6119f8565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346102bc5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576108016119d5565b6108096119f8565b6044359060643560843560ff81168091036102bc5773ffffffffffffffffffffffffffffffffffffffff8516917f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d8315610a13578142116109e5576020926000926080928685528552604084209081549160018301905560405190868201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9845288604084015273ffffffffffffffffffffffffffffffffffffffff8a1660608401528a8684015260a083015260c082015260c081526108eb60e082611cda565b5190206108f6611ea2565b9060405190868201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261093b606282611cda565b519020906040519182528482015260a435604082015260c435606082015282805260015afa156109d95773ffffffffffffffffffffffffffffffffffffffff60005116036109af576109ad927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611ddd565b005b7f822a64c80000000000000000000000000000000000000000000000000000000060005260046000fd5b6040513d6000823e3d90fd5b507fea2b6f580000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7fa97469760000000000000000000000000000000000000000000000000000000060005260046000fd5b346102bc57610a4b36611a4c565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610a906128be565b92541691169081036102eb5750808214801590610c70575b6102c15760005b828110610ab857005b73ffffffffffffffffffffffffffffffffffffffff610ae0610adb83858a611f49565b611f88565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa9081156109d957600091610c42575b5015610c15575073ffffffffffffffffffffffffffffffffffffffff610b6f610adb83858a611f49565b1690610b7f610adb828689611f49565b91610b8b82878b611f49565b3592813b156102bc57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af19182156109d957600192610c04575b5001610aaf565b6000610c0f91611cda565b88610bfd565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610c63915060203d8111610c69575b610c5b8183611cda565b8101906128a6565b89610b45565b503d610c51565b5082821415610aa8565b346102bc5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610cb16119d5565b610cb96119f8565b60443560643567ffffffffffffffff81116102bc57610cdc903690600401611b4b565b9290937f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee93610d48848484610d0f6128be565b9873ffffffffffffffffffffffffffffffffffffffff8a1673ffffffffffffffffffffffffffffffffffffffff831603610d7957612694565b823b610d5957602060405160018152f35b610d6e95610d6891369161286f565b93612b2f565b8080808080806104a5565b610d85848b84846124b6565b612694565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a5610dc46119d5565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610df16128be565b90612694565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a5610e316119d5565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610e5e6128be565b906124b6565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610ed3610ebf7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a82611d1b565b604051918291602083526020830190611976565b0390f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346102bc576104a5610f5936611adf565b929091907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610f866128be565b90612255565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610fc36119d5565b73ffffffffffffffffffffffffffffffffffffffff7f93fe0ff7226b064a4a8f0b09910762afb4bc2441835792c021ffd78cd513011d91166000526020526020604060002054604051908152f35b346102bc5761101f36611a4c565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806110626128be565b92541691169081036102eb575080831480159061118a575b6102c15760005b83811061108a57005b611095818388611f49565b3573ffffffffffffffffffffffffffffffffffffffff8116908181036102bc5760006020918a826110d6876110cf610adb828f8f90611f49565b938b611f49565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb000000000000000000000000000000000000000000000000000000008652166024830152604482015260448152611131606482611cda565b51925af1156109d9576000513d6111815750803b155b6111545750600101611081565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611147565b508583141561107a565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576111cb6119d5565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602061125a6112556119d5565b611b79565b6040519015158152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5761129b6119d5565b60243567ffffffffffffffff81116102bc576112bb903690600401611a1b565b916044359267ffffffffffffffff84116102bc576112e06104a5943690600401611a1b565b9390927f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61130c6128be565b90611fa9565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610ed3610ebf7ff41bf6a5db26bffdfab174dcf66b31fbba8fdb7e3db040721ce1e62d61839cea611d1b565b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576113a46119d5565b6024356113af6128be565b9073ffffffffffffffffffffffffffffffffffffffff83169283156115595773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef6020526040600020846000526020526040600020549180611474575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b80830192808411156114fe57505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef83526040600020866000528352806040600020559250611425565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760206115d6611ea2565b604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760406116176129e9565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060ff7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a835416604051908152f35b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102bc5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a56117686119d5565b6117706119f8565b7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee9161179a6128be565b92604435938473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8516036117db575b5050612694565b6117e69184846124b6565b85846117d4565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc5760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346102bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576104a56118826119d5565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6118af6128be565b90611ddd565b346102bc5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc57610ed3610ebf7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611d1b565b346102bc5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102bc576004357fffffffff00000000000000000000000000000000000000000000000000000000811681036102bc5761125a602091611bd8565b919082519283825260005b8481106119c05750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201611981565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036102bc57565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc576020808501948460051b0101116102bc57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611a9591600401611a1b565b9290929160243567ffffffffffffffff81116102bc5781611ab891600401611a1b565b929092916044359067ffffffffffffffff82116102bc57611adb91600401611a1b565b9091565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126102bc5760043567ffffffffffffffff81116102bc5781611b2891600401611a1b565b929092916024359067ffffffffffffffff82116102bc57611adb91600401611a1b565b9181601f840112156102bc5782359167ffffffffffffffff83116102bc57602083818601950101116102bc57565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611bd15773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114611c81577f01ffc9a7000000000000000000000000000000000000000000000000000000008114611c7b576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b90600182811c92168015611cd0575b6020831014611ca157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611c96565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106ec57604052565b9060405191826000825492611d2f84611c87565b8084529360018116908115611d9d5750600114611d56575b50611d5492500383611cda565b565b90506000929192526020600020906000915b818310611d81575050906020611d549282010138611d47565b6020919350806001915483858901015201910190918492611d68565b60209350611d549592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138611d47565b929173ffffffffffffffffffffffffffffffffffffffff16928315611e5e5773ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260016020938383166000520183526040600020866000528352846040600020556040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff827ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b611ecb7f335df4119bbb04f056b33eba33b826d3529129e458faf6daa9924b5a8f3b6a81611d1b565b6020815191012060405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835260408201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260a08152611f4360c082611cda565b51902090565b9190811015611f595760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102bc5790565b959490939291928581036102c157801561224c5773ffffffffffffffffffffffffffffffffffffffff8416600052866020526040600020549160009660009260005b818110612045575050505050505073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821603612033575b50505050565b61203c936124b6565b3880808061202d565b73ffffffffffffffffffffffffffffffffffffffff612068610adb83858b611f49565b1680156122085761207a828587611f49565b3580612144575b906020917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef73ffffffffffffffffffffffffffffffffffffffff8c16938492604051908152a38a15158061213a575b6120de575b50600101611feb565b8a8703908782101561210457600090815260208d905260409020908601905560016120d5565b878c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b50858b14156120d0565b9a8b8101908111156121de579a8c73ffffffffffffffffffffffffffffffffffffffff8b168381146121905750906040602093926000908482528552208181540190555b909150612081565b905088829892116121a8575090866020920196612188565b8888917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdedd83410000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff897f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50505050505050565b92939490918185036102c15784156124ae5773ffffffffffffffffffffffffffffffffffffffff8316600052836020526040600020549560009260009660005b8181106123475750505050508015158061233d575b6122b6575b5050505050565b80850394808610156122f357505073ffffffffffffffffffffffffffffffffffffffff1660005260205260406000209101905538808080806122af565b73ffffffffffffffffffffffffffffffffffffffff837fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50838114156122aa565b73ffffffffffffffffffffffffffffffffffffffff61236a610adb838589611f49565b16801561246a5761237c828587611f49565b35806123d0575b90600192916040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602073ffffffffffffffffffffffffffffffffffffffff8c1692a301612295565b96878101908111156121de579673ffffffffffffffffffffffffffffffffffffffff891682811461241d57509060019291604060008381528c602052208181540190555b90919250612383565b8c829c92116124345750908a60019392019a612414565b8c8c917fe450d38c0000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff887f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b505050505050565b92909173ffffffffffffffffffffffffffffffffffffffff8116938415612650576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84141580612647575b612583575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b80840393808510156125ec5750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259260209282861660005283526040600020866000528352806040600020559261253b565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b50801515612536565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b929173ffffffffffffffffffffffffffffffffffffffff169283156127f157826126fe575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff82166000528060205260406000205483810390808210156127a557508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef97160361277e575b50509250506126b9565b83831660005281855260406000205586600052835260406000208581540190553880612774565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff81116106ec57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261287b82612835565b916128896040519384611cda565b8294818452818301116102bc578281602093846000960137010152565b908160209103126102bc575180151581036102bc5790565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156129da5732331480156129df575b6129da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612949575b5061294657503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa9081156109d9576000916129bb575b503861293c565b6129d4915060203d602011610c6957610c5b8183611cda565b386129b4565b503390565b5060183610612905565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015612b1d573233148015612b25575b612b1d57803314908115612a7c575b50612a4b576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116102bc5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa9081156109d957600091612afe575b5038612a3f565b612b17915060203d602011610c6957610c5b8183611cda565b38612af7565b506000903690565b5060183610612a30565b612b9e73ffffffffffffffffffffffffffffffffffffffff9294958360209516968460405197889687967f4fc358590000000000000000000000000000000000000000000000000000000088521660048701521660248501526044840152608060648401526084830190611976565b03816000865af19081156109d957600091612c2e575b507fffffffff000000000000000000000000000000000000000000000000000000007f4fc3585900000000000000000000000000000000000000000000000000000000911603612c015750565b7f6d4497360000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6020813d602011612ca8575b81612c4760209383611cda565b81010312612ca45751907fffffffff0000000000000000000000000000000000000000000000000000000082168203612ca157507fffffffff00000000000000000000000000000000000000000000000000000000612bb4565b80fd5b5080fd5b3d9150612c3a56fea26469706673582212209e8f868bd5737c0b2fad5c278bcd90f962d9c945de40af8af037f2c4731e6f7c64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
