{
  "_format": "hh-sol-artifact-1",
  "contractName": "FastPriceFeed",
  "sourceName": "contracts/oracle/FastPriceFeed.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_priceDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxDeviationBasisPoints",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_fastPriceEvents",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenManager",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "BASIS_POINTS_DIVISOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_PRICE_DURATION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRICE_BITMASK",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRICE_PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "disableFastPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "disableFastPriceVoteCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "disableFastPriceVotes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "enableFastPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fastPriceEvents",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "favorFastPrice",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_refPrice",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_maximise",
          "type": "bool"
        }
      ],
      "name": "getPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gov",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_minAuthorizations",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_signers",
          "type": "address[]"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isInitialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isSigner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isSpreadEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastUpdatedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxDeviationBasisPoints",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minAuthorizations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "priceDuration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "prices",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        }
      ],
      "name": "setAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_priceBitArray",
          "type": "uint256[]"
        }
      ],
      "name": "setCompactedPrices",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_fastPriceEvents",
          "type": "address"
        }
      ],
      "name": "setFastPriceEvents",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_gov",
          "type": "address"
        }
      ],
      "name": "setGov",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_isSpreadEnabled",
          "type": "bool"
        }
      ],
      "name": "setIsSpreadEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_priceDuration",
          "type": "uint256"
        }
      ],
      "name": "setPriceDuration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_prices",
          "type": "uint256[]"
        }
      ],
      "name": "setPrices",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_tokenPrecisions",
          "type": "uint256[]"
        }
      ],
      "name": "setTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_volBasisPoints",
          "type": "uint256"
        }
      ],
      "name": "setVolBasisPoints",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "tokenPrecisions",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "tokens",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "volBasisPoints",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000805460ff60a81b19168155600a5534801561002057600080fd5b50604051611932380380611932833981810160405260a081101561004357600080fd5b508051602082015160408301516060840151608090940151600080546001600160a01b03191633179055929391929091906107088511156100b55760405162461bcd60e51b815260040180806020018281038252602581526020018061190d6025913960400191505060405180910390fd5b600594909455600792909255600180546001600160a01b039283166001600160a01b0319918216179091556002805493831693821693909317909255600380549190931691161790556118008061010d6000396000f3fe608060405234801561001057600080fd5b50600436106101a15760003560e01c806303b04936146101a657806303cd2571146101e05780630e9272ea146101fa578063114fbeb31461021e578063126082cf1461022657806312d43a511461022e578063162ac4e0146102365780631d4e37401461025e578063287800c9146102ff5780632a709b1414610307578063392e53cd1461030f5780634352fa9f1461031757806344c231931461043a5780634d11fb4a146104575780634f64b2be1461047457806354aea12714610491578063668d3d6514610499578063695d4184146104a15780636ccd47c4146104a9578063704b6c02146104b1578063715c7536146104d75780637df73e27146104df5780637fece3681461050557806395082d25146105395780639e4de0e314610541578063a920b78c1461055e578063b0a2566614610606578063c0e4de8e1461060e578063c8390a4814610616578063c84a912414610739578063ce98dfa814610741578063cfad57a214610760578063cfed246b14610786578063f67e3bf0146107ac578063f851a440146107b4575b600080fd5b6101cc600480360360208110156101bc57600080fd5b50356001600160a01b03166107bc565b604080519115158252519081900360200190f35b6101e86107d1565b60408051918252519081900360200190f35b6102026107d7565b604080516001600160a01b039092168252519081900360200190f35b6101e86107e6565b6101e86107ec565b6102026107f2565b61025c6004803603602081101561024c57600080fd5b50356001600160a01b0316610801565b005b61025c6004803603602081101561027457600080fd5b810190602081018135600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460208302840111600160201b831117156102c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610870945050505050565b6101e8610a40565b610202610a46565b6101cc610a55565b61025c6004803603604081101561032d57600080fd5b810190602081018135600160201b81111561034757600080fd5b82018360208201111561035957600080fd5b803590602001918460208302840111600160201b8311171561037a57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460208302840111600160201b831117156103fc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a65945050505050565b61025c6004803603602081101561045057600080fd5b5035610bb0565b6101e86004803603602081101561046d57600080fd5b5035610c43565b6102026004803603602081101561048a57600080fd5b5035610c61565b6101e8610c88565b6101e8610c8e565b6101cc610c94565b61025c610ca4565b61025c600480360360208110156104c757600080fd5b50356001600160a01b0316610d84565b6101e8610df3565b6101cc600480360360208110156104f557600080fd5b50356001600160a01b0316610df9565b6101e86004803603606081101561051b57600080fd5b506001600160a01b0381351690602081013590604001351515610e0e565b6101e8610fcc565b61025c6004803603602081101561055757600080fd5b5035610fdc565b61025c6004803603604081101561057457600080fd5b81359190810190604081016020820135600160201b81111561059557600080fd5b8201836020820111156105a757600080fd5b803590602001918460208302840111600160201b831117156105c857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102e945050505050565b6101e8611135565b6101cc61113b565b61025c6004803603604081101561062c57600080fd5b810190602081018135600160201b81111561064657600080fd5b82018360208201111561065857600080fd5b803590602001918460208302840111600160201b8311171561067957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106c857600080fd5b8201836020820111156106da57600080fd5b803590602001918460208302840111600160201b831117156106fb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061115f945050505050565b61025c611229565b61025c6004803603602081101561075757600080fd5b50351515611308565b61025c6004803603602081101561077657600080fd5b50356001600160a01b0316611373565b6101e86004803603602081101561079c57600080fd5b50356001600160a01b03166113e2565b6101e86113f4565b6102026113fc565b600c6020526000908152604090205460ff1681565b60055481565b6001546001600160a01b031681565b60065481565b61271081565b6000546001600160a01b031681565b6000546001600160a01b0316331461084e576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146108bd576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b4260045560005b8151811015610a3b5760008282815181106108db57fe5b6020026020010151905060005b6008811015610a3157600d5460088402820190811061090a5750505050610a3d565b600d8054602084029185831c63ffffffff16916000919060088902870190811061093057fe5b6000918252602082200154600e80546001600160a01b0390921693509060088a02880190811061095c57fe5b60009182526020822001549150610989826109838668327cb2734119d3b7a9601e1b61140b565b9061146d565b6001600160a01b0380851660009081526008602052604090208290556001549192501615610a1f576001546040805163e0409c7160e01b81526001600160a01b038681166004830152602482018590529151919092169163e0409c7191604480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505050505b5050600190940193506108e892505050565b50506001016108c4565b505b50565b60095481565b6003546001600160a01b031681565b600054600160a01b900460ff1681565b6002546001600160a01b03163314610ab2576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b60005b8251811015610ba7576000838281518110610acc57fe5b60200260200101519050828281518110610ae257fe5b6020908102919091018101516001600160a01b03808416600090815260089093526040909220556001541615610b9e5760015483516001600160a01b039091169063e0409c71908390869086908110610b3757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b505050505b50600101610ab5565b50504260045550565b6000546001600160a01b03163314610bfd576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b610708811115610c3e5760405162461bcd60e51b81526004018080602001828103825260258152602001806117236025913960400191505060405180910390fd5b600555565b600e8181548110610c5057fe5b600091825260209091200154905081565b600d8181548110610c6e57fe5b6000918252602090912001546001600160a01b0316905081565b60045481565b61070881565b600054600160a81b900460ff1681565b336000908152600b602052604090205460ff16610cf6576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b336000908152600c602052604090205460ff16610d5a576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20616c726561647920656e61626c65640000604482015290519081900360640190fd5b336000908152600c60205260409020805460ff19169055600a54610d7f9060016114ac565b600a55565b6003546001600160a01b03163314610dd1576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b600b6020526000908152604090205460ff1681565b6000610e276005546004546114ee90919063ffffffff16565b421115610e35575081610fc5565b6001600160a01b03841660009081526008602052604090205480610e5c5783915050610fc5565b6000610e85612710610983610e7e6007546127106114ee90919063ffffffff16565b889061140b565b90506000610eb0612710610983610ea96007546127106114ac90919063ffffffff16565b899061140b565b9050610eba61113b565b15610f6b57808310158015610ecf5750818311155b15610f6b578415610f325782861115610f27576000610f0b612710610983610f046006546127106114ee90919063ffffffff16565b879061140b565b9050868111610f1a5780610f1c565b865b945050505050610fc5565b829350505050610fc5565b82861015610f27576000610f5c612710610983610f046006546127106114ac90919063ffffffff16565b9050868110610f1a5780610f1c565b8415610f9d5782861115610f8457859350505050610fc5565b818311610f915782610f93565b815b9350505050610fc5565b82861015610fb057859350505050610fc5565b808310610fbd5782610fbf565b805b93505050505b9392505050565b68327cb2734119d3b7a9601e1b81565b6000546001600160a01b03163314611029576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600655565b6000546001600160a01b0316331461107b576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156110c45760405162461bcd60e51b81526004018080602001828103825260228152602001806117a96022913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b17815560098390555b81518110156111305760008282815181106110f457fe5b6020908102919091018101516001600160a01b03166000908152600b90915260409020805460ff191660019081179091559190910190506110dd565b505050565b600a5481565b6000600954600a5410801561115a5750600054600160a81b900460ff16155b905090565b6000546001600160a01b031633146111ac576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b8051825114611202576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20696e76616c6964206c656e677468730000604482015290519081900360640190fd5b815161121590600d906020850190611642565b50805161113090600e9060208401906116a7565b336000908152600b602052604090205460ff1661127b576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b336000908152600c602052604090205460ff16156112df576040805162461bcd60e51b815260206004820152601c60248201527b11985cdd141c9a58d9519959590e88185b1c9958591e481d9bdd195960221b604482015290519081900360640190fd5b336000908152600c60205260409020805460ff19166001908117909155600a54610d7f916114ee565b6000546001600160a01b03163314611355576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b031633146113c0576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60086020526000908152604090205481565b63ffffffff81565b6002546001600160a01b031681565b60008261141a57506000611467565b8282028284828161142757fe5b04146114645760405162461bcd60e51b81526004018080602001828103825260218152602001806117886021913960400191505060405180910390fd5b90505b92915050565b600061146483836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611546565b600061146483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115e8565b600082820183811015611464576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600081836115d25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561159757818101518382015260200161157f565b50505050905090810190601f1680156115c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816115de57fe5b0495945050505050565b6000818484111561163a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561159757818101518382015260200161157f565b505050900390565b828054828255906000526020600020908101928215611697579160200282015b8281111561169757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611662565b506116a39291506116ee565b5090565b8280548282559060005260206000209081019282156116e2579160200282015b828111156116e25782518255916020019190600101906116c7565b506116a392915061170d565b5b808211156116a35780546001600160a01b03191681556001016116ef565b5b808211156116a3576000815560010161170e56fe466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e476f7665726e61626c653a20666f7262696464656e0000000000000000000000466173745072696365466565643a20666f7262696464656e0000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77466173745072696365466565643a20616c726561647920696e697469616c697a6564a2646970667358221220112f48f21379d004d9c258b065b56693249625344ffbb7bba6779c623f60e6cf64736f6c634300060c0033466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a15760003560e01c806303b04936146101a657806303cd2571146101e05780630e9272ea146101fa578063114fbeb31461021e578063126082cf1461022657806312d43a511461022e578063162ac4e0146102365780631d4e37401461025e578063287800c9146102ff5780632a709b1414610307578063392e53cd1461030f5780634352fa9f1461031757806344c231931461043a5780634d11fb4a146104575780634f64b2be1461047457806354aea12714610491578063668d3d6514610499578063695d4184146104a15780636ccd47c4146104a9578063704b6c02146104b1578063715c7536146104d75780637df73e27146104df5780637fece3681461050557806395082d25146105395780639e4de0e314610541578063a920b78c1461055e578063b0a2566614610606578063c0e4de8e1461060e578063c8390a4814610616578063c84a912414610739578063ce98dfa814610741578063cfad57a214610760578063cfed246b14610786578063f67e3bf0146107ac578063f851a440146107b4575b600080fd5b6101cc600480360360208110156101bc57600080fd5b50356001600160a01b03166107bc565b604080519115158252519081900360200190f35b6101e86107d1565b60408051918252519081900360200190f35b6102026107d7565b604080516001600160a01b039092168252519081900360200190f35b6101e86107e6565b6101e86107ec565b6102026107f2565b61025c6004803603602081101561024c57600080fd5b50356001600160a01b0316610801565b005b61025c6004803603602081101561027457600080fd5b810190602081018135600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460208302840111600160201b831117156102c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610870945050505050565b6101e8610a40565b610202610a46565b6101cc610a55565b61025c6004803603604081101561032d57600080fd5b810190602081018135600160201b81111561034757600080fd5b82018360208201111561035957600080fd5b803590602001918460208302840111600160201b8311171561037a57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460208302840111600160201b831117156103fc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a65945050505050565b61025c6004803603602081101561045057600080fd5b5035610bb0565b6101e86004803603602081101561046d57600080fd5b5035610c43565b6102026004803603602081101561048a57600080fd5b5035610c61565b6101e8610c88565b6101e8610c8e565b6101cc610c94565b61025c610ca4565b61025c600480360360208110156104c757600080fd5b50356001600160a01b0316610d84565b6101e8610df3565b6101cc600480360360208110156104f557600080fd5b50356001600160a01b0316610df9565b6101e86004803603606081101561051b57600080fd5b506001600160a01b0381351690602081013590604001351515610e0e565b6101e8610fcc565b61025c6004803603602081101561055757600080fd5b5035610fdc565b61025c6004803603604081101561057457600080fd5b81359190810190604081016020820135600160201b81111561059557600080fd5b8201836020820111156105a757600080fd5b803590602001918460208302840111600160201b831117156105c857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102e945050505050565b6101e8611135565b6101cc61113b565b61025c6004803603604081101561062c57600080fd5b810190602081018135600160201b81111561064657600080fd5b82018360208201111561065857600080fd5b803590602001918460208302840111600160201b8311171561067957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156106c857600080fd5b8201836020820111156106da57600080fd5b803590602001918460208302840111600160201b831117156106fb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061115f945050505050565b61025c611229565b61025c6004803603602081101561075757600080fd5b50351515611308565b61025c6004803603602081101561077657600080fd5b50356001600160a01b0316611373565b6101e86004803603602081101561079c57600080fd5b50356001600160a01b03166113e2565b6101e86113f4565b6102026113fc565b600c6020526000908152604090205460ff1681565b60055481565b6001546001600160a01b031681565b60065481565b61271081565b6000546001600160a01b031681565b6000546001600160a01b0316331461084e576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146108bd576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b4260045560005b8151811015610a3b5760008282815181106108db57fe5b6020026020010151905060005b6008811015610a3157600d5460088402820190811061090a5750505050610a3d565b600d8054602084029185831c63ffffffff16916000919060088902870190811061093057fe5b6000918252602082200154600e80546001600160a01b0390921693509060088a02880190811061095c57fe5b60009182526020822001549150610989826109838668327cb2734119d3b7a9601e1b61140b565b9061146d565b6001600160a01b0380851660009081526008602052604090208290556001549192501615610a1f576001546040805163e0409c7160e01b81526001600160a01b038681166004830152602482018590529151919092169163e0409c7191604480830192600092919082900301818387803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505050505b5050600190940193506108e892505050565b50506001016108c4565b505b50565b60095481565b6003546001600160a01b031681565b600054600160a01b900460ff1681565b6002546001600160a01b03163314610ab2576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b60005b8251811015610ba7576000838281518110610acc57fe5b60200260200101519050828281518110610ae257fe5b6020908102919091018101516001600160a01b03808416600090815260089093526040909220556001541615610b9e5760015483516001600160a01b039091169063e0409c71908390869086908110610b3757fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610b8557600080fd5b505af1158015610b99573d6000803e3d6000fd5b505050505b50600101610ab5565b50504260045550565b6000546001600160a01b03163314610bfd576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b610708811115610c3e5760405162461bcd60e51b81526004018080602001828103825260258152602001806117236025913960400191505060405180910390fd5b600555565b600e8181548110610c5057fe5b600091825260209091200154905081565b600d8181548110610c6e57fe5b6000918252602090912001546001600160a01b0316905081565b60045481565b61070881565b600054600160a81b900460ff1681565b336000908152600b602052604090205460ff16610cf6576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b336000908152600c602052604090205460ff16610d5a576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20616c726561647920656e61626c65640000604482015290519081900360640190fd5b336000908152600c60205260409020805460ff19169055600a54610d7f9060016114ac565b600a55565b6003546001600160a01b03163314610dd1576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60075481565b600b6020526000908152604090205460ff1681565b6000610e276005546004546114ee90919063ffffffff16565b421115610e35575081610fc5565b6001600160a01b03841660009081526008602052604090205480610e5c5783915050610fc5565b6000610e85612710610983610e7e6007546127106114ee90919063ffffffff16565b889061140b565b90506000610eb0612710610983610ea96007546127106114ac90919063ffffffff16565b899061140b565b9050610eba61113b565b15610f6b57808310158015610ecf5750818311155b15610f6b578415610f325782861115610f27576000610f0b612710610983610f046006546127106114ee90919063ffffffff16565b879061140b565b9050868111610f1a5780610f1c565b865b945050505050610fc5565b829350505050610fc5565b82861015610f27576000610f5c612710610983610f046006546127106114ac90919063ffffffff16565b9050868110610f1a5780610f1c565b8415610f9d5782861115610f8457859350505050610fc5565b818311610f915782610f93565b815b9350505050610fc5565b82861015610fb057859350505050610fc5565b808310610fbd5782610fbf565b805b93505050505b9392505050565b68327cb2734119d3b7a9601e1b81565b6000546001600160a01b03163314611029576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600655565b6000546001600160a01b0316331461107b576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600054600160a01b900460ff16156110c45760405162461bcd60e51b81526004018080602001828103825260228152602001806117a96022913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b17815560098390555b81518110156111305760008282815181106110f457fe5b6020908102919091018101516001600160a01b03166000908152600b90915260409020805460ff191660019081179091559190910190506110dd565b505050565b600a5481565b6000600954600a5410801561115a5750600054600160a81b900460ff16155b905090565b6000546001600160a01b031633146111ac576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b8051825114611202576040805162461bcd60e51b815260206004820152601e60248201527f466173745072696365466565643a20696e76616c6964206c656e677468730000604482015290519081900360640190fd5b815161121590600d906020850190611642565b50805161113090600e9060208401906116a7565b336000908152600b602052604090205460ff1661127b576040805162461bcd60e51b81526020600482015260186024820152600080516020611768833981519152604482015290519081900360640190fd5b336000908152600c602052604090205460ff16156112df576040805162461bcd60e51b815260206004820152601c60248201527b11985cdd141c9a58d9519959590e88185b1c9958591e481d9bdd195960221b604482015290519081900360640190fd5b336000908152600c60205260409020805460ff19166001908117909155600a54610d7f916114ee565b6000546001600160a01b03163314611355576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b60008054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b031633146113c0576040805162461bcd60e51b81526020600482015260156024820152600080516020611748833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60086020526000908152604090205481565b63ffffffff81565b6002546001600160a01b031681565b60008261141a57506000611467565b8282028284828161142757fe5b04146114645760405162461bcd60e51b81526004018080602001828103825260218152602001806117886021913960400191505060405180910390fd5b90505b92915050565b600061146483836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611546565b600061146483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115e8565b600082820183811015611464576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600081836115d25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561159757818101518382015260200161157f565b50505050905090810190601f1680156115c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816115de57fe5b0495945050505050565b6000818484111561163a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561159757818101518382015260200161157f565b505050900390565b828054828255906000526020600020908101928215611697579160200282015b8281111561169757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611662565b506116a39291506116ee565b5090565b8280548282559060005260206000209081019282156116e2579160200282015b828111156116e25782518255916020019190600101906116c7565b506116a392915061170d565b5b808211156116a35780546001600160a01b03191681556001016116ef565b5b808211156116a3576000815560010161170e56fe466173745072696365466565643a20696e76616c6964205f70726963654475726174696f6e476f7665726e61626c653a20666f7262696464656e0000000000000000000000466173745072696365466565643a20666f7262696464656e0000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77466173745072696365466565643a20616c726561647920696e697469616c697a6564a2646970667358221220112f48f21379d004d9c258b065b56693249625344ffbb7bba6779c623f60e6cf64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
