'use strict'
Object.defineProperty(exports, '__esModule', { value: true })
const contract = require('@truffle/contract')
const DeviationFlaggingValidator = contract({
 "contractName": "DeviationFlaggingValidator",
 "abi": [
  {
   "inputs": [
    {
     "internalType": "address",
     "name": "_flags",
     "type": "address"
    },
    {
     "internalType": "uint24",
     "name": "_flaggingThreshold",
     "type": "uint24"
    }
   ],
   "stateMutability": "nonpayable",
   "type": "constructor"
  },
  {
   "anonymous": false,
   "inputs": [
    {
     "indexed": true,
     "internalType": "uint24",
     "name": "previous",
     "type": "uint24"
    },
    {
     "indexed": true,
     "internalType": "uint24",
     "name": "current",
     "type": "uint24"
    }
   ],
   "name": "FlaggingThresholdUpdated",
   "type": "event"
  },
  {
   "anonymous": false,
   "inputs": [
    {
     "indexed": true,
     "internalType": "address",
     "name": "previous",
     "type": "address"
    },
    {
     "indexed": true,
     "internalType": "address",
     "name": "current",
     "type": "address"
    }
   ],
   "name": "FlagsAddressUpdated",
   "type": "event"
  },
  {
   "anonymous": false,
   "inputs": [
    {
     "indexed": true,
     "internalType": "address",
     "name": "from",
     "type": "address"
    },
    {
     "indexed": true,
     "internalType": "address",
     "name": "to",
     "type": "address"
    }
   ],
   "name": "OwnershipTransferRequested",
   "type": "event"
  },
  {
   "anonymous": false,
   "inputs": [
    {
     "indexed": true,
     "internalType": "address",
     "name": "from",
     "type": "address"
    },
    {
     "indexed": true,
     "internalType": "address",
     "name": "to",
     "type": "address"
    }
   ],
   "name": "OwnershipTransferred",
   "type": "event"
  },
  {
   "inputs": [],
   "name": "THRESHOLD_MULTIPLIER",
   "outputs": [
    {
     "internalType": "uint32",
     "name": "",
     "type": "uint32"
    }
   ],
   "stateMutability": "view",
   "type": "function"
  },
  {
   "inputs": [],
   "name": "acceptOwnership",
   "outputs": [],
   "stateMutability": "nonpayable",
   "type": "function"
  },
  {
   "inputs": [],
   "name": "flaggingThreshold",
   "outputs": [
    {
     "internalType": "uint32",
     "name": "",
     "type": "uint32"
    }
   ],
   "stateMutability": "view",
   "type": "function"
  },
  {
   "inputs": [],
   "name": "flags",
   "outputs": [
    {
     "internalType": "contract FlagsInterface",
     "name": "",
     "type": "address"
    }
   ],
   "stateMutability": "view",
   "type": "function"
  },
  {
   "inputs": [
    {
     "internalType": "uint256",
     "name": "",
     "type": "uint256"
    },
    {
     "internalType": "int256",
     "name": "_previousAnswer",
     "type": "int256"
    },
    {
     "internalType": "uint256",
     "name": "",
     "type": "uint256"
    },
    {
     "internalType": "int256",
     "name": "_answer",
     "type": "int256"
    }
   ],
   "name": "isValid",
   "outputs": [
    {
     "internalType": "bool",
     "name": "",
     "type": "bool"
    }
   ],
   "stateMutability": "view",
   "type": "function"
  },
  {
   "inputs": [],
   "name": "owner",
   "outputs": [
    {
     "internalType": "address",
     "name": "",
     "type": "address"
    }
   ],
   "stateMutability": "view",
   "type": "function"
  },
  {
   "inputs": [
    {
     "internalType": "uint24",
     "name": "_flaggingThreshold",
     "type": "uint24"
    }
   ],
   "name": "setFlaggingThreshold",
   "outputs": [],
   "stateMutability": "nonpayable",
   "type": "function"
  },
  {
   "inputs": [
    {
     "internalType": "address",
     "name": "_flags",
     "type": "address"
    }
   ],
   "name": "setFlagsAddress",
   "outputs": [],
   "stateMutability": "nonpayable",
   "type": "function"
  },
  {
   "inputs": [
    {
     "internalType": "address",
     "name": "_to",
     "type": "address"
    }
   ],
   "name": "transferOwnership",
   "outputs": [],
   "stateMutability": "nonpayable",
   "type": "function"
  },
  {
   "inputs": [
    {
     "internalType": "uint256",
     "name": "_previousRoundId",
     "type": "uint256"
    },
    {
     "internalType": "int256",
     "name": "_previousAnswer",
     "type": "int256"
    },
    {
     "internalType": "uint256",
     "name": "_roundId",
     "type": "uint256"
    },
    {
     "internalType": "int256",
     "name": "_answer",
     "type": "int256"
    }
   ],
   "name": "validate",
   "outputs": [
    {
     "internalType": "bool",
     "name": "",
     "type": "bool"
    }
   ],
   "stateMutability": "nonpayable",
   "type": "function"
  }
 ],
 "evm": {
  "bytecode": {
   "linkReferences": {},
   "object": " ",
   "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xC65 CODESIZE SUB DUP1 PUSH2 0xC65 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x60 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x79 AND JUMP JUMPDEST PUSH2 0x72 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x141 AND JUMP JUMPDEST POP POP PUSH2 0x215 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP3 AND DUP2 EQ PUSH2 0x13D JUMPI PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP4 AND SWAP1 PUSH32 0x900AA01828592AB069E4D44E7A36C70EBD476E35F567C7DB6A691E503B8029D8 SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH3 0xFFFFFF DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0x13D JUMPI PUSH1 0x1 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA0 SHL NOT AND PUSH3 0xFFFFFF DUP5 DUP2 AND PUSH1 0x1 PUSH1 0xA0 SHL DUP2 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP4 AND SWAP1 PUSH32 0x985B87E809FD5992EC257EAC36F25777CE308055DD9249A0182123D7B5D6633A SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xA41 DUP1 PUSH2 0x224 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEED8A1DE GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xF2C0EA92 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xF2C0EA92 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xFFD93670 EQ PUSH2 0x1FA JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xEED8A1DE EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0xF1987695 EQ PUSH2 0x18C JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x79BA5097 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xBEED9B51 EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x910CE4A EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x64CC4AA5 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x229 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xEC PUSH2 0x24D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11D PUSH2 0x269 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEC PUSH2 0x36B JUMP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x387 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x438 JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x56E JUMP JUMPDEST PUSH2 0xCB PUSH2 0x68E JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x695 JUMP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x791 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742062652070726F706F736564206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP1 DUP4 AND DUP3 OR DUP5 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP2 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x395 DUP6 DUP6 DUP6 DUP6 PUSH2 0x791 JUMP JUMPDEST PUSH2 0x42C JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD74AF26300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xD74AF263 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 POP PUSH2 0x430 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH3 0xFFFFFF DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0x56A JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFFFFFF DUP5 DUP2 AND PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP4 AND SWAP1 PUSH32 0x985B87E809FD5992EC257EAC36F25777CE308055DD9249A0182123D7B5D6633A SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x5F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 AND DUP2 EQ PUSH2 0x56A JUMPI PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP4 AND SWAP1 PUSH32 0x900AA01828592AB069E4D44E7A36C70EBD476E35F567C7DB6A691E503B8029D8 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH3 0x186A0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x71B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD SWAP3 SWAP4 AND SWAP2 PUSH32 0xED8889F560326EB138920D842192F0EB3DD22B4F139C87A2C57538E05BAE1278 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x7A0 JUMPI POP PUSH1 0x1 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7B3 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x84D AND JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x7C8 DUP5 PUSH3 0x186A0 PUSH2 0x898 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x7E0 DUP5 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x92A AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x7F0 DUP5 PUSH2 0x9B3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP1 ISZERO PUSH2 0x7FE JUMPI POP DUP5 JUMPDEST DUP1 ISZERO PUSH2 0x807 JUMPI POP DUP3 JUMPDEST DUP1 ISZERO PUSH2 0x810 JUMPI POP DUP1 JUMPDEST DUP1 ISZERO PUSH2 0x83C JUMPI POP PUSH1 0x1 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 GT ISZERO JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB DUP2 DUP5 SLT DUP1 ISZERO PUSH2 0x862 JUMPI POP DUP5 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x878 JUMPI POP PUSH1 0x0 DUP5 SLT ISZERO DUP1 ISZERO PUSH2 0x878 JUMPI POP DUP5 DUP2 SGT JUMPDEST ISZERO PUSH2 0x88A JUMPI POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x891 JUMP JUMPDEST SWAP2 POP PUSH1 0x1 SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x8AC JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 PUSH2 0x891 JUMP JUMPDEST DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ DUP1 ISZERO PUSH2 0x8FA JUMPI POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 EQ JUMPDEST ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x891 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x917 JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0x88A JUMPI POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x93D JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x891 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ DUP1 ISZERO PUSH2 0x98B JUMPI POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP5 EQ JUMPDEST ISZERO PUSH2 0x99B JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x9A6 JUMPI INVALID JUMPDEST SDIV SWAP6 PUSH1 0x1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 SLT PUSH2 0x9C9 JUMPI POP DUP2 SWAP1 POP PUSH1 0x1 PUSH2 0xA06 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 EQ ISZERO PUSH2 0x9FC JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0xA06 JUMP JUMPDEST POP POP PUSH1 0x0 DUP2 SWAP1 SUB PUSH1 0x1 JUMPDEST SWAP2 POP SWAP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV 0xBC 0xD DUP16 PC CHAINID PUSH30 0x4223A18C535BADB7E6CFF0E58C6E71B17A205D8B787DF7779A64736F6C63 NUMBER STOP MOD MOD STOP CALLER ",
   "sourceMap": "513:4070:6:-:0;;;1330:160;5:9:-1;2:2;;;27:1;24;17:12;2:2;1330:160:6;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1330:160:6;;;;;;;438:5:13;:18;;-1:-1:-1;;;;;;438:18:13;446:10;438:18;;;1416:23:6;1330:160;-1:-1:-1;;;;;1416:15:6;:23;:::i;:::-;1445:40;1466:18;-1:-1:-1;;;;;1445:20:6;:40;:::i;:::-;1330:160;;513:4070;;4079:240;1194:5:13;;-1:-1:-1;;;;;1194:5:13;1180:10;:19;1172:54;;;;;-1:-1:-1;;;1172:54:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;4182:5:6::1;::::0;-1:-1:-1;;;;;4182:5:6;;::::1;::::0;4199:18;::::1;::::0;::::1;4195:120;;4227:5;:30:::0;;-1:-1:-1;;;;;;4227:30:6::1;-1:-1:-1::0;;;;;4227:30:6;;::::1;::::0;;::::1;::::0;;;4271:37:::1;::::0;4227:30;;4271:37;::::1;::::0;::::1;::::0;-1:-1:-1;;4271:37:6::1;4195:120;1232:1:13;4079:240:6::0;:::o;3627:309::-;1194:5:13;;-1:-1:-1;;;;;1194:5:13;1180:10;:19;1172:54;;;;;-1:-1:-1;;;1172:54:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3746:17:6::1;::::0;-1:-1:-1;;;3746:17:6;::::1;;::::0;::::1;::::0;3775:32:::1;::::0;;::::1;::::0;;::::1;3771:161;;3817:17;:38:::0;;-1:-1:-1;;;;3817:38:6::1;;::::0;;::::1;-1:-1:-1::0;;;3817:38:6;::::1;::::0;;;::::1;::::0;;;3869:56:::1;::::0;3817:38;;3869:56;::::1;::::0;::::1;::::0;-1:-1:-1;;3869:56:6::1;1232:1:13;3627:309:6::0;:::o;513:4070::-;;;;;;;"
  },
  "deployedBytecode": {
   "immutableReferences": {},
   "linkReferences": {},
   "object": " ",
   "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEED8A1DE GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xF2C0EA92 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xF2C0EA92 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xFFD93670 EQ PUSH2 0x1FA JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xEED8A1DE EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0xF1987695 EQ PUSH2 0x18C JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x79BA5097 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x79BA5097 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xBEED9B51 EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x910CE4A EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x64CC4AA5 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x229 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xEC PUSH2 0x24D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11D PUSH2 0x269 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEC PUSH2 0x36B JUMP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x387 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x438 JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x56E JUMP JUMPDEST PUSH2 0xCB PUSH2 0x68E JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x695 JUMP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x791 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D7573742062652070726F706F736564206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD CALLER PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP1 DUP4 AND DUP3 OR DUP5 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP2 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x395 DUP6 DUP6 DUP6 DUP6 PUSH2 0x791 JUMP JUMPDEST PUSH2 0x42C JUMPI PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xD74AF26300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xD74AF263 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x41F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 SWAP1 POP PUSH2 0x430 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4BE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF DUP2 AND SWAP1 PUSH3 0xFFFFFF DUP4 DUP2 AND SWAP2 AND EQ PUSH2 0x56A JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFFFFFF DUP5 DUP2 AND PUSH21 0x10000000000000000000000000000000000000000 DUP2 MUL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP4 AND SWAP1 PUSH32 0x985B87E809FD5992EC257EAC36F25777CE308055DD9249A0182123D7B5D6633A SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x5F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP3 AND DUP2 EQ PUSH2 0x56A JUMPI PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP4 AND SWAP1 PUSH32 0x900AA01828592AB069E4D44E7A36C70EBD476E35F567C7DB6A691E503B8029D8 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH3 0x186A0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x71B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792063616C6C61626C65206279206F776E657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD SWAP3 SWAP4 AND SWAP2 PUSH32 0xED8889F560326EB138920D842192F0EB3DD22B4F139C87A2C57538E05BAE1278 SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x7A0 JUMPI POP PUSH1 0x1 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7B3 DUP7 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x84D AND JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x7C8 DUP5 PUSH3 0x186A0 PUSH2 0x898 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x7E0 DUP5 DUP12 PUSH4 0xFFFFFFFF PUSH2 0x92A AND JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x7F0 DUP5 PUSH2 0x9B3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP1 ISZERO PUSH2 0x7FE JUMPI POP DUP5 JUMPDEST DUP1 ISZERO PUSH2 0x807 JUMPI POP DUP3 JUMPDEST DUP1 ISZERO PUSH2 0x810 JUMPI POP DUP1 JUMPDEST DUP1 ISZERO PUSH2 0x83C JUMPI POP PUSH1 0x1 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 GT ISZERO JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB DUP2 DUP5 SLT DUP1 ISZERO PUSH2 0x862 JUMPI POP DUP5 DUP2 SGT ISZERO JUMPDEST DUP1 PUSH2 0x878 JUMPI POP PUSH1 0x0 DUP5 SLT ISZERO DUP1 ISZERO PUSH2 0x878 JUMPI POP DUP5 DUP2 SGT JUMPDEST ISZERO PUSH2 0x88A JUMPI POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x891 JUMP JUMPDEST SWAP2 POP PUSH1 0x1 SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0x8AC JUMPI POP PUSH1 0x0 SWAP1 POP PUSH1 0x1 PUSH2 0x891 JUMP JUMPDEST DUP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ DUP1 ISZERO PUSH2 0x8FA JUMPI POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 EQ JUMPDEST ISZERO PUSH2 0x90A JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x891 JUMP JUMPDEST DUP4 DUP4 MUL DUP4 DUP6 DUP3 DUP2 PUSH2 0x917 JUMPI INVALID JUMPDEST SDIV EQ PUSH2 0x88A JUMPI POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH2 0x93D JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x891 JUMP JUMPDEST DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ DUP1 ISZERO PUSH2 0x98B JUMPI POP PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP5 EQ JUMPDEST ISZERO PUSH2 0x99B JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x891 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x9A6 JUMPI INVALID JUMPDEST SDIV SWAP6 PUSH1 0x1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 SLT PUSH2 0x9C9 JUMPI POP DUP2 SWAP1 POP PUSH1 0x1 PUSH2 0xA06 JUMP JUMPDEST PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP4 EQ ISZERO PUSH2 0x9FC JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0xA06 JUMP JUMPDEST POP POP PUSH1 0x0 DUP2 SWAP1 SUB PUSH1 0x1 JUMPDEST SWAP2 POP SWAP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV 0xBC 0xD DUP16 PC CHAINID PUSH30 0x4223A18C535BADB7E6CFF0E58C6E71B17A205D8B787DF7779A64736F6C63 NUMBER STOP MOD MOD STOP CALLER ",
   "sourceMap": "513:4070:6:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;513:4070:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;682:31:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;717:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;806:254:13;;;:::i;:::-;;179:20;;;:::i;2005:327:6:-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2005:327:6;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3627:309;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3627:309:6;;;;:::i;4079:240::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4079:240:6;;;;:::i;625:52::-;;;:::i;567:150:13:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;567:150:13;;;;:::i;2830:535:6:-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2830:535:6;;;;;;;;;;;;;;;;;:::i;682:31::-;;;;;;;;;:::o;717:27::-;;;;;;:::o;806:254:13:-;876:12;;;;862:10;:26;854:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;922:16;941:5;;960:10;952:18;;;;;;;;-1:-1:-1;976:25:13;;;;;;;1013:42;;941:5;;;;;960:10;;941:5;;1013:42;;;806:254;:::o;179:20::-;;;;;;:::o;2005:327:6:-;2166:4;2185:61;2193:16;2211:15;2228:8;2238:7;2185;:61::i;:::-;2180:130;;2256:5;;:27;;;;;;2272:10;2256:27;;;;;;:5;;;;;:15;;:27;;;;;:5;;:27;;;;;;;;:5;;:27;;;2:2:-1;;;;27:1;24;17:12;2:2;2256:27:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2256:27:6;;;;2298:5;2291:12;;;;2180:130;-1:-1:-1;2323:4:6;2005:327;;;;;;;:::o;3627:309::-;1194:5:13;;;;1180:10;:19;1172:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3746:17:6::1;::::0;;;::::1;;::::0;::::1;::::0;3775:32:::1;::::0;;::::1;::::0;;::::1;3771:161;;3817:17;:38:::0;;;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;3869:56:::1;::::0;3817:38;;3869:56;::::1;::::0;::::1;::::0;-1:-1:-1;;3869:56:6::1;3771:161;1232:1:13;3627:309:6::0;:::o;4079:240::-;1194:5:13;;;;1180:10;:19;1172:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4182:5:6::1;::::0;::::1;::::0;;::::1;::::0;4199:18;::::1;::::0;::::1;4195:120;;4227:5;:30:::0;;;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;4271:37:::1;::::0;4227:30;;4271:37;::::1;::::0;::::1;::::0;-1:-1:-1;;4271:37:6::1;1232:1:13;4079:240:6::0;:::o;625:52::-;671:6;625:52;:::o;567:150:13:-;1194:5;;;;1180:10;:19;1172:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:12:::1;:18:::0;;;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;701:5:13;;674:38:::1;::::0;644:18;;701:5:::1;::::0;674:38:::1;::::0;-1:-1:-1;674:38:13::1;567:150:::0;:::o;2830:535:6:-;2960:4;2978:20;2974:37;;-1:-1:-1;3007:4:6;3000:11;;2974:37;3019:13;;3051:28;:15;3071:7;3051:28;:19;:28;:::i;:::-;3018:61;;-1:-1:-1;3018:61:6;-1:-1:-1;3086:21:6;;3123:32;3018:61;671:6;3123:10;:32::i;:::-;3085:70;;-1:-1:-1;3085:70:6;-1:-1:-1;3162:12:6;;3192:35;3085:70;3211:15;3192:35;:18;:35;:::i;:::-;3161:66;;;;3234:16;3252:10;3266;3270:5;3266:3;:10::i;:::-;3233:43;;;;3290:8;:17;;;;;3302:5;3290:17;:28;;;;;3311:7;3290:28;:37;;;;;3322:5;3290:37;:70;;;;-1:-1:-1;3343:17:6;;;;;;;3331:29;;;3290:70;3283:77;2830:535;-1:-1:-1;;;;;;;;;;;;;2830:535:6:o;691:223:5:-;771:13;;814:5;;;830;;;:15;;;;;844:1;839;:6;;830:15;829:38;;;;856:1;851;:6;;:15;;;;;865:1;861;:5;851:15;825:61;;;-1:-1:-1;877:1:5;;-1:-1:-1;877:1:5;;-1:-1:-1;869:17:5;;825:61;901:1;-1:-1:-1;904:4:5;;-1:-1:-1;691:223:5;;;;;;:::o;1010:494::-;1090:13;;1332:6;1328:28;;-1:-1:-1;1348:1:5;;-1:-1:-1;1351:4:5;1340:16;;1328:28;1366:1;1371:2;1366:7;:26;;;;;272:7;1377:1;:15;1366:26;1362:49;;;-1:-1:-1;1402:1:5;;-1:-1:-1;1402:1:5;1394:17;;1362:49;1429:5;;;1433:1;1429;:5;:1;1446:5;;;;;:10;1440:36;;-1:-1:-1;1467:1:5;;-1:-1:-1;1467:1:5;;-1:-1:-1;1459:17:5;;1596:247;1676:13;;1712:6;1708:29;;-1:-1:-1;1728:1:5;;-1:-1:-1;1728:1:5;1720:17;;1708:29;1747:1;1752:2;1747:7;:26;;;;;272:7;1758:1;:15;1747:26;1743:49;;;-1:-1:-1;1783:1:5;;-1:-1:-1;1783:1:5;1775:17;;1743:49;1799:8;1814:1;1810;:5;;;;;;;1833:4;;-1:-1:-1;1596:247:5;-1:-1:-1;;;;1596:247:5:o;4338:242:6:-;4407:7;4416:4;4443:1;4434:5;:10;4430:45;;-1:-1:-1;4462:5:6;;-1:-1:-1;4470:4:6;4446:29;;4430:45;272:7:5;4485:5:6;:31;4481:54;;;-1:-1:-1;4526:1:6;;-1:-1:-1;4526:1:6;4518:17;;4481:54;-1:-1:-1;;4557:10:6;;;;4570:4;4338:242;;;;:::o"
  },
  "methodIdentifiers": {
   "THRESHOLD_MULTIPLIER()": "f2c0ea92",
   "acceptOwnership()": "79ba5097",
   "flaggingThreshold()": "0910ce4a",
   "flags()": "64cc4aa5",
   "isValid(uint256,int256,uint256,int256)": "ffd93670",
   "owner()": "8da5cb5b",
   "setFlaggingThreshold(uint24)": "eed8a1de",
   "setFlagsAddress(address)": "f1987695",
   "transferOwnership(address)": "f2fde38b",
   "validate(uint256,int256,uint256,int256)": "beed9b51"
  }
 },
 "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_flags\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"_flaggingThreshold\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"previous\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"current\",\"type\":\"uint24\"}],\"name\":\"FlaggingThresholdUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previous\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"current\",\"type\":\"address\"}],\"name\":\"FlagsAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"THRESHOLD_MULTIPLIER\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flaggingThreshold\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flags\",\"outputs\":[{\"internalType\":\"contract FlagsInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"_previousAnswer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"_answer\",\"type\":\"int256\"}],\"name\":\"isValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"_flaggingThreshold\",\"type\":\"uint24\"}],\"name\":\"setFlaggingThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_flags\",\"type\":\"address\"}],\"name\":\"setFlagsAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_previousRoundId\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"_previousAnswer\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"_roundId\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"_answer\",\"type\":\"int256\"}],\"name\":\"validate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"acceptOwnership()\":{\"details\":\"Allows an ownership transfer to be completed by the recipient.\"},\"constructor\":{\"params\":{\"_flaggingThreshold\":\"sets the threshold that will trigger a flag to be raised. Setting the value of 100,000 is equivalent to tolerating a 100% change compared to the previous price.\",\"_flags\":\"sets the address of the flags contract\"}},\"isValid(uint256,int256,uint256,int256)\":{\"params\":{\"_answer\":\"is the current answer which is compared for a ratio of change * to make sure it has not execeeded the flagging threshold.\",\"_previousAnswer\":\"is used as the median of the difference with the current answer to determine if the deviation threshold has been exceeded.\"}},\"setFlaggingThreshold(uint24)\":{\"params\":{\"_flaggingThreshold\":\"sets the threshold that will trigger a flag to be raised. Setting the value of 100,000 is equivalent to tolerating a 100% change compared to the previous price.\"}},\"setFlagsAddress(address)\":{\"params\":{\"_flags\":\"sets the address of the flags contract\"}},\"transferOwnership(address)\":{\"details\":\"Allows an owner to begin transferring ownership to a new address, pending.\"},\"validate(uint256,int256,uint256,int256)\":{\"params\":{\"_answer\":\"is the latest answer which is compared for a ratio of change to make sure it has not execeeded the flagging threshold.\",\"_previousAnswer\":\"is used as the median of the difference with the current answer to determine if the deviation threshold has been exceeded.\",\"_previousRoundId\":\"is ignored.\",\"_roundId\":\"is ignored.\"}}},\"title\":\"The Deviation Flagging Validator contract\"},\"userdoc\":{\"methods\":{\"constructor\":\"sets up the validator with its threshold and flag address.\",\"isValid(uint256,int256,uint256,int256)\":{\"notice\":\"checks whether the parameters count as valid by comparing the difference change to the flagging threshold and raises a flag on the flagging contract if so.\"},\"setFlaggingThreshold(uint24)\":{\"notice\":\"updates the flagging threshold\"},\"setFlagsAddress(address)\":{\"notice\":\"updates the flagging contract address for raising flags\"},\"validate(uint256,int256,uint256,int256)\":{\"notice\":\"checks whether the parameters count as valid by comparing the difference change to the flagging threshold.\"}},\"notice\":\"Checks the current value against the previous value, and makes sure that it does not deviate outside of some relative range. If the deviation threshold is passed then the validator raises a flag on the designated flag contract.\"}},\"settings\":{\"compilationTarget\":{\"/Users/steve/workspace/chainlink/evm-contracts/src/v0.6/DeviationFlaggingValidator.sol\":\"DeviationFlaggingValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/Users/steve/workspace/chainlink/evm-contracts/src/v0.6/CheckedMath.sol\":{\"keccak256\":\"0x439a63c43130864169cc5c31b5a812389cc1d9ebf292cdf64f47c4d059d3c48e\",\"urls\":[\"bzz-raw://a18a2d559d2bb124030cbb399d54b214a977d7c94e6f53cc7b2b0e4d1c89c8c1\",\"dweb:/ipfs/QmWvLUVcBfhDeXSKBgVnFRkZetP4XfRxvWVNq4VXf9Bghw\"]},\"/Users/steve/workspace/chainlink/evm-contracts/src/v0.6/DeviationFlaggingValidator.sol\":{\"keccak256\":\"0x0a1801803c05d2e88d4415e3914e6a4cc445e653acf19eb0220761e8d64bff8d\",\"urls\":[\"bzz-raw://d982c8467afa37034e1d5f8e50df96e6270b4e35518261cde1f10f02f7d62f04\",\"dweb:/ipfs/QmWdvKq1ZsuqqhGDS5gJoUg6gGcakTuvvV1UzocSBwWyCo\"]},\"/Users/steve/workspace/chainlink/evm-contracts/src/v0.6/Owned.sol\":{\"keccak256\":\"0xd791ecc6095e7f3b0a49f036f1fd9011873e5c7c04d2b28292d11e15c0967b75\",\"urls\":[\"bzz-raw://1cc68291e0dc79fb6a140a2f4e667392fe71d0e7814bad3b56ae47dd13f69ba7\",\"dweb:/ipfs/QmQFTFFBjaJsb7sivr25R4XfNKW84nDjZWSGMY7Cc8eqqC\"]},\"/Users/steve/workspace/chainlink/evm-contracts/src/v0.6/interfaces/AggregatorValidatorInterface.sol\":{\"keccak256\":\"0x9403d756c0e628ea0886db03668ec0a9a9b8cb8c781a57da68d05fb5f1faf976\",\"urls\":[\"bzz-raw://3cfe28f8e87ffb4c730e528874eb4af5925a9ea3ca5eeb412b8904be350e461e\",\"dweb:/ipfs/QmcMYd8AM5BtRTaFDJptWaNmNB6Uk9yVEx4z4AFrvZs2KT\"]},\"/Users/steve/workspace/chainlink/evm-contracts/src/v0.6/interfaces/FlagsInterface.sol\":{\"keccak256\":\"0xbc6623d323a2971d9cb0ef13f8991fcba0567eae5c808565e39487b3477c3345\",\"urls\":[\"bzz-raw://e1400098fb89beeff0237b94d441f69da424cf59fdfcd1881e4fc6894f58b037\",\"dweb:/ipfs/QmPXJS543GSzF8w5yrES3iXth7L9RfN6eHXaUptj1ARenw\"]}},\"version\":1}"
})

if (process.env.NODE_ENV === 'test') {
  try {
    eval('DeviationFlaggingValidator.setProvider(web3.currentProvider)')
  } catch (e) {}
}

exports.DeviationFlaggingValidator = DeviationFlaggingValidator
