{
  "_format": "hh-sol-artifact-1",
  "contractName": "DrawBeaconHarness",
  "sourceName": "contracts/test/DrawBeaconHarness.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "contract IDrawBuffer",
          "name": "_drawBuffer",
          "type": "address"
        },
        {
          "internalType": "contract RNGInterface",
          "name": "_rng",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "_nextDrawId",
          "type": "uint32"
        },
        {
          "internalType": "uint64",
          "name": "_beaconPeriodStart",
          "type": "uint64"
        },
        {
          "internalType": "uint32",
          "name": "_drawPeriodSeconds",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "_rngTimeout",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "drawPeriodSeconds",
          "type": "uint32"
        }
      ],
      "name": "BeaconPeriodSecondsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "startedAt",
          "type": "uint64"
        }
      ],
      "name": "BeaconPeriodStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "nextDrawId",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "beaconPeriodStartedAt",
          "type": "uint64"
        }
      ],
      "name": "Deployed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IDrawBuffer",
          "name": "newDrawBuffer",
          "type": "address"
        }
      ],
      "name": "DrawBufferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "rngRequestId",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "rngLockBlock",
          "type": "uint32"
        }
      ],
      "name": "DrawCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "randomNumber",
          "type": "uint256"
        }
      ],
      "name": "DrawCompleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "rngRequestId",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "rngLockBlock",
          "type": "uint32"
        }
      ],
      "name": "DrawStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipOffered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract RNGInterface",
          "name": "rngService",
          "type": "address"
        }
      ],
      "name": "RngServiceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "rngTimeout",
          "type": "uint32"
        }
      ],
      "name": "RngTimeoutSet",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "_currentTimeInternal",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "beaconPeriodEndAt",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "beaconPeriodRemainingSeconds",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_time",
          "type": "uint64"
        }
      ],
      "name": "calculateNextBeaconPeriodStartTime",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "calculateNextBeaconPeriodStartTimeFromCurrentTime",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "canCompleteDraw",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "canStartDraw",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cancelDraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "completeDraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentTime",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBeaconPeriodSeconds",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBeaconPeriodStartedAt",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDrawBuffer",
      "outputs": [
        {
          "internalType": "contract IDrawBuffer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastRngLockBlock",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastRngRequestId",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextDrawId",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRngService",
      "outputs": [
        {
          "internalType": "contract RNGInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRngTimeout",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isBeaconPeriodOver",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRngCompleted",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRngRequested",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRngTimedOut",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_beaconPeriodSeconds",
          "type": "uint32"
        }
      ],
      "name": "setBeaconPeriodSeconds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_time",
          "type": "uint64"
        }
      ],
      "name": "setCurrentTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IDrawBuffer",
          "name": "newDrawBuffer",
          "type": "address"
        }
      ],
      "name": "setDrawBuffer",
      "outputs": [
        {
          "internalType": "contract IDrawBuffer",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "requestId",
          "type": "uint32"
        },
        {
          "internalType": "uint32",
          "name": "lockBlock",
          "type": "uint32"
        }
      ],
      "name": "setRngRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract RNGInterface",
          "name": "_rngService",
          "type": "address"
        }
      ],
      "name": "setRngService",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_rngTimeout",
          "type": "uint32"
        }
      ],
      "name": "setRngTimeout",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startDraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620025c8380380620025c883398101604081905262000034916200059c565b8686868686868686620000478162000246565b506000836001600160401b031611620000a95760405162461bcd60e51b815260206004820152602a6024820152600080516020620025a88339815191526044820152692d7468616e2d7a65726f60b01b60648201526084015b60405180910390fd5b6001600160a01b038516620001015760405162461bcd60e51b815260206004820152601760248201527f44726177426561636f6e2f726e672d6e6f742d7a65726f0000000000000000006044820152606401620000a0565b60018463ffffffff1610156200015a5760405162461bcd60e51b815260206004820152601f60248201527f44726177426561636f6e2f6e6578742d647261772d69642d6774652d6f6e65006044820152606401620000a0565b6005805463ffffffff861668010000000000000000026001600160601b03199091166001600160401b03861617179055620001958262000296565b620001a0866200034b565b50620001ac8562000481565b620001b781620004cb565b6040805163ffffffff861681526001600160401b03851660208201527f3125f2f28108d5eabe48aa2a11adff21d6f9244f0436278992999404ba4fc5ad910160405180910390a16040516001600160401b038416907f9e5f7e6ac833c4735b5548bbeec59dac4d413789aa351fbe11a654dac0c4306c90600090a2505050505050505050505050505062000660565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008163ffffffff1611620002f05760405162461bcd60e51b815260206004820152602a6024820152600080516020620025a88339815191526044820152692d7468616e2d7a65726f60b01b6064820152608401620000a0565b6004805463ffffffff60c01b1916600160c01b63ffffffff8416908102919091179091556040519081527f4727494dbd863e2084366f539d6ec569aaf7ab78582a34f006f004266777cd19906020015b60405180910390a150565b6004546000906001600160a01b03908116908316620003be5760405162461bcd60e51b815260206004820152602860248201527f44726177426561636f6e2f647261772d686973746f72792d6e6f742d7a65726f6044820152672d6164647265737360c01b6064820152608401620000a0565b806001600160a01b0316836001600160a01b03161415620004335760405162461bcd60e51b815260206004820152602860248201527f44726177426561636f6e2f6578697374696e672d647261772d686973746f72796044820152672d6164647265737360c01b6064820152608401620000a0565b600480546001600160a01b0319166001600160a01b0385169081179091556040517feb70b03fab908e126e5efc33f8dfd2731fa89c716282a86769025f8dd4a6c1e090600090a25090919050565b600280546001600160a01b0319166001600160a01b0383169081179091556040517ff935763cc7c57ee8ed6318ed71e756cca0731294c9f46ff5b386f36d6ff1417a90600090a250565b603c8163ffffffff16116200052d5760405162461bcd60e51b815260206004820152602160248201527f44726177426561636f6e2f726e672d74696d656f75742d67742d36302d7365636044820152607360f81b6064820152608401620000a0565b6004805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527f521671714dd36d366adf3fe2efec91d3f58a3131aad68e268821d8144b5d08459060200162000340565b805163ffffffff811681146200059757600080fd5b919050565b600080600080600080600060e0888a031215620005b857600080fd5b8751620005c58162000647565b6020890151909750620005d88162000647565b6040890151909650620005eb8162000647565b9450620005fb6060890162000582565b60808901519094506001600160401b03811681146200061957600080fd5b92506200062960a0890162000582565b91506200063960c0890162000582565b905092959891949750929550565b6001600160a01b03811681146200065d57600080fd5b50565b611f3880620006706000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c8063715018a61161012a578063a104fd79116100bd578063d18e81b31161008c578063e30c397811610071578063e30c3978146104b6578063e4a75bb8146104c7578063f2fde38b146104cf57600080fd5b8063d18e81b314610495578063d1e77657146104ae57600080fd5b8063a104fd791461044d578063a3ae35ab14610455578063ab70d49c14610468578063c57708c21461047b57600080fd5b80637f4296d7116100f95780637f4296d71461040e57806389c36f8e146104215780638da5cb5b14610429578063919bead01461043a57600080fd5b8063715018a6146103e5578063738bbea8146103ed57806375e38f16146103f55780637ce52b18146103fd57600080fd5b806339f92c30116101bd5780634aba4f6b1161018c5780635020ea56116101715780635020ea561461037e578063642d43db146103915780636bea5344146103cf57600080fd5b80634aba4f6b1461036e5780634e71e0c81461037657600080fd5b806339f92c301461031a5780633e7a39081461032c5780634019f2d614610341578063412a616a1461036657600080fd5b8063111070e4116101f9578063111070e4146102bd5780631b5344a2146102cd5780632a7ad609146103045780632ae168a61461031257600080fd5b80630996f6e11461022b57806309ad71a5146102485780630bdeecbd1461029a5780630d2bcb79146102a2575b600080fd5b6102336104e2565b60405190151581526020015b60405180910390f35b610298610256366004611cdf565b6005805467ffffffffffffffff909216600160601b027fffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffff909216919091179055565b005b610298610503565b425b60405167ffffffffffffffff909116815260200161023f565b60035463ffffffff161515610233565b60045474010000000000000000000000000000000000000000900463ffffffff165b60405163ffffffff909116815260200161023f565b60035463ffffffff166102ef565b6102986108c6565b60055467ffffffffffffffff166102a4565b600454600160c01b900463ffffffff166102ef565b6004546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b610298610bcf565b610233610c99565b610298610d38565b61029861038c366004611c3d565b610dc6565b61029861039f366004611c77565b6003805463ffffffff9283166401000000000267ffffffffffffffff199091169290931691909117919091179055565b600354640100000000900463ffffffff166102ef565b610298610e43565b610233610eb8565b6102a4610f41565b6002546001600160a01b031661034e565b61029861041c366004611bb7565b610f4b565b6102a4610fc5565b6000546001600160a01b031661034e565b610298610448366004611c3d565b610ffb565b6102a4611075565b6102a4610463366004611cdf565b61107f565b61034e610476366004611bb7565b6110b2565b60055468010000000000000000900463ffffffff166102ef565b600554600160601b900467ffffffffffffffff166102a4565b610233611126565b6001546001600160a01b031661034e565b610233611130565b6102986104dd366004611bb7565b611152565b60006104ec61128e565b80156104fe575060035463ffffffff16155b905090565b60035463ffffffff1661055d5760405162461bcd60e51b815260206004820152601c60248201527f44726177426561636f6e2f726e672d6e6f742d7265717565737465640000000060448201526064015b60405180910390fd5b610565610c99565b6105b15760405162461bcd60e51b815260206004820152601b60248201527f44726177426561636f6e2f726e672d6e6f742d636f6d706c65746500000000006044820152606401610554565b6002546003546040517f9d2a5f9800000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526000916001600160a01b031690639d2a5f9890602401602060405180830381600087803b15801561061a57600080fd5b505af115801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190611c24565b60055460045491925063ffffffff68010000000000000000820481169267ffffffffffffffff90921691600160c01b90041660006106a160055467ffffffffffffffff600160601b9091041690565b6040805160a08101825287815263ffffffff8781166020830190815260035468010000000000000000900467ffffffffffffffff90811684860190815289821660608601908152898516608087019081526004805498517f089eb925000000000000000000000000000000000000000000000000000000008152885191810191909152945186166024860152915183166044850152519091166064830152519091166084820152929350916001600160a01b039091169063089eb9259060a401602060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b39190611c5a565b5060006107c18585856112be565b6005805467ffffffffffffffff191667ffffffffffffffff831617905590506107eb866001611d8e565b6005805463ffffffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff909216919091179055600380547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690556040518781527f13f646a3648ee5b5a0e8d6bc3d2d623fddf38fa7c8c5dfdbdbe6a913112edc6c9060200160405180910390a160405167ffffffffffffffff8216907f9e5f7e6ac833c4735b5548bbeec59dac4d413789aa351fbe11a654dac0c4306c90600090a250505050505050565b6108ce61128e565b6109405760405162461bcd60e51b815260206004820152602160248201527f44726177426561636f6e2f626561636f6e2d706572696f642d6e6f742d6f766560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610554565b60035463ffffffff16156109965760405162461bcd60e51b815260206004820181905260248201527f44726177426561636f6e2f726e672d616c72656164792d7265717565737465646044820152606401610554565b600254604080517f0d37b537000000000000000000000000000000000000000000000000000000008152815160009384936001600160a01b0390911692630d37b5379260048083019392829003018186803b1580156109f457600080fd5b505afa158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c9190611bd4565b90925090506001600160a01b03821615801590610a495750600081115b15610a6857600254610a68906001600160a01b03848116911683611303565b600254604080517f8678a7b2000000000000000000000000000000000000000000000000000000008152815160009384936001600160a01b0390911692638678a7b2926004808301939282900301818787803b158015610ac757600080fd5b505af1158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff9190611cb0565b6003805463ffffffff8084166401000000000267ffffffffffffffff19909216908516171790559092509050610b4660055467ffffffffffffffff600160601b9091041690565b6003805467ffffffffffffffff9290921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff90921691909117905560405163ffffffff82811682528316907f0de3a7af7d3c2126e4fb96a7065b39f8bb17e3b9111c092e11236942fb38ca619060200160405180910390a250505050565b610bd7610eb8565b610c235760405162461bcd60e51b815260206004820152601b60248201527f44726177426561636f6e2f726e672d6e6f742d74696d65646f757400000000006044820152606401610554565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811690915560405163ffffffff640100000000830481168083529216919082907f67638a3a7093a89cc6046dca58aa93d6343e30847e8f84fc3759d9d4a3e6e38b9060200160405180910390a25050565b6002546003546040517f3a19b9bc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526000916001600160a01b031690633a19b9bc9060240160206040518083038186803b158015610d0057600080fd5b505afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe9190611c02565b6001546001600160a01b03163314610d925760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e6572006044820152606401610554565b600154610da7906001600160a01b0316611433565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b33610dd96000546001600160a01b031690565b6001600160a01b031614610e2f5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b610e37611490565b610e408161150a565b50565b33610e566000546001600160a01b031690565b6001600160a01b031614610eac5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b610eb66000611433565b565b60035460009068010000000000000000900467ffffffffffffffff16610ede5750600090565b60055460035460045467ffffffffffffffff600160601b909304831692610f3192680100000000000000009004169063ffffffff7401000000000000000000000000000000000000000090910416611db6565b67ffffffffffffffff1610905090565b60006104fe61160a565b33610f5e6000546001600160a01b031690565b6001600160a01b031614610fb45760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b610fbc611490565b610e408161166b565b6005546004546000916104fe9167ffffffffffffffff80831692600160c01b90920463ffffffff1691600160601b9004166112be565b3361100e6000546001600160a01b031690565b6001600160a01b0316146110645760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b61106c611490565b610e40816116c2565b60006104fe6117aa565b6005546004546000916110ac9167ffffffffffffffff90911690600160c01b900463ffffffff16846112be565b92915050565b6000336110c76000546001600160a01b031690565b6001600160a01b03161461111d5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b6110ac826117d5565b60006104fe61128e565b600061114360035463ffffffff16151590565b80156104fe57506104fe610c99565b336111656000546001600160a01b031690565b6001600160a01b0316146111bb5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b6001600160a01b0381166112375760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610554565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b600554600090600160601b900467ffffffffffffffff166112ad6117aa565b67ffffffffffffffff161115905090565b60008063ffffffff84166112d28685611e57565b6112dc9190611dd9565b90506112ee63ffffffff851682611e27565b6112f89086611db6565b9150505b9392505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b15801561136857600080fd5b505afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a09190611c24565b6113aa9190611d76565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905290915061142d90859061193e565b50505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6003544390640100000000900463ffffffff1615806114be5750600354640100000000900463ffffffff1681105b610e405760405162461bcd60e51b815260206004820152601860248201527f44726177426561636f6e2f726e672d696e2d666c6967687400000000000000006044820152606401610554565b603c8163ffffffff16116115865760405162461bcd60e51b815260206004820152602160248201527f44726177426561636f6e2f726e672d74696d656f75742d67742d36302d73656360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610554565b600480547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527f521671714dd36d366adf3fe2efec91d3f58a3131aad68e268821d8144b5d0845906020015b60405180910390a150565b6000806116156117aa565b9050600061163460055467ffffffffffffffff600160601b9091041690565b90508067ffffffffffffffff168267ffffffffffffffff161161165a5760009250505090565b6116648183611e57565b9250505090565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517ff935763cc7c57ee8ed6318ed71e756cca0731294c9f46ff5b386f36d6ff1417a90600090a250565b60008163ffffffff161161173e5760405162461bcd60e51b815260206004820152602a60248201527f44726177426561636f6e2f626561636f6e2d706572696f642d6772656174657260448201527f2d7468616e2d7a65726f000000000000000000000000000000000000000000006064820152608401610554565b600480547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b63ffffffff8416908102919091179091556040519081527f4727494dbd863e2084366f539d6ec569aaf7ab78582a34f006f004266777cd19906020016115ff565b6004546005546000916104fe91600160c01b90910463ffffffff169067ffffffffffffffff16611db6565b6004546000906001600160a01b0390811690831661185b5760405162461bcd60e51b815260206004820152602860248201527f44726177426561636f6e2f647261772d686973746f72792d6e6f742d7a65726f60448201527f2d616464726573730000000000000000000000000000000000000000000000006064820152608401610554565b806001600160a01b0316836001600160a01b031614156118e35760405162461bcd60e51b815260206004820152602860248201527f44726177426561636f6e2f6578697374696e672d647261772d686973746f727960448201527f2d616464726573730000000000000000000000000000000000000000000000006064820152608401610554565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385169081179091556040517feb70b03fab908e126e5efc33f8dfd2731fa89c716282a86769025f8dd4a6c1e090600090a25090919050565b6000611993826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a289092919063ffffffff16565b805190915015611a2357808060200190518101906119b19190611c02565b611a235760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610554565b505050565b6060611a378484600085611a3f565b949350505050565b606082471015611ab75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610554565b843b611b055760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610554565b600080866001600160a01b03168587604051611b219190611d09565b60006040518083038185875af1925050503d8060008114611b5e576040519150601f19603f3d011682016040523d82523d6000602084013e611b63565b606091505b5091509150611b73828286611b7e565b979650505050505050565b60608315611b8d5750816112fc565b825115611b9d5782518084602001fd5b8160405162461bcd60e51b81526004016105549190611d25565b600060208284031215611bc957600080fd5b81356112fc81611edb565b60008060408385031215611be757600080fd5b8251611bf281611edb565b6020939093015192949293505050565b600060208284031215611c1457600080fd5b815180151581146112fc57600080fd5b600060208284031215611c3657600080fd5b5051919050565b600060208284031215611c4f57600080fd5b81356112fc81611ef0565b600060208284031215611c6c57600080fd5b81516112fc81611ef0565b60008060408385031215611c8a57600080fd5b8235611c9581611ef0565b91506020830135611ca581611ef0565b809150509250929050565b60008060408385031215611cc357600080fd5b8251611cce81611ef0565b6020840151909250611ca581611ef0565b600060208284031215611cf157600080fd5b813567ffffffffffffffff811681146112fc57600080fd5b60008251611d1b818460208701611e80565b9190910192915050565b6020815260008251806020840152611d44816040850160208701611e80565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008219821115611d8957611d89611eac565b500190565b600063ffffffff808316818516808303821115611dad57611dad611eac565b01949350505050565b600067ffffffffffffffff808316818516808303821115611dad57611dad611eac565b600067ffffffffffffffff80841680611e1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff80831681851681830481118215151615611e4e57611e4e611eac565b02949350505050565b600067ffffffffffffffff83811690831681811015611e7857611e78611eac565b039392505050565b60005b83811015611e9b578181015183820152602001611e83565b8381111561142d5750506000910152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001600160a01b0381168114610e4057600080fd5b63ffffffff81168114610e4057600080fdfea26469706673582212205860c520822e64c68b1aa2d7645cf3d01b12ec6e622d49b3ce172b5b61a51b1d64736f6c6343000806003344726177426561636f6e2f626561636f6e2d706572696f642d67726561746572",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102265760003560e01c8063715018a61161012a578063a104fd79116100bd578063d18e81b31161008c578063e30c397811610071578063e30c3978146104b6578063e4a75bb8146104c7578063f2fde38b146104cf57600080fd5b8063d18e81b314610495578063d1e77657146104ae57600080fd5b8063a104fd791461044d578063a3ae35ab14610455578063ab70d49c14610468578063c57708c21461047b57600080fd5b80637f4296d7116100f95780637f4296d71461040e57806389c36f8e146104215780638da5cb5b14610429578063919bead01461043a57600080fd5b8063715018a6146103e5578063738bbea8146103ed57806375e38f16146103f55780637ce52b18146103fd57600080fd5b806339f92c30116101bd5780634aba4f6b1161018c5780635020ea56116101715780635020ea561461037e578063642d43db146103915780636bea5344146103cf57600080fd5b80634aba4f6b1461036e5780634e71e0c81461037657600080fd5b806339f92c301461031a5780633e7a39081461032c5780634019f2d614610341578063412a616a1461036657600080fd5b8063111070e4116101f9578063111070e4146102bd5780631b5344a2146102cd5780632a7ad609146103045780632ae168a61461031257600080fd5b80630996f6e11461022b57806309ad71a5146102485780630bdeecbd1461029a5780630d2bcb79146102a2575b600080fd5b6102336104e2565b60405190151581526020015b60405180910390f35b610298610256366004611cdf565b6005805467ffffffffffffffff909216600160601b027fffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffff909216919091179055565b005b610298610503565b425b60405167ffffffffffffffff909116815260200161023f565b60035463ffffffff161515610233565b60045474010000000000000000000000000000000000000000900463ffffffff165b60405163ffffffff909116815260200161023f565b60035463ffffffff166102ef565b6102986108c6565b60055467ffffffffffffffff166102a4565b600454600160c01b900463ffffffff166102ef565b6004546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b610298610bcf565b610233610c99565b610298610d38565b61029861038c366004611c3d565b610dc6565b61029861039f366004611c77565b6003805463ffffffff9283166401000000000267ffffffffffffffff199091169290931691909117919091179055565b600354640100000000900463ffffffff166102ef565b610298610e43565b610233610eb8565b6102a4610f41565b6002546001600160a01b031661034e565b61029861041c366004611bb7565b610f4b565b6102a4610fc5565b6000546001600160a01b031661034e565b610298610448366004611c3d565b610ffb565b6102a4611075565b6102a4610463366004611cdf565b61107f565b61034e610476366004611bb7565b6110b2565b60055468010000000000000000900463ffffffff166102ef565b600554600160601b900467ffffffffffffffff166102a4565b610233611126565b6001546001600160a01b031661034e565b610233611130565b6102986104dd366004611bb7565b611152565b60006104ec61128e565b80156104fe575060035463ffffffff16155b905090565b60035463ffffffff1661055d5760405162461bcd60e51b815260206004820152601c60248201527f44726177426561636f6e2f726e672d6e6f742d7265717565737465640000000060448201526064015b60405180910390fd5b610565610c99565b6105b15760405162461bcd60e51b815260206004820152601b60248201527f44726177426561636f6e2f726e672d6e6f742d636f6d706c65746500000000006044820152606401610554565b6002546003546040517f9d2a5f9800000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526000916001600160a01b031690639d2a5f9890602401602060405180830381600087803b15801561061a57600080fd5b505af115801561062e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106529190611c24565b60055460045491925063ffffffff68010000000000000000820481169267ffffffffffffffff90921691600160c01b90041660006106a160055467ffffffffffffffff600160601b9091041690565b6040805160a08101825287815263ffffffff8781166020830190815260035468010000000000000000900467ffffffffffffffff90811684860190815289821660608601908152898516608087019081526004805498517f089eb925000000000000000000000000000000000000000000000000000000008152885191810191909152945186166024860152915183166044850152519091166064830152519091166084820152929350916001600160a01b039091169063089eb9259060a401602060405180830381600087803b15801561077b57600080fd5b505af115801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b39190611c5a565b5060006107c18585856112be565b6005805467ffffffffffffffff191667ffffffffffffffff831617905590506107eb866001611d8e565b6005805463ffffffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff909216919091179055600380547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690556040518781527f13f646a3648ee5b5a0e8d6bc3d2d623fddf38fa7c8c5dfdbdbe6a913112edc6c9060200160405180910390a160405167ffffffffffffffff8216907f9e5f7e6ac833c4735b5548bbeec59dac4d413789aa351fbe11a654dac0c4306c90600090a250505050505050565b6108ce61128e565b6109405760405162461bcd60e51b815260206004820152602160248201527f44726177426561636f6e2f626561636f6e2d706572696f642d6e6f742d6f766560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610554565b60035463ffffffff16156109965760405162461bcd60e51b815260206004820181905260248201527f44726177426561636f6e2f726e672d616c72656164792d7265717565737465646044820152606401610554565b600254604080517f0d37b537000000000000000000000000000000000000000000000000000000008152815160009384936001600160a01b0390911692630d37b5379260048083019392829003018186803b1580156109f457600080fd5b505afa158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c9190611bd4565b90925090506001600160a01b03821615801590610a495750600081115b15610a6857600254610a68906001600160a01b03848116911683611303565b600254604080517f8678a7b2000000000000000000000000000000000000000000000000000000008152815160009384936001600160a01b0390911692638678a7b2926004808301939282900301818787803b158015610ac757600080fd5b505af1158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff9190611cb0565b6003805463ffffffff8084166401000000000267ffffffffffffffff19909216908516171790559092509050610b4660055467ffffffffffffffff600160601b9091041690565b6003805467ffffffffffffffff9290921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff90921691909117905560405163ffffffff82811682528316907f0de3a7af7d3c2126e4fb96a7065b39f8bb17e3b9111c092e11236942fb38ca619060200160405180910390a250505050565b610bd7610eb8565b610c235760405162461bcd60e51b815260206004820152601b60248201527f44726177426561636f6e2f726e672d6e6f742d74696d65646f757400000000006044820152606401610554565b600380547fffffffffffffffffffffffffffffffff00000000000000000000000000000000811690915560405163ffffffff640100000000830481168083529216919082907f67638a3a7093a89cc6046dca58aa93d6343e30847e8f84fc3759d9d4a3e6e38b9060200160405180910390a25050565b6002546003546040517f3a19b9bc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526000916001600160a01b031690633a19b9bc9060240160206040518083038186803b158015610d0057600080fd5b505afa158015610d14573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe9190611c02565b6001546001600160a01b03163314610d925760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e6572006044820152606401610554565b600154610da7906001600160a01b0316611433565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b33610dd96000546001600160a01b031690565b6001600160a01b031614610e2f5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b610e37611490565b610e408161150a565b50565b33610e566000546001600160a01b031690565b6001600160a01b031614610eac5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b610eb66000611433565b565b60035460009068010000000000000000900467ffffffffffffffff16610ede5750600090565b60055460035460045467ffffffffffffffff600160601b909304831692610f3192680100000000000000009004169063ffffffff7401000000000000000000000000000000000000000090910416611db6565b67ffffffffffffffff1610905090565b60006104fe61160a565b33610f5e6000546001600160a01b031690565b6001600160a01b031614610fb45760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b610fbc611490565b610e408161166b565b6005546004546000916104fe9167ffffffffffffffff80831692600160c01b90920463ffffffff1691600160601b9004166112be565b3361100e6000546001600160a01b031690565b6001600160a01b0316146110645760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b61106c611490565b610e40816116c2565b60006104fe6117aa565b6005546004546000916110ac9167ffffffffffffffff90911690600160c01b900463ffffffff16846112be565b92915050565b6000336110c76000546001600160a01b031690565b6001600160a01b03161461111d5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b6110ac826117d5565b60006104fe61128e565b600061114360035463ffffffff16151590565b80156104fe57506104fe610c99565b336111656000546001600160a01b031690565b6001600160a01b0316146111bb5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e657200000000000000006044820152606401610554565b6001600160a01b0381166112375760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610554565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b600554600090600160601b900467ffffffffffffffff166112ad6117aa565b67ffffffffffffffff161115905090565b60008063ffffffff84166112d28685611e57565b6112dc9190611dd9565b90506112ee63ffffffff851682611e27565b6112f89086611db6565b9150505b9392505050565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b15801561136857600080fd5b505afa15801561137c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a09190611c24565b6113aa9190611d76565b604080516001600160a01b038616602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905290915061142d90859061193e565b50505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6003544390640100000000900463ffffffff1615806114be5750600354640100000000900463ffffffff1681105b610e405760405162461bcd60e51b815260206004820152601860248201527f44726177426561636f6e2f726e672d696e2d666c6967687400000000000000006044820152606401610554565b603c8163ffffffff16116115865760405162461bcd60e51b815260206004820152602160248201527f44726177426561636f6e2f726e672d74696d656f75742d67742d36302d73656360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610554565b600480547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527f521671714dd36d366adf3fe2efec91d3f58a3131aad68e268821d8144b5d0845906020015b60405180910390a150565b6000806116156117aa565b9050600061163460055467ffffffffffffffff600160601b9091041690565b90508067ffffffffffffffff168267ffffffffffffffff161161165a5760009250505090565b6116648183611e57565b9250505090565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517ff935763cc7c57ee8ed6318ed71e756cca0731294c9f46ff5b386f36d6ff1417a90600090a250565b60008163ffffffff161161173e5760405162461bcd60e51b815260206004820152602a60248201527f44726177426561636f6e2f626561636f6e2d706572696f642d6772656174657260448201527f2d7468616e2d7a65726f000000000000000000000000000000000000000000006064820152608401610554565b600480547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b63ffffffff8416908102919091179091556040519081527f4727494dbd863e2084366f539d6ec569aaf7ab78582a34f006f004266777cd19906020016115ff565b6004546005546000916104fe91600160c01b90910463ffffffff169067ffffffffffffffff16611db6565b6004546000906001600160a01b0390811690831661185b5760405162461bcd60e51b815260206004820152602860248201527f44726177426561636f6e2f647261772d686973746f72792d6e6f742d7a65726f60448201527f2d616464726573730000000000000000000000000000000000000000000000006064820152608401610554565b806001600160a01b0316836001600160a01b031614156118e35760405162461bcd60e51b815260206004820152602860248201527f44726177426561636f6e2f6578697374696e672d647261772d686973746f727960448201527f2d616464726573730000000000000000000000000000000000000000000000006064820152608401610554565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385169081179091556040517feb70b03fab908e126e5efc33f8dfd2731fa89c716282a86769025f8dd4a6c1e090600090a25090919050565b6000611993826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a289092919063ffffffff16565b805190915015611a2357808060200190518101906119b19190611c02565b611a235760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610554565b505050565b6060611a378484600085611a3f565b949350505050565b606082471015611ab75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610554565b843b611b055760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610554565b600080866001600160a01b03168587604051611b219190611d09565b60006040518083038185875af1925050503d8060008114611b5e576040519150601f19603f3d011682016040523d82523d6000602084013e611b63565b606091505b5091509150611b73828286611b7e565b979650505050505050565b60608315611b8d5750816112fc565b825115611b9d5782518084602001fd5b8160405162461bcd60e51b81526004016105549190611d25565b600060208284031215611bc957600080fd5b81356112fc81611edb565b60008060408385031215611be757600080fd5b8251611bf281611edb565b6020939093015192949293505050565b600060208284031215611c1457600080fd5b815180151581146112fc57600080fd5b600060208284031215611c3657600080fd5b5051919050565b600060208284031215611c4f57600080fd5b81356112fc81611ef0565b600060208284031215611c6c57600080fd5b81516112fc81611ef0565b60008060408385031215611c8a57600080fd5b8235611c9581611ef0565b91506020830135611ca581611ef0565b809150509250929050565b60008060408385031215611cc357600080fd5b8251611cce81611ef0565b6020840151909250611ca581611ef0565b600060208284031215611cf157600080fd5b813567ffffffffffffffff811681146112fc57600080fd5b60008251611d1b818460208701611e80565b9190910192915050565b6020815260008251806020840152611d44816040850160208701611e80565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008219821115611d8957611d89611eac565b500190565b600063ffffffff808316818516808303821115611dad57611dad611eac565b01949350505050565b600067ffffffffffffffff808316818516808303821115611dad57611dad611eac565b600067ffffffffffffffff80841680611e1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff80831681851681830481118215151615611e4e57611e4e611eac565b02949350505050565b600067ffffffffffffffff83811690831681811015611e7857611e78611eac565b039392505050565b60005b83811015611e9b578181015183820152602001611e83565b8381111561142d5750506000910152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001600160a01b0381168114610e4057600080fd5b63ffffffff81168114610e4057600080fdfea26469706673582212205860c520822e64c68b1aa2d7645cf3d01b12ec6e622d49b3ce172b5b61a51b1d64736f6c63430008060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
