UNPKG

randomness-js

Version:

A library for consuming, verifying and using randomness from the dcipher network

881 lines (879 loc) 140 kB
/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Contract, ContractFactory, ContractTransactionResponse, Interface, } from "ethers"; import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; import type { NonPayableOverrides } from "../../common"; import type { RandomnessSenderTest, RandomnessSenderTestInterface, } from "../../Randomness.t.sol/RandomnessSenderTest"; const _abi = [ { type: "function", name: "ADMIN_ROLE", inputs: [], outputs: [ { name: "", type: "bytes32", internalType: "bytes32", }, ], stateMutability: "view", }, { type: "function", name: "IS_TEST", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "addrProvider", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract SignatureSchemeAddressProvider", }, ], stateMutability: "view", }, { type: "function", name: "bn254SignatureScheme", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract BN254SignatureScheme", }, ], stateMutability: "view", }, { type: "function", name: "bn254SignatureSchemeID", inputs: [], outputs: [ { name: "", type: "string", internalType: "string", }, ], stateMutability: "view", }, { type: "function", name: "conditions", inputs: [], outputs: [ { name: "", type: "bytes", internalType: "bytes", }, ], stateMutability: "view", }, { type: "function", name: "excludeArtifacts", inputs: [], outputs: [ { name: "excludedArtifacts_", type: "string[]", internalType: "string[]", }, ], stateMutability: "view", }, { type: "function", name: "excludeContracts", inputs: [], outputs: [ { name: "excludedContracts_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "excludeSelectors", inputs: [], outputs: [ { name: "excludedSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzSelector[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "excludeSenders", inputs: [], outputs: [ { name: "excludedSenders_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "failed", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "owner", inputs: [], outputs: [ { name: "", type: "address", internalType: "address", }, ], stateMutability: "view", }, { type: "function", name: "randomnessSender", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract RandomnessSender", }, ], stateMutability: "view", }, { type: "function", name: "setUp", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "signatureSender", inputs: [], outputs: [ { name: "", type: "address", internalType: "contract SignatureSender", }, ], stateMutability: "view", }, { type: "function", name: "targetArtifactSelectors", inputs: [], outputs: [ { name: "targetedArtifactSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzArtifactSelector[]", components: [ { name: "artifact", type: "string", internalType: "string", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetArtifacts", inputs: [], outputs: [ { name: "targetedArtifacts_", type: "string[]", internalType: "string[]", }, ], stateMutability: "view", }, { type: "function", name: "targetContracts", inputs: [], outputs: [ { name: "targetedContracts_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "targetInterfaces", inputs: [], outputs: [ { name: "targetedInterfaces_", type: "tuple[]", internalType: "struct StdInvariant.FuzzInterface[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "artifacts", type: "string[]", internalType: "string[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetSelectors", inputs: [], outputs: [ { name: "targetedSelectors_", type: "tuple[]", internalType: "struct StdInvariant.FuzzSelector[]", components: [ { name: "addr", type: "address", internalType: "address", }, { name: "selectors", type: "bytes4[]", internalType: "bytes4[]", }, ], }, ], stateMutability: "view", }, { type: "function", name: "targetSenders", inputs: [], outputs: [ { name: "targetedSenders_", type: "address[]", internalType: "address[]", }, ], stateMutability: "view", }, { type: "function", name: "test_DeploymentConfigurations", inputs: [], outputs: [], stateMutability: "view", }, { type: "function", name: "test_UpdateSignatureScheme", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_randomnessSignatureVerification", inputs: [], outputs: [], stateMutability: "view", }, { type: "function", name: "test_requestRandomness", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_requestRandomnessWithCallback", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_selectArrayIndices_One_returnsAll", inputs: [], outputs: [], stateMutability: "pure", }, { type: "function", name: "test_selectArrayIndices_ReturnsCorrectCount", inputs: [], outputs: [], stateMutability: "pure", }, { type: "function", name: "test_selectArrayIndices_Zero_returnsEmpty", inputs: [], outputs: [], stateMutability: "pure", }, { type: "function", name: "validPK", inputs: [], outputs: [ { name: "", type: "bytes", internalType: "bytes", }, ], stateMutability: "view", }, { type: "function", name: "validSignature", inputs: [], outputs: [ { name: "", type: "bytes", internalType: "bytes", }, ], stateMutability: "view", }, { type: "event", name: "RandomnessRequested", inputs: [ { name: "requestID", type: "uint256", indexed: true, internalType: "uint256", }, { name: "nonce", type: "uint256", indexed: true, internalType: "uint256", }, { name: "requester", type: "address", indexed: true, internalType: "address", }, { name: "requestedAt", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "SignatureRequestFulfilled", inputs: [ { name: "requestID", type: "uint256", indexed: true, internalType: "uint256", }, { name: "signature", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, { type: "event", name: "SignatureRequested", inputs: [ { name: "requestID", type: "uint256", indexed: true, internalType: "uint256", }, { name: "callback", type: "address", indexed: true, internalType: "address", }, { name: "schemeID", type: "string", indexed: false, internalType: "string", }, { name: "message", type: "bytes", indexed: false, internalType: "bytes", }, { name: "messageHashToSign", type: "bytes", indexed: false, internalType: "bytes", }, { name: "condition", type: "bytes", indexed: false, internalType: "bytes", }, { name: "requestedAt", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log", inputs: [ { name: "", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_address", inputs: [ { name: "", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "uint256[]", indexed: false, internalType: "uint256[]", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "int256[]", indexed: false, internalType: "int256[]", }, ], anonymous: false, }, { type: "event", name: "log_array", inputs: [ { name: "val", type: "address[]", indexed: false, internalType: "address[]", }, ], anonymous: false, }, { type: "event", name: "log_bytes", inputs: [ { name: "", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, { type: "event", name: "log_bytes32", inputs: [ { name: "", type: "bytes32", indexed: false, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "log_int", inputs: [ { name: "", type: "int256", indexed: false, internalType: "int256", }, ], anonymous: false, }, { type: "event", name: "log_named_address", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "address", indexed: false, internalType: "address", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256[]", indexed: false, internalType: "uint256[]", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256[]", indexed: false, internalType: "int256[]", }, ], anonymous: false, }, { type: "event", name: "log_named_array", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "address[]", indexed: false, internalType: "address[]", }, ], anonymous: false, }, { type: "event", name: "log_named_bytes", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, { type: "event", name: "log_named_bytes32", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "bytes32", indexed: false, internalType: "bytes32", }, ], anonymous: false, }, { type: "event", name: "log_named_decimal_int", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256", indexed: false, internalType: "int256", }, { name: "decimals", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_named_decimal_uint", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256", indexed: false, internalType: "uint256", }, { name: "decimals", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_named_int", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "int256", indexed: false, internalType: "int256", }, ], anonymous: false, }, { type: "event", name: "log_named_string", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_named_uint", inputs: [ { name: "key", type: "string", indexed: false, internalType: "string", }, { name: "val", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "log_string", inputs: [ { name: "", type: "string", indexed: false, internalType: "string", }, ], anonymous: false, }, { type: "event", name: "log_uint", inputs: [ { name: "", type: "uint256", indexed: false, internalType: "uint256", }, ], anonymous: false, }, { type: "event", name: "logs", inputs: [ { name: "", type: "bytes", indexed: false, internalType: "bytes", }, ], anonymous: false, }, ] as const; const _bytecode = "0x600c8054600160ff199182168117909255601f80549091169091179055610140604052608060a08181529061eb9460c03960259061003d908261012f565b5060405180606001604052806040815260200161eb5460409139602690610064908261012f565b5060408051602081019091525f8152602790610080908261012f565b506001608052348015610091575f5ffd5b506101e9565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806100bf57607f821691505b6020821081036100dd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012a57805f5260205f20601f840160051c810160208510156101085750805b601f840160051c820191505b81811015610127575f8155600101610114565b50505b505050565b81516001600160401b0381111561014857610148610097565b61015c8161015684546100ab565b846100e3565b6020601f82116001811461018e575f83156101775750848201515b5f19600385901b1c1916600184901b178455610127565b5f84815260208120601f198516915b828110156101bd578785015182556020948501946001909201910161019d565b50848210156101da57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161e91b6102395f395f81816103580152818161048d015281816109dc01528181610a83015281816110fa015281816115fc015281816116e801528181611aff0152612b2c015261e91b5ff3fe608060405234801561000f575f5ffd5b50600436106101dc575f3560e01c80637d46810611610109578063d415afea1161009e578063e35c59d01161006e578063e35c59d0146103f7578063ee4fe0b1146103ff578063efebd38914610407578063fa7626d414610443575f5ffd5b8063d415afea146103bf578063dc6af447146103c7578063df3fafe8146103cf578063e20c9f71146103ef575f5ffd5b806393ecedd7116100d957806393ecedd71461038f578063b0464fdc14610397578063b5508aa91461039f578063ba414fa6146103a7575f5ffd5b80637d4681061461031e57806385226c811461033e5780638da5cb5b14610353578063916a17c61461037a575f5ffd5b80633e5e3c231161017f57806366d9a9a01161014f57806366d9a9a0146102a757806375b238fc146102bc57806377a33a68146102f15780637bd0199614610316575f5ffd5b80633e5e3c231461023d5780633f7286f41461024557806344ce68431461024d57806345adb35f14610292575f5ffd5b8063179c209b116101ba578063179c209b146101fa5780631ed7831c146102025780631fcc9a0a146102205780632ade388014610228575f5ffd5b80630a9254e4146101e05780630ad5dfb0146101ea57806315bbabfb146101f2575b5f5ffd5b6101e8610450565b005b6101e8610b67565b6101e8611596565b6101e8611946565b61020a611a55565b604051610217919061325f565b60405180910390f35b6101e8611ac2565b610230611d05565b60405161021791906132e5565b61020a611e4e565b61020a611eb9565b60205461026d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610217565b61029a611f24565b60405161021791906133f7565b6102af611fb0565b604051610217919061346c565b6102e37fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b604051908152602001610217565b601f5461026d90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101e8612129565b60235461026d9073ffffffffffffffffffffffffffffffffffffffff1681565b61034661226a565b6040516102179190613508565b61026d7f000000000000000000000000000000000000000000000000000000000000000081565b610382612335565b604051610217919061357d565b6101e8612438565b610382612579565b61034661267c565b6103af612747565b6040519015158152602001610217565b61029a612817565b6101e8612824565b60245461026d9073ffffffffffffffffffffffffffffffffffffffff1681565b61020a612c89565b61029a612cf4565b6101e8612d01565b61029a6040518060400160405280600581526020017f424e32353400000000000000000000000000000000000000000000000000000081525081565b601f546103af9060ff1681565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156104e8575f5ffd5b505af11580156104fa573d5f5f3e3d5ffd5b505050505f60405161050b90613211565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015610541573d5f5f3e3d5ffd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405161058e9061321e565b604051809103905ff0801580156105a7573d5f5f3e3d5ffd5b50602080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283169081178255601f54604080518082018252600581527f424e32353400000000000000000000000000000000000000000000000000000094810194909452517fbab867da0000000000000000000000000000000000000000000000000000000081526101009091049093169263bab867da9261066592909160040161361f565b5f604051808303815f87803b15801561067c575f5ffd5b505af115801561068e573d5f5f3e3d5ffd5b505050505f602580546106a090613656565b80601f01602080910402602001604051908101604052809291908181526020018280546106cc90613656565b80156107175780601f106106ee57610100808354040283529160200191610717565b820191905f5260205f20905b8154815290600101906020018083116106fa57829003601f168201915b505050505080602001905181019061072f9190613770565b90505f60405161073e9061322b565b604051809103905ff080158015610757573d5f5f3e3d5ffd5b5090505f60405161076790613238565b604051809103905ff080158015610780573d5f5f3e3d5ffd5b5090508160405161079090613245565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff0801580156107d4573d5f5f3e3d5ffd5b5060215f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061084e6040518060600160405280602d815260200161e8b9602d913960215473ffffffffffffffffffffffffffffffffffffffff16612e10565b8060405161085b90613245565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f90820152606001604051809103905ff08015801561089f573d5f5f3e3d5ffd5b5060225f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109196040518060600160405280602e815260200161e823602e913960225473ffffffffffffffffffffffffffffffffffffffff16612e10565b602154602380547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384169081179092556022546024805490921690841617905560408051808201825286516020908101518252875151818301528251808401845281890180518301518252515191810191909152601f5492517f702ef38c000000000000000000000000000000000000000000000000000000008152939463702ef38c94610a0c947f00000000000000000000000000000000000000000000000000000000000000009261010090910416906004016137fe565b5f604051808303815f87803b158015610a23575f5ffd5b505af1158015610a35573d5f5f3e3d5ffd5b5050602480546023546040517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f000000000000000000000000000000000000000000000000000000000000000082169381019390935216925063485cc95591506044015f604051808303815f87803b158015610acf575f5ffd5b505af1158015610ae1573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610b4c575f5ffd5b505af1158015610b5e573d5f5f3e3d5ffd5b50505050505050565b6024546040515f9173ffffffffffffffffffffffffffffffffffffffff1690610b8f90613252565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015610bc5573d5f5f3e3d5ffd5b5090505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663df3fafe86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4c919061385a565b73ffffffffffffffffffffffffffffffffffffffff1603610c6f57610c6f61388d565b60408051808201825260208082527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68183015282516060810184528381526001935f9261e879908301396023546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015273ffffffffffffffffffffffffffffffffffffffff9091166084820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a4015f604051808303815f87803b158015610d54575f5ffd5b505af1158015610d66573d5f5f3e3d5ffd5b505060245460405173ffffffffffffffffffffffffffffffffffffffff90911692508591507ff0a5ef4bc87d6534674b1469f4b31d03c6510d0f7ab353f3e53f9d1d87ead02b90610dbc908690869042906138ba565b60405180910390a38373ffffffffffffffffffffffffffffffffffffffff1663837e7cc66040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e09575f5ffd5b505af1158015610e1b573d5f5f3e3d5ffd5b505050505f8473ffffffffffffffffffffffffffffffffffffffff16626d6cae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8c9190613931565b90505f8111610e9d57610e9d61388d565b6023546040517fcd802c910000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063cd802c9190602401602060405180830381865afa158015610f0a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2e9190613948565b610f3a57610f3a61388d565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e63b5d586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc89190613931565b600114610fd757610fd761388d565b6023546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190525f602483018190526044830152606482015273ffffffffffffffffffffffffffffffffffffffff9091166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a4015f604051808303815f87803b15801561106e575f5ffd5b505af1158015611080573d5f5f3e3d5ffd5b50505050807f9a03aa0053cbc9522f2f584b8e74ba5478cadd5f83b136eaf2d4338795b3695560266040516110b59190613a04565b60405180910390a26040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611155575f5ffd5b505af1158015611167573d5f5f3e3d5ffd5b50506023546040517f5eab2b2000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250635eab2b2091506111c4908490602690600401613a16565b5f604051808303815f87803b1580156111db575f5ffd5b505af11580156111ed573d5f5f3e3d5ffd5b50506023546040517fcd802c910000000000000000000000000000000000000000000000000000000081526004810185905261128c935073ffffffffffffffffffffffffffffffffffffffff909116915063cd802c91906024015b602060405180830381865afa158015611263573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112879190613948565b612e83565b6113188573ffffffffffffffffffffffffffffffffffffffff1663360131896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fc9190613931565b602660405161130b9190613a36565b6040518091039020612ef9565b6023546040517fcd802c910000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063cd802c9190602401602060405180830381865afa158015611385573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a99190613948565b156113b6576113b661388d565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e63b5d586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611420573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114449190613931565b156114515761145161388d565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f421ea96040518163ffffffff1660e01b81526004015f60405180830381865afa1580156114ba573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114e19190810190613ac5565b51156114ef576114ef61388d565b60235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663571d70876040518163ffffffff1660e01b81526004015f60405180830381865afa158015611558573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261157f9190810190613ac5565b5160011461158f5761158f61388d565b5050505050565b6023546040517f91d148540000000000000000000000000000000000000000000000000000000081527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301526116769216906391d14854906044015b602060405180830381865afa15801561164d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116719190613948565b612f74565b6024546040517f91d1485400000000000000000000000000000000000000000000000000000000815261172f9173ffffffffffffffffffffffffffffffffffffffff16906391d1485490611632907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775907f00000000000000000000000000000000000000000000000000000000000000009060040191825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60235473ffffffffffffffffffffffffffffffffffffffff166117545761175461388d565b60245473ffffffffffffffffffffffffffffffffffffffff166117795761177961388d565b602054604080517f5f7c752200000000000000000000000000000000000000000000000000000000815290516118139273ffffffffffffffffffffffffffffffffffffffff1691635f7c7522916004808301925f9291908290030181865afa1580156117e7573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261180e9190810190613b71565b612fc6565b60208054604080517f3408e47000000000000000000000000000000000000000000000000000000000815290516118aa9373ffffffffffffffffffffffffffffffffffffffff90931692633408e47092600480820193918290030181865afa158015611881573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a59190613931565b61303a565b602054604080517f5f7c752200000000000000000000000000000000000000000000000000000000815290516119449273ffffffffffffffffffffffffffffffffffffffff1691635f7c7522916004808301925f9291908290030181865afa158015611918573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261193f9190810190613b71565b6130ad565b565b6040517f298f239c000000000000000000000000000000000000000000000000000000008152606460048201819052600a602483018190527fdeadbeef000000000000000000000000000000000000000000000000000000006044840152915f9073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c9084015f60405180830381865af41580156119df573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a069190810190613ac5565b9050611a2c81518460405180606001604052806028815260200161e8516028913961311e565b5f5b8151811015611a4f5782811115611a4757611a4761388d565b600101611a2e565b50505050565b60606016805480602002602001604051908101604052809291908181526020018280548015611ab857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611a8d575b5050505050905090565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611b5a575f5ffd5b505af1158015611b6c573d5f5f3e3d5ffd5b50506040517ff28dceb300000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f496e76616c696420636f6e7472616374206164647265737320666f722073636860448201527f656d6541646472657373000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391506084015f604051808303815f87803b158015611c26575f5ffd5b505af1158015611c38573d5f5f3e3d5ffd5b5050601f54604080518082018252600581527f424e323534000000000000000000000000000000000000000000000000000000602082015290517fbab867da00000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff16935063bab867da9250611cdc917373d1ecca90a16f27691c63ecad7d5119f0bc743a9060040161361f565b5f604051808303815f87803b158015611cf3575f5ffd5b505af1158015611a4f573d5f5f3e3d5ffd5b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015611e45575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611e2e578382905f5260205f20018054611da390613656565b80601f0160208091040260200160405190810160405280929190818152602001828054611dcf90613656565b8015611e1a5780601f10611df157610100808354040283529160200191611e1a565b820191905f5260205f20905b815481529060010190602001808311611dfd57829003601f168201915b505050505081526020019060010190611d86565b505050508152505081526020019060010190611d28565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015611ab857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611a8d575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015611ab857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611a8d575050505050905090565b60258054611f3190613656565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5d90613656565b8015611fa85780601f10611f7f57610100808354040283529160200191611fa8565b820191905f5260205f20905b815481529060010190602001808311611f8b57829003601f168201915b505050505081565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015611e45578382905f5260205f2090600202016040518060400160405290815f8201805461200390613656565b80601f016020809104026020016040519081016040528092919081815260200182805461202f90613656565b801561207a5780601f106120515761010080835404028352916020019161207a565b820191905f5260205f20905b81548152906001019060200180831161205d57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561211157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116120be5790505b50505050508152505081526020019060010190611fd3565b6040805160018082528183019092525f91602080830190803683370190505090505f815f8151811061215d5761215d6137af565b60209081029190910101526040517f298f239c00000000000000000000000000000000000000000000000000000000815260016004820181905260248201527fdeadbeef0000000000000000000000000000000000000000000000000000000060448201525f9073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c906064015f60405180830381865af41580156121fd573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122249190810190613ac5565b905061226682826040518060400160405280601a81526020017f66756c6c206172726179207761736e27742072657475726e656400000000000081525061319a565b5050565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015611e45578382905f5260205f200180546122aa90613656565b80601f01602080910402602001604051908101604052809291908181526020018280546122d690613656565b80156123215780601f106122f857610100808354040283529160200191612321565b820191905f5260205f20905b81548152906001019060200180831161230457829003601f168201915b50505050508152602001906001019061228d565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015611e45575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561242057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123cd5790505b50505050508152505081526020019060010190612358565b602454602354602054604080517f5f7c75220000000000000000000000000000000000000000000000000000000081529051600a946001945f9473__$485e63c703b57fb39db2d057ed0b990874$__94639e43d9849473ffffffffffffffffffffffffffffffffffffffff94851694938416936026938a938c939190921691635f7c7522916004808301928d9291908290030181865afa1580156124de573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526125059190810190613b71565b6040518763ffffffff1660e01b815260040161252696959493929190613c05565b602060405180830381865af4158015612541573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125659190613948565b9050806125745761257461388d565b505050565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015611e45575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561266457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116126115790505b5050505050815250508152602001906001019061259c565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015611e45578382905f5260205f200180546126bc90613656565b80601f01602080910402602001604051908101604052809291908181526020018280546126e890613656565b80156127335780601f1061270a57610100808354040283529160200191612733565b820191905f5260205f20905b81548152906001019060200180831161271657829003601f168201915b50505050508152602001906001019061269f565b6008545f9060ff161561275e575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa1580156127ec573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128109190613931565b1415905090565b60268054611f3190613656565b6024546040515f9173ffffffffffffffffffffffffffffffffffffffff169061284c90613252565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015612882573d5f5f3e3d5ffd5b50604080518082018252600180825273ffffffffffffffffffffffffffffffffffffffff848116602084019081526024805495517f775b839c000000000000000000000000000000000000000000000000000000008152855160048201529151831690820152949550909384935f92169063775b839c906044015f60405180830381865afa158015612916573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261293d9190810190613b71565b905061294881612fc6565b6040517f491cc7c2000000000000000000000000000000000000000000000000000000008152600160048201819052602482018190525f60448301526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063491cc7c2906084015f604051808303815f87803b1580156129bf575f5ffd5b505af11580156129d1573d5f5f3e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff1684847feee7195b6cee0fa7044c3af0b86fe2febb1d2703d71191f44052ba0d60ffda6442604051612a1f91815260200190565b60405180910390a48473ffffffffffffffffffffffffffffffffffffffff1663837e7cc66040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612a6c575f5ffd5b505af1158015612a7e573d5f5f3e3d5ffd5b505050505f8573ffffffffffffffffffffffffffffffffffffffff16626d6cae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aef9190613931565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015612b8a575f5ffd5b505af1158015612b9c573d5f5f3e3d5ffd5b50506023546040517f5eab2b2000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250635eab2b209150612bf9908490602690600401613a16565b5f604051808303815f87803b158015612c10575f5ffd5b505af1158015612c22573d5f5f3e3d5ffd5b50506023546040517fcd802c9100000000000000000000000000000000000000000000000000000000815260048101859052612c81935073ffffffffffffffffffffffffffffffffffffffff909116915063cd802c9190602401611248565b505050505050565b60606015805480602002602001604051908101604052809291908181526020018280548015611ab857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611a8d575050505050905090565b60278054611f3190613656565b604080515f808252602082019092526040517f298f239c0000000000000000000000000000000000000000000000000000000081525f60048201819052600160248301527fdeadbeef00000000000000000000000000000000000000000000000000000000604483015291925073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c906064015f60405180830381865af4158015612da7573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612dce9190810190613ac5565b905061226682826040518060400160405280601381526020017f617272617920776173206e6f7420656d7074790000000000000000000000000081525061319a565b6122668282604051602401612e2692919061361f565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526131ee565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b5f6040518083038186803b158015612ee7575f5ffd5b505afa15801561158f573d5f5f3e3d5ffd5b6040517f7c84c69b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d90637c84c69b906044015f6040518083038186803b158015612f62575f5ffd5b505afa158015612c81573d5f5f3e3d5ffd5b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401612ed1565b61303781604051602401612fda91906133f7565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526131ee565b50565b6130378160405160240161305091815260200190565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526131ee565b613037816040516024016130c191906133f7565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526131ee565b6040517f88b44c85000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859061317290869086908690600401613c90565b5f6040518083038186803b158015613188575f5ffd5b505afa158015610b5e573d5f5f3e3d5ffd5b6040517f5d18c73a000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90635d18c73a9061317290869086908690600401613ce7565b613037815f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b610bda80613d2a83390190565b6129d58061490483390190565b61468b806172d983390190565b6126538061b96483390190565b6104468061dfb783390190565b6104268061e3fd83390190565b602080825282518282018190525f918401906040840190835b818110156132ac57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101613278565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b818110156133d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a85030183526133bb8486516132b7565b6020958601959094509290920191600101613381565b50919750505060209485019492909201915060010161330b565b50929695505050505050565b602081525f61340960208301846132b7565b9392505050565b5f8151808452602084019350602083015f5b828110156134625781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101613422565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051604087526134d660408801826132b7565b90506020820151915086810360208801526134f18183613410565b965050506020938401939190910190600101613492565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526135688583516132b7565b9450602093840193919091019060010161352e565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff815116865260208101519050604060208701526136096040870182613410565b95505060209384019391909101906001016135a3565b604081525f61363160408301856132b7565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b600181811c9082168061366a57607f821691505b6020821081036136a1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156136f7576136f76136a7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613726576137266136a7565b604052919050565b5f82601f83011261373d575f5ffd5b6137456136d4565b806040840185811115613756575f5ffd5b845b818110156132ac578051845260209384019301613758565b5f6080828403128015613781575f5ffd5b5061378a6136d4565b613794848461372e565b81526137a3846040850161372e565b60208201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805f5b6002811015611a4f5781518452602093840193909101906001016137df565b60c0810161380c82876137dc565b61381960408301866137dc565b73ffffffffffffffffffffffffffffffffffffffff8416608083015273ffffffffffffffffffffffffffffffffffffffff831660a083015295945050505050565b5f6020828403121561386a575f5ffd5b815173ffffffffffffffffffffffffffffffffffffffff81168114613409575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b60a08152600560a08201527f424e32353400000000000000000000000000000000000000000000000000000060c082015260e060208201525f61390060e08301866132b7565b828103604084015261391281866132b7565b83810360608501525f8152608090930193909352506020019392505050565b5f60208284031215613941575f5ffd5b5051919050565b5f60208284031215613958575f5ffd5b81518015158114613409575f5ffd5b5f815461397381613656565b80855260018216801561398d57600181146139c7576139fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083166020870152602082151560051b87010193506139fb565b845f5260205f205f5b838110156139f25781546020828a0101526001820191506020810190506139d0565b87016020019450505b50505092915050565b602081525f6134096020830184613967565b828152604060208201525f613a2e6040830184613967565b949350505050565b5f5f8354613a4381613656565b600182168015613a5a5760018114613a8d57613aba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652811515820286019350613aba565b865f5260205f205f5b83811015613ab257815488820152600190910190602001613a96565b505081860193505b509195945050505050565b5f60208284031215613ad5575f5ffd5b815167ffffffffffffffff811115613aeb575f5ffd5b8201601f81018413613afb575f5ffd5b805167ffffffffffffffff811115613b1557613b156136a7565b8060051b613b25602082016136fd565b91825260208184018101929081019087841115613b40575f5ffd5b6020850194505b83851015613b6657845180835260209586019590935090910190613b47565b979650505050505050565b5f60208284031215613b81575f5ffd5b815167ffffffffffffffff811115613b97575f5ffd5b8201601f81018413613ba7575f5ffd5b805167ffffffffffffffff811115613bc157613bc16136a7565b613bd46020601f19601f840116016136fd565b818152856020838501011115613be8575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260c060408201525f613c4f60c0830187613967565b85606084015273ffffffffffffffffffffffffffffffffffffffff8516608084015282810360a0840152613c8381856132b7565b9998505050505050505050565b838152826020820152606060408201525f613cae60608301846132b7565b95945050505050565b5f8151808452602084019350602083015f5b82811015613462578151865260209586019590910190600101613cc9565b606081525f613cf96060830186613cb7565b8281036020840152613d0b8186613cb7565b90508281036040840152613d1f81856132b7565b969550505050505056fe608060405234801561000f575f5ffd5b50604051610bda380380610bda83398101604081905261002e916101a7565b6001600160a01b03811661003f5750335b6100495f826100fe565b61008e5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b6100b87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775826100fe565b6100f85760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b6044820152606401610085565b506101d4565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661019e575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101563390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101a1565b505f5b92915050565b5f602082840312156101b7575f5ffd5b81516001600160a01b03811681146101cd575f5ffd5b9392505050565b6109f9806101e15f395ff3fe608060405234801561000f575f5ffd5b50600436106100c4575f3560e01c80635bb09cf81161007d578063a217fddf11610058578063a217fddf146101fd578063bab867da14610204578063d547741f14610217575f5ffd5b80635bb09cf81461015b57806375b238fc1461019357806391d14854146101ba575f5ffd5b80632f2ff15d116100ad5780632f2ff15d