25 txs
27 calls
constructor
constructor(uint32 _maximumGasPrice, uint32 _reasonableGasPrice, uint32 _microLinkPerEth, uint32 _linkGweiPerObservation, uint32 _linkGweiPerTransmission, address _link, int192 _minAnswer, int192 _maxAnswer, address _billingAccessController, address _requesterAccessController, uint8 _decimals, string description)
functions
billingAccessController
viewfunction billingAccessController() view returns (address)
checkEnabled
viewfunction checkEnabled() view returns (bool)
decimals
viewfunction decimals() view returns (uint8)
description
viewfunction description() view returns (string)
getAnswer
viewfunction getAnswer(uint256 _roundId) view returns (int256)
getBilling
viewfunction getBilling() view returns (uint32 maximumGasPrice, uint32 reasonableGasPrice, uint32 microLinkPerEth, uint32 linkGweiPerObservation, uint32 linkGweiPerTransmission)
getLinkToken
viewfunction getLinkToken() view returns (address linkToken)
getRoundData
viewfunction getRoundData(uint80 _roundId) view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
getTimestamp
viewfunction getTimestamp(uint256 _roundId) view returns (uint256)
hasAccess
viewfunction hasAccess(address _user, bytes _calldata) view returns (bool)
latestAnswer
viewfunction latestAnswer() view returns (int256)
latestConfigDetails
viewfunction latestConfigDetails() view returns (uint32 configCount, uint32 blockNumber, bytes16 configDigest)
latestRound
viewfunction latestRound() view returns (uint256)
latestRoundData
viewfunction latestRoundData() view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
latestTimestamp
viewfunction latestTimestamp() view returns (uint256)
latestTransmissionDetails
viewfunction latestTransmissionDetails() view returns (bytes16 configDigest, uint32 epoch, uint8 round, int192 latestAnswer, uint64 latestTimestamp)
linkAvailableForPayment
viewfunction linkAvailableForPayment() view returns (int256 availableBalance)
maxAnswer
viewfunction maxAnswer() view returns (int192)
minAnswer
viewfunction minAnswer() view returns (int192)
oracleObservationCount
viewfunction oracleObservationCount(address _signerOrTransmitter) view returns (uint16)
owedPayment
viewfunction owedPayment(address _transmitter) view returns (uint256)
owner
viewfunction owner() view returns (address)
requesterAccessController
viewfunction requesterAccessController() view returns (address)
transmitters
viewfunction transmitters() view returns (address[])
typeAndVersion
purefunction typeAndVersion() pure returns (string)
validatorConfig
viewfunction validatorConfig() view returns (address validator, uint32 gasLimit)
version
viewfunction version() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
acceptPayeeship
nonpayablefunction acceptPayeeship(address _transmitter)
addAccess
nonpayablefunction addAccess(address _user)
disableAccessCheck
nonpayablefunction disableAccessCheck()
enableAccessCheck
nonpayablefunction enableAccessCheck()
removeAccess
nonpayablefunction removeAccess(address _user)
requestNewRound
nonpayablefunction requestNewRound() returns (uint80)
setBilling
nonpayablefunction setBilling(uint32 _maximumGasPrice, uint32 _reasonableGasPrice, uint32 _microLinkPerEth, uint32 _linkGweiPerObservation, uint32 _linkGweiPerTransmission)
setBillingAccessController
nonpayablefunction setBillingAccessController(address _billingAccessController)
setConfig
nonpayablefunction setConfig(address[] _signers, address[] _transmitters, uint8 _threshold, uint64 _encodedConfigVersion, bytes _encoded)
setLinkToken
nonpayablefunction setLinkToken(address _linkToken, address _recipient)
setPayees
nonpayablefunction setPayees(address[] _transmitters, address[] _payees)
setRequesterAccessController
nonpayablefunction setRequesterAccessController(address _requesterAccessController)
setValidatorConfig
nonpayablefunction setValidatorConfig(address _newValidator, uint32 _newGasLimit)
transferOwnership
nonpayablefunction transferOwnership(address _to)
transferPayeeship
nonpayablefunction transferPayeeship(address _transmitter, address _proposed)
transmit
nonpayablefunction transmit(bytes _report, bytes32[] _rs, bytes32[] _ss, bytes32 _rawVs)
withdrawFunds
nonpayablefunction withdrawFunds(address _recipient, uint256 _amount)
withdrawPayment
nonpayablefunction withdrawPayment(address _transmitter)
events
AddedAccess
event AddedAccess(address user)
AnswerUpdated
event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt)
BillingAccessControllerSet
event BillingAccessControllerSet(address old, address current)
BillingSet
event BillingSet(uint32 maximumGasPrice, uint32 reasonableGasPrice, uint32 microLinkPerEth, uint32 linkGweiPerObservation, uint32 linkGweiPerTransmission)
CheckAccessDisabled
event CheckAccessDisabled()
CheckAccessEnabled
event CheckAccessEnabled()
ConfigSet
event ConfigSet(uint32 previousConfigBlockNumber, uint64 configCount, address[] signers, address[] transmitters, uint8 threshold, uint64 encodedConfigVersion, bytes encoded)
LinkTokenSet
event LinkTokenSet(address indexed _oldLinkToken, address indexed _newLinkToken)
NewRound
event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt)
NewTransmission
event NewTransmission(uint32 indexed aggregatorRoundId, int192 answer, address transmitter, int192[] observations, bytes observers, bytes32 rawReportContext)
OraclePaid
event OraclePaid(address indexed transmitter, address indexed payee, uint256 amount, address indexed linkToken)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
PayeeshipTransferred
event PayeeshipTransferred(address indexed transmitter, address indexed previous, address indexed current)
PayeeshipTransferRequested
event PayeeshipTransferRequested(address indexed transmitter, address indexed current, address indexed proposed)
RemovedAccess
event RemovedAccess(address user)
RequesterAccessControllerSet
event RequesterAccessControllerSet(address old, address current)
RoundRequested
event RoundRequested(address indexed requester, bytes16 configDigest, uint32 epoch, uint8 round)
ValidatorConfigSet
event ValidatorConfigSet(address indexed previousValidator, uint32 previousGasLimit, address indexed currentValidator, uint32 currentGasLimit)
errors
No errors.
creation bytecode
0x60e06040523480156200001157600080fd5b50604051620059c5380380620059c583398181016040526101808110156200003857600080fd5b815160208301516040808501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01516101608e0180519a519c9e9b9d999c989b979a969995989497939692959194939182019284640100000000821115620000a857600080fd5b908301906020820185811115620000be57600080fd5b8251640100000000811182820188101715620000d957600080fd5b82525081516020918201929091019080838360005b8381101562000108578181015183820152602001620000ee565b50505050905090810190601f168015620001365780820380516001836020036101000a031916815260200191505b506040525050600080546001600160a01b03191633179055508b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b89620001718787878787620002ef565b600380546001600160a01b0319166001600160a01b0384169081179091556040516000907f4966a50c93f855342ccf6c5c0d358b85b91335b2acedc7da0932f691f351711a908290a3620001c581620003e1565b620001cf62000678565b620001d962000678565b60005b601f8160ff16101562000229576001838260ff16601f8110620001fb57fe5b61ffff909216602092909202015260018260ff8316601f81106200021b57fe5b6020020152600101620001dc565b5062000239600583601f62000697565b5062000249600982601f62000734565b505050505060f887901b7fff000000000000000000000000000000000000000000000000000000000000001660c052505083516200029293506030925060208501915062000765565b506200029e836200045a565b620002ab60008062000532565b50505050601791820b820b604090811b60805290820b90910b901b60a05250506031805460ff1916600117905550620007fe9e505050505050505050505050505050565b6040805160a0808201835263ffffffff88811680845288821660208086018290528984168688018190528985166060808901829052958a1660809889018190526002805463ffffffff1916871763ffffffff60201b191664010000000087021763ffffffff60401b19166801000000000000000085021763ffffffff60601b19166c0100000000000000000000000084021763ffffffff60801b1916600160801b830217905589519586529285019390935283880152928201529283015291517fd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6929181900390910190a15050505050565b6004546001600160a01b0390811690821681146200045657600480546001600160a01b0319166001600160a01b03848116918217909255604080519284168352602083019190915280517f793cb73064f3c8cde7e187ae515511e6e56d1ee89bf08b82fa60fb70f8d489129281900390910190a15b5050565b6000546001600160a01b03163314620004ba576040805162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b602f546001600160a01b0390811690821681146200045657602f80546001600160a01b0319166001600160a01b03848116918217909255604080519284168352602083019190915280517f27b89aede8b560578baaa25ee5ce3852c5eecad1e114b941bbd89e1eb4bae6349281900390910190a15050565b6000546001600160a01b0316331462000592576040805162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015290519081900360640190fd5b60408051808201909152602e546001600160a01b03808216808452600160a01b90920463ffffffff1660208401528416141580620005e057508163ffffffff16816020015163ffffffff1614155b1562000673576040805180820182526001600160a01b0385811680835263ffffffff8681166020948501819052602e80546001600160a01b031916841763ffffffff60a01b1916600160a01b8302179055865187860151875193168352948201528451919493909216927fb04e3a37abe9c0fcdfebdeae019a8e2b12ddf53f5d55ffb0caccc1bedaca1541928290030190a35b505050565b604051806103e00160405280601f906020820280368337509192915050565b600283019183908215620007225791602002820160005b83821115620006f057835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302620006ae565b8015620007205782816101000a81549061ffff0219169055600201602081600101049283019260010302620006f0565b505b5062000730929150620007e7565b5090565b82601f810192821562000722579160200282015b828111156200072257825182559160200191906001019062000748565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200079d576000855562000722565b82601f10620007b857805160ff191683800117855562000722565b828001600101855582156200072257918201828111156200072257825182559160200191906001019062000748565b5b80821115620007305760008155600101620007e8565b60805160401c60a05160401c60c05160f81c6151876200083e60003980610e9e525080611a2a528061341c525080610e1952806133ef52506151876000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80638e0566de1161015c578063c1075329116100ce578063e76d516811610087578063e76d516814610b7e578063eb45716314610b86578063eb5dcd6c14610bb8578063f2fde38b14610be6578063fbffd2c114610c0c578063feaf968c14610c325761028a565b8063c1075329146109a6578063c9807539146109d2578063d09dc33914610ae0578063dc7f012414610ae8578063e4902f8214610af0578063e5fe457714610b2d5761028a565b80639e3ceeab116101205780639e3ceeab146108b5578063a118f249146108db578063b121e14714610901578063b5ab58dc14610927578063b633620c14610944578063bd824706146109615761028a565b80638e0566de1461073157806398e5b12a14610761578063996e8298146107855780639a6fc8f51461078d5780639c849b30146107f75761028a565b80636b14daf81161020057806381411834116101b9578063814118341461064457806381ff70481461069c5780638205bf6a146106d55780638823da6c146106dd5780638ac28d5a146107035780638da5cb5b146107295761028a565b80636b14daf81461053857806370da2f671461060057806370efdf2d146106085780637284e4161461062c57806379ba5097146106345780638038e4a11461063c5761028a565b8063313ce56711610252578063313ce567146103ae5780634fb17470146103cc57806350d25bcd146103fa57806354fd4d5014610402578063585aa7de1461040a578063668a0f02146105305761028a565b80630a7569831461028f5780630eafb25b14610299578063181f5a77146102d157806322adbc781461034e578063299372681461036d575b600080fd5b610297610c3a565b005b6102bf600480360360208110156102af57600080fd5b50356001600160a01b0316610cc8565b60408051918252519081900360200190f35b6102d9610df7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103135781810151838201526020016102fb565b50505050905090810190601f1680156103405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610356610e17565b6040805160179290920b8252519081900360200190f35b610375610e3b565b6040805163ffffffff96871681529486166020860152928516848401529084166060840152909216608082015290519081900360a00190f35b6103b6610e9c565b6040805160ff9092168252519081900360200190f35b610297600480360360408110156103e257600080fd5b506001600160a01b0381358116916020013516610ec0565b6102bf611148565b6102bf6111d5565b610297600480360360a081101561042057600080fd5b810190602081018135600160201b81111561043a57600080fd5b82018360208201111561044c57600080fd5b803590602001918460208302840111600160201b8311171561046d57600080fd5b919390929091602081019035600160201b81111561048a57600080fd5b82018360208201111561049c57600080fd5b803590602001918460208302840111600160201b831117156104bd57600080fd5b9193909260ff833516926001600160401b03602082013516929190606081019060400135600160201b8111156104f257600080fd5b82018360208201111561050457600080fd5b803590602001918460018302840111600160201b8311171561052557600080fd5b5090925090506111da565b6102bf611978565b6105ec6004803603604081101561054e57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561057857600080fd5b82018360208201111561058a57600080fd5b803590602001918460018302840111600160201b831117156105ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a00945050505050565b604080519115158252519081900360200190f35b610356611a28565b610610611a4c565b604080516001600160a01b039092168252519081900360200190f35b6102d9611a5b565b610297611ae3565b610297611b92565b61064c611c21565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610688578181015183820152602001610670565b505050509050019250505060405180910390f35b6106a4611c83565b6040805163ffffffff94851681529290931660208301526001600160801b0319168183015290519081900360600190f35b6102bf611ca3565b610297600480360360208110156106f357600080fd5b50356001600160a01b0316611d2b565b6102976004803603602081101561071957600080fd5b50356001600160a01b0316611df2565b610610611e69565b610739611e78565b604080516001600160a01b03909316835263ffffffff90911660208301528051918290030190f35b610769611eab565b604080516001600160501b039092168252519081900360200190f35b61061061207e565b6107b3600480360360208110156107a357600080fd5b50356001600160501b031661208d565b60405180866001600160501b03168152602001858152602001848152602001838152602001826001600160501b031681526020019550505050505060405180910390f35b6102976004803603604081101561080d57600080fd5b810190602081018135600160201b81111561082757600080fd5b82018360208201111561083957600080fd5b803590602001918460208302840111600160201b8311171561085a57600080fd5b919390929091602081019035600160201b81111561087757600080fd5b82018360208201111561088957600080fd5b803590602001918460208302840111600160201b831117156108aa57600080fd5b50909250905061212e565b610297600480360360208110156108cb57600080fd5b50356001600160a01b0316612331565b610297600480360360208110156108f157600080fd5b50356001600160a01b03166123f5565b6102976004803603602081101561091757600080fd5b50356001600160a01b031661244b565b6102bf6004803603602081101561093d57600080fd5b503561252c565b6102bf6004803603602081101561095a57600080fd5b50356125b5565b610297600480360360a081101561097757600080fd5b5063ffffffff81358116916020810135821691604082013581169160608101358216916080909101351661263e565b610297600480360360408110156109bc57600080fd5b506001600160a01b03813516906020013561276d565b610297600480360360808110156109e857600080fd5b810190602081018135600160201b811115610a0257600080fd5b820183602082011115610a1457600080fd5b803590602001918460018302840111600160201b83111715610a3557600080fd5b919390929091602081019035600160201b811115610a5257600080fd5b820183602082011115610a6457600080fd5b803590602001918460208302840111600160201b83111715610a8557600080fd5b919390929091602081019035600160201b811115610aa257600080fd5b820183602082011115610ab457600080fd5b803590602001918460208302840111600160201b83111715610ad557600080fd5b919350915035612a30565b6102bf61377e565b6105ec61380f565b610b1660048036036020811015610b0657600080fd5b50356001600160a01b0316613818565b6040805161ffff9092168252519081900360200190f35b610b356138c5565b604080516001600160801b0319909616865263ffffffff909416602086015260ff9092168484015260170b60608401526001600160401b03166080830152519081900360a00190f35b610610613975565b61029760048036036040811015610b9c57600080fd5b5080356001600160a01b0316906020013563ffffffff16613984565b61029760048036036040811015610bce57600080fd5b506001600160a01b0381358116916020013516613ab5565b61029760048036036020811015610bfc57600080fd5b50356001600160a01b0316613bf8565b61029760048036036020811015610c2257600080fd5b50356001600160a01b0316613c96565b6107b3613cec565b6000546001600160a01b03163314610c87576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b60315460ff1615610cc6576031805460ff191690556040517f3be8a977a014527b50ae38adda80b56911c267328965c98ddc385d248f53963890600090a15b565b6001600160a01b03811660009081526028602090815260408083208151808301909252805460ff808216845285948401916101009004166002811115610d0a57fe5b6002811115610d1557fe5b9052509050600081602001516002811115610d2c57fe5b1415610d3c576000915050610df2565b6040805160a08101825260025463ffffffff8082168352600160201b820481166020840152600160401b8204811693830193909352600160601b8104831660608301819052600160801b90910490921660808201528251909160009160019060059060ff16601f8110610dab57fe5b601091828204019190066002029054906101000a900461ffff160361ffff1602633b9aca0002905060016009846000015160ff16601f8110610de957fe5b01540301925050505b919050565b60606040518060600160405280602881526020016150e660289139905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040805160a08101825260025463ffffffff808216808452600160201b8304821660208501819052600160401b84048316958501869052600160601b8404831660608601819052600160801b90940490921660809094018490529490939290565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03163314610f0d576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b6003546001600160a01b03908116908316811415610f2b5750611144565b604080516370a0823160e01b815230600482015290516001600160a01b038516916370a08231916024808301926020929190829003018186803b158015610f7157600080fd5b505afa158015610f85573d6000803e3d6000fd5b505050506040513d6020811015610f9b57600080fd5b50610fa69050613d8b565b6000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ff557600080fd5b505afa158015611009573d6000803e3d6000fd5b505050506040513d602081101561101f57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b15801561107757600080fd5b505af115801561108b573d6000803e3d6000fd5b505050506040513d60208110156110a157600080fd5b50516110f4576040805162461bcd60e51b815260206004820152601f60248201527f7472616e736665722072656d61696e696e672066756e6473206661696c656400604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0386811691821790925560405190918416907f4966a50c93f855342ccf6c5c0d358b85b91335b2acedc7da0932f691f351711a90600090a350505b5050565b600061118b336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b6111c8576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b6111d0614114565b905090565b600481565b868560ff8616601f831115611229576040805162461bcd60e51b815260206004820152601060248201526f746f6f206d616e79207369676e65727360801b604482015290519081900360640190fd5b6000811161127e576040805162461bcd60e51b815260206004820152601a60248201527f7468726573686f6c64206d75737420626520706f736974697665000000000000604482015290519081900360640190fd5b8183146112bc5760405162461bcd60e51b815260040180806020018281038252602481526020018061510e6024913960400191505060405180910390fd5b806003028311611313576040805162461bcd60e51b815260206004820181905260248201527f6661756c74792d6f7261636c65207468726573686f6c6420746f6f2068696768604482015290519081900360640190fd5b6000546001600160a01b03163314611360576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b6029541561145d57602980546000198101916000918390811061137f57fe5b6000918252602082200154602a80546001600160a01b03909216935090849081106113a657fe5b6000918252602090912001546001600160a01b031690506113c68161413d565b6001600160a01b03808316600090815260286020526040808220805461ffff199081169091559284168252902080549091169055602980548061140557fe5b600082815260209020810160001990810180546001600160a01b0319169055019055602a80548061143257fe5b600082815260209020810160001990810180546001600160a01b031916905501905550611360915050565b60005b8a8110156117b9576000602860008e8e8581811061147a57fe5b602090810292909201356001600160a01b031683525081019190915260400160002054610100900460ff1660028111156114b057fe5b14611502576040805162461bcd60e51b815260206004820152601760248201527f7265706561746564207369676e65722061646472657373000000000000000000604482015290519081900360640190fd5b6040805180820190915260ff8216815260016020820152602860008e8e8581811061152957fe5b602090810292909201356001600160a01b0316835250818101929092526040016000208251815460ff191660ff90911617808255918301519091829061ff00191661010083600281111561157957fe5b02179055506000915060079050818c8c8581811061159357fe5b6001600160a01b0360209182029390930135831684528301939093526040909101600020541691909114159050611605576040805162461bcd60e51b81526020600482015260116024820152701c185e5959481b5d5cdd081899481cd95d607a1b604482015290519081900360640190fd5b6000602860008c8c8581811061161757fe5b602090810292909201356001600160a01b031683525081019190915260400160002054610100900460ff16600281111561164d57fe5b1461169f576040805162461bcd60e51b815260206004820152601c60248201527f7265706561746564207472616e736d6974746572206164647265737300000000604482015290519081900360640190fd5b6040805180820190915260ff8216815260026020820152602860008c8c858181106116c657fe5b602090810292909201356001600160a01b0316835250818101929092526040016000208251815460ff191660ff90911617808255918301519091829061ff00191661010083600281111561171657fe5b021790555090505060298c8c8381811061172c57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550602a8a8a8381811061177657fe5b835460018181018655600095865260209586902090910180546001600160a01b0319166001600160a01b0396909302949094013594909416179091555001611460565b50602b805460ff8916600160a81b0260ff60a81b19909116179055602d80544363ffffffff908116600160201b90810267ffffffff0000000019841617808316600101831663ffffffff1990911617938490559091048116911661182530828f8f8f8f8f8f8f8f614325565b602b60000160006101000a8154816001600160801b03021916908360801c02179055506000602b60000160106101000a81548164ffffffffff021916908364ffffffffff1602179055507f25d719d88a4512dd76c7442b910a83360845505894eb444ef299409e180f8fb982828f8f8f8f8f8f8f8f604051808b63ffffffff1681526020018a6001600160401b0316815260200180602001806020018760ff168152602001866001600160401b031681526020018060200184810384528c8c82818152602001925060200280828437600083820152601f01601f191690910185810384528a8152602090810191508b908b0280828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039f50909d5050505050505050505050505050a150505050505050505050505050565b60006119bb336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b6119f8576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b6111d0614427565b6000611a0c838361443a565b80611a1f57506001600160a01b03831632145b90505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b602f546001600160a01b031690565b6060611a9e336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b611adb576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b6111d061446a565b6001546001600160a01b03163314611b3b576040805162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b604482015290519081900360640190fd5b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6000546001600160a01b03163314611bdf576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b60315460ff16610cc6576031805460ff191660011790556040517faebf329500988c6488a0074e5a0a9ff304561fc5c6fc877aeb1d59c8282c348090600090a1565b6060602a805480602002602001604051908101604052809291908181526020018280548015611c7957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c5b575b5050505050905090565b602d54602b5463ffffffff80831692600160201b9004169060801b909192565b6000611ce6336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b611d23576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b6111d06144f7565b6000546001600160a01b03163314611d78576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526032602052604090205460ff1615611def576001600160a01b038116600081815260326020908152604091829020805460ff19169055815192835290517f3d68a6fce901d20453d1a7aa06bf3950302a735948037deb182a8db66df2a0d19281900390910190a15b50565b6001600160a01b03818116600090815260076020526040902054163314611e60576040805162461bcd60e51b815260206004820152601760248201527f4f6e6c792070617965652063616e207769746864726177000000000000000000604482015290519081900360640190fd5b611def8161413d565b6000546001600160a01b031681565b60408051808201909152602e546001600160a01b038116808352600160a01b90910463ffffffff16602090920182905291565b600080546001600160a01b0316331480611f6e5750602f5460408051630d629b5f60e31b815233600482018181526024830193845236604484018190526001600160a01b0390951694636b14daf894929360009391929190606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b158015611f4157600080fd5b505afa158015611f55573d6000803e3d6000fd5b505050506040513d6020811015611f6b57600080fd5b50515b611fbf576040805162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e6572267265717565737465722063616e2063616c6c000000604482015290519081900360640190fd5b6040805160808082018352602b549081901b6001600160801b031916808352600160801b820464ffffffffff8116602080860191909152600160a81b840460ff90811686880152600160b01b90940463ffffffff9081166060808801919091528751948552600884901c909116918401919091529216818501529251919233927f3ea16a923ff4b1df6526e854c9e3a995c43385d70e73359e10623c74f0b52037929181900390910190a2806060015160010163ffffffff1691505090565b6004546001600160a01b031690565b60008060008060006120d6336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b612113576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b61211c86614529565b939a9299509097509550909350915050565b6000546001600160a01b0316331461217b576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b8281146121cf576040805162461bcd60e51b815260206004820181905260248201527f7472616e736d6974746572732e73697a6520213d207061796565732e73697a65604482015290519081900360640190fd5b60005b8381101561232a5760008585838181106121e857fe5b905060200201356001600160a01b03169050600084848481811061220857fe5b6001600160a01b0385811660009081526007602090815260409091205492029390930135831693509091169050801580806122545750826001600160a01b0316826001600160a01b0316145b612299576040805162461bcd60e51b81526020600482015260116024820152701c185e595948185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6001600160a01b03848116600090815260076020526040902080546001600160a01b0319168583169081179091559083161461231a57826001600160a01b0316826001600160a01b0316856001600160a01b03167f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b360405160405180910390a45b5050600190920191506121d29050565b5050505050565b6000546001600160a01b0316331461237e576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b602f546001600160a01b03908116908216811461114457602f80546001600160a01b0319166001600160a01b03848116918217909255604080519284168352602083019190915280517f27b89aede8b560578baaa25ee5ce3852c5eecad1e114b941bbd89e1eb4bae6349281900390910190a15050565b6000546001600160a01b03163314612442576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b611def8161464d565b6001600160a01b038181166000908152600860205260409020541633146124b9576040805162461bcd60e51b815260206004820152601f60248201527f6f6e6c792070726f706f736564207061796565732063616e2061636365707400604482015290519081900360640190fd5b6001600160a01b0381811660008181526007602090815260408083208054336001600160a01b031980831682179093556008909452828520805490921690915590519416939092849290917f78af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b39190a45050565b600061256f336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b6125ac576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b611a22826146c8565b60006125f8336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b612635576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b611a22826146fe565b6004546000546001600160a01b0391821691163314806126ff575060408051630d629b5f60e31b815233600482018181526024830193845236604484018190526001600160a01b03861694636b14daf8946000939190606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b1580156126d257600080fd5b505afa1580156126e6573d6000803e3d6000fd5b505050506040513d60208110156126fc57600080fd5b50515b612750576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c79206f776e65722662696c6c696e6741646d696e2063616e2063616c6c604482015290519081900360640190fd5b612758613d8b565b612765868686868661473d565b505050505050565b6000546001600160a01b031633148061282e57506004805460408051630d629b5f60e31b8152339381018481526024820192835236604483018190526001600160a01b0390941694636b14daf8949093600093919291606401848480828437600083820152604051601f909101601f1916909201965060209550909350505081840390508186803b15801561280157600080fd5b505afa158015612815573d6000803e3d6000fd5b505050506040513d602081101561282b57600080fd5b50515b61287f576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c79206f776e65722662696c6c696e6741646d696e2063616e2063616c6c604482015290519081900360640190fd5b6000612889614826565b600354604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156128da57600080fd5b505afa1580156128ee573d6000803e3d6000fd5b505050506040513d602081101561290457600080fd5b5051905081811015612954576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6003546001600160a01b031663a9059cbb85612972858503876149da565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156129b857600080fd5b505af11580156129cc573d6000803e3d6000fd5b505050506040513d60208110156129e257600080fd5b5051612a2a576040805162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b604482015290519081900360640190fd5b50505050565b60005a9050612a438888888888886149f1565b3614612a96576040805162461bcd60e51b815260206004820152601960248201527f7472616e736d6974206d65737361676520746f6f206c6f6e6700000000000000604482015290519081900360640190fd5b612a9e614f7b565b6040805160808082018352602b549081901b6001600160801b0319168252600160801b810464ffffffffff166020830152600160a81b810460ff1692820192909252600160b01b90910463ffffffff166060808301919091529082526000908a908a90811015612b0d57600080fd5b813591602081013591810190606081016040820135600160201b811115612b3357600080fd5b820183602082011115612b4557600080fd5b803590602001918460208302840111600160201b83111715612b6657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050505060408801525050506080840182905283515190925060589190911b906001600160801b0319808316911614612c0d576040805162461bcd60e51b81526020600482015260156024820152740c6dedcccd2ce88d2cecae6e840dad2e6dac2e8c6d605b1b604482015290519081900360640190fd5b608083015183516020015164ffffffffff808316911610612c64576040805162461bcd60e51b815260206004820152600c60248201526b1cdd185b19481c995c1bdc9d60a21b604482015290519081900360640190fd5b83516040015160ff168911612cb8576040805162461bcd60e51b81526020600482015260156024820152746e6f7420656e6f756768207369676e61747572657360581b604482015290519081900360640190fd5b601f891115612d04576040805162461bcd60e51b8152602060048201526013602482015272746f6f206d616e79207369676e61747572657360681b604482015290519081900360640190fd5b868914612d58576040805162461bcd60e51b815260206004820152601e60248201527f7369676e617475726573206f7574206f6620726567697374726174696f6e0000604482015290519081900360640190fd5b601f8460400151511115612db3576040805162461bcd60e51b815260206004820152601e60248201527f6e756d206f62736572766174696f6e73206f7574206f6620626f756e64730000604482015290519081900360640190fd5b83600001516040015160020260ff1684604001515111612e1a576040805162461bcd60e51b815260206004820152601e60248201527f746f6f206665772076616c75657320746f207472757374206d656469616e0000604482015290519081900360640190fd5b886001600160401b0381118015612e3057600080fd5b506040519080825280601f01601f191660200182016040528015612e5b576020820181803683370190505b50606085015260005b60ff81168a1115612eb457868160ff1660208110612e7e57fe5b1a60f81b85606001518260ff1681518110612e9557fe5b60200101906001600160f81b031916908160001a905350600101612e64565b508360400151516001600160401b0381118015612ed057600080fd5b506040519080825280601f01601f191660200182016040528015612efb576020820181803683370190505b506020850152612f09614faf565b60005b8560400151518160ff161015612ff7576000858260ff1660208110612f2d57fe5b1a90508281601f8110612f3c57fe5b602002015115612f93576040805162461bcd60e51b815260206004820152601760248201527f6f6273657276657220696e646578207265706561746564000000000000000000604482015290519081900360640190fd5b6001838260ff16601f8110612fa457fe5b91151560209283029190910152869060ff8416908110612fc057fe5b1a60f81b87602001518360ff1681518110612fd757fe5b60200101906001600160f81b031916908160001a90535050600101612f0c565b503360009081526028602090815260408083208151808301909252805460ff8082168452929391929184019161010090910416600281111561303557fe5b600281111561304057fe5b905250905060028160200151600281111561305757fe5b14801561308b5750602a816000015160ff168154811061307357fe5b6000918252602090912001546001600160a01b031633145b6130dc576040805162461bcd60e51b815260206004820152601860248201527f756e617574686f72697a6564207472616e736d69747465720000000000000000604482015290519081900360640190fd5b5050835164ffffffffff90911660209091015250506040516000908a908a90808383808284376040519201829003909120945061311d9350614faf92505050565b613125614fce565b60005b898110156133155760006001858760600151848151811061314557fe5b60209101015160f81c601b018e8e8681811061315d57fe5b905060200201358d8d8781811061317057fe5b9050602002013560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156131cb573d6000803e3d6000fd5b505060408051601f198101516001600160a01b03811660009081526028602090815290849020838501909452835460ff8082168552929650929450840191610100900416600281111561321a57fe5b600281111561322557fe5b905250925060018360200151600281111561323c57fe5b1461328e576040805162461bcd60e51b815260206004820152601e60248201527f61646472657373206e6f7420617574686f72697a656420746f207369676e0000604482015290519081900360640190fd5b8251849060ff16601f811061329f57fe5b6020020151156132ed576040805162461bcd60e51b81526020600482015260146024820152736e6f6e2d756e69717565207369676e617475726560601b604482015290519081900360640190fd5b600184846000015160ff16601f811061330257fe5b9115156020909202015250600101613128565b5050505060005b6001826040015151038110156133c65760008260400151826001018151811061334157fe5b602002602001015160170b8360400151838151811061335c57fe5b602002602001015160170b13159050806133bd576040805162461bcd60e51b815260206004820152601760248201527f6f62736572766174696f6e73206e6f7420736f72746564000000000000000000604482015290519081900360640190fd5b5060010161331c565b506040810151805160009190600281049081106133df57fe5b602002602001015190508060170b7f000000000000000000000000000000000000000000000000000000000000000060170b1315801561344557507f000000000000000000000000000000000000000000000000000000000000000060170b8160170b13155b613496576040805162461bcd60e51b815260206004820152601e60248201527f6d656469616e206973206f7574206f66206d696e2d6d61782072616e67650000604482015290519081900360640190fd5b81516060908101805163ffffffff60019091018116909152604080518082018252601785810b8083526001600160401b0342811660208086019182528a5189015188166000908152602c8252878120965187549351909416600160c01b029390950b6001600160c01b039081166001600160c01b03199093169290921790911691909117909355875186015184890151848a01516080808c015188519586523386890181905291860181905260a0988601898152845199870199909952835194909916997ff6a97944f31ea060dfde0566e4167c1a1082551e64b60ecb14d599a9d023d451998c999298949793969095909492939185019260c086019289820192909102908190849084905b838110156135ba5781810151838201526020016135a2565b50505050905001838103825285818151815260200191508051906020019080838360005b838110156135f65781810151838201526020016135de565b50505050905090810190601f1680156136235780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a281516060015160408051428152905160009263ffffffff16917f0109fc6f55cf40689f02fbaad7af7fe7bbac8a3d2186600afc7d3e10cac60271919081900360200190a381600001516060015163ffffffff168160170b7f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040518082815260200191505060405180910390a36136d88260000151606001518260170b614a09565b5080518051602b8054602084015160408501516060909501516001600160801b031990921660809490941c9390931764ffffffffff60801b1916600160801b64ffffffffff909416939093029290921760ff60a81b1916600160a81b60ff909416939093029290921763ffffffff60b01b1916600160b01b63ffffffff9283160217909155821061376557fe5b613773828260200151614b0f565b505050505050505050565b600354604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156137ce57600080fd5b505afa1580156137e2573d6000803e3d6000fd5b505050506040513d60208110156137f857600080fd5b505190506000613806614826565b90910391505090565b60315460ff1681565b6001600160a01b03811660009081526028602090815260408083208151808301909252805460ff80821684528594840191610100900416600281111561385a57fe5b600281111561386557fe5b905250905060008160200151600281111561387c57fe5b141561388c576000915050610df2565b60016005826000015160ff16601f81106138a257fe5b601091828204019190066002029054906101000a900461ffff1603915050919050565b600080808080333214613916576040805162461bcd60e51b81526020600482015260146024820152734f6e6c792063616c6c61626c6520627920454f4160601b604482015290519081900360640190fd5b5050602b5463ffffffff600160b01b820481166000908152602c6020526040902054608083901b96600160801b909304600881901c909216955064ffffffffff9091169350601781900b9250600160c01b90046001600160401b031690565b6003546001600160a01b031690565b6000546001600160a01b031633146139d1576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b60408051808201909152602e546001600160a01b03808216808452600160a01b90920463ffffffff1660208401528416141580613a1e57508163ffffffff16816020015163ffffffff1614155b15613ab0576040805180820182526001600160a01b0385811680835263ffffffff8681166020948501819052602e80546001600160a01b031916841763ffffffff60a01b1916600160a01b8302179055865187860151875193168352948201528451919493909216927fb04e3a37abe9c0fcdfebdeae019a8e2b12ddf53f5d55ffb0caccc1bedaca1541928290030190a35b505050565b6001600160a01b03828116600090815260076020526040902054163314613b23576040805162461bcd60e51b815260206004820152601d60248201527f6f6e6c792063757272656e742070617965652063616e20757064617465000000604482015290519081900360640190fd5b336001600160a01b0382161415613b81576040805162461bcd60e51b815260206004820152601760248201527f63616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015290519081900360640190fd5b6001600160a01b03808316600090815260086020526040902080548383166001600160a01b031982168117909255909116908114613ab0576040516001600160a01b038084169133918616907f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e3836790600090a4505050565b6000546001600160a01b03163314613c45576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000546001600160a01b03163314613ce3576040805162461bcd60e51b81526020600482015260166024820152600080516020615132833981519152604482015290519081900360640190fd5b611def81614d37565b6000806000806000613d35336000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0092505050565b613d72576040805162461bcd60e51b81526020600482015260096024820152684e6f2061636365737360b81b604482015290519081900360640190fd5b613d7a614dae565b945094509450945094509091929394565b6040805160a08101825260025463ffffffff8082168352600160201b820481166020840152600160401b8204811683850152600160601b820481166060840152600160801b90910416608082015260035482516103e081019384905291926001600160a01b0390911691600091600590601f908285855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411613e02575050604080516103e0810191829052959650600095945060099350601f9250905082845b815481526020019060010190808311613e5c57505050505090506000602a805480602002602001604051908101604052809291908181526020018280548015613ece57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613eb0575b5050505050905060005b81518110156140f857600060018483601f8110613ef157fe5b6020020151039050600060018684601f8110613f0957fe5b60200201510361ffff169050600082896060015163ffffffff168302633b9aca000201905060008111156140ed57600060076000878781518110613f4957fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b03169050886001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613fde57600080fd5b505af1158015613ff2573d6000803e3d6000fd5b505050506040513d602081101561400857600080fd5b5051614050576040805162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b604482015290519081900360640190fd5b60018886601f811061405e57fe5b61ffff909216602092909202015260018786601f811061407a57fe5b602002018181525050886001600160a01b0316816001600160a01b03168787815181106140a357fe5b60200260200101516001600160a01b03167fd0b1dac935d85bd54cf0a33b0d41d39f8cf53a968465fc7ea2377526b8ac712c856040518082815260200191505060405180910390a4505b505050600101613ed8565b50614106600584601f614fe5565b50612765600983601f61507b565b602b54600160b01b900463ffffffff166000908152602c6020526040902054601790810b900b90565b6001600160a01b03811660009081526028602090815260408083208151808301909252805460ff8082168452929391929184019161010090910416600281111561418357fe5b600281111561418e57fe5b9052509050600061419e83610cc8565b90508015613ab0576001600160a01b03808416600090815260076020908152604080832054600354825163a9059cbb60e01b8152918616600483018190526024830188905292519295169363a9059cbb9360448084019491939192918390030190829087803b15801561421057600080fd5b505af1158015614224573d6000803e3d6000fd5b505050506040513d602081101561423a57600080fd5b5051614282576040805162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b604482015290519081900360640190fd5b60016005846000015160ff16601f811061429857fe5b601091828204019190066002026101000a81548161ffff021916908361ffff16021790555060016009846000015160ff16601f81106142d357fe5b01556003546040805184815290516001600160a01b039283169284811692908816917fd0b1dac935d85bd54cf0a33b0d41d39f8cf53a968465fc7ea2377526b8ac712c9181900360200190a450505050565b60008a8a8a8a8a8a8a8a8a8a604051602001808b6001600160a01b031681526020018a6001600160401b0316815260200180602001806020018760ff168152602001866001600160401b031681526020018060200184810384528c8c82818152602001925060200280828437600083820152601f01601f191690910185810384528a8152602090810191508b908b0280828437600083820152601f01601f191690910185810383528681526020019050868680828437600081840152601f19601f8201169050808301925050509d50505050505050505050505050506040516020818303038152906040528051906020012090509a9950505050505050505050565b602b54600160b01b900463ffffffff1690565b6001600160a01b03821660009081526032602052604081205460ff1680611a1f57505060315460ff161592915050565b60308054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015611c795780601f106144cb57610100808354040283529160200191611c79565b820191906000526020600020905b8154815290600101906020018083116144d957509395945050505050565b602b54600160b01b900463ffffffff166000908152602c6020526040902054600160c01b90046001600160401b031690565b600080600080600063ffffffff866001600160501b031611156040518060400160405280600f81526020016e139bc819185d18481c1c995cd95b9d608a1b815250906145f35760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145b85781810151838201526020016145a0565b50505050905090810190601f1680156145e55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505063ffffffff83166000908152602c6020908152604091829020825180840190935254601781810b810b810b808552600160c01b9092046001600160401b031693909201839052949594900b939092508291508490565b6001600160a01b03811660009081526032602052604090205460ff16611def576001600160a01b038116600081815260326020908152604091829020805460ff19166001179055815192835290517f87286ad1f399c8e82bf0c4ef4fcdc570ea2e1e92176e5c848b6413545b885db49281900390910190a150565b600063ffffffff8211156146de57506000610df2565b5063ffffffff166000908152602c6020526040902054601790810b900b90565b600063ffffffff82111561471457506000610df2565b5063ffffffff166000908152602c6020526040902054600160c01b90046001600160401b031690565b6040805160a0808201835263ffffffff88811680845288821660208086018290528984168688018190528985166060808901829052958a1660809889018190526002805463ffffffff1916871767ffffffff000000001916600160201b8702176bffffffff00000000000000001916600160401b85021763ffffffff60601b1916600160601b84021763ffffffff60801b1916600160801b830217905589519586529285019390935283880152928201529283015291517fd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6929181900390910190a15050505050565b604080516103e0810191829052600091829190600590601f908285855b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116148435790505050505050905060005b601f8110156148b35760018282601f811061489c57fe5b60200201510361ffff169290920191600101614885565b506040805160a08101825260025463ffffffff8082168352600160201b82048116602080850191909152600160401b8304821684860152600160601b8304821660608501819052600160801b9093049091166080840152602a805485518184028101840190965280865296909202633b9aca000295929360009390929183018282801561496957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161494b575b5050604080516103e0810191829052949550600094935060099250601f915082845b81548152602001906001019080831161498b575050505050905060005b82518110156149d25760018282601f81106149bf57fe5b60200201510395909501946001016149a8565b505050505090565b6000818310156149eb575081611a22565b50919050565b602083810286019082020160e4019695505050505050565b60408051808201909152602e546001600160a01b038116808352600160a01b90910463ffffffff166020830152614a405750611144565b600019830163ffffffff8181166000818152602c60209081526040918290205486820151875184516024810196909652601792830b90920b604486018190528a8716606487015260848087018b90528551808803909101815260a4909601909452918401805163beed9b5160e01b6001600160e01b039091161790529193614acb9391169190614e09565b61232a576040805162461bcd60e51b815260206004820152601060248201526f696e73756666696369656e742067617360801b604482015290519081900360640190fd5b3360009081526028602090815260408083208151808301909252805460ff80821684529293919291840191610100909104166002811115614b4c57fe5b6002811115614b5757fe5b9052506040805160a08101825260025463ffffffff8082168352600160201b820481166020840152600160401b8204811683850152600160601b820481166060840152600160801b90910416608082015281516103e081019283905292935091614c0b91859190600590601f90826000855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411614bc95790505050505050614e45565b614c1990600590601f614fe5565b50600282602001516002811115614c2c57fe5b14614c7e576040805162461bcd60e51b815260206004820181905260248201527f73656e7420627920756e64657369676e61746564207472616e736d6974746572604482015290519081900360640190fd5b6000614ca5633b9aca003a04836020015163ffffffff16846000015163ffffffff16614eba565b90506010360260005a90506000614cc48863ffffffff16858585614ee0565b6001600160801b031690506000620f4240866040015163ffffffff16830281614ce957fe5b049050856080015163ffffffff16633b9aca0002816009896000015160ff16601f8110614d1257fe5b015401016009886000015160ff16601f8110614d2a57fe5b0155505050505050505050565b6004546001600160a01b03908116908216811461114457600480546001600160a01b0319166001600160a01b03848116918217909255604080519284168352602083019190915280517f793cb73064f3c8cde7e187ae515511e6e56d1ee89bf08b82fa60fb70f8d489129281900390910190a15050565b602b54600160b01b900463ffffffff166000818152602c6020908152604091829020825180840190935254601781810b810b810b808552600160c01b9092046001600160401b031693909201839052929392900b9181908490565b60005a6113888110614e3d5761138881039050846040820482031115614e3d576000808451602086016000888af150600191505b509392505050565b614e4d614faf565b60005b8351811015614eb2576000848281518110614e6757fe5b016020015160f81c9050614e8c8482601f8110614e8057fe5b60200201516001614f63565b848260ff16601f8110614e9b57fe5b61ffff909216602092909202015250600101614e50565b509092915050565b60008383811015614ecd57600285850304015b614ed781846149da565b95945050505050565b600081851015614f37576040805162461bcd60e51b815260206004820181905260248201527f6761734c6566742063616e6e6f742065786365656420696e697469616c476173604482015290519081900360640190fd5b818503830161179301633b9aca00858202026001600160801b038110614f5957fe5b9695505050505050565b6000611a1f8261ffff168461ffff160161ffff6149da565b6040518060a00160405280614f8e6150a9565b81526060602082018190526040820181905280820152600060809091015290565b604051806103e00160405280601f906020820280368337509192915050565b604080518082019091526000808252602082015290565b60028301918390821561506b5791602002820160005b8382111561503b57835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302614ffb565b80156150695782816101000a81549061ffff021916905560020160208160010104928301926001030261503b565b505b506150779291506150d0565b5090565b82601f810192821561506b579160200282015b8281111561506b57825182559160200191906001019061508e565b60408051608081018252600080825260208201819052918101829052606081019190915290565b5b8082111561507757600081556001016150d156fe416363657373436f6e74726f6c6c65644f6666636861696e41676772656761746f7220342e302e306f7261636c6520616464726573736573206f7574206f6620726567697374726174696f6e4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000a26469706673582212202938f61342c36109a44868dd1c9a82c61c0c3b90ed86f8f0bd641bc4b1a217ee64736f6c6343000706003300000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000bbfe78700000000000000000000000000000000000000000000000000000000000c93f100000000000000000000000000000000000000000000000000000000004b789f000000000000000000000000f97f4df75117a78c1a5a0dbb814af92458539fb4000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000002be843e2a5907fff0b7c9337b5058617bfec2bfe000000000000000000000000f1c3c8c14c31a5f74614572e922cd8f4fc62618500000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000c78536f6c76425443204e41560000000000000000000000000000000000000000