{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockPriceSubmitter",
  "sourceName": "contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "submitter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "epochId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "contract IFtsoGenesis[]",
          "name": "ftsos",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "hashes",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "PriceHashesSubmitted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "epochId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "contract IFtsoGenesis[]",
          "name": "ftsos",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "prices",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "randoms",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "PricesRevealed",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "getFtsoManager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFtsoRegistry",
      "outputs": [
        {
          "internalType": "contract IFtsoRegistryGenesis",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVoterWhitelister",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_epochId",
          "type": "uint256"
        },
        {
          "internalType": "uint256[]",
          "name": "_ftsoIndices",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_prices",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_randoms",
          "type": "uint256[]"
        }
      ],
      "name": "revealPrices",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_epochId",
          "type": "uint256"
        },
        {
          "internalType": "uint256[]",
          "name": "_ftsoIndices",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_hashes",
          "type": "bytes32[]"
        }
      ],
      "name": "submitPriceHashes",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "voterWhitelistBitmap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_ftsoIndex",
          "type": "uint256"
        }
      ],
      "name": "voterWhitelisted",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_removedVoters",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_ftsoIndex",
          "type": "uint256"
        }
      ],
      "name": "votersRemovedFromWhitelist",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5030604051620000219062000418565b6200002d9190620004a9565b604051809103906000f0801580156200004a573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117905560405130906200007b9062000426565b620000879190620004a9565b604051809103906000f080158015620000a4573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b0392831617908190556000546040516317f1580560e21b815291831692635fc5601492620000ef9290911690600401620004a9565b600060405180830381600087803b1580156200010a57600080fd5b505af11580156200011f573d6000803e3d6000fd5b50506040805161018081018252600361014082018181526229a3a160e91b6101608401528252825180840184528181526205852560ec1b6020828101919091528084019190915283518085018552828152624c544360e81b81830152838501528351808501855282815262584c4d60e81b818301526060840152835180850185528281526258444760e81b818301526080840152835180850185528281526241444160e81b8183015260a0840152835180850185526004815263414c474f60e01b8183015260c0840152835180850185528281526208486960eb1b8183015260e084015283518085018552828152622223a160e91b8183015261010084015283518085019094529083526242544360e81b908301526101208101919091529150600090505b600a811015620004105760008282600a81106200025d57fe5b6020020151905060008130607842036078601e6040516200027e9062000434565b6200028e959493929190620004d9565b604051809103906000f080158015620002ab573d6000803e3d6000fd5b50600054604051630998fc6d60e21b81529192506001600160a01b031690632663f1b490620002df908490600401620004a9565b600060405180830381600087803b158015620002fa57600080fd5b505af11580156200030f573d6000803e3d6000fd5b505060008054604051630e848da360e41b81529193506001600160a01b0316915063e848da309062000346908690600401620004bd565b60206040518083038186803b1580156200035f57600080fd5b505afa15801562000374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039a919062000442565b600154604051630d15c16960e21b81529192506001600160a01b03169063345705a490620003cd9084906004016200051b565b600060405180830381600087803b158015620003e857600080fd5b505af1158015620003fd573d6000803e3d6000fd5b5050505050505080600101905062000244565b505062000524565b61219b80620013a083390190565b610c38806200353b83390190565b6114a2806200417383390190565b60006020828403121562000454578081fd5b5051919050565b60008151808452815b81811015620004825760208185018101518683018201520162000464565b81811115620004945782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b600060208252620004d260208301846200045b565b9392505050565b600060a08252620004ee60a08301886200045b565b6001600160a01b039690961660208301525060408101939093526060830191909152608090910152919050565b90815260200190565b610e6c80620005346000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638c9d28b61161005b5780638c9d28b6146100f35780639d986f91146100fb578063b39c68581461010e578063c5adc5391461011657610088565b806360848b441461008d57806371e1fad9146100a257806376794efb146100c05780637ac420ad146100d3575b600080fd5b6100a061009b366004610b18565b610129565b005b6100aa610486565b6040516100b79190610c18565b60405180910390f35b6100a06100ce366004610907565b610495565b6100e66100e13660046108b9565b610548565b6040516100b79190610dd3565b6100aa610563565b6100a06101093660046108dc565b610572565b6100aa6105f4565b6100a0610124366004610a57565b61060e565b8251825160408051808201909152601a815279082e4e4c2f240d8cadccee8d0e640c8de40dcdee840dac2e8c6d60331b60208201529082146101875760405162461bcd60e51b815260040161017e9190610d51565b60405180910390fd5b50815181146040518060400160405280601a815260200179082e4e4c2f240d8cadccee8d0e640c8de40dcdee840dac2e8c6d60331b815250906101dd5760405162461bcd60e51b815260040161017e9190610d51565b50600080546040516313968ea760e31b81526001600160a01b0390911690639cb475389061020f908890600401610d3e565b60006040518083038186803b15801561022757600080fd5b505afa15801561023b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261026391908101906109a6565b33600090815260026020526040812054919250600019905b8481101561043357600088828151811061029157fe5b60200260200101519050806001901b8416600014156102e757604080518082018252600f81526e139bdd081dda1a5d195b1a5cdd1959608a1b6020820152905162461bcd60e51b815261017e9190600401610d51565b600019831415610387578482815181106102fd57fe5b60200260200101516001600160a01b031663f72cab28338c6040518363ffffffff1660e01b8152600401610332929190610c2c565b602060405180830381600087803b15801561034c57600080fd5b505af1158015610360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103849190610a3f565b92505b84828151811061039357fe5b60200260200101516001600160a01b03166355f7b69b338c8b86815181106103b757fe5b60200260200101518b87815181106103cb57fe5b6020026020010151886040518663ffffffff1660e01b81526004016103f4959493929190610c66565b600060405180830381600087803b15801561040e57600080fd5b505af1158015610422573d6000803e3d6000fd5b50506001909301925061027b915050565b5087336001600160a01b03167fa32444a31df2f9a116229eec3193d223a6bad89f7670ff17b8e5c7014a377da1858989426040516104749493929190610cf3565b60405180910390a35050505050505050565b6001546001600160a01b031690565b600154604080518082019091526016815275566f7465722077686974656c6973746572206f6e6c7960501b6020820152906001600160a01b031633146104ee5760405162461bcd60e51b815260040161017e9190610d51565b5060005b825181101561054357816001901b196002600085848151811061051157fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805490911690556001016104f2565b505050565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b031690565b600154604080518082019091526016815275566f7465722077686974656c6973746572206f6e6c7960501b6020820152906001600160a01b031633146105cb5760405162461bcd60e51b815260040161017e9190610d51565b506001600160a01b0390911660009081526002602052604090208054600190921b919091179055565b600060405162461bcd60e51b815260040161017e90610da4565b8151815160408051808201909152601a815279082e4e4c2f240d8cadccee8d0e640c8de40dcdee840dac2e8c6d60331b60208201529082146106635760405162461bcd60e51b815260040161017e9190610d51565b50600080546040516313968ea760e31b81526001600160a01b0390911690639cb4753890610695908790600401610d3e565b60006040518083038186803b1580156106ad57600080fd5b505afa1580156106c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e991908101906109a6565b336000908152600260205260408120549192505b838110156107fe57600086828151811061071357fe5b60200260200101519050806001901b83166000141561076957604080518082018252600f81526e139bdd081dda1a5d195b1a5cdd1959608a1b6020820152905162461bcd60e51b815261017e9190600401610d51565b83828151811061077557fe5b60200260200101516001600160a01b03166327bd2ad5338a89868151811061079957fe5b60200260200101516040518463ffffffff1660e01b81526004016107bf93929190610c45565b600060405180830381600087803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b5050600190930192506106fd915050565b5085336001600160a01b03167f90c022ade239639b1f8c4ebb8a76df5e03a7129df46cf9bcdae3c1450ea3543484874260405161083d93929190610c94565b60405180910390a3505050505050565b600082601f83011261085d578081fd5b8135602061087261086d83610e00565b610ddc565b828152818101908583018385028701840188101561088e578586fd5b855b858110156108ac57813584529284019290840190600101610890565b5090979650505050505050565b6000602082840312156108ca578081fd5b81356108d581610e1e565b9392505050565b600080604083850312156108ee578081fd5b82356108f981610e1e565b946020939093013593505050565b60008060408385031215610919578182fd5b823567ffffffffffffffff81111561092f578283fd5b8301601f8101851361093f578283fd5b8035602061094f61086d83610e00565b82815281810190848301838502860184018a101561096b578788fd5b8795505b8486101561099657803561098281610e1e565b83526001959095019491830191830161096f565b5098969091013596505050505050565b600060208083850312156109b8578182fd5b825167ffffffffffffffff8111156109ce578283fd5b8301601f810185136109de578283fd5b80516109ec61086d82610e00565b8181528381019083850185840285018601891015610a08578687fd5b8694505b83851015610a33578051610a1f81610e1e565b835260019490940193918501918501610a0c565b50979650505050505050565b600060208284031215610a50578081fd5b5051919050565b600080600060608486031215610a6b578081fd5b8335925060208085013567ffffffffffffffff80821115610a8a578384fd5b610a968883890161084d565b94506040870135915080821115610aab578384fd5b508501601f81018713610abc578283fd5b8035610aca61086d82610e00565b81815283810190838501858402850186018b1015610ae6578687fd5b8694505b83851015610b08578035835260019490940193918501918501610aea565b5080955050505050509250925092565b60008060008060808587031215610b2d578081fd5b84359350602085013567ffffffffffffffff80821115610b4b578283fd5b610b578883890161084d565b94506040870135915080821115610b6c578283fd5b610b788883890161084d565b93506060870135915080821115610b8d578283fd5b50610b9a8782880161084d565b91505092959194509250565b6000815180845260208085019450808401835b83811015610bde5781516001600160a01b031687529582019590820190600101610bb9565b509495945050505050565b6000815180845260208085019450808401835b83811015610bde57815187529582019590820190600101610bfc565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b600060608252610ca76060830186610ba6565b828103602084810191909152855180835286820192820190845b81811015610cdd57845183529383019391830191600101610cc1565b5050809350505050826040830152949350505050565b600060808252610d066080830187610ba6565b8281036020840152610d188187610be9565b90508281036040840152610d2c8186610be9565b91505082606083015295945050505050565b6000602082526108d56020830184610be9565b6000602080835283518082850152825b81811015610d7d57858101830151858201604001528201610d61565b81811115610d8e5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260159082015274139bdd081a5b88191d5b5b5e4818dbdb9d1c9858dd605a1b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610df857fe5b604052919050565b600067ffffffffffffffff821115610e1457fe5b5060209081020190565b6001600160a01b0381168114610e3357600080fd5b5056fea2646970667358221220792650935fab4cf794a8c71a54e0e934b9d88929aab6c2aebcb0a3164cb4847664736f6c6343000706003360806040523480156200001157600080fd5b506040516200219b3803806200219b83398101604081905262000034916200018d565b80806001600160a01b0381161562000051576200005181620000a9565b506001600160a01b038116620000a1576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b5050620001bd565b600154600160a01b900460ff161562000109576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000602082840312156200019f578081fd5b81516001600160a01b0381168114620001b6578182fd5b9392505050565b611fce80620001cd6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80639cb47538116100c3578063c71a1b201161007c578063c71a1b20146102d5578063ce1c0e4d146102f5578063d38bfff41461030a578063d75f6d811461031d578063e68f283b14610330578063e848da301461034657610158565b80639cb47538146102615780639d6a890f14610281578063a40060ba14610294578063a670ff871461029c578063c373a08e146102af578063c55d0f56146102c257610158565b80635aa6e675116101155780635aa6e675146101fd5780635d36b1901461021257806360f7ac971461021a5780637687542c14610222578063798aac5b1461023957806397da6af41461024e57610158565b806306a2ba291461015d5780630cf484971461017c578063136d3f64146101925780632663f1b4146101b25780632bcdd6ab146101c757806342a0f243146101dc575b600080fd5b610165610366565b604051610173929190611e4a565b60405180910390f35b61018461043c565b604051610173929190611e12565b6101a56101a0366004611c22565b610601565b6040516101739190611ec5565b6101c56101c0366004611a75565b610688565b005b6101cf610896565b6040516101739190611dec565b6101ef6101ea366004611b38565b610952565b604051610173929190611ee1565b6102056109de565b6040516101739190611d51565b6101c56109ed565b610205610aaf565b61022a610abe565b60405161017393929190611e82565b610241610c83565b6040516101739190611e37565b61020561025c366004611b38565b610c92565b61027461026f366004611a98565b610ca0565b6040516101739190611d65565b6101c561028f366004611a75565b610e2d565b6101cf610f07565b6101c56102aa366004611a75565b610fde565b6101c56102bd366004611a75565b611205565b6101ef6102d0366004611c22565b611261565b6102e86102e3366004611c22565b61126d565b6040516101739190611db2565b6102fd611353565b6040516101739190611dff565b6101c5610318366004611a75565b61148a565b61020561032b366004611c22565b611503565b61033861150e565b604051610173929190611e5d565b610359610354366004611b38565b611644565b6040516101739190611ed8565b60608061037161164f565b8051909250806001600160401b038111801561038c57600080fd5b506040519080825280602002602001820160405280156103b6578160200160208202803683370190505b5091505b8015610437578060019003905060028382815181106103d557fe5b6020026020010151815481106103e757fe5b600091825260208220600590910201015482516001600160a01b039091169083908390811061041257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506103ba565b509091565b606080600061044961164f565b8051909150806001600160401b038111801561046457600080fd5b5060405190808252806020026020018201604052801561048e578160200160208202803683370190505b509250806001600160401b03811180156104a757600080fd5b506040519080825280602002602001820160405280156104db57816020015b60608152602001906001900390816104c65790505b5093505b80156105fb578060019003905060028282815181106104fa57fe5b60200260200101518154811061050c57fe5b600091825260208220600590910201015483516001600160a01b039091169084908390811061053757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505082818151811061056357fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156105a357600080fd5b505afa1580156105b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105df9190810190611bb0565b8482815181106105eb57fe5b60200260200101819052506104df565b50509091565b606061060c82611790565b6001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561064457600080fd5b505afa158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106809190810190611bb0565b90505b919050565b610690611847565b600060028054905090506000826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156106d557600080fd5b505afa1580156106e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107119190810190611bb0565b90506000816040516020016107269190611ec5565b60405160208183030381529060405280519060200120905060005b838110156108315760006002828154811061075857fe5b60009182526020822060059091020101546001600160a01b031690508061077f5750610829565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156107b857600080fd5b505afa1580156107cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f49190810190611bb0565b6040516020016108049190611ec5565b604051602081830303815290604052805190602001208314156108275750610831565b505b600101610741565b8381141561084a57600280546001018155600052610853565b6108538161189a565b846002828154811061086157fe5b6000918252602082206005909102010180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6002546060906000816001600160401b03811180156108b457600080fd5b506040519080825280602002602001820160405280156108de578160200160208202803683370190505b5090505b811561094c5781600190039150600282815481106108fc57fe5b600091825260208220600590910201015481516001600160a01b039091169082908490811061092757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506108e2565b91505090565b6000806109666109618461192d565b611790565b6001600160a01b031663eb91d37e6040518163ffffffff1660e01b8152600401604080518083038186803b15801561099d57600080fd5b505afa1580156109b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d59190611c3a565b91509150915091565b6000546001600160a01b031681565b6001546001600160a01b03163314610a3c576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6060806060610acb61164f565b8051909350806001600160401b0381118015610ae657600080fd5b50604051908082528060200260200182016040528015610b10578160200160208202803683370190505b509150806001600160401b0381118015610b2957600080fd5b50604051908082528060200260200182016040528015610b5d57816020015b6060815260200190600190039081610b485790505b5092505b8015610c7d57806001900390506002848281518110610b7c57fe5b602002602001015181548110610b8e57fe5b600091825260208220600590910201015482516001600160a01b0390911690839083908110610bb957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818181518110610be557fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015610c2557600080fd5b505afa158015610c39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c619190810190611bb0565b838281518110610c6d57fe5b6020026020010181905250610b61565b50909192565b6060610c8d61164f565b905090565b60006106806109618361192d565b600254815160609190806001600160401b0381118015610cbf57600080fd5b50604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b5092505b8015610e2657806001900390506000848281518110610d0857fe5b60200260200101519050828110604051806040016040528060188152602001600080516020611f7983398151915281525090610d605760405162461bcd60e51b8152600401610d579190611ec5565b60405180910390fd5b5060028181548110610d6e57fe5b600091825260208220600590910201015484516001600160a01b0390911690859084908110610d9957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006001600160a01b0316848381518110610dd057fe5b60200260200101516001600160a01b03161415610e205760408051808201825260188152600080516020611f798339815191526020820152905162461bcd60e51b8152610d579190600401611ec5565b50610ced565b5050919050565b600154600160a01b900460ff1615610e83576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60606000610f1361164f565b8051909150806001600160401b0381118015610f2e57600080fd5b50604051908082528060200260200182016040528015610f58578160200160208202803683370190505b5092505b8015610fd957806001900390506002828281518110610f7757fe5b602002602001015181548110610f8957fe5b600091825260208220600590910201015483516001600160a01b0390911690849083908110610fb457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050610f5c565b505090565b610fe6611847565b6000816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561102157600080fd5b505afa158015611035573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261105d9190810190611bb0565b60405160200161106d9190611ec5565b60408051601f19818403018152919052805160209091012060025490915060005b818110156111c8576000600282815481106110a557fe5b60009182526020822060059091020101546001600160a01b03169050806110cc57506111c0565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111419190810190611bb0565b6040516020016111519190611ec5565b604051602081830303815290604052805190602001208414156111be576111778261189a565b60006002838154811061118657fe5b6000918252602082206005909102010180546001600160a01b0319166001600160a01b03929092169190911790555061120292505050565b505b60010161108e565b5060408051808201825260188152600080516020611f798339815191526020820152905162461bcd60e51b8152610d579190600401611ec5565b50565b61120d611847565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b60008061096683611790565b611275611a57565b600254821080156112b6575060006001600160a01b03166002838154811061129957fe5b60009182526020822060059091020101546001600160a01b031614155b604051806040016040528060188152602001600080516020611f79833981519152815250906112f85760405162461bcd60e51b8152600401610d579190611ec5565b506002828154811061130657fe5b600091825260209091206040805160a0810191829052926005908102909201919082845b81546001600160a01b0316815260019091019060200180831161132a5750505050509050919050565b6060600061135f61164f565b8051909150806001600160401b038111801561137a57600080fd5b506040519080825280602002602001820160405280156113ae57816020015b60608152602001906001900390816113995790505b5092505b8015610fd95780600190039050600060028383815181106113cf57fe5b6020026020010151815481106113e157fe5b6000918252602082206005919091020154604080516395d89b4160e01b815290516001600160a01b03909216935083926395d89b4192600480840193829003018186803b15801561143157600080fd5b505afa158015611445573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261146d9190810190611bb0565b84838151811061147957fe5b6020026020010181905250506113b2565b611492611847565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600061068082611790565b60608061151961164f565b8051909250806001600160401b038111801561153457600080fd5b5060405190808252806020026020018201604052801561156857816020015b60608152602001906001900390816115535790505b5091505b801561043757806001900390506000600284838151811061158957fe5b60200260200101518154811061159b57fe5b6000918252602082206005919091020154604080516395d89b4160e01b815290516001600160a01b03909216935083926395d89b4192600480840193829003018186803b1580156115eb57600080fd5b505afa1580156115ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116279190810190611bb0565b83838151811061163357fe5b60200260200101819052505061156c565b60006106808261192d565b6002546060906000816001600160401b038111801561166d57600080fd5b50604051908082528060200260200182016040528015611697578160200160208202803683370190505b50905060008060005b8481101561170657826001600160a01b0316600282815481106116bf57fe5b60009182526020822060059091020101546001600160a01b0316146116fe57808483815181106116eb57fe5b6020026020010181815250508160010191505b6001016116a0565b50806001600160401b038111801561171d57600080fd5b50604051908082528060200260200182016040528015611747578160200160208202803683370190505b5094505b8015611789578060019003905082818151811061176457fe5b602002602001015185828151811061177857fe5b60200260200101818152505061174b565b5050505090565b6002546040805180820190915260188152600080516020611f79833981519152602082015260009183106117d75760405162461bcd60e51b8152600401610d579190611ec5565b506000600283815481106117e757fe5b60009182526020822060059091020101546001600160a01b03169050806118415760408051808201825260188152600080516020611f798339815191526020820152905162461bcd60e51b8152610d579190600401611ec5565b92915050565b6000546001600160a01b03163314611898576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b60045b801561192957600282815481106118b057fe5b906000526020600020906005020160018203600581106118cc57fe5b0154600280546001600160a01b0390921691849081106118e857fe5b9060005260206000209060050201826005811061190157fe5b0180546001600160a01b0319166001600160a01b03929092169190911790556000190161189d565b5050565b600080826040516020016119419190611ec5565b60408051601f19818403018152919052805160209091012060025490915060005b818110156111c85760006002828154811061197957fe5b60009182526020822060059091020101546001600160a01b03169050806119a05750611a4f565b806001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156119d957600080fd5b505afa1580156119ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a159190810190611bb0565b604051602001611a259190611ec5565b60405160208183030381529060405280519060200120841415611a4d57509250610683915050565b505b600101611962565b6040518060a001604052806005906020820280368337509192915050565b600060208284031215611a86578081fd5b8135611a9181611f63565b9392505050565b60006020808385031215611aaa578182fd5b82356001600160401b0380821115611ac0578384fd5b818501915085601f830112611ad3578384fd5b813581811115611adf57fe5b8381029150611aef848301611eef565b8181528481019084860184860187018a1015611b09578788fd5b8795505b83861015611b2b578035835260019590950194918601918601611b0d565b5098975050505050505050565b600060208284031215611b49578081fd5b81356001600160401b03811115611b5e578182fd5b8201601f81018413611b6e578182fd5b8035611b81611b7c82611f12565b611eef565b818152856020838501011115611b95578384fd5b81602084016020830137908101602001929092525092915050565b600060208284031215611bc1578081fd5b81516001600160401b03811115611bd6578182fd5b8201601f81018413611be6578182fd5b8051611bf4611b7c82611f12565b818152856020838501011115611c08578384fd5b611c19826020830160208601611f33565b95945050505050565b600060208284031215611c33578081fd5b5035919050565b60008060408385031215611c4c578081fd5b505080516020909101519092909150565b6000815180845260208085019450808401835b83811015611c955781516001600160a01b031687529582019590820190600101611c70565b509495945050505050565b60008282518085526020808601955080818302840101818601855b84811015611ce957601f19868403018952611cd7838351611d25565b98840198925090830190600101611cbb565b5090979650505050505050565b6000815180845260208085019450808401835b83811015611c9557815187529582019590820190600101611d09565b60008151808452611d3d816020860160208601611f33565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b81811015611da65783516001600160a01b031683529284019291840191600101611d81565b50909695505050505050565b60a08101818360005b6005811015611de35781516001600160a01b0316835260209283019290910190600101611dbb565b50505092915050565b600060208252611a916020830184611c5d565b600060208252611a916020830184611ca0565b600060408252611e256040830185611ca0565b8281036020840152611c198185611c5d565b600060208252611a916020830184611cf6565b600060408252611e256040830185611cf6565b600060408252611e706040830185611cf6565b8281036020840152611c198185611ca0565b600060608252611e956060830186611cf6565b8281036020840152611ea78186611ca0565b90508281036040840152611ebb8185611c5d565b9695505050505050565b600060208252611a916020830184611d25565b90815260200190565b918252602082015260400190565b6040518181016001600160401b0381118282101715611f0a57fe5b604052919050565b60006001600160401b03821115611f2557fe5b50601f01601f191660200190565b60005b83811015611f4e578181015183820152602001611f36565b83811115611f5d576000848401525b50505050565b6001600160a01b038116811461120257600080fdfe4654534f20696e646578206e6f7420737570706f727465640000000000000000a26469706673582212201234220f3bf14f75e3b800b434e6d009bccab3025a276e4c6aa38161fe17298d64736f6c634300070600336080604052600160005534801561001557600080fd5b50604051610c38380380610c3883398101604081905261003491610059565b600380546001600160a01b0319166001600160a01b0392909216919091179055610087565b60006020828403121561006a578081fd5b81516001600160a01b0381168114610080578182fd5b9392505050565b610ba2806100966000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80635fc560141161005b5780635fc56014146100f357806398dccfc214610106578063aa89dfd414610119578063b06cbaf71461012c57610088565b806309fcb4001461008d578063345705a4146100b65780633de2cb1c146100cb57806347ed51b1146100de575b600080fd5b6100a061009b3660046108a6565b61014d565b6040516100ad9190610932565b60405180910390f35b6100c96100c43660046108a6565b610211565b005b6100c96100d9366004610753565b61027a565b6100e66102d0565b6040516100ad9190610b27565b6100c9610101366004610737565b6102d6565b6100e66101143660046108a6565b610322565b6100a061012736600461081f565b610334565b61013f61013a366004610737565b6103c9565b6040516100ad929190610967565b600081815260016020526040902054606090806101855760405162461bcd60e51b815260040161017c90610a96565b60405180910390fd5b6000838152600260205260409020546001600160a01b0316806101ba575050604080516000815260208101909152905061020c565b6040805160018082528183019092526000916020808301908036833701905050905081816000815181106101ea57fe5b6001600160a01b0390921660209283029190910190910152925061020c915050565b919050565b6003546001600160a01b0316331461023b5760405162461bcd60e51b815260040161017c90610af9565b600081815260016020526040902054156102675760405162461bcd60e51b815260040161017c90610a5f565b6000805491815260016020526040902055565b6102838261050c565b156102a05760405162461bcd60e51b815260040161017c90610a36565b60006102ac8383610512565b9050806102cb5760405162461bcd60e51b815260040161017c90610acd565b505050565b60005481565b6003546001600160a01b031633146103005760405162461bcd60e51b815260040161017c90610af9565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60016020526000908152604090205481565b60048054604051630e848da360e41b81526060926000926001600160a01b03169163e848da3091610367918791016109e3565b60206040518083038186803b15801561037f57600080fd5b505afa158015610393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b791906108be565b90506103c28161014d565b9392505050565b6060806103d58361050c565b156103f25760405162461bcd60e51b815260040161017c90610a36565b600480546040805163798aac5b60e01b815290516001600160a01b039092169263798aac5b928282019260009290829003018186803b15801561043457600080fd5b505afa158015610448573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610470919081019061077e565b80519092508067ffffffffffffffff8111801561048c57600080fd5b506040519080825280602002602001820160405280156104b6578160200160208202803683370190505b50915060005b81811015610505576104e1858583815181106104d457fe5b6020026020010151610512565b8382815181106104ed57fe5b911515602092830291909101909101526001016104bc565b5050915091565b50600090565b6000818152600160205260408120548061053e5760405162461bcd60e51b815260040161017c90610a96565b6000838152600260205260409020546001600160a01b0390811690851681141561056d576001925050506105fd565b600084815260026020908152604080832080546001600160a01b0319166001600160a01b038a161790558051600180825281830190925291828101908036833701905050905081816000815181106105c157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506105eb8186610603565b6105f586866106cc565b600193505050505b92915050565b60005b8251811015610663577f33359f2769756ca8d0da4683f25ee440744d6f18bfb166dbfb59315a8c62b01683828151811061063c57fe5b602002602001015183604051610653929190610919565b60405180910390a1600101610606565b506003546040516376794efb60e01b81526001600160a01b03909116906376794efb906106969085908590600401610945565b600060405180830381600087803b1580156106b057600080fd5b505af11580156106c4573d6000803e3d6000fd5b505050505050565b7f66a8b13abe95391d1851f5bc319f3dde54ce8f2f40a5fe226aa3251d805832e382826040516106fd929190610919565b60405180910390a1600354604051639d986f9160e01b81526001600160a01b0390911690639d986f91906106969085908590600401610919565b600060208284031215610748578081fd5b81356103c281610b54565b60008060408385031215610765578081fd5b823561077081610b54565b946020939093013593505050565b60006020808385031215610790578182fd5b825167ffffffffffffffff808211156107a7578384fd5b818501915085601f8301126107ba578384fd5b8151818111156107c657fe5b83810291506107d6848301610b30565b8181528481019084860184860187018a10156107f0578788fd5b8795505b838610156108125780518352600195909501949186019186016107f4565b5098975050505050505050565b60006020808385031215610831578182fd5b823567ffffffffffffffff80821115610848578384fd5b818501915085601f83011261085b578384fd5b81358181111561086757fe5b610879601f8201601f19168501610b30565b9150808252868482850101111561088e578485fd5b80848401858401378101909201929092529392505050565b6000602082840312156108b7578081fd5b5035919050565b6000602082840312156108cf578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561090e5781516001600160a01b0316875295820195908201906001016108e9565b509495945050505050565b6001600160a01b03929092168252602082015260400190565b6000602082526103c260208301846108d6565b60006040825261095860408301856108d6565b90508260208301529392505050565b604080825283519082018190526000906020906060840190828701845b828110156109a057815184529284019290840190600101610984565b50505083810382850152845180825285830191830190845b818110156109d65783511515835292840192918401916001016109b8565b5090979650505050505050565b6000602080835283518082850152825b81811015610a0f578581018301518582016040015282016109f3565b81811115610a205783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600f908201526e74727573746564206164647265737360881b604082015260600190565b60208082526017908201527f77686974656c69737420616c7265616479206578697374000000000000000000604082015260600190565b60208082526018908201527f4654534f20696e646578206e6f7420737570706f727465640000000000000000604082015260600190565b602080825260129082015271766f746520706f77657220746f6f206c6f7760701b604082015260600190565b60208082526014908201527337b7363c90383934b1b29039bab136b4ba3a32b960611b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610b4c57fe5b604052919050565b6001600160a01b0381168114610b6957600080fd5b5056fea264697066735822122017a9a9690e9db4743683b26c8ec9913895e110cc2dc82a4e403f2df689ad06b264736f6c6343000706003360806040523480156200001157600080fd5b50604051620014a2380380620014a2833981810160405260a08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b5060409081526020828101519183015160608401516080909401518751939650909450916200011c916001919088019062000163565b50426003556000805460ff19166001179055600680546001600160a01b039095166001600160a01b031990951694909417909355600991909155600a55600b55506200020f565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200019b5760008555620001e6565b82601f10620001b657805160ff1916838001178555620001e6565b82800160010185558215620001e6579182015b82811115620001e6578251825591602001919060010190620001c9565b50620001f4929150620001f8565b5090565b5b80821115620001f45760008155600101620001f9565b611283806200021f6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c8063974d7a6b1161011a578063d89601fd116100ad578063eb91d37e1161007c578063eb91d37e146107c1578063f670ebe3146107e2578063f72cab2814610807578063f7dba1f514610833578063f937d6ad1461088857610206565b8063d89601fd14610719578063e3749e0c14610721578063e3b3a3b31461078c578063e536f3961461068557610206565b8063c5d8b9e7116100e9578063c5d8b9e7146106aa578063cd4b69141461048d578063cf35bdd0146106d6578063d0d552dd146106f357610206565b8063974d7a6b146106855780639de6f927146106855780639edbf00714610502578063a29a839f146106a257610206565b80635303548b1161019d5780636b52b2421161016c5780636b52b242146105265780637d1d6f121461048d578063826cc76b1461052e5780638357d08c1461054b57806395d89b411461060857610206565b80635303548b1461048d578063555989da146104bc57806355f7b69b146104c45780635c222bad1461050257610206565b806327bd2ad5116101d957806327bd2ad51461034a5780632f0a6f3c1461037c578063306ba253146103a557806340462a2d146103c857610206565b806302fb0c5e1461020b578063131fdee214610227578063144e1591146102cc57806318931c35146102f2575b600080fd5b610213610890565b604080519115158252519081900360200190f35b6102ca6004803603602081101561023d57600080fd5b81019060208101813564010000000081111561025857600080fd5b82018360208201111561026a57600080fd5b8035906020019184602083028401116401000000008311171561028c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610899945050505050565b005b6102d461093f565b60408051938452602084019290925282820152519081900360600190f35b6102fa61094d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033657818101518382015260200161031e565b505050509050019250505060405180910390f35b6102ca6004803603606081101561036057600080fd5b506001600160a01b0381351690602081013590604001356109b1565b6102ca6004803603606081101561039257600080fd5b5080359060208101359060400135610899565b6102ca600480360360408110156103bb57600080fd5b5080359060200135610899565b6103ed600480360360408110156103de57600080fd5b50803590602001351515610b56565b604051808060200180602001848152602001838103835286818151815260200191508051906020019060200280838360005b8381101561043757818101518382015260200161041f565b50505050905001838103825285818151815260200191508051906020019060200280838360005b8381101561047657818101518382015260200161045e565b505050509050019550505050505060405180910390f35b6104aa600480360360208110156104a357600080fd5b5035610bc2565b60408051918252519081900360200190f35b6102ca610899565b6102ca600480360360a08110156104da57600080fd5b506001600160a01b038135169060208101359060408101359060608101359060800135610c2a565b61050a610bc2565b604080516001600160a01b039092168252519081900360200190f35b6104aa610eb0565b61050a6004803603602081101561054457600080fd5b5035610eb5565b610553610edf565b604051808060200180602001878152602001868152602001858152602001848152602001838103835289818151815260200191508051906020019060200280838360005b838110156105af578181015183820152602001610597565b50505050905001838103825288818151815260200191508051906020019060200280838360005b838110156105ee5781810151838201526020016105d6565b505050509050019850505050505050505060405180910390f35b610610610f84565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561064a578181015183820152602001610632565b50505050905090810190601f1680156106775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ca6004803603602081101561069b57600080fd5b5035610899565b6104aa610bc2565b6104aa600480360360408110156106c057600080fd5b50803590602001356001600160a01b0316611011565b61050a600480360360208110156106ec57600080fd5b5035611039565b6102ca6004803603602081101561070957600080fd5b50356001600160a01b0316610899565b6104aa611049565b61072961104e565b604051808881526020018781526020018681526020018581526020018481526020018381526020018060200182810382528381815181526020019150805190602001906020028083836000838110156105ee5781810151838201526020016105d6565b610794611114565b60408051958652602086019490945284840192909252606084015215156080830152519081900360a00190f35b6107c961114a565b6040805192835260208301919091528051918290030190f35b6102ca600480360360408110156107f857600080fd5b50803590602001351515610899565b6104aa6004803603604081101561081d57600080fd5b506001600160a01b038135169060200135611150565b6102ca600480360360e081101561084957600080fd5b81359160208101359160408201359160608101359160808201359160a08101359181019060e0810160c082013564010000000081111561025857600080fd5b61050a611158565b60005460ff1681565b604080518082019091526017815260008051602061120b833981519152602082015260405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109045781810151838201526020016108ec565b50505050905090810190601f1680156109315780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600954600a54600b54909192565b6040805180820182526017815260008051602061120b8339815191526020808301918252925162461bcd60e51b81526004810193845282516024820152825160609492839260440191808383600083156109045781810151838201526020016108ec565b6006546001600160a01b031633146109cb576109cb611167565b6109d36111cf565b82146040518060400160405280600e81526020016d15dc9bdb99c8195c1bd8da081a5960921b81525090610a485760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109045781810151838201526020016108ec565b5060008281526004602090815260408083206001600160a01b0387168452825291829020548251808401909352601983527f4475706c6963617465207375626d697420696e2065706f6368000000000000009183019190915215610aed5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109045781810151838201526020016108ec565b5060008281526004602090815260408083206001600160a01b038716808552908352928190208490558051848152429281019290925280518593927f615c0184a2b16dbbcd09eae0bf239e28977aa4e6ff2204eda59c14016310bb6692908290030190a3505050565b6040805180820182526017815260008051602061120b8339815191526020808301918252925162461bcd60e51b815260048101938452825160248201528251606094859460009490939192839260440191908083838983156109045781810151838201526020016108ec565b6040805180820182526017815260008051602061120b8339815191526020808301918252925162461bcd60e51b815260048101938452825160248201528251600094928392604401918083838983156109045781810151838201526020016108ec565b919050565b6006546001600160a01b03163314610c4457610c44611167565b60408051808201909152600e81526d0a0e4d2c6ca40e8dede40d0d2ced60931b6020820152600160801b8410610cbb5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109045781810151838201526020016108ec565b50600a546009546001860190910201428111801590610cdd5750600b54810142105b6040518060400160405280601881526020017f52657665616c20706572696f64206e6f7420616374697665000000000000000081525090610d5f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109045781810151838201526020016108ec565b506040805160208082018790528183018690526001600160a01b0389166060808401829052845180850390910181526080840180865281519184019190912060008b81526004855286812093815292909352908490205460e0840190945260238082529390911492909161122b9060a0013990610e1d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109045781810151838201526020016108ec565b5060008581526004602090815260408083206001600160a01b038a16808552908352818420849055888452600d8352818420818552835281842088905581518881529283018790524283830152606083018490526080830193909352518792917f408bc8c9d02102257c33373c2df5771b03067bd8ea7ec60c35f314ec4ee99d05919081900360a00190a3505050505050565b600581565b60088181548110610ec557600080fd5b6000918252602090912001546001600160a01b0316905081565b606080600080600080600060405180604001604052806017815260200160008051602061120b83398151915281525090610f5a5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109045781810151838201526020016108ec565b50506040805160008082526020820181815282840190935290979196509450849350839250829150565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156110095780601f10610fde57610100808354040283529160200191611009565b820191906000526020600020905b815481529060010190602001808311610fec57829003601f168201915b505050505081565b6000918252600d602090815260408084206001600160a01b0393909316845291905290205490565b60078181548110610ec557600080fd5b600090565b6000806000806000806060600060405180604001604052806017815260200160008051602061120b833981519152815250906110cb5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109045781810151838201526020016108ec565b5060008080808080806040519080825280602002602001820160405280156110fd578160200160208202803683370190505b50959d949c50929a50909850965094509092509050565b60008060008060006111246111cf565b9450600a548560010102600954019350600b548401925060009150600090509091929394565b60008091565b600092915050565b6006546001600160a01b031681565b604080518082018252600d81526c1058d8d95cdcc819195b9a5959609a1b6020808301918252925162461bcd60e51b815260048101938452825160248201528251929392839260449092019190808383600083156109045781810151838201526020016108ec565b60006111da426111df565b905090565b60006009548210156111f357506000610c25565b600a5460095483038161120257fe5b049050610c2556fe556e617661696c61626c6520666f722074657374696e67000000000000000000507269636520616c72656164792072657665616c6564206f72206e6f742076616c6964a2646970667358221220feb10ffe7872e1cbc2ba9a45f9e7ca7fa2e9ba851733b048e3842543fa69ebbf64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638c9d28b61161005b5780638c9d28b6146100f35780639d986f91146100fb578063b39c68581461010e578063c5adc5391461011657610088565b806360848b441461008d57806371e1fad9146100a257806376794efb146100c05780637ac420ad146100d3575b600080fd5b6100a061009b366004610b18565b610129565b005b6100aa610486565b6040516100b79190610c18565b60405180910390f35b6100a06100ce366004610907565b610495565b6100e66100e13660046108b9565b610548565b6040516100b79190610dd3565b6100aa610563565b6100a06101093660046108dc565b610572565b6100aa6105f4565b6100a0610124366004610a57565b61060e565b8251825160408051808201909152601a815279082e4e4c2f240d8cadccee8d0e640c8de40dcdee840dac2e8c6d60331b60208201529082146101875760405162461bcd60e51b815260040161017e9190610d51565b60405180910390fd5b50815181146040518060400160405280601a815260200179082e4e4c2f240d8cadccee8d0e640c8de40dcdee840dac2e8c6d60331b815250906101dd5760405162461bcd60e51b815260040161017e9190610d51565b50600080546040516313968ea760e31b81526001600160a01b0390911690639cb475389061020f908890600401610d3e565b60006040518083038186803b15801561022757600080fd5b505afa15801561023b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261026391908101906109a6565b33600090815260026020526040812054919250600019905b8481101561043357600088828151811061029157fe5b60200260200101519050806001901b8416600014156102e757604080518082018252600f81526e139bdd081dda1a5d195b1a5cdd1959608a1b6020820152905162461bcd60e51b815261017e9190600401610d51565b600019831415610387578482815181106102fd57fe5b60200260200101516001600160a01b031663f72cab28338c6040518363ffffffff1660e01b8152600401610332929190610c2c565b602060405180830381600087803b15801561034c57600080fd5b505af1158015610360573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103849190610a3f565b92505b84828151811061039357fe5b60200260200101516001600160a01b03166355f7b69b338c8b86815181106103b757fe5b60200260200101518b87815181106103cb57fe5b6020026020010151886040518663ffffffff1660e01b81526004016103f4959493929190610c66565b600060405180830381600087803b15801561040e57600080fd5b505af1158015610422573d6000803e3d6000fd5b50506001909301925061027b915050565b5087336001600160a01b03167fa32444a31df2f9a116229eec3193d223a6bad89f7670ff17b8e5c7014a377da1858989426040516104749493929190610cf3565b60405180910390a35050505050505050565b6001546001600160a01b031690565b600154604080518082019091526016815275566f7465722077686974656c6973746572206f6e6c7960501b6020820152906001600160a01b031633146104ee5760405162461bcd60e51b815260040161017e9190610d51565b5060005b825181101561054357816001901b196002600085848151811061051157fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805490911690556001016104f2565b505050565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b031690565b600154604080518082019091526016815275566f7465722077686974656c6973746572206f6e6c7960501b6020820152906001600160a01b031633146105cb5760405162461bcd60e51b815260040161017e9190610d51565b506001600160a01b0390911660009081526002602052604090208054600190921b919091179055565b600060405162461bcd60e51b815260040161017e90610da4565b8151815160408051808201909152601a815279082e4e4c2f240d8cadccee8d0e640c8de40dcdee840dac2e8c6d60331b60208201529082146106635760405162461bcd60e51b815260040161017e9190610d51565b50600080546040516313968ea760e31b81526001600160a01b0390911690639cb4753890610695908790600401610d3e565b60006040518083038186803b1580156106ad57600080fd5b505afa1580156106c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106e991908101906109a6565b336000908152600260205260408120549192505b838110156107fe57600086828151811061071357fe5b60200260200101519050806001901b83166000141561076957604080518082018252600f81526e139bdd081dda1a5d195b1a5cdd1959608a1b6020820152905162461bcd60e51b815261017e9190600401610d51565b83828151811061077557fe5b60200260200101516001600160a01b03166327bd2ad5338a89868151811061079957fe5b60200260200101516040518463ffffffff1660e01b81526004016107bf93929190610c45565b600060405180830381600087803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b5050600190930192506106fd915050565b5085336001600160a01b03167f90c022ade239639b1f8c4ebb8a76df5e03a7129df46cf9bcdae3c1450ea3543484874260405161083d93929190610c94565b60405180910390a3505050505050565b600082601f83011261085d578081fd5b8135602061087261086d83610e00565b610ddc565b828152818101908583018385028701840188101561088e578586fd5b855b858110156108ac57813584529284019290840190600101610890565b5090979650505050505050565b6000602082840312156108ca578081fd5b81356108d581610e1e565b9392505050565b600080604083850312156108ee578081fd5b82356108f981610e1e565b946020939093013593505050565b60008060408385031215610919578182fd5b823567ffffffffffffffff81111561092f578283fd5b8301601f8101851361093f578283fd5b8035602061094f61086d83610e00565b82815281810190848301838502860184018a101561096b578788fd5b8795505b8486101561099657803561098281610e1e565b83526001959095019491830191830161096f565b5098969091013596505050505050565b600060208083850312156109b8578182fd5b825167ffffffffffffffff8111156109ce578283fd5b8301601f810185136109de578283fd5b80516109ec61086d82610e00565b8181528381019083850185840285018601891015610a08578687fd5b8694505b83851015610a33578051610a1f81610e1e565b835260019490940193918501918501610a0c565b50979650505050505050565b600060208284031215610a50578081fd5b5051919050565b600080600060608486031215610a6b578081fd5b8335925060208085013567ffffffffffffffff80821115610a8a578384fd5b610a968883890161084d565b94506040870135915080821115610aab578384fd5b508501601f81018713610abc578283fd5b8035610aca61086d82610e00565b81815283810190838501858402850186018b1015610ae6578687fd5b8694505b83851015610b08578035835260019490940193918501918501610aea565b5080955050505050509250925092565b60008060008060808587031215610b2d578081fd5b84359350602085013567ffffffffffffffff80821115610b4b578283fd5b610b578883890161084d565b94506040870135915080821115610b6c578283fd5b610b788883890161084d565b93506060870135915080821115610b8d578283fd5b50610b9a8782880161084d565b91505092959194509250565b6000815180845260208085019450808401835b83811015610bde5781516001600160a01b031687529582019590820190600101610bb9565b509495945050505050565b6000815180845260208085019450808401835b83811015610bde57815187529582019590820190600101610bfc565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b600060608252610ca76060830186610ba6565b828103602084810191909152855180835286820192820190845b81811015610cdd57845183529383019391830191600101610cc1565b5050809350505050826040830152949350505050565b600060808252610d066080830187610ba6565b8281036020840152610d188187610be9565b90508281036040840152610d2c8186610be9565b91505082606083015295945050505050565b6000602082526108d56020830184610be9565b6000602080835283518082850152825b81811015610d7d57858101830151858201604001528201610d61565b81811115610d8e5783604083870101525b50601f01601f1916929092016040019392505050565b602080825260159082015274139bdd081a5b88191d5b5b5e4818dbdb9d1c9858dd605a1b604082015260600190565b90815260200190565b60405181810167ffffffffffffffff81118282101715610df857fe5b604052919050565b600067ffffffffffffffff821115610e1457fe5b5060209081020190565b6001600160a01b0381168114610e3357600080fd5b5056fea2646970667358221220792650935fab4cf794a8c71a54e0e934b9d88929aab6c2aebcb0a3164cb4847664736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
