UNPKG

randomness-js

Version:

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

713 lines (711 loc) 217 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 { SubscriptionFundingTest, SubscriptionFundingTestInterface, } from "../../SubscriptionFunding.t.sol/SubscriptionFundingTest"; const _abi = [ { type: "function", name: "IS_TEST", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "consumersToAddToSubscription", inputs: [ { name: "", type: "uint256", internalType: "uint256", }, ], outputs: [ { name: "", type: "address", internalType: "address", }, ], 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: "setUp", inputs: [], outputs: [], stateMutability: "nonpayable", }, { 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_CancelSubscription", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_CancelSubscription_WithPendingRequest_ShouldRevert", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_Deployment_Configurations", inputs: [], outputs: [], stateMutability: "view", }, { type: "function", name: "test_FulfillSignatureRequest_ForSubscriptionWithZeroBalance_ShouldRevert", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_FulfillSignatureRequest_ForSubscription_WithOnlyRequestPriceBalance", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_FulfillSignatureRequest_WithSubscription_AndLowCallbackGasLimit", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_FulfillSignatureRequest_WithSubscription_Successfully", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_FulfillSignatureRequest_WithZeroCallbackGasLimit", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_NoChargeAtRequestTime_ForSubscriptionRequest", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_Randomness_SignatureVerification", inputs: [], outputs: [], stateMutability: "view", }, { type: "function", name: "test_SelectArrayIndices_One_returnsAll", inputs: [], outputs: [], stateMutability: "pure", }, { type: "function", name: "test_SelectArrayIndices_Zero_returnsEmpty", inputs: [], outputs: [], stateMutability: "pure", }, { type: "function", name: "test_Update_SignatureScheme", inputs: [], outputs: [], stateMutability: "nonpayable", }, { type: "function", name: "test_selectArrayIndices_ReturnsCorrectCount", inputs: [], outputs: [], stateMutability: "pure", }, { 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 = "0x600c8054600160ff199182168117909255601f805490911690911790556101206040526080808052806201878b60a03960229061003c908261012a565b506040518060600160405280604081526020016201874b60409139602390610064908261012a565b5060408051602081019091525f8152602490610080908261012a565b5034801561008c575f5ffd5b506101e4565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806100ba57607f821691505b6020821081036100d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012557805f5260205f20601f840160051c810160208510156101035750805b601f840160051c820191505b81811015610122575f815560010161010f565b50505b505050565b81516001600160401b0381111561014357610143610092565b6101578161015184546100a6565b846100de565b6020601f821160018114610189575f83156101725750848201515b5f19600385901b1c1916600184901b178455610122565b5f84815260208120601f198516915b828110156101b85787850151825560209485019460019092019101610198565b50848210156101d557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6201855880620001f35f395ff3fe608060405234801561000f575f5ffd5b50600436106101bb575f3560e01c806366d9a9a0116100f3578063ba414fa611610093578063dca042511161006e578063dca04251146102fe578063e20c9f7114610306578063edf06c381461030e578063fa7626d414610316575f5ffd5b8063ba414fa6146102d6578063c426f8dd146102ee578063c58570bd146102f6575f5ffd5b80638b588d4d116100ce5780638b588d4d146102a9578063916a17c6146102b1578063b0464fdc146102c6578063b5508aa9146102ce575f5ffd5b806366d9a9a0146102775780637b68cb151461028c57806385226c8114610294575f5ffd5b80633e5e3c231161015e5780634aa646b0116101395780634aa646b01461023457806358ec323a1461025f57806360cfc92314610267578063658e17261461026f575f5ffd5b80633e5e3c231461021c5780633f7286f41461022457806344eb37991461022c575f5ffd5b80631ed7831c116101995780631ed7831c146101d957806325d7c3cf146101f75780632ade3880146101ff57806331bb7c4914610214575f5ffd5b80630a9254e4146101bf5780631245431f146101c9578063179c209b146101d1575b5f5ffd5b6101c7610323565b005b6101c76103e1565b6101c76104f4565b6101e1610604565b6040516101ee91906186cd565b60405180910390f35b6101c7610664565b610207611a64565b6040516101ee9190618746565b6101c7611ba0565b6101e1612a3e565b6101e1612a9c565b6101c7612afa565b61024761024236600461884b565b612dd4565b6040516001600160a01b0390911681526020016101ee565b6101c7612dfc565b6101c7612f83565b6101c7613593565b61027f6138f9565b6040516101ee91906188be565b6101c7613a72565b61029c61417e565b6040516101ee919061895a565b6101c7614249565b6102b9615199565b6040516101ee91906189cf565b6102b961528f565b61029c615385565b6102de615450565b60405190151581526020016101ee565b6101c7615520565b6101c7615653565b6101c7616905565b6101e1616a42565b6101c7616aa0565b601f546102de9060ff1681565b61032b617372565b61033361737a565b602780547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b039384161790915560288054821693831693841790556026805482169483169490941790935560258054909316938116939093179091556020546103a792169061792c565b602980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b604080515f808252602082019092526040517f298f239c0000000000000000000000000000000000000000000000000000000081525f60048201819052600160248301527fdeadbeef00000000000000000000000000000000000000000000000000000000604483015291925073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c906064015f60405180830381865af4158015610487573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104ae9190810190618b55565b90506104f082826040518060400160405280601381526020017f617272617920776173206e6f7420656d707479000000000000000000000000008152506179f5565b5050565b6040517f298f239c000000000000000000000000000000000000000000000000000000008152606460048201819052600a602483018190527fdeadbeef000000000000000000000000000000000000000000000000000000006044840152915f9073__$485e63c703b57fb39db2d057ed0b990874$__9063298f239c9084015f60405180830381865af415801561058d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105b49190810190618b55565b90506105db81518460405180606001604052806028815260200162017ea060289139617a7a565b5f5b81518110156105fe57828111156105f6576105f6618beb565b6001016105dd565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561065a57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161063c575b5050505050905090565b60295f9054906101000a90046001600160a01b03166001600160a01b03166309c1ba2e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d89190618c18565b156106e5576106e5618beb565b6020546028546729a2241af62c00009161070c916001600160a01b03918216911683617ace565b602980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f09c1ba2e00000000000000000000000000000000000000000000000000000000815290515f92916309c1ba2e9160048083019260209291908290030181865afa158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb9190618c18565b9050805f036107cc576107cc618beb565b61080b6040518060400160405280601281526020017f537562736372697074696f6e206964203d20000000000000000000000000000081525082617c6b565b6028546040517fdc311dd3000000000000000000000000000000000000000000000000000000008152600481018390525f918291829182916001600160a01b039091169063dc311dd3906024015f60405180830381865afa158015610872573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108999190810190618c6e565b93509350935093506108b9846bffffffffffffffffffffffff1687617cde565b6108cd8367ffffffffffffffff165f617cde565b6029546108e49083906001600160a01b0316617d5a565b6108f081516001617cde565b6028546040517f4b160935000000000000000000000000000000000000000000000000000000008152620186a060048201819052915f916001600160a01b0390911690634b16093590602401602060405180830381865afa158015610957573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097b9190618c18565b90506109be5f82116040518060400160405280601581526020017f496e76616c696420726571756573742070726963650000000000000000000000815250617dbb565b6020546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015610a2d575f5ffd5b505af1158015610a3f573d5f5f3e3d5ffd5b50506029546040517f7e6e12b300000000000000000000000000000000000000000000000000000000815263ffffffff861660048201525f93506001600160a01b039091169150637e6e12b3906024016020604051808303815f875af1158015610aab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610acf9190618c18565b6028546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018390529192505f916001600160a01b039091169063c58343ef906024015f60405180830381865afa158015610b33573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b5a9190810190618dd0565b9050610b85815f01515f14156040518060600160405280603281526020016201809a60329139617dbb565b610bae81602001515f14604051806080016040528060488152602001620184db60489139617dbb565b6040517f48f50c0f000000000000000000000000000000000000000000000000000000008152620186a06004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906348f50c0f906024015f604051808303815f87803b158015610c13575f5ffd5b505af1158015610c25573d5f5f3e3d5ffd5b505050505f5a601f546040517fca669fa70000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015610ca1575f5ffd5b505af1158015610cb3573d5f5f3e3d5ffd5b50506027546040517fda8281160000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063da8281169150610d03908690602390600401618fcd565b5f604051808303815f87803b158015610d1a575f5ffd5b505af1158015610d2c573d5f5f3e3d5ffd5b505050505f5a90505f610d3f828461901a565b9050610d8a6040518060400160405280601981526020017f526571756573742043616c6c6261636b4761734c696d69743a00000000000000815250856040015163ffffffff16617c6b565b610dcd6040518060400160405280601981526020017f526571756573742043616c6c6261636b47617350726963653a000000000000008152508560200151617c6b565b610e0c6040518060400160405280600c81526020017f54782047617320757365643a000000000000000000000000000000000000000081525082617c6b565b610e4b6040518060400160405280601381526020017f5478204761732070726963652028776569293a000000000000000000000000008152503a617c6b565b60408051808201909152601481527f547820546f74616c20636f73742028776569293a0000000000000000000000006020820152610e9290610e8d3a84619033565b617c6b565b6027546040517fcd802c9100000000000000000000000000000000000000000000000000000000815260048101879052610f1e916001600160a01b03169063cd802c91906024015b602060405180830381865afa158015610ef5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f199190619059565b617e0d565b602954604080517f360131890000000000000000000000000000000000000000000000000000000081529051610fc0926001600160a01b03169163360131899160048083019260209291908290030181865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa49190618c18565b6023604051610fb39190619079565b6040518091039020617e8a565b6027546040517fcd802c91000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b039091169063cd802c9190602401602060405180830381865afa158015611020573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110449190619059565b1561105157611051618beb565b60275f9054906101000a90046001600160a01b03166001600160a01b031663e63b5d586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c59190618c18565b156110d2576110d2618beb565b60275f9054906101000a90046001600160a01b03166001600160a01b0316636f421ea96040518163ffffffff1660e01b81526004015f60405180830381865afa158015611121573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111489190810190618b55565b511561115657611156618beb565b60275f9054906101000a90046001600160a01b03166001600160a01b031663571d70876040518163ffffffff1660e01b81526004015f60405180830381865afa1580156111a5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526111cc9190810190618b55565b516001146111dc576111dc618beb565b6027546040517fb094728900000000000000000000000000000000000000000000000000000000815260048101879052611283916001600160a01b03169063b0947289906024015b602060405180830381865afa15801561123f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112639190619059565b1560405180608001604052806043815260200162017fe360439139617dbb565b6027546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018790525f916001600160a01b03169063c58343ef906024015f60405180830381865afa1580156112e2573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113099190810190619108565b90506113328160c001516040518060600160405280603d815260200162017f49603d9139617dbb565b6028546040517fdc311dd3000000000000000000000000000000000000000000000000000000008152600481018f90526001600160a01b039091169063dc311dd3906024015f60405180830381865afa158015611391573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526113b89190810190618c6e565b50919d509b508e90505f6113da6bffffffffffffffffffffffff8f168361901a565b905061140d6040518060600160405280602c81526020016201806e602c91398f6bffffffffffffffffffffffff16617c6b565b611430604051806060016040528060278152602001620181046027913982617c6b565b611449828f6bffffffffffffffffffffffff1683617ee2565b61146f818a1015604051806080016040528060438152602001620182e460439139617dbb565b6114ad8e6bffffffffffffffffffffffff168261148c9190619242565b83146040518060600160405280602581526020016201825260259139617dbb565b6114db816114bb3a87619033565b1060405180606001604052806024815260200162017ef060249139617dbb565b61150b8d67ffffffffffffffff16600114604051806060016040528060298152602001620183ac60299139617dbb565b6027546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018a90526001600160a01b039091169063c58343ef906024015f60405180830381865afa15801561156a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115919190810190619108565b92506115ba8360c001516040518060600160405280603d815260200162017f49603d9139617dbb565b61166860236040516115cc9190619079565b604051809103902060295f9054906101000a90046001600160a01b03166001600160a01b031663360131896040518163ffffffff1660e01b8152600401602060405180830381865afa158015611624573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116489190618c18565b14604051806060016040528060288152602001620182bc60289139617dbb565b602954604080517e6d6cae000000000000000000000000000000000000000000000000000000008152905161170e926001600160a01b031691626d6cae9160048083019260209291908290030181865afa1580156116c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ec9190618c18565b6001146040518060600160405280602c8152602001620184af602c9139617dbb565b602854604080517f3bc32c7500000000000000000000000000000000000000000000000000000000815290516117c3926001600160a01b031691633bc32c759160048083019260209291908290030181865afa158015611770573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117949190619255565b6bffffffffffffffffffffffff165f146040518060800160405280604a815260200162018208604a9139617dbb565b6118698160285f9054906101000a90046001600160a01b03166001600160a01b031663995cb36e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611817573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183b9190619255565b6bffffffffffffffffffffffff16146040518060600160405280604081526020016201819060409139617dbb565b601f546040517fca669fa70000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156118dc575f5ffd5b505af11580156118ee573d5f5f3e3d5ffd5b5050601f546028546040517fbd18636b0000000000000000000000000000000000000000000000000000000081526101009092046001600160a01b039081166004840181905231945016915063bd18636b906024015f604051808303815f87803b15801561195a575f5ffd5b505af115801561196c573d5f5f3e3d5ffd5b5050601f546119b3925083915061199390859061010090046001600160a01b031631619242565b1160405180606001604052806035815260200162017f1460359139617dbb565b8e6bffffffffffffffffffffffff1660285f9054906101000a90046001600160a01b03166001600160a01b03166318e3dd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a369190619255565b6bffffffffffffffffffffffff1614611a5157611a51618beb565b5050505050505050505050505050505050565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015611b97575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611b80578382905f5260205f20018054611af590618edf565b80601f0160208091040260200160405190810160405280929190818152602001828054611b2190618edf565b8015611b6c5780601f10611b4357610100808354040283529160200191611b6c565b820191905f5260205f20905b815481529060010190602001808311611b4f57829003601f168201915b505050505081526020019060010190611ad8565b505050508152505081526020019060010190611a87565b50505050905090565b60295f9054906101000a90046001600160a01b03166001600160a01b03166309c1ba2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bf0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c149190618c18565b15611c2157611c21618beb565b6020546028546729a2241af62c000091611c48916001600160a01b03918216911683617ace565b602980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f09c1ba2e00000000000000000000000000000000000000000000000000000000815290515f92916309c1ba2e9160048083019260209291908290030181865afa158015611cd3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf79190618c18565b9050805f03611d0857611d08618beb565b611d476040518060400160405280601281526020017f537562736372697074696f6e206964203d20000000000000000000000000000081525082617c6b565b6028546040517fdc311dd3000000000000000000000000000000000000000000000000000000008152600481018390525f918291829182916001600160a01b039091169063dc311dd3906024015f60405180830381865afa158015611dae573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dd59190810190618c6e565b9350935093509350611df5846bffffffffffffffffffffffff1687617cde565b611e098367ffffffffffffffff165f617cde565b602954611e209083906001600160a01b0316617d5a565b611e2c81516001617cde565b6028546040517f4b1609350000000000000000000000000000000000000000000000000000000081526103e860048201819052915f916001600160a01b0390911690634b160935906024015b602060405180830381865afa158015611e93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb79190618c18565b9050611efa5f82116040518060400160405280601581526020017f496e76616c696420726571756573742070726963650000000000000000000000815250617dbb565b6020546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611f69575f5ffd5b505af1158015611f7b573d5f5f3e3d5ffd5b50506029546040517f7e6e12b300000000000000000000000000000000000000000000000000000000815263ffffffff861660048201525f93506001600160a01b039091169150637e6e12b3906024016020604051808303815f875af1158015611fe7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200b9190618c18565b6028546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018390529192505f916001600160a01b039091169063c58343ef906024015f60405180830381865afa15801561206f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120969190810190618dd0565b90506120c1815f01515f14156040518060600160405280603281526020016201809a60329139617dbb565b6120ea81602001515f14604051806080016040528060488152602001620184db60489139617dbb565b6040517f48f50c0f000000000000000000000000000000000000000000000000000000008152620186a06004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906348f50c0f906024015f604051808303815f87803b15801561214f575f5ffd5b505af1158015612161573d5f5f3e3d5ffd5b505050505f5a601f546040517fca669fa70000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156121dd575f5ffd5b505af11580156121ef573d5f5f3e3d5ffd5b50506027546040517fda8281160000000000000000000000000000000000000000000000000000000081526001600160a01b03909116925063da828116915061223f908690602390600401618fcd565b5f604051808303815f87803b158015612256575f5ffd5b505af1158015612268573d5f5f3e3d5ffd5b505050505f5a90505f61227b828461901a565b90506122c66040518060400160405280601981526020017f526571756573742043616c6c6261636b4761734c696d69743a00000000000000815250856040015163ffffffff16617c6b565b6123096040518060400160405280601981526020017f526571756573742043616c6c6261636b47617350726963653a000000000000008152508560200151617c6b565b6123486040518060400160405280600c81526020017f54782047617320757365643a000000000000000000000000000000000000000081525082617c6b565b6123876040518060400160405280601381526020017f5478204761732070726963652028776569293a000000000000000000000000008152503a617c6b565b60408051808201909152601481527f547820546f74616c20636f73742028776569293a00000000000000000000000060208201526123c990610e8d3a84619033565b6027546040517fcd802c9100000000000000000000000000000000000000000000000000000000815260048101879052612415916001600160a01b03169063cd802c9190602401610eda565b6027546040517fcd802c91000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b039091169063cd802c9190602401602060405180830381865afa158015612475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124999190619059565b156124a6576124a6618beb565b60275f9054906101000a90046001600160a01b03166001600160a01b031663e63b5d586040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251a9190618c18565b1561252757612527618beb565b60275f9054906101000a90046001600160a01b03166001600160a01b0316636f421ea96040518163ffffffff1660e01b81526004015f60405180830381865afa158015612576573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261259d9190810190618b55565b51156125ab576125ab618beb565b60275f9054906101000a90046001600160a01b03166001600160a01b031663571d70876040518163ffffffff1660e01b81526004015f60405180830381865afa1580156125fa573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526126219190810190618b55565b5160011461263157612631618beb565b6027546040517fb09472890000000000000000000000000000000000000000000000000000000081526004810187905261267d916001600160a01b03169063b094728990602401611224565b6027546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018790525f916001600160a01b03169063c58343ef906024015f60405180830381865afa1580156126dc573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127039190810190619108565b905061272c8160c001516040518060600160405280603d815260200162017f49603d9139617dbb565b6028546040517fdc311dd3000000000000000000000000000000000000000000000000000000008152600481018f90526001600160a01b039091169063dc311dd3906024015f60405180830381865afa15801561278b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127b29190810190618c6e565b50919d509b508e90505f6127d46bffffffffffffffffffffffff8f168361901a565b90506128076040518060600160405280602c81526020016201806e602c91398f6bffffffffffffffffffffffff16617c6b565b61282a604051806060016040528060278152602001620181046027913982617c6b565b612843828f6bffffffffffffffffffffffff1683617ee2565b612869818a1015604051806080016040528060438152602001620182e460439139617dbb565b6128868e6bffffffffffffffffffffffff168261148c9190619242565b612894816114bb3a87619033565b6128c48d67ffffffffffffffff16600114604051806060016040528060298152602001620183ac60299139617dbb565b6027546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018a90526001600160a01b039091169063c58343ef906024015f60405180830381865afa158015612923573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261294a9190810190619108565b92506129738360c001516040518060600160405280603d815260200162017f49603d9139617dbb565b61166860236040516129859190619079565b604051809103902060295f9054906101000a90046001600160a01b03166001600160a01b031663360131896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129dd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a019190618c18565b14156040518060400160405280601481526020017f43616c6c6261636b2073686f756c64206661696c000000000000000000000000815250617dbb565b6060601880548060200260200160405190810160405280929190818152602001828054801561065a57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831161063c575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561065a57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831161063c575050505050905090565b60295f9054906101000a90046001600160a01b03166001600160a01b03166309c1ba2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6e9190618c18565b15612b7b57612b7b618beb565b6020546028546729a2241af62c000091612ba2916001600160a01b03918216911683617ace565b602980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f09c1ba2e00000000000000000000000000000000000000000000000000000000815290515f92916309c1ba2e9160048083019260209291908290030181865afa158015612c2d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c519190618c18565b9050805f03612c6257612c62618beb565b612ca16040518060400160405280601281526020017f537562736372697074696f6e206964203d20000000000000000000000000000081525082617c6b565b6028546040517fdc311dd3000000000000000000000000000000000000000000000000000000008152600481018390525f918291829182916001600160a01b039091169063dc311dd3906024015f60405180830381865afa158015612d08573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612d2f9190810190618c6e565b9350935093509350612d4f846bffffffffffffffffffffffff1687617cde565b612d638367ffffffffffffffff165f617cde565b602954612d7a9083906001600160a01b0316617d5a565b612d8681516001617cde565b6028546040517f4b1609350000000000000000000000000000000000000000000000000000000081525f600482018190529182916001600160a01b0390911690634b16093590602401611e78565b602a8181548110612de3575f80fd5b5f918252602090912001546001600160a01b0316905081565b602054602854612e21916001600160a01b039081169116674563918244f40000617ace565b602980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546040517fca669fa70000000000000000000000000000000000000000000000000000000081529116600482018190523190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015612ebf575f5ffd5b505af1158015612ed1573d5f5f3e3d5ffd5b50506029546020546040517f93d81d580000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506393d81d5891506024015f604051808303815f87803b158015612f34575f5ffd5b505af1158015612f46573d5f5f3e3d5ffd5b505060208054604080516060810190915260388082526001600160a01b039092163194506104f0935085851192909190620181d090830139617dbb565b60295f9054906101000a90046001600160a01b03166001600160a01b03166309c1ba2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fd3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ff79190618c18565b1561300457613004618beb565b6020546028546729a2241af62c00009161302b916001600160a01b03918216911683617ace565b602980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169182179055604080517f09c1ba2e00000000000000000000000000000000000000000000000000000000815290515f92916309c1ba2e9160048083019260209291908290030181865afa1580156130b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130da9190618c18565b9050805f036130eb576130eb618beb565b61312a6040518060400160405280601281526020017f537562736372697074696f6e206964203d20000000000000000000000000000081525082617c6b565b6028546040517fdc311dd3000000000000000000000000000000000000000000000000000000008152600481018390525f918291829182916001600160a01b039091169063dc311dd3906024015f60405180830381865afa158015613191573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526131b89190810190618c6e565b93509350935093506131d8846bffffffffffffffffffffffff1687617cde565b6131ec8367ffffffffffffffff165f617cde565b6029546132039083906001600160a01b0316617d5a565b61320f81516001617cde565b6028546040517f4b160935000000000000000000000000000000000000000000000000000000008152620186a060048201819052915f916001600160a01b0390911690634b16093590602401602060405180830381865afa158015613276573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329a9190618c18565b90506132dd5f82116040518060400160405280601581526020017f496e76616c696420726571756573742070726963650000000000000000000000815250617dbb565b6020546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b15801561334c575f5ffd5b505af115801561335e573d5f5f3e3d5ffd5b50506029546040517f7e6e12b300000000000000000000000000000000000000000000000000000000815263ffffffff861660048201525f93506001600160a01b039091169150637e6e12b3906024016020604051808303815f875af11580156133ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133ee9190618c18565b6028546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018390529192505f916001600160a01b039091169063c58343ef906024015f60405180830381865afa158015613452573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134799190810190618dd0565b90506134a4815f01515f14156040518060600160405280603281526020016201809a60329139617dbb565b6134cd81602001515f14604051806080016040528060488152602001620184db60489139617dbb565b6028546040517fdc311dd3000000000000000000000000000000000000000000000000000000008152600481018b90526001600160a01b039091169063dc311dd3906024015f60405180830381865afa15801561352c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526135539190810190618c6e565b50919950975061357390506bffffffffffffffffffffffff89168b617cde565b6135878767ffffffffffffffff165f617cde565b50505050505050505050565b602854601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560048201526101009091046001600160a01b03908116602483015261364f9216906391d14854906044015b602060405180830381865afa158015613626573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061364a9190619059565b617f5e565b602754601f546040517f91d148540000000000000000000000000000000000000000000000000000000081527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560048201526101009091046001600160a01b0390811660248301526136cb9216906391d148549060440161360b565b6025546001600160a01b03166136e3576136e3618beb565b6026546001600160a01b03166136fb576136fb618beb565b6027546001600160a01b031661371357613713618beb565b6028546001600160a01b031661372b5761372b618beb565b6029546001600160a01b031661374357613743618beb565b602754604080517fe6b3ca7100000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163e6b3ca719160048083019260209291908290030181865afa1580156137a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137c7919061926e565b6001600160a01b0316036137dd576137dd618beb565b602654604080517f5f7c7522000000000000000000000000000000000000000000000000000000008152905161386a926001600160a01b031691635f7c7522916004808301925f9291908290030181865afa15801561383e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526138659190810190619289565b617fb0565b602654604080517f5f7c752200000000000000000000000000000000000000000000000000000000815290516138f7926001600160a01b031691635f7c7522916004808301925f9291908290030181865afa1580156138cb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526138f29190810190619289565b618024565b565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015611b97578382905f5260205f2090600202016040518060400160405290815f8201805461394c90618edf565b80601f016020809104026020016040519081016040528092919081815260200182805461397890618edf565b80156139c35780601f1061399a576101008083540402835291602001916139c3565b820191905f5260205f20905b8154815290600101906020018083116139a657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613a5a57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613a075790505b5050505050815250508152602001906001019061391c565b60295f9054906101000a90046001600160a01b03166001600160a01b03166309c1ba2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ac2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ae69190618c18565b15613af357613af3618beb565b6020546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613b62575f5ffd5b505af1158015613b74573d5f5f3e3d5ffd5b5050505060295f9054906101000a90046001600160a01b03166001600160a01b031663b96dbba7674563918244f400006040518263ffffffff1660e01b81526004015f604051808303818588803b158015613bcd575f5ffd5b505af1158015613bdf573d5f5f3e3d5ffd5b50506028546040517f4b1609350000000000000000000000000000000000000000000000000000000081525f60048201819052674563918244f40000955093508392506001600160a01b0390911690634b16093590602401602060405180830381865afa158015613c52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c769190618c18565b9050613c9b6040518060600160405280603281526020016201840d6032913982617c6b565b6020546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613d0a575f5ffd5b505af1158015613d1c573d5f5f3e3d5ffd5b50506029546040517f7e6e12b300000000000000000000000000000000000000000000000000000000815263ffffffff861660048201528593505f92506001600160a01b0390911690637e6e12b3906024016020604051808303815f875af1158015613d8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dae9190618c18565b6028546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018390529192505f916001600160a01b039091169063c58343ef906024015f60405180830381865afa158015613e12573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e399190810190618dd0565b9050613e708363ffffffff16826040015163ffffffff16146040518060800160405280604881526020016201802660489139617dbb565b613e99815f01515f14156040518060600160405280603281526020016201809a60329139617dbb565b613ec281602001515f14604051806080016040528060488152602001620184db60489139617dbb565b613eeb828260600151146040518060600160405280604081526020016201812b60409139617dbb565b6020546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613f5a575f5ffd5b505af1158015613f6c573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb42f66e80000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb3935061401292016192bb565b5f604051808303815f87803b158015614029575f5ffd5b505af115801561403b573d5f5f3e3d5ffd5b50506029546020546040517f93d81d580000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152911692506393d81d5891506024015f604051808303815f87803b15801561409e575f5ffd5b505af11580156140b0573d5f5f3e3d5ffd5b505050506141768660285f9054906101000a90046001600160a01b03166001600160a01b03166318e3dd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015614108573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061412c9190619255565b6bffffffffffffffffffffffff16146040518060400160405280601081526020017f55736572206e6f74206368617267656400000000000000000000000000000000815250617dbb565b505050505050565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015611b97578382905f5260205f200180546141be90618edf565b80601f01602080910402602001604051908101604052809291908181526020018280546141ea90618edf565b80156142355780601f1061420c57610100808354040283529160200191614235565b820191905f5260205f20905b81548152906001019060200180831161421857829003601f168201915b5050505050815260200190600101906141a1565b60295f9054906101000a90046001600160a01b03166001600160a01b03166309c1ba2e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614299573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142bd9190618c18565b156142ca576142ca618beb565b6028546040517f4b160935000000000000000000000000000000000000000000000000000000008152620186a060048201819052915f916001600160a01b0390911690634b16093590602401602060405180830381865afa158015614331573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143559190618c18565b90506143985f82116040518060400160405280601581526020017f496e76616c696420726571756573742070726963650000000000000000000000815250617dbb565b6020546028546143b5916001600160a01b03908116911683617ace565b602980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161790556020546040517fca669fa700000000000000000000000000000000000000000000000000000000815291166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b15801561444f575f5ffd5b505af1158015614461573d5f5f3e3d5ffd5b50506029546040517f7e6e12b300000000000000000000000000000000000000000000000000000000815263ffffffff861660048201525f93506001600160a01b039091169150637e6e12b3906024016020604051808303815f875af11580156144cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144f19190618c18565b6028546040517fc58343ef000000000000000000000000000000000000000000000000000000008152600481018390529192505f916001600160a01b039091169063c58343ef906024015f60405180830381865afa1