{
  "_format": "hh-sol-artifact-1",
  "contractName": "FundingRateVerifier",
  "sourceName": "contracts/verifier/FundingRateVerifier.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "permissionController_",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "fIndexOracle",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "chainlinkOracle",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "chainlinkFeedId",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "chaosLabsOracle",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "chaosLabsUpdateTypeHash",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "chaosLabsMarket",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pendleOracle",
              "type": "address"
            }
          ],
          "internalType": "struct FundingRateVerifier.OracleConfig",
          "name": "oracleConfig_",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "maxVerificationFee_",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "period_",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxVerificationFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "period",
          "type": "uint32"
        }
      ],
      "name": "ConfigUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CHAIN_LINK_FEED_ID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "CHAIN_LINK_ORACLE",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "CHAOS_LABS_MARKET",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "CHAOS_LABS_ORACLE",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "CHAOS_LABS_UPDATE_TYPE_HASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FINDEX_ORACLE",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PENDLE_ORACLE",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int112",
          "name": "fundingRate",
          "type": "int112"
        },
        {
          "internalType": "uint32",
          "name": "fundingTimestamp",
          "type": "uint32"
        }
      ],
      "name": "manualUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxVerificationFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "period",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newMaxVerificationFee",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "newPeriod",
          "type": "uint32"
        }
      ],
      "name": "setConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "report",
          "type": "bytes"
        }
      ],
      "name": "updateWithChainlink",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "updateWithChaosLabs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateWithPendle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x610180604052348015610010575f5ffd5b5060405161206438038061206483398101604081905261002f916100d4565b6001600160a01b0393841660809081528351851660a09081526020850151861660c0908152604086015160e0526060860151871661010052918501516101205284015185166101405290920151909216610160525f919091556001805463ffffffff191663ffffffff9092169190911790556101c0565b80516001600160a01b03811681146100bc575f5ffd5b919050565b805163ffffffff811681146100bc575f5ffd5b5f5f5f5f8486036101408112156100e9575f5ffd5b6100f2866100a6565b945060e0601f1982011215610105575f5ffd5b5060405160e081016001600160401b038111828210171561013457634e487b7160e01b5f52604160045260245ffd5b604052610143602087016100a6565b8152610151604087016100a6565b60208201526060860151604082015261016c608087016100a6565b606082015260a0860151608082015261018760c087016100a6565b60a082015261019860e087016100a6565b60c082015261010086015190935091506101b561012086016100c1565b905092959194509250565b60805160a05160c05160e05161010051610120516101405161016051611dd36102915f395f818161028b0152610a7201525f8181610258015261091501525f818161011f01526108f401525f818161016001526108d301525f81816102d201526106f401525f818160d601526106d301525f81816101b40152818161041101528181610645015281816107490152818161086f01528181610a080152610aba01525f818161035b01528181610490015281816105a0015281816107ca015281816109630152610b3a0152611dd35ff3fe6080604052600436106100ba575f3560e01c806301edf947146100c557806307c538fa1461010e5780631a6282531461014f578063212f03321461018257806334b28043146101a35780633b790e23146101d65780633c8226f1146101f55780634cd5b7d8146102145780634f605218146102335780635f32258e146102475780639c977cf01461027a578063c8a53a4c146102ad578063cd808647146102c1578063ef78d4fd146102f4578063f3fef3a314610325575f5ffd5b366100c157005b5f5ffd5b3480156100d0575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516101059190611390565b60405180910390f35b348015610119575f5ffd5b506101417f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610105565b34801561015a575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b34801561018d575f5ffd5b506101a161019c3660046113c6565b610344565b005b3480156101ae575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b3480156101e1575f5ffd5b506101a16101f03660046113fd565b610479565b348015610200575f5ffd5b506101a161020f3660046114d6565b610589565b34801561021f575f5ffd5b506101a161022e36600461154f565b6107b3565b34801561023e575f5ffd5b506101a161094c565b348015610252575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b348015610285575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b8575f5ffd5b506101415f5481565b3480156102cc575f5ffd5b506101417f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ff575f5ffd5b506001546103109063ffffffff1681565b60405163ffffffff9091168152602001610105565b348015610330575f5ffd5b506101a161033f36600461157a565b610b23565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b70096139061039f90339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156103ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103de91906115d1565b6103fa576040516282b42960e81b815260040160405180910390fd5b604051630842551960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063084255199061044890859085906004016115f7565b5f604051808303815f87803b15801561045f575f5ffd5b505af1158015610471573d5f5f3e3d5ffd5b505050505050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7009613906104d490339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156104ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906115d1565b61052f576040516282b42960e81b815260040160405180910390fd5b5f8290556001805463ffffffff191663ffffffff83169081179091556040805184815260208101929092527ff546888ecde851d519ff957122cf718718856f495bb9af2b124cf074c84ded9a910160405180910390a15050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7009613906105e490339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156105ff573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062391906115d1565b61063f576040516282b42960e81b815260040160405180910390fd5b5f6106c97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd63342e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c39190611610565b60e01c90565b90505f5f61072d847f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f5460015f9054906101000a900463ffffffff1688610c78565b604051630842551960e01b815291935091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063084255199061078090859085906004016115f7565b5f604051808303815f87803b158015610797575f5ffd5b505af11580156107a9573d5f5f3e3d5ffd5b5050505050505050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b70096139061080e90339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa158015610829573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084d91906115d1565b610869576040516282b42960e81b815260040160405180910390fd5b5f6108c97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd63342e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069f573d5f5f3e3d5ffd5b90505f5f61072d847f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060015f9054906101000a900463ffffffff1688610e36565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7009613906109a790339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156109c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e691906115d1565b610a02576040516282b42960e81b815260040160405180910390fd5b5f610a627f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd63342e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069f573d5f5f3e3d5ffd5b6001549091505f908190610a9e907f00000000000000000000000000000000000000000000000000000000000000009063ffffffff1685611031565b604051630842551960e01b815291935091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630842551990610af190859085906004016115f7565b5f604051808303815f87803b158015610b08575f5ffd5b505af1158015610b1a573d5f5f3e3d5ffd5b50505050505050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b700961390610b7e90339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa158015610b99573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbd91906115d1565b610bd9576040516282b42960e81b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610c22576040519150601f19603f3d011682016040523d82523d5f602084013e610c27565b606091505b5050905080610c735760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064015b60405180910390fd5b505050565b5f5f5f5f610c868a8a611101565b9150915086811115610cd65760405162461bcd60e51b81526020600482015260196024820152780accae4d2ccd2c6c2e8d2dedc40cccaca40e8dede40d0d2ced603b1b6044820152606401610c6a565b5f896001600160a01b031663f7e83aee838d866040518463ffffffff1660e01b8152600401610d06929190611664565b5f6040518083038185885af1158015610d21573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610d4991908101906116e0565b90505f81806020019051810190610d60919061174b565b80519091508a14610da55760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a590819995959081a59608a1b6044820152606401610c6a565b610db58160c0015160170b61134b565b95508060e0015194505f81610100015163ffffffff1690508863ffffffff168114610df25760405162461bcd60e51b8152600401610c6a906117fb565b63ffffffff8616610e038a8a61183f565b63ffffffff1614610e265760405162461bcd60e51b8152600401610c6a90611861565b5050505050965096945050505050565b5f5f5f876001600160a01b03166337759b9a8a6040518263ffffffff1660e01b8152600401610e6791815260200190565b5f60405180830381865afa158015610e81573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ea8919081019061189f565b90508681608001518051906020012014610efa5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420757064617465207479706560681b6044820152606401610c6a565b856001600160a01b03168160c001516001600160a01b031614610f505760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081b585c9ad95d60921b6044820152606401610c6a565b5f5f5f5f8460200151806020019051810190610f6c91906119d7565b95509550955095505050610fa0836012610f869190611a60565b610f9190600a611b56565b610f9b9086611b61565b61134b565b9650610fb6610fb16103e884611b90565b61136b565b95505f610fc56103e883611b90565b90508963ffffffff168114610fec5760405162461bcd60e51b8152600401610c6a906117fb565b63ffffffff8716610ffd8b8b61183f565b63ffffffff16146110205760405162461bcd60e51b8152600401610c6a90611861565b505050505050965096945050505050565b5f5f5f856001600160a01b031663e360a49e6040518163ffffffff1660e01b8152600401608060405180830381865afa158015611070573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110949190611baf565b509194509250905063ffffffff808216908616146110c45760405162461bcd60e51b8152600401610c6a906117fb565b63ffffffff82166110d5868661183f565b63ffffffff16146110f85760405162461bcd60e51b8152600401610c6a90611861565b50935093915050565b60605f5f848060200190518101906111199190611bff565b9150505f8160018151811061113057611130611c9d565b602001015160f81c60f81b60f81c60ff166008835f8151811061115557611155611c9d565b016020015160f81c901b179050600561ffff8216146111af5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103932b837b93a103b32b939b4b7b760511b6044820152606401610c6a565b5f856001600160a01b03166338416b5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112109190611cb1565b90506001600160a01b03811661123d575f60405180602001604052805f8152509094509450505050611344565b5f816001600160a01b031663638786686040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129e9190611cb1565b90505f826001600160a01b031663e03dab1a3087856040518463ffffffff1660e01b81526004016112d193929190611ccc565b60a0604051808303815f875af11580156112ed573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113119190611d5f565b50509050816040516020016113269190611390565b60405160208183030381529060405281602001519650965050505050505b9250929050565b5f6001606f1b820160701c61135e575090565b611366611383565b919050565b5f600160201b821061137f5761137f611383565b5090565b6335278d125f526004601cfd5b6001600160a01b0391909116815260200190565b80600d0b81146113b2575f5ffd5b50565b63ffffffff811681146113b2575f5ffd5b5f5f604083850312156113d7575f5ffd5b82356113e2816113a4565b915060208301356113f2816113b5565b809150509250929050565b5f5f6040838503121561140e575f5ffd5b8235915060208301356113f2816113b5565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b038111828210171561145757611457611420565b60405290565b60405161010081016001600160401b038111828210171561145757611457611420565b604051601f8201601f191681016001600160401b03811182821017156114a8576114a8611420565b604052919050565b5f6001600160401b038211156114c8576114c8611420565b50601f01601f191660200190565b5f602082840312156114e6575f5ffd5b81356001600160401b038111156114fb575f5ffd5b8201601f8101841361150b575f5ffd5b803561151e611519826114b0565b611480565b818152856020838501011115611532575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f6020828403121561155f575f5ffd5b5035919050565b6001600160a01b03811681146113b2575f5ffd5b5f5f6040838503121561158b575f5ffd5b823561159681611566565b946020939093013593505050565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156115e1575f5ffd5b815180151581146115f0575f5ffd5b9392505050565b600d9290920b825263ffffffff16602082015260400190565b5f60208284031215611620575f5ffd5b815165ffffffffffff19811681146115f0575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f6116766040830185611636565b82810360208401526116888185611636565b95945050505050565b5f82601f8301126116a0575f5ffd5b8151602083015f6116b3611519846114b0565b90508281528583830111156116c6575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f602082840312156116f0575f5ffd5b81516001600160401b03811115611705575f5ffd5b61171184828501611691565b949350505050565b8051611366816113b5565b80516001600160c01b0381168114611366575f5ffd5b8051601781900b8114611366575f5ffd5b5f61012082840312801561175d575f5ffd5b50611766611434565b8251815261177660208401611719565b602082015261178760408401611719565b604082015261179860608401611724565b60608201526117a960808401611724565b60808201526117ba60a08401611719565b60a08201526117cb60c0840161173a565b60c08201526117dc60e08401611719565b60e08201526117ee6101008401611719565b6101008201529392505050565b60208082526016908201527524b73b30b634b21032b837b1b410323ab930ba34b7b760511b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff818116838216019081111561185b5761185b61182b565b92915050565b6020808252601990820152780496e76616c69642066756e64696e672074696d657374616d7603c1b604082015260600190565b805161136681611566565b5f602082840312156118af575f5ffd5b81516001600160401b038111156118c4575f5ffd5b820161010081850312156118d6575f5ffd5b6118de61145d565b8151815260208201516001600160401b038111156118fa575f5ffd5b61190686828501611691565b60208301525060408201516001600160401b03811115611924575f5ffd5b61193086828501611691565b60408301525060608201516001600160401b0381111561194e575f5ffd5b61195a86828501611691565b60608301525060808201516001600160401b03811115611978575f5ffd5b61198486828501611691565b60808301525060a082810151908201526119a060c08301611894565b60c082015260e08201516001600160401b038111156119bd575f5ffd5b6119c986828501611691565b60e083015250949350505050565b5f5f5f5f5f5f60c087890312156119ec575f5ffd5b86516001600160401b03811115611a01575f5ffd5b611a0d89828a01611691565b602089015190975090506001600160401b03811115611a2a575f5ffd5b611a3689828a01611691565b604089015160608a015160808b015160a0909b0151999c929b509099909890975095509350505050565b8181038181111561185b5761185b61182b565b6001815b6001841115611aae57808504811115611a9257611a9261182b565b6001841615611aa057908102905b60019390931c928002611a77565b935093915050565b5f82611ac45750600161185b565b81611ad057505f61185b565b8160018114611ae65760028114611af057611b0c565b600191505061185b565b60ff841115611b0157611b0161182b565b50506001821b61185b565b5060208310610133831016604e8410600b8410161715611b2f575081810a61185b565b611b3b5f198484611a73565b805f1904821115611b4e57611b4e61182b565b029392505050565b5f6115f08383611ab6565b8082025f8212600160ff1b84141615611b7c57611b7c61182b565b818105831482151761185b5761185b61182b565b5f82611baa57634e487b7160e01b5f52601260045260245ffd5b500490565b5f5f5f5f60808587031215611bc2575f5ffd5b8451611bcd816113a4565b6020860151909450611bde816113b5565b6040860151909350611bef816113b5565b6060959095015193969295505050565b5f5f60808385031215611c10575f5ffd5b83601f840112611c1e575f5ffd5b604051606081016001600160401b0381118282101715611c4057611c40611420565b604052806060850186811115611c54575f5ffd5b855b81811015611c6e578051835260209283019201611c56565b5051919350506001600160401b03811115611c87575f5ffd5b611c9385828601611691565b9150509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611cc1575f5ffd5b81516115f081611566565b6001600160a01b03841681526060602082018190525f90611cef90830185611636565b905060018060a01b0383166040830152949350505050565b5f60408284031215611d17575f5ffd5b604080519081016001600160401b0381118282101715611d3957611d39611420565b80604052508091508251611d4c81611566565b8152602092830151920191909152919050565b5f5f5f60a08486031215611d71575f5ffd5b611d7b8585611d07565b9250611d8a8560408601611d07565b608094909401519295939450919291505056fea26469706673582212209e1710f3c08832aca72ecd95f9e3868cf00d13feb3bacdca20beeced8c8a9b5364736f6c634300081c0033",
  "deployedBytecode": "0x6080604052600436106100ba575f3560e01c806301edf947146100c557806307c538fa1461010e5780631a6282531461014f578063212f03321461018257806334b28043146101a35780633b790e23146101d65780633c8226f1146101f55780634cd5b7d8146102145780634f605218146102335780635f32258e146102475780639c977cf01461027a578063c8a53a4c146102ad578063cd808647146102c1578063ef78d4fd146102f4578063f3fef3a314610325575f5ffd5b366100c157005b5f5ffd5b3480156100d0575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516101059190611390565b60405180910390f35b348015610119575f5ffd5b506101417f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610105565b34801561015a575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b34801561018d575f5ffd5b506101a161019c3660046113c6565b610344565b005b3480156101ae575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b3480156101e1575f5ffd5b506101a16101f03660046113fd565b610479565b348015610200575f5ffd5b506101a161020f3660046114d6565b610589565b34801561021f575f5ffd5b506101a161022e36600461154f565b6107b3565b34801561023e575f5ffd5b506101a161094c565b348015610252575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b348015610285575f5ffd5b506100f87f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b8575f5ffd5b506101415f5481565b3480156102cc575f5ffd5b506101417f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ff575f5ffd5b506001546103109063ffffffff1681565b60405163ffffffff9091168152602001610105565b348015610330575f5ffd5b506101a161033f36600461157a565b610b23565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b70096139061039f90339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156103ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103de91906115d1565b6103fa576040516282b42960e81b815260040160405180910390fd5b604051630842551960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063084255199061044890859085906004016115f7565b5f604051808303815f87803b15801561045f575f5ffd5b505af1158015610471573d5f5f3e3d5ffd5b505050505050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7009613906104d490339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156104ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906115d1565b61052f576040516282b42960e81b815260040160405180910390fd5b5f8290556001805463ffffffff191663ffffffff83169081179091556040805184815260208101929092527ff546888ecde851d519ff957122cf718718856f495bb9af2b124cf074c84ded9a910160405180910390a15050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7009613906105e490339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156105ff573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062391906115d1565b61063f576040516282b42960e81b815260040160405180910390fd5b5f6106c97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd63342e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c39190611610565b60e01c90565b90505f5f61072d847f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f5460015f9054906101000a900463ffffffff1688610c78565b604051630842551960e01b815291935091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063084255199061078090859085906004016115f7565b5f604051808303815f87803b158015610797575f5ffd5b505af11580156107a9573d5f5f3e3d5ffd5b5050505050505050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b70096139061080e90339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa158015610829573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084d91906115d1565b610869576040516282b42960e81b815260040160405180910390fd5b5f6108c97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd63342e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069f573d5f5f3e3d5ffd5b90505f5f61072d847f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060015f9054906101000a900463ffffffff1688610e36565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7009613906109a790339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa1580156109c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e691906115d1565b610a02576040516282b42960e81b815260040160405180910390fd5b5f610a627f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd63342e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561069f573d5f5f3e3d5ffd5b6001549091505f908190610a9e907f00000000000000000000000000000000000000000000000000000000000000009063ffffffff1685611031565b604051630842551960e01b815291935091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630842551990610af190859085906004016115f7565b5f604051808303815f87803b158015610b08575f5ffd5b505af1158015610b1a573d5f5f3e3d5ffd5b50505050505050565b60405163b700961360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b700961390610b7e90339030906001600160e01b03195f3516906004016115a4565b602060405180830381865afa158015610b99573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbd91906115d1565b610bd9576040516282b42960e81b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610c22576040519150601f19603f3d011682016040523d82523d5f602084013e610c27565b606091505b5050905080610c735760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064015b60405180910390fd5b505050565b5f5f5f5f610c868a8a611101565b9150915086811115610cd65760405162461bcd60e51b81526020600482015260196024820152780accae4d2ccd2c6c2e8d2dedc40cccaca40e8dede40d0d2ced603b1b6044820152606401610c6a565b5f896001600160a01b031663f7e83aee838d866040518463ffffffff1660e01b8152600401610d06929190611664565b5f6040518083038185885af1158015610d21573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610d4991908101906116e0565b90505f81806020019051810190610d60919061174b565b80519091508a14610da55760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a590819995959081a59608a1b6044820152606401610c6a565b610db58160c0015160170b61134b565b95508060e0015194505f81610100015163ffffffff1690508863ffffffff168114610df25760405162461bcd60e51b8152600401610c6a906117fb565b63ffffffff8616610e038a8a61183f565b63ffffffff1614610e265760405162461bcd60e51b8152600401610c6a90611861565b5050505050965096945050505050565b5f5f5f876001600160a01b03166337759b9a8a6040518263ffffffff1660e01b8152600401610e6791815260200190565b5f60405180830381865afa158015610e81573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ea8919081019061189f565b90508681608001518051906020012014610efa5760405162461bcd60e51b8152602060048201526013602482015272496e76616c696420757064617465207479706560681b6044820152606401610c6a565b856001600160a01b03168160c001516001600160a01b031614610f505760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081b585c9ad95d60921b6044820152606401610c6a565b5f5f5f5f8460200151806020019051810190610f6c91906119d7565b95509550955095505050610fa0836012610f869190611a60565b610f9190600a611b56565b610f9b9086611b61565b61134b565b9650610fb6610fb16103e884611b90565b61136b565b95505f610fc56103e883611b90565b90508963ffffffff168114610fec5760405162461bcd60e51b8152600401610c6a906117fb565b63ffffffff8716610ffd8b8b61183f565b63ffffffff16146110205760405162461bcd60e51b8152600401610c6a90611861565b505050505050965096945050505050565b5f5f5f856001600160a01b031663e360a49e6040518163ffffffff1660e01b8152600401608060405180830381865afa158015611070573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110949190611baf565b509194509250905063ffffffff808216908616146110c45760405162461bcd60e51b8152600401610c6a906117fb565b63ffffffff82166110d5868661183f565b63ffffffff16146110f85760405162461bcd60e51b8152600401610c6a90611861565b50935093915050565b60605f5f848060200190518101906111199190611bff565b9150505f8160018151811061113057611130611c9d565b602001015160f81c60f81b60f81c60ff166008835f8151811061115557611155611c9d565b016020015160f81c901b179050600561ffff8216146111af5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b2103932b837b93a103b32b939b4b7b760511b6044820152606401610c6a565b5f856001600160a01b03166338416b5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112109190611cb1565b90506001600160a01b03811661123d575f60405180602001604052805f8152509094509450505050611344565b5f816001600160a01b031663638786686040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061129e9190611cb1565b90505f826001600160a01b031663e03dab1a3087856040518463ffffffff1660e01b81526004016112d193929190611ccc565b60a0604051808303815f875af11580156112ed573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113119190611d5f565b50509050816040516020016113269190611390565b60405160208183030381529060405281602001519650965050505050505b9250929050565b5f6001606f1b820160701c61135e575090565b611366611383565b919050565b5f600160201b821061137f5761137f611383565b5090565b6335278d125f526004601cfd5b6001600160a01b0391909116815260200190565b80600d0b81146113b2575f5ffd5b50565b63ffffffff811681146113b2575f5ffd5b5f5f604083850312156113d7575f5ffd5b82356113e2816113a4565b915060208301356113f2816113b5565b809150509250929050565b5f5f6040838503121561140e575f5ffd5b8235915060208301356113f2816113b5565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b038111828210171561145757611457611420565b60405290565b60405161010081016001600160401b038111828210171561145757611457611420565b604051601f8201601f191681016001600160401b03811182821017156114a8576114a8611420565b604052919050565b5f6001600160401b038211156114c8576114c8611420565b50601f01601f191660200190565b5f602082840312156114e6575f5ffd5b81356001600160401b038111156114fb575f5ffd5b8201601f8101841361150b575f5ffd5b803561151e611519826114b0565b611480565b818152856020838501011115611532575f5ffd5b816020840160208301375f91810160200191909152949350505050565b5f6020828403121561155f575f5ffd5b5035919050565b6001600160a01b03811681146113b2575f5ffd5b5f5f6040838503121561158b575f5ffd5b823561159681611566565b946020939093013593505050565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156115e1575f5ffd5b815180151581146115f0575f5ffd5b9392505050565b600d9290920b825263ffffffff16602082015260400190565b5f60208284031215611620575f5ffd5b815165ffffffffffff19811681146115f0575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b604081525f6116766040830185611636565b82810360208401526116888185611636565b95945050505050565b5f82601f8301126116a0575f5ffd5b8151602083015f6116b3611519846114b0565b90508281528583830111156116c6575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f602082840312156116f0575f5ffd5b81516001600160401b03811115611705575f5ffd5b61171184828501611691565b949350505050565b8051611366816113b5565b80516001600160c01b0381168114611366575f5ffd5b8051601781900b8114611366575f5ffd5b5f61012082840312801561175d575f5ffd5b50611766611434565b8251815261177660208401611719565b602082015261178760408401611719565b604082015261179860608401611724565b60608201526117a960808401611724565b60808201526117ba60a08401611719565b60a08201526117cb60c0840161173a565b60c08201526117dc60e08401611719565b60e08201526117ee6101008401611719565b6101008201529392505050565b60208082526016908201527524b73b30b634b21032b837b1b410323ab930ba34b7b760511b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b63ffffffff818116838216019081111561185b5761185b61182b565b92915050565b6020808252601990820152780496e76616c69642066756e64696e672074696d657374616d7603c1b604082015260600190565b805161136681611566565b5f602082840312156118af575f5ffd5b81516001600160401b038111156118c4575f5ffd5b820161010081850312156118d6575f5ffd5b6118de61145d565b8151815260208201516001600160401b038111156118fa575f5ffd5b61190686828501611691565b60208301525060408201516001600160401b03811115611924575f5ffd5b61193086828501611691565b60408301525060608201516001600160401b0381111561194e575f5ffd5b61195a86828501611691565b60608301525060808201516001600160401b03811115611978575f5ffd5b61198486828501611691565b60808301525060a082810151908201526119a060c08301611894565b60c082015260e08201516001600160401b038111156119bd575f5ffd5b6119c986828501611691565b60e083015250949350505050565b5f5f5f5f5f5f60c087890312156119ec575f5ffd5b86516001600160401b03811115611a01575f5ffd5b611a0d89828a01611691565b602089015190975090506001600160401b03811115611a2a575f5ffd5b611a3689828a01611691565b604089015160608a015160808b015160a0909b0151999c929b509099909890975095509350505050565b8181038181111561185b5761185b61182b565b6001815b6001841115611aae57808504811115611a9257611a9261182b565b6001841615611aa057908102905b60019390931c928002611a77565b935093915050565b5f82611ac45750600161185b565b81611ad057505f61185b565b8160018114611ae65760028114611af057611b0c565b600191505061185b565b60ff841115611b0157611b0161182b565b50506001821b61185b565b5060208310610133831016604e8410600b8410161715611b2f575081810a61185b565b611b3b5f198484611a73565b805f1904821115611b4e57611b4e61182b565b029392505050565b5f6115f08383611ab6565b8082025f8212600160ff1b84141615611b7c57611b7c61182b565b818105831482151761185b5761185b61182b565b5f82611baa57634e487b7160e01b5f52601260045260245ffd5b500490565b5f5f5f5f60808587031215611bc2575f5ffd5b8451611bcd816113a4565b6020860151909450611bde816113b5565b6040860151909350611bef816113b5565b6060959095015193969295505050565b5f5f60808385031215611c10575f5ffd5b83601f840112611c1e575f5ffd5b604051606081016001600160401b0381118282101715611c4057611c40611420565b604052806060850186811115611c54575f5ffd5b855b81811015611c6e578051835260209283019201611c56565b5051919350506001600160401b03811115611c87575f5ffd5b611c9385828601611691565b9150509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611cc1575f5ffd5b81516115f081611566565b6001600160a01b03841681526060602082018190525f90611cef90830185611636565b905060018060a01b0383166040830152949350505050565b5f60408284031215611d17575f5ffd5b604080519081016001600160401b0381118282101715611d3957611d39611420565b80604052508091508251611d4c81611566565b8152602092830151920191909152919050565b5f5f5f60a08486031215611d71575f5ffd5b611d7b8585611d07565b9250611d8a8560408601611d07565b608094909401519295939450919291505056fea26469706673582212209e1710f3c08832aca72ecd95f9e3868cf00d13feb3bacdca20beeced8c8a9b5364736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
