{
  "_format": "hh-sol-artifact-1",
  "contractName": "LinearPoolInvalidClaimSumMock",
  "sourceName": "contracts/mocks/staking/linear/LinearPoolInvalidClaimSumMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "scalingFactorDecimals",
          "type": "uint8"
        },
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": "uint256",
          "name": "claimable",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "claimed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "unclaimed",
          "type": "uint256"
        }
      ],
      "name": "InvalidClaimSum",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidDuration",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidRewardAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidStakeAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidWithdrawAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "stake",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "withdraw",
          "type": "uint256"
        }
      ],
      "name": "NotEnoughStake",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotRoleHolder",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentRewardRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newRewardRate",
          "type": "uint256"
        }
      ],
      "name": "RewardDilution",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RewardOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ScalingFactorOutOfBounds",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "transferredReward",
          "type": "uint256"
        }
      ],
      "name": "ClaimTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "claimData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "claimed",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "unclaimed",
          "type": "uint256"
        }
      ],
      "name": "Claimed",
      "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": "rewarder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "RewardAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "stakeData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stakePoints",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "withdrawData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stakePoints",
          "type": "uint256"
        }
      ],
      "name": "Withdrawn",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "REWARDER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SCALING_FACTOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "addReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "claimData",
          "type": "bytes"
        }
      ],
      "name": "claim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "distributionEnd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "earned",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "hasRole_",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastTimeRewardApplicable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastUpdated",
      "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": "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": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPerStakePoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "rewardPerStakePointPaid",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "paid",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPerStakePointStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "rewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "stakeData",
          "type": "bytes"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "staked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "stakePoints",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalStaked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "withdrawData",
          "type": "bytes"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c0346101a457601f6122fb38819003918201601f19168301916001600160401b038311848410176101a95780849260409485528339810103126101a45780519060ff82168092036101a457602001516001600160a01b03811681036101a45733610145575b6307f5828d60e41b60009081527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460ff191660019081179091559055608052604d81101561013457604d811161011e57600a0a60a05260405161213b90816101c0823960805181818161179f01528181611d330152611ff7015260a0518181816104dd0152818161070601526110010152f35b634e487b7160e01b600052601160045260246000fd5b63a54ad6c560e01b60005260046000fd5b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc80546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3610065565b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c80628cc2621461199a57806301ffc9a7146119345780630700037d146118cf5780630968f264146117c35780632b4c9f16146117545780632c9d0b801461171b5780632d1e0c02146116365780632f2ff15d146114aa578063572b6c051461145f57806373c8a958146112dc57806375c93bb914610f6b5780637b0a47ee14610f2f57806380faa57d14610eee578063817b1cd214610eb25780638580cf7614610e595780638bb9c5bf14610cea5780638da5cb5b14610c7957806391d1485414610be157806398807d8414610b7c5780639d696e3614610b40578063c3666c36146108f7578063c5c8f77014610892578063c63ff8dd146106c5578063d0b06f5d14610689578063d547741f14610500578063ef4cadc5146104a7578063efa90b541461046b578063f2fde38b146103785763f7ba94bd1461015a57600080fd5b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760043567ffffffffffffffff811161031c576101a9903690600401611a90565b60243567ffffffffffffffff811161031c576101c9903690600401611a90565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061020a611fe0565b925416911690810361034b57508181036103215760005b81811061022a57005b610235818387611ea8565b3573ffffffffffffffffffffffffffffffffffffffff811680910361031c5761025f828587611ea8565b35908147106102ea57600080809381935af13d156102e2573d9061028282611c5b565b916102906040519384611beb565b82523d6000602084013e5b156102a95750600101610221565b8051156102b857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b60609061029b565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576103af6119db565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6103d8611fe0565b9080549273ffffffffffffffffffffffffffffffffffffffff808516931683810361034b575073ffffffffffffffffffffffffffffffffffffffff169283830361041e57005b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600554604051908152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760043561053a6119fe565b610542611fe0565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034b57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054166105f457005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600254604051908152f35b3461031c576106d336611a21565b6106db611fa5565b6106e3611fe0565b906106ed82611f08565b6106f682611b81565b9283610704575b6001600055005b7f000000000000000000000000000000000000000000000000000000000000000061072f8186611ccc565b94811561086357600186018087116108345786036107fd57601f847f019eda09011e476781de26947e4b78ee0a834e7182f5ff2eb62bcf8c523f42ca969773ffffffffffffffffffffffffffffffffffffffff6107b286608098977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09706611b74565b9916988960005260076020526040600020556040519687956060875281606088015287870137600086838701015260208501526001604085015201168101030190a2808080806106fd565b857f2367721e0000000000000000000000000000000000000000000000000000000060005280600452602452600160445260646000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5773ffffffffffffffffffffffffffffffffffffffff6108de6119db565b1660005260086020526020604060002054604051908152f35b3461031c5761090536611ac1565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061094a611fe0565b925416911690810361034b5750808214801590610b36575b6103215760005b82811061097257005b73ffffffffffffffffffffffffffffffffffffffff61099a61099583858a611ea8565b611ee7565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610acf57600091610b08575b5015610adb575073ffffffffffffffffffffffffffffffffffffffff610a2961099583858a611ea8565b1690610a39610995828689611ea8565b91610a4582878b611ea8565b3592813b1561031c57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610acf57600192610abe575b5001610969565b6000610ac991611beb565b88610ab7565b6040513d6000823e3d90fd5b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610b29915060203d8111610b2f575b610b218183611beb565b810190611f8d565b896109ff565b503d610b17565b5082821415610962565b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600454604051908152f35b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5773ffffffffffffffffffffffffffffffffffffffff610bc86119db565b1660005260066020526020604060002054604051908152f35b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57610c186119fe565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435610d45611fe0565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615610e115760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610684565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760206040517f72657761726465720000000000000000000000000000000000000000000000008152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600154604051908152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020610f27611d7b565b604051908152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600354604051908152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57600435602435610fa3611fe0565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f15154e2fdb60fe5988478ff62f03d0369c5abf7e6b3abdef601ee67fdf7120c9602052604090205490919060ff161561127457821561124a578015611220577f0000000000000000000000000000000000000000000000000000000000000000808402908482041480910290156111db57611039611cd6565b6004556005544210801590611215575b611205575b6005549061105c8342611b74565b914281116110c45750928273ffffffffffffffffffffffffffffffffffffffff926110aa6040957f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec847497611ccc565b6003556005555b42600255835195865260208601521692a2005b916003939193546110de6110d84286611b54565b82611b61565b850194851094851502946111db5783821161114d575050507f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec84749260409261114561113e73ffffffffffffffffffffffffffffffffffffffff944290611b54565b8092611ccc565b6003556110b1565b9161115b9193508094611ccc565b908082106111ab57509260409273ffffffffffffffffffffffffffffffffffffffff927f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec8474956003556005556110b1565b7f19e2447d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f500820650000000000000000000000000000000000000000000000000000000060005260046000fd5b61120d611d7b565b60025561104e565b506001541515611049565b7f761664010000000000000000000000000000000000000000000000000000000060005260046000fd5b7f385398650000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff827f7aa72882000000000000000000000000000000000000000000000000000000006000527f72657761726465720000000000000000000000000000000000000000000000006004521660245260446000fd5b3461031c576112ea36611ac1565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061132d611fe0565b925416911690810361034b5750808314801590611455575b6103215760005b83811061135557005b611360818388611ea8565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361031c5760006020918a826113a18761139a610995828f8f90611ea8565b938b611ea8565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526113fc606482611beb565b51925af115610acf576000513d61144c5750803b155b61141f575060010161134c565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611412565b5085831415611345565b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760206114a061149b6119db565b611d1c565b6040519015158152f35b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576004356114e46119fe565b6114ec611fe0565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034b57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054161561159f57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610684565b61165461164236611a21565b919061164c611fe0565b923691611c95565b9061165d611fa5565b61166681611f08565b61166f826120f1565b80156116f15773ffffffffffffffffffffffffffffffffffffffff7ff4679d394f1f97f1a3df1d73e193866ec5a813168ad5fa6958f9be21b10a594e926116b883600154611b74565b600155169283600052600660205260406000206116d6838254611b74565b90556116e760405192839283611e3c565b0390a26001600055005b7f040ef8ec0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020610f27611cd6565b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031c576117d461164236611a21565b906117dd611fa5565b6117e681611f08565b6117ef826120f1565b9081156118a55773ffffffffffffffffffffffffffffffffffffffff16908160005260066020526040600020549281841061186f578183947faae638dec0d864ccb08558c28981bcfaee41330f57c4911cbe2d8432d0fb729e9460005260066020520360406000205581600154036001556116e760405192839283611e3c565b5091907f2b6a77580000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdb73cdf00000000000000000000000000000000000000000000000000000000060005260046000fd5b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5773ffffffffffffffffffffffffffffffffffffffff61191b6119db565b1660005260076020526020604060002054604051908152f35b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361031c576114a0602091611d8d565b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020610f276119d66119db565b611b81565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361031c57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361031c57565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261031c5760043567ffffffffffffffff811161031c578260238201121561031c5780600401359267ffffffffffffffff841161031c576024848301011161031c576024019190565b9181601f8401121561031c5782359167ffffffffffffffff831161031c576020808501948460051b01011161031c57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261031c5760043567ffffffffffffffff811161031c5781611b0a91600401611a90565b9290929160243567ffffffffffffffff811161031c5781611b2d91600401611a90565b929092916044359067ffffffffffffffff821161031c57611b5091600401611a90565b9091565b9190820391821161083457565b8181029291811591840414171561083457565b9190820180921161083457565b73ffffffffffffffffffffffffffffffffffffffff611be89116806000526006602052611bd3604060002054611bcd611bb8611cd6565b84600052600860205260406000205490611b54565b90611b61565b90600052600760205260406000205490611b74565b90565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611c2c57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111611c2c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192611ca182611c5b565b91611caf6040519384611beb565b82948184528183011161031c578281602093846000960137010152565b8115610863570490565b6001548015611d1557611be890611d0f60045491611d0a611d01611cf8611d7b565b60025490611b54565b60035490611b61565b611ccc565b90611b74565b5060045490565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611d745773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b600554804210600014611be857504290565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114611e36577f01ffc9a7000000000000000000000000000000000000000000000000000000008114611e30576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b9291906040845280519081604086015260005b828110611e9257505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000846020968a0101520116850101930152565b8060208092840101516060828901015201611e4f565b9190811015611eb85760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff8116810361031c5790565b611f10611cd6565b6004556005544210801590611f82575b611f72575b73ffffffffffffffffffffffffffffffffffffffff81169081611f46575050565b611f4f90611b81565b816000526007602052604060002055600454906000526008602052604060002055565b611f7a611d7b565b600255611f25565b506001541515611f20565b9081602091031261031c5751801515810361031c5790565b600260005414611fb6576002600055565b7f3ee5aeb50000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156120e25732331480156120e7575b6120e2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612068575b50611be857503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115610acf576000916120c3575b503861205e565b6120dc915060203d602011610b2f57610b218183611beb565b386120bc565b503390565b5060183610612027565b60208180518101031261031c57602001519056fea264697066735822122036522dfaf817c59dec260ea77e80249b9e6e50bdd256a5a7b1a8057f8329138364736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c80628cc2621461199a57806301ffc9a7146119345780630700037d146118cf5780630968f264146117c35780632b4c9f16146117545780632c9d0b801461171b5780632d1e0c02146116365780632f2ff15d146114aa578063572b6c051461145f57806373c8a958146112dc57806375c93bb914610f6b5780637b0a47ee14610f2f57806380faa57d14610eee578063817b1cd214610eb25780638580cf7614610e595780638bb9c5bf14610cea5780638da5cb5b14610c7957806391d1485414610be157806398807d8414610b7c5780639d696e3614610b40578063c3666c36146108f7578063c5c8f77014610892578063c63ff8dd146106c5578063d0b06f5d14610689578063d547741f14610500578063ef4cadc5146104a7578063efa90b541461046b578063f2fde38b146103785763f7ba94bd1461015a57600080fd5b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760043567ffffffffffffffff811161031c576101a9903690600401611a90565b60243567ffffffffffffffff811161031c576101c9903690600401611a90565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061020a611fe0565b925416911690810361034b57508181036103215760005b81811061022a57005b610235818387611ea8565b3573ffffffffffffffffffffffffffffffffffffffff811680910361031c5761025f828587611ea8565b35908147106102ea57600080809381935af13d156102e2573d9061028282611c5b565b916102906040519384611beb565b82523d6000602084013e5b156102a95750600101610221565b8051156102b857602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b60609061029b565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576103af6119db565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6103d8611fe0565b9080549273ffffffffffffffffffffffffffffffffffffffff808516931683810361034b575073ffffffffffffffffffffffffffffffffffffffff169283830361041e57005b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600554604051908152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760043561053a6119fe565b610542611fe0565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034b57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054166105f457005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600254604051908152f35b3461031c576106d336611a21565b6106db611fa5565b6106e3611fe0565b906106ed82611f08565b6106f682611b81565b9283610704575b6001600055005b7f000000000000000000000000000000000000000000000000000000000000000061072f8186611ccc565b94811561086357600186018087116108345786036107fd57601f847f019eda09011e476781de26947e4b78ee0a834e7182f5ff2eb62bcf8c523f42ca969773ffffffffffffffffffffffffffffffffffffffff6107b286608098977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09706611b74565b9916988960005260076020526040600020556040519687956060875281606088015287870137600086838701015260208501526001604085015201168101030190a2808080806106fd565b857f2367721e0000000000000000000000000000000000000000000000000000000060005280600452602452600160445260646000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5773ffffffffffffffffffffffffffffffffffffffff6108de6119db565b1660005260086020526020604060002054604051908152f35b3461031c5761090536611ac1565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061094a611fe0565b925416911690810361034b5750808214801590610b36575b6103215760005b82811061097257005b73ffffffffffffffffffffffffffffffffffffffff61099a61099583858a611ea8565b611ee7565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610acf57600091610b08575b5015610adb575073ffffffffffffffffffffffffffffffffffffffff610a2961099583858a611ea8565b1690610a39610995828689611ea8565b91610a4582878b611ea8565b3592813b1561031c57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610acf57600192610abe575b5001610969565b6000610ac991611beb565b88610ab7565b6040513d6000823e3d90fd5b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610b29915060203d8111610b2f575b610b218183611beb565b810190611f8d565b896109ff565b503d610b17565b5082821415610962565b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600454604051908152f35b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5773ffffffffffffffffffffffffffffffffffffffff610bc86119db565b1660005260066020526020604060002054604051908152f35b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57610c186119fe565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435610d45611fe0565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615610e115760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610684565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760206040517f72657761726465720000000000000000000000000000000000000000000000008152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600154604051908152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020610f27611d7b565b604051908152f35b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020600354604051908152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57600435602435610fa3611fe0565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f15154e2fdb60fe5988478ff62f03d0369c5abf7e6b3abdef601ee67fdf7120c9602052604090205490919060ff161561127457821561124a578015611220577f0000000000000000000000000000000000000000000000000000000000000000808402908482041480910290156111db57611039611cd6565b6004556005544210801590611215575b611205575b6005549061105c8342611b74565b914281116110c45750928273ffffffffffffffffffffffffffffffffffffffff926110aa6040957f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec847497611ccc565b6003556005555b42600255835195865260208601521692a2005b916003939193546110de6110d84286611b54565b82611b61565b850194851094851502946111db5783821161114d575050507f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec84749260409261114561113e73ffffffffffffffffffffffffffffffffffffffff944290611b54565b8092611ccc565b6003556110b1565b9161115b9193508094611ccc565b908082106111ab57509260409273ffffffffffffffffffffffffffffffffffffffff927f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec8474956003556005556110b1565b7f19e2447d0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f500820650000000000000000000000000000000000000000000000000000000060005260046000fd5b61120d611d7b565b60025561104e565b506001541515611049565b7f761664010000000000000000000000000000000000000000000000000000000060005260046000fd5b7f385398650000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff827f7aa72882000000000000000000000000000000000000000000000000000000006000527f72657761726465720000000000000000000000000000000000000000000000006004521660245260446000fd5b3461031c576112ea36611ac1565b949293917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061132d611fe0565b925416911690810361034b5750808314801590611455575b6103215760005b83811061135557005b611360818388611ea8565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361031c5760006020918a826113a18761139a610995828f8f90611ea8565b938b611ea8565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526113fc606482611beb565b51925af115610acf576000513d61144c5750803b155b61141f575060010161134c565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611412565b5085831415611345565b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5760206114a061149b6119db565b611d1c565b6040519015158152f35b3461031c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576004356114e46119fe565b6114ec611fe0565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034b57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054161561159f57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610684565b61165461164236611a21565b919061164c611fe0565b923691611c95565b9061165d611fa5565b61166681611f08565b61166f826120f1565b80156116f15773ffffffffffffffffffffffffffffffffffffffff7ff4679d394f1f97f1a3df1d73e193866ec5a813168ad5fa6958f9be21b10a594e926116b883600154611b74565b600155169283600052600660205260406000206116d6838254611b74565b90556116e760405192839283611e3c565b0390a26001600055005b7f040ef8ec0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020610f27611cd6565b3461031c5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461031c576117d461164236611a21565b906117dd611fa5565b6117e681611f08565b6117ef826120f1565b9081156118a55773ffffffffffffffffffffffffffffffffffffffff16908160005260066020526040600020549281841061186f578183947faae638dec0d864ccb08558c28981bcfaee41330f57c4911cbe2d8432d0fb729e9460005260066020520360406000205581600154036001556116e760405192839283611e3c565b5091907f2b6a77580000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fdb73cdf00000000000000000000000000000000000000000000000000000000060005260046000fd5b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c5773ffffffffffffffffffffffffffffffffffffffff61191b6119db565b1660005260076020526020604060002054604051908152f35b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361031c576114a0602091611d8d565b3461031c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031c576020610f276119d66119db565b611b81565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361031c57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361031c57565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261031c5760043567ffffffffffffffff811161031c578260238201121561031c5780600401359267ffffffffffffffff841161031c576024848301011161031c576024019190565b9181601f8401121561031c5782359167ffffffffffffffff831161031c576020808501948460051b01011161031c57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261031c5760043567ffffffffffffffff811161031c5781611b0a91600401611a90565b9290929160243567ffffffffffffffff811161031c5781611b2d91600401611a90565b929092916044359067ffffffffffffffff821161031c57611b5091600401611a90565b9091565b9190820391821161083457565b8181029291811591840414171561083457565b9190820180921161083457565b73ffffffffffffffffffffffffffffffffffffffff611be89116806000526006602052611bd3604060002054611bcd611bb8611cd6565b84600052600860205260406000205490611b54565b90611b61565b90600052600760205260406000205490611b74565b90565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611c2c57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111611c2c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192611ca182611c5b565b91611caf6040519384611beb565b82948184528183011161031c578281602093846000960137010152565b8115610863570490565b6001548015611d1557611be890611d0f60045491611d0a611d01611cf8611d7b565b60025490611b54565b60035490611b61565b611ccc565b90611b74565b5060045490565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611d745773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b600554804210600014611be857504290565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114611e36577f01ffc9a7000000000000000000000000000000000000000000000000000000008114611e30576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b9291906040845280519081604086015260005b828110611e9257505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000846020968a0101520116850101930152565b8060208092840101516060828901015201611e4f565b9190811015611eb85760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff8116810361031c5790565b611f10611cd6565b6004556005544210801590611f82575b611f72575b73ffffffffffffffffffffffffffffffffffffffff81169081611f46575050565b611f4f90611b81565b816000526007602052604060002055600454906000526008602052604060002055565b611f7a611d7b565b600255611f25565b506001541515611f20565b9081602091031261031c5751801515810361031c5790565b600260005414611fb6576002600055565b7f3ee5aeb50000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156120e25732331480156120e7575b6120e2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612068575b50611be857503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115610acf576000916120c3575b503861205e565b6120dc915060203d602011610b2f57610b218183611beb565b386120bc565b503390565b5060183610612027565b60208180518101031261031c57602001519056fea264697066735822122036522dfaf817c59dec260ea77e80249b9e6e50bdd256a5a7b1a8057f8329138364736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
