{
  "_format": "hh-sol-artifact-1",
  "contractName": "OracleEchidnaTest",
  "sourceName": "contracts/elixir-core/test/OracleEchidnaTest.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "by",
          "type": "uint32"
        }
      ],
      "name": "advanceTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "secondsAgo",
          "type": "uint32"
        }
      ],
      "name": "checkTimeWeightedAveragesAlwaysFitsType",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "index",
          "type": "uint16"
        }
      ],
      "name": "checkTwoAdjacentObservationsTickCumulativeModTimeElapsedAlways0",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "echidna_AlwaysInitialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "echidna_canAlwaysObserve0IfInitialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "echidna_cardinalityAlwaysLteNext",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "echidna_indexAlwaysLtCardinality",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "cardinality",
          "type": "uint16"
        }
      ],
      "name": "grow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "time",
          "type": "uint32"
        },
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "advanceTimeBy",
          "type": "uint32"
        },
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        }
      ],
      "name": "update",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161001d9061005f565b604051809103906000f080158015610039573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905561006c565b611a4a806112d083390190565b6112558061007b6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063ae505b5211610076578063e9f71da91161005b578063e9f71da914610134578063f7fd2cfa14610147578063f7fe55101461015a576100be565b8063ae505b5214610124578063de3277391461012c576100be565b806391e2b63c116100a757806391e2b63c146100eb578063a958357614610109578063ae13714b1461011c576100be565b80634d50e016146100c3578063761eb23e146100d8575b600080fd5b6100d66100d1366004610fe9565b61016d565b005b6100d66100e6366004610f8e565b610233565b6100f3610298565b6040516101009190611170565b60405180910390f35b6100d6610117366004610fcd565b6103b7565b6100f36105f8565b6100f3610726565b6100f3610865565b6100d6610142366004610f8e565b61097f565b6100d6610155366004610fcd565b610c3d565b6100d6610168366004610fe9565b610c76565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff841681830152905163daf50f6b60e01b81526001600160a01b039092169163daf50f6b916101ce91600401611184565b600060405180830381600087803b1580156101e857600080fd5b505af11580156101fc573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790555050505050565b600054604051633b0f591f60e11b81526001600160a01b039091169063761eb23e90610263908490600401611198565b600060405180830381600087803b15801561027d57600080fd5b505af1158015610291573d6000803e3d6000fd5b5050505050565b6000805460405163252c09d760e01b815282916001600160a01b03169063252c09d7906102c990849060040161117b565b60a06040518083038186803b1580156102e157600080fd5b505afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610319919061104d565b50935050505060008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036b57600080fd5b505afa15801561037f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a39190610fb1565b61ffff1615806103b05750805b9150505b90565b600054600160a01b900460ff166103cd57600080fd5b60008163ffffffff16116103e057600080fd5b604080516002808252606082018352600092602083019080368337019050509050818160008151811061040f57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061043857fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b8152829182916001600160a01b039091169063883bdbfd90610482908790600401611126565b60006040518083038186803b15801561049a57600080fd5b505afa1580156104ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104d69190810190610eaa565b9250925092506000836000815181106104eb57fe5b60200260200101518460018151811061050057fe5b602002602001015103905060008663ffffffff1660060b8260060b8161052257fe5b05905060008260060b12801561054f57508663ffffffff1660060b8260060b8161054857fe5b0760060b15155b1561055957600019015b627fffff600682900b138015906105785750627fffff19600682900b12155b61057e57fe5b600060208560008151811061058f57fe5b6020026020010151866001815181106105a457fe5b6020026020010151036001600160a01b0316901b6001600160a01b0380168963ffffffff1602816105d157fe5b0490506fffffffffffffffffffffffffffffffff8111156105ee57fe5b5050505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064757600080fd5b505afa15801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cf57600080fd5b505afa1580156106e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107079190610fb1565b61ffff1610806107215750600054600160a01b900460ff16155b905090565b60008054600160a01b900460ff16610740575060016103b4565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061077157fe5b63ffffffff90921660209283029190910190910152600080546040516001600160a01b039091169063883bdbfd60e01b906107b0908590602401611126565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161081b91906110ed565b600060405180830381855afa9150503d8060008114610856576040519150601f19603f3d011682016040523d82523d6000602084013e61085b565b606091505b5090935050505090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dd158c186040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190610fb1565b61ffff161115905090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190610fb1565b90508061ffff168261ffff16108015610ab5575060005460408051632986c0e560e01b8152905161ffff8416926001600160a01b031691632986c0e5916004808301926020929190829003018186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a9190610fb1565b60010161ffff1681610aa857fe5b0661ffff168261ffff1614155b610abe57600080fd5b60008054819081906001600160a01b031663252c09d761ffff871615610ae75760018703610aec565b600186035b6040518263ffffffff1660e01b8152600401610b089190611198565b60a06040518083038186803b158015610b2057600080fd5b505afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b58919061104d565b506000805460405163252c09d760e01b81529598509396509094509283928392506001600160a01b03169063252c09d790610b97908b90600401611198565b60a06040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be7919061104d565b509350509250925083610bf957600080fd5b80610c0357600080fd5b85830363ffffffff8116610c1357fe5b8063ffffffff1686840360060b81610c2757fe5b0760060b15610c3257fe5b505050505050505050565b610c4681610d17565b600054604051637bfe967d60e11b81526001600160a01b039091169063f7fd2cfa906102639084906004016111a7565b610c7f83610d17565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff84168183015290516365829dc560e01b81526001600160a01b03909216916365829dc591610ce091600401611184565b600060405180830381600087803b158015610cfa57600080fd5b505af1158015610d0e573d6000803e3d6000fd5b50505050505050565b60005463ffffffff600160a81b90910481168281019091161015610d3a57600080fd5b6000805463ffffffff600160a81b8083048216909401169092027fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082601f830112610d90578081fd5b81516020610da5610da0836111dc565b6111b8565b8281528181019085830183850287018401881015610dc1578586fd5b855b85811015610de657610dd482610e6b565b84529284019290840190600101610dc3565b5090979650505050505050565b600082601f830112610e03578081fd5b81516020610e13610da0836111dc565b8281528181019085830183850287018401881015610e2f578586fd5b855b85811015610de657610e4282610e82565b84529284019290840190600101610e31565b8051600681900b8114610e6657600080fd5b919050565b80516001600160a01b0381168114610e6657600080fd5b805177ffffffffffffffffffffffffffffffffffffffffffffffff81168114610e6657600080fd5b600080600060608486031215610ebe578283fd5b835167ffffffffffffffff80821115610ed5578485fd5b818601915086601f830112610ee8578485fd5b81516020610ef8610da0836111dc565b82815281810190858301838502870184018c1015610f1457898afd5b8996505b84871015610f3d57610f2981610e54565b835260019690960195918301918301610f18565b5091890151919750909350505080821115610f56578384fd5b610f6287838801610d80565b93506040860151915080821115610f77578283fd5b50610f8486828701610df3565b9150509250925092565b600060208284031215610f9f578081fd5b8135610faa816111fa565b9392505050565b600060208284031215610fc2578081fd5b8151610faa816111fa565b600060208284031215610fde578081fd5b8135610faa8161120d565b600080600060608486031215610ffd578283fd5b83356110088161120d565b92506020840135600281900b811461101e578283fd5b915060408401356fffffffffffffffffffffffffffffffff81168114611042578182fd5b809150509250925092565b600080600080600060a08688031215611064578081fd5b855161106f8161120d565b945061107d60208701610e54565b935061108b60408701610e6b565b92506060860151801515811461109f578182fd5b91506110ad60808701610e82565b90509295509295909350565b805163ffffffff16825260208082015160020b908301526040908101516fffffffffffffffffffffffffffffffff16910152565b60008251815b8181101561110d57602081860181015185830152016110f3565b8181111561111b5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561116457835163ffffffff1683529284019291840191600101611142565b50909695505050505050565b901515815260200190565b90815260200190565b6060810161119282846110b9565b92915050565b61ffff91909116815260200190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff811182821017156111d457fe5b604052919050565b600067ffffffffffffffff8211156111f057fe5b5060209081020190565b61ffff8116811461120a57600080fd5b50565b63ffffffff8116811461120a57600080fdfea2646970667358221220bd1bc2d9cd54dd36b9c2e9bbc6d5e1725fa2f24af5e14304b81c762a65c889cd64736f6c63430007060033608060405234801561001057600080fd5b50611a2a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806374e69cef11610097578063daf50f6b11610066578063daf50f6b14610220578063dbffe9ad14610233578063dd158c181461023b578063f7fd2cfa1461024357610100565b806374e69cef146101b8578063761eb23e146101d8578063883bdbfd146101eb578063d81740db1461020d57610100565b80633eaf5d9f116100d35780633eaf5d9f1461017157806358319b4d146101865780636142258a1461019b57806365829dc5146101a357610100565b806316ada547146101055780631a68650214610123578063252c09d7146101385780632986c0e51461015c575b600080fd5b61010d610256565b60405161011a91906119a1565b60405180910390f35b61012b610264565b60405161011a9190611961565b61014b610146366004611804565b61027c565b60405161011a9594939291906119b2565b6101646102d7565b60405161011a9190611989565b6101796102ea565b60405161011a919061191c565b61018e6102fd565b60405161011a9190611975565b61010d61030e565b6101b66101b13660046117a0565b610323565b005b6101cb6101c6366004611722565b610451565b60405161011a9190611998565b6101b66101e63660046117e2565b610515565b6101fe6101f9366004611722565b610553565b60405161011a93929190611883565b6101b661021b3660046116b2565b610612565b6101b661022e3660046117a0565b6107bc565b610164610907565b61016461091a565b6101b661025136600461181c565b61092d565b6201fffe5463ffffffff1681565b6201fffe54600160381b90046001600160801b031681565b60008161ffff811061028d57600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b6201fffe54600160b81b900461ffff1681565b6201fffe54640100000000900460020b81565b6201ffff546001600160901b031681565b6201ffff54600160901b900463ffffffff1681565b610333610251602083018361181c565b6201fffe546201ffff546103a99160009161ffff600160b81b830481169263ffffffff80821693640100000000830460020b936001600160801b03600160381b850416936001600160901b03831693600160901b909304831692600160c81b8204831692600160d81b9092049091169061095016565b6201fffe805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556103ec604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561042660608201604083016117bb565b6201fffe60076101000a8154816001600160801b0302191690836001600160801b0316021790555050565b6201fffe5460009063ffffffff811690640100000000810460020b90600160381b81046001600160801b031690600160b81b900461ffff16845a90506105048589898080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201ffff546201fffe5491969594508b93508992508a916001600160901b03821691600160901b900463ffffffff90811691600160c81b900461ffff1690610b6c16565b5050505a9003979650505050505050565b6201fffe5461053290600090600160d81b900461ffff1683610d29565b6201fffe601b6101000a81548161ffff021916908361ffff16021790555050565b60608060606106056201fffe60009054906101000a900463ffffffff1686868080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201fffe546201ffff549196959450640100000000810460020b935061ffff600160b81b8204811693506001600160801b03600160381b830416926001600160901b0381169263ffffffff600160901b909204821692600160c81b9091041690610b6c16565b9250925092509250925092565b6201fffe546201ffff54640100000000820460020b916001600160801b03600160381b8204169161ffff600160b81b8304811692600160c81b8104821692600160d81b82049092169163ffffffff918216916001600160901b03821691600160901b90041660005b89811015610713578a8a8281811061068e57fe5b6106a4926020606090920201908101915061181c565b909301926106ba600088868c8c88888d8d610950565b90975095508a8a828181106106cb57fe5b90506060020160200160208101906106e3919061177f565b98508a8a828181106106f157fe5b905060600201604001602081019061070991906117bb565b975060010161067a565b50506201fffe805466ffffff00000000191664010000000062ffffff60029a909a0b99909916989098029790971776ffffffffffffffffffffffffffffffff000000000000001916600160381b6001600160801b0397909716969096029590951761ffff60b81b1916600160b81b61ffff958616021761ffff60c81b1916600160c81b93909416929092029290921763ffffffff191663ffffffff919091161790925550505050565b6201fffe54600160c81b900461ffff16156107f25760405162461bcd60e51b81526004016107e99061192a565b60405180910390fd5b6107ff602082018261181c565b6201fffe805463ffffffff191663ffffffff9290921691909117905561082b604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561086560608201604083016117bb565b6201fffe80546001600160801b0392909216600160381b0276ffffffffffffffffffffffffffffffff00000000000000199092169190911790556108b76108af602083018361181c565b600090610dd2565b6201fffe80547fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d81b61ffff938416021761ffff60c81b1916600160c81b939092169290920217905550565b6201fffe54600160c81b900461ffff1681565b6201fffe54600160d81b900461ffff1681565b6201fffe805463ffffffff19811663ffffffff9182169390930116919091179055565b60008060008b8b61ffff1661ffff811061096657fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b1614156109f1578a859250925050610b5e565b8461ffff168461ffff16118015610a1257506001850361ffff168b61ffff16145b15610a1f57839150610a23565b8491505b8161ffff168b60010161ffff1681610a3757fe5b069250610a48818b8b8b8b8b610e46565b8c8461ffff1661ffff8110610a5957fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b921515929092029190911781556080909101516001909101805477ffffffffffffffffffffffffffffffffffffffffffffffff19166001600160c01b03909216919091179055505b995099975050505050505050565b606080606060008461ffff1611610bae576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff81118015610bc657600080fd5b50604051908082528060200260200182016040528015610bf0578160200160208202803683370190505b509250895167ffffffffffffffff81118015610c0b57600080fd5b50604051908082528060200260200182016040528015610c35578160200160208202803683370190505b509150895167ffffffffffffffff81118015610c5057600080fd5b50604051908082528060200260200182016040528015610c7a578160200160208202803683370190505b50905060005b8a51811015610d1957610cad8d8d8d8481518110610c9a57fe5b60200260200101518d8d8d8d8d8d610f90565b868481518110610cb957fe5b60200260200101868581518110610ccc57fe5b60200260200101868681518110610cdf57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101610c80565b5099509950999650505050505050565b6000808361ffff1611610d67576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611610d7d575081610dcb565b825b8261ffff168161ffff161015610dc6576001858261ffff1661ffff8110610da257fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101610d7f565b508190505b9392505050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b178255908101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055908190565b610e4e61166d565b865186036001600160801b038516610e67576001610e69565b845b9450600063ffffffff4211610eb457428463ffffffff1610610e8b5781610eaf565b886000015163ffffffff168463ffffffff161115610eac5788518403610eaf565b60005b610eb7565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681610f1857fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681610f6f57fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6000808063ffffffff8a1661105c5760008c8961ffff1661ffff8110610fb257fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d16146110415761103e818d8c8b8b8b610e46565b90505b8060200151816040015182608001519350935093505061117f565b898b036000806110738f8f858f8f8f8f8f8f61118e565b91509150816000015163ffffffff168363ffffffff1614156110ac5781602001518260400151836080015195509550955050505061117f565b805163ffffffff848116911614156110db5780602001518160400151826080015195509550955050505061117f565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161110957fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161113b57fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b03168161116b57fe5b040286608001510197509750975050505050505b99509950999650505050505050565b61119661166d565b61119e61166d565b8a8761ffff1661ffff81106111af57fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b03166080820152925061122d908b908b6113d5565b15611267578863ffffffff16826000015163ffffffff16141561124f57610b5e565b8161125e838b8b8a8a8a610e46565b91509150610b5e565b8a8361ffff168860010161ffff168161127c57fe5b0661ffff1661ffff811061128c57fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250611370576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b61137f8a83600001518b6113d5565b6113b6576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6113c38b8b8b8a87611498565b91509150995099975050505050505050565b60008363ffffffff168363ffffffff16111580156113ff57508363ffffffff168263ffffffff1611155b1561141b578163ffffffff168363ffffffff1611159050610dcb565b60008463ffffffff168463ffffffff1611611443578363ffffffff166401000000000161144b565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161147c578363ffffffff1664010000000001611484565b8363ffffffff165b64ffffffffff169091111595945050505050565b6114a061166d565b6114a861166d565b60008361ffff168560010161ffff16816114be57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff871682816114eb57fe5b0661ffff81106114f757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061157c578060010192506114d6565b898661ffff16826001018161158d57fe5b0661ffff811061159957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061161f908b908b6113d5565b905080801561163857506116388a8a87600001516113d5565b156116435750611660565b806116535760018203925061165a565b8160010193505b506114d6565b5050509550959350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6000606082840312156116ac578081fd5b50919050565b600080602083850312156116c4578182fd5b823567ffffffffffffffff808211156116db578384fd5b818501915085601f8301126116ee578384fd5b8135818111156116fc578485fd5b866020606083028501011115611710578485fd5b60209290920196919550909350505050565b60008060208385031215611734578182fd5b823567ffffffffffffffff8082111561174b578384fd5b818501915085601f83011261175e578384fd5b81358181111561176c578485fd5b8660208083028501011115611710578485fd5b600060208284031215611790578081fd5b81358060020b8114610dcb578182fd5b6000606082840312156117b1578081fd5b610dcb838361169b565b6000602082840312156117cc578081fd5b81356001600160801b0381168114610dcb578182fd5b6000602082840312156117f3578081fd5b813561ffff81168114610dcb578182fd5b600060208284031215611815578081fd5b5035919050565b60006020828403121561182d578081fd5b813563ffffffff81168114610dcb578182fd5b6000815180845260208085019450808401835b838110156118785781516001600160c01b031687529582019590820190600101611853565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156118bf57815160060b845292840192908401906001016118a0565b50505083810382850152855180825286830191830190845b818110156118fc5783516001600160a01b0316835292840192918401916001016118d7565b505084810360408601526119108187611840565b98975050505050505050565b60029190910b815260200190565b60208082526013908201527f616c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6001600160801b0391909116815260200190565b6001600160901b0391909116815260200190565b61ffff91909116815260200190565b90815260200190565b63ffffffff91909116815260200190565b63ffffffff95909516855260069390930b60208501526001600160a01b03919091166040840152151560608301526001600160c01b0316608082015260a0019056fea264697066735822122002acd38f8925afceb7b92c6e72f0d8cdee7003d69e28036bf58a85170063364c64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063ae505b5211610076578063e9f71da91161005b578063e9f71da914610134578063f7fd2cfa14610147578063f7fe55101461015a576100be565b8063ae505b5214610124578063de3277391461012c576100be565b806391e2b63c116100a757806391e2b63c146100eb578063a958357614610109578063ae13714b1461011c576100be565b80634d50e016146100c3578063761eb23e146100d8575b600080fd5b6100d66100d1366004610fe9565b61016d565b005b6100d66100e6366004610f8e565b610233565b6100f3610298565b6040516101009190611170565b60405180910390f35b6100d6610117366004610fcd565b6103b7565b6100f36105f8565b6100f3610726565b6100f3610865565b6100d6610142366004610f8e565b61097f565b6100d6610155366004610fcd565b610c3d565b6100d6610168366004610fe9565b610c76565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff841681830152905163daf50f6b60e01b81526001600160a01b039092169163daf50f6b916101ce91600401611184565b600060405180830381600087803b1580156101e857600080fd5b505af11580156101fc573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790555050505050565b600054604051633b0f591f60e11b81526001600160a01b039091169063761eb23e90610263908490600401611198565b600060405180830381600087803b15801561027d57600080fd5b505af1158015610291573d6000803e3d6000fd5b5050505050565b6000805460405163252c09d760e01b815282916001600160a01b03169063252c09d7906102c990849060040161117b565b60a06040518083038186803b1580156102e157600080fd5b505afa1580156102f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610319919061104d565b50935050505060008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036b57600080fd5b505afa15801561037f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a39190610fb1565b61ffff1615806103b05750805b9150505b90565b600054600160a01b900460ff166103cd57600080fd5b60008163ffffffff16116103e057600080fd5b604080516002808252606082018352600092602083019080368337019050509050818160008151811061040f57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061043857fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b8152829182916001600160a01b039091169063883bdbfd90610482908790600401611126565b60006040518083038186803b15801561049a57600080fd5b505afa1580156104ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104d69190810190610eaa565b9250925092506000836000815181106104eb57fe5b60200260200101518460018151811061050057fe5b602002602001015103905060008663ffffffff1660060b8260060b8161052257fe5b05905060008260060b12801561054f57508663ffffffff1660060b8260060b8161054857fe5b0760060b15155b1561055957600019015b627fffff600682900b138015906105785750627fffff19600682900b12155b61057e57fe5b600060208560008151811061058f57fe5b6020026020010151866001815181106105a457fe5b6020026020010151036001600160a01b0316901b6001600160a01b0380168963ffffffff1602816105d157fe5b0490506fffffffffffffffffffffffffffffffff8111156105ee57fe5b5050505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561064757600080fd5b505afa15801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cf57600080fd5b505afa1580156106e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107079190610fb1565b61ffff1610806107215750600054600160a01b900460ff16155b905090565b60008054600160a01b900460ff16610740575060016103b4565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061077157fe5b63ffffffff90921660209283029190910190910152600080546040516001600160a01b039091169063883bdbfd60e01b906107b0908590602401611126565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161081b91906110ed565b600060405180830381855afa9150503d8060008114610856576040519150601f19603f3d011682016040523d82523d6000602084013e61085b565b606091505b5090935050505090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dd158c186040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190610fb1565b61ffff1660008054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190610fb1565b61ffff161115905090565b60008060009054906101000a90046001600160a01b03166001600160a01b031663dbffe9ad6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109ce57600080fd5b505afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190610fb1565b90508061ffff168261ffff16108015610ab5575060005460408051632986c0e560e01b8152905161ffff8416926001600160a01b031691632986c0e5916004808301926020929190829003018186803b158015610a6257600080fd5b505afa158015610a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9a9190610fb1565b60010161ffff1681610aa857fe5b0661ffff168261ffff1614155b610abe57600080fd5b60008054819081906001600160a01b031663252c09d761ffff871615610ae75760018703610aec565b600186035b6040518263ffffffff1660e01b8152600401610b089190611198565b60a06040518083038186803b158015610b2057600080fd5b505afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b58919061104d565b506000805460405163252c09d760e01b81529598509396509094509283928392506001600160a01b03169063252c09d790610b97908b90600401611198565b60a06040518083038186803b158015610baf57600080fd5b505afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be7919061104d565b509350509250925083610bf957600080fd5b80610c0357600080fd5b85830363ffffffff8116610c1357fe5b8063ffffffff1686840360060b81610c2757fe5b0760060b15610c3257fe5b505050505050505050565b610c4681610d17565b600054604051637bfe967d60e11b81526001600160a01b039091169063f7fd2cfa906102639084906004016111a7565b610c7f83610d17565b6000546040805160608101825263ffffffff86168152600285900b60208201526fffffffffffffffffffffffffffffffff84168183015290516365829dc560e01b81526001600160a01b03909216916365829dc591610ce091600401611184565b600060405180830381600087803b158015610cfa57600080fd5b505af1158015610d0e573d6000803e3d6000fd5b50505050505050565b60005463ffffffff600160a81b90910481168281019091161015610d3a57600080fd5b6000805463ffffffff600160a81b8083048216909401169092027fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082601f830112610d90578081fd5b81516020610da5610da0836111dc565b6111b8565b8281528181019085830183850287018401881015610dc1578586fd5b855b85811015610de657610dd482610e6b565b84529284019290840190600101610dc3565b5090979650505050505050565b600082601f830112610e03578081fd5b81516020610e13610da0836111dc565b8281528181019085830183850287018401881015610e2f578586fd5b855b85811015610de657610e4282610e82565b84529284019290840190600101610e31565b8051600681900b8114610e6657600080fd5b919050565b80516001600160a01b0381168114610e6657600080fd5b805177ffffffffffffffffffffffffffffffffffffffffffffffff81168114610e6657600080fd5b600080600060608486031215610ebe578283fd5b835167ffffffffffffffff80821115610ed5578485fd5b818601915086601f830112610ee8578485fd5b81516020610ef8610da0836111dc565b82815281810190858301838502870184018c1015610f1457898afd5b8996505b84871015610f3d57610f2981610e54565b835260019690960195918301918301610f18565b5091890151919750909350505080821115610f56578384fd5b610f6287838801610d80565b93506040860151915080821115610f77578283fd5b50610f8486828701610df3565b9150509250925092565b600060208284031215610f9f578081fd5b8135610faa816111fa565b9392505050565b600060208284031215610fc2578081fd5b8151610faa816111fa565b600060208284031215610fde578081fd5b8135610faa8161120d565b600080600060608486031215610ffd578283fd5b83356110088161120d565b92506020840135600281900b811461101e578283fd5b915060408401356fffffffffffffffffffffffffffffffff81168114611042578182fd5b809150509250925092565b600080600080600060a08688031215611064578081fd5b855161106f8161120d565b945061107d60208701610e54565b935061108b60408701610e6b565b92506060860151801515811461109f578182fd5b91506110ad60808701610e82565b90509295509295909350565b805163ffffffff16825260208082015160020b908301526040908101516fffffffffffffffffffffffffffffffff16910152565b60008251815b8181101561110d57602081860181015185830152016110f3565b8181111561111b5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561116457835163ffffffff1683529284019291840191600101611142565b50909695505050505050565b901515815260200190565b90815260200190565b6060810161119282846110b9565b92915050565b61ffff91909116815260200190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff811182821017156111d457fe5b604052919050565b600067ffffffffffffffff8211156111f057fe5b5060209081020190565b61ffff8116811461120a57600080fd5b50565b63ffffffff8116811461120a57600080fdfea2646970667358221220bd1bc2d9cd54dd36b9c2e9bbc6d5e1725fa2f24af5e14304b81c762a65c889cd64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
