0 txs
0 calls
constructor
No constructor.
functions
getBlueprintHash
viewfunction getBlueprintHash(tuple blueprint) view returns (bytes32)
getBlueprintNonce
viewfunction getBlueprintNonce(bytes32 blueprintHash) view returns (uint256)
getCounter
viewfunction getCounter(address account, bytes32 counterId) view returns (uint256 count)
getCurrentBlueprintHash
viewfunction getCurrentBlueprintHash() view returns (bytes32)
getPublisherCounter
viewfunction getPublisherCounter(bytes32 counterId) view returns (uint256 count)
getTractorVersion
viewfunction getTractorVersion() view returns (string)
operator
viewfunction operator() view returns (address)
tractorUser
viewfunction tractorUser() view returns (address)
cancelBlueprint
nonpayablefunction cancelBlueprint(tuple requisition)
publishRequisition
nonpayablefunction publishRequisition(tuple requisition)
sendTokenToInternalBalance
payablefunction sendTokenToInternalBalance(address token, address recipient, uint256 amount) payable
tractor
payablefunction tractor(tuple requisition, bytes operatorData) payable returns (bytes[] results)
updatePublisherCounter
nonpayablefunction updatePublisherCounter(bytes32 counterId, uint8 updateType, uint256 amount) returns (uint256 count)
updateTractorVersion
nonpayablefunction updateTractorVersion(string version)
events
CancelBlueprint
event CancelBlueprint(bytes32 indexed blueprintHash)
InternalBalanceChanged
event InternalBalanceChanged(address indexed account, address indexed token, int256 delta)
PublishRequisition
event PublishRequisition(((address publisher, bytes data, bytes32[] operatorPasteInstrs, uint256 maxNonce, uint256 startTime, uint256 endTime) blueprint, bytes32 blueprintHash, bytes signature) requisition)
TokenTransferred
event TokenTransferred(address indexed token, address indexed sender, address indexed recipient, uint256 amount, uint8 fromMode, uint8 toMode)
Tractor
event Tractor(address indexed operator, address indexed publisher, bytes32 indexed blueprintHash, uint256 nonce, uint256 gasleft)
TractorExecutionBegan
event TractorExecutionBegan(address indexed operator, address indexed publisher, bytes32 indexed blueprintHash, uint256 nonce, uint256 gasleft)
TractorVersionSet
event TractorVersionSet(string version)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
FailedInnerCall
error FailedInnerCall()
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600e575f80fd5b506149978061001c5f395ff3fe6080604052600436106100bb575f3560e01c80635993514b1161006d5780635993514b1461019b5780635ebc32e6146101ba57806391a45154146101d9578063ca1e71ae146101f8578063cc8a429d1461020b578063df8d26bb1461022a578063fe414fc814610249575f80fd5b806304cb49dc146100bf5780632be32f6a146100e0578063454972dd14610107578063507cea2514610128578063563957a814610149578063570ca735146101685780635723cc601461017c575b5f80fd5b3480156100ca575f80fd5b506100de6100d9366004613abe565b610269565b005b3480156100eb575f80fd5b506100f461051a565b6040519081526020015b60405180910390f35b348015610112575f80fd5b5061011b610528565b6040516100fe9190613b57565b348015610133575f80fd5b5061013c6105c1565b6040516100fe9190613b69565b348015610154575f80fd5b506100de610163366004613b8d565b6105ca565b348015610173575f80fd5b5061013c6109b6565b348015610187575f80fd5b506100f4610196366004613bbe565b6109bf565b3480156101a6575f80fd5b506100f46101b5366004613c08565b6109cf565b3480156101c5575f80fd5b506100f46101d4366004613c32565b610a04565b3480156101e4575f80fd5b506100f46101f3366004613c32565b610a0e565b6100de610206366004613c49565b610a54565b348015610216575f80fd5b506100de610225366004613b8d565b610d3e565b348015610235575f80fd5b506100f4610244366004613c87565b6110a1565b61025c610257366004613d40565b6113b5565b6040516100fe9190613ddf565b60c4545f610275611a2f565b90505f61028182611b5e565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156102ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f29190613e41565b600354909150600119016103215760405162461bcd60e51b815260040161031890613e58565b60405180910390fd5b600260035561032e611c5f565b61036c86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611ce892505050565b6001600381905554604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156103b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103dc9190613e41565b146103f95760405162461bcd60e51b815260040161031890613e8f565b505f61040483611b5e565b9050835f60c40154101561042a5760405162461bcd60e51b815260040161031890613ebc565b5f5b835181101561048e5781818151811061044757610447613ef3565b602002602001015183828151811061046157610461613ef3565b6020026020010151146104865760405162461bcd60e51b815260040161031890613f07565b60010161042c565b50505050505f61049c611a2f565b90505f806104a983611d3a565b915091505f5b8351811015610512578281815181106104ca576104ca613ef3565b60200260200101518282815181106104e4576104e4613ef3565b6020026020010151101561050a5760405162461bcd60e51b815260040161031890613f4b565b6001016104af565b505050505050565b5f61052361213a565b905090565b606061053261214c565b600301805461054090613f82565b80601f016020809104026020016040519081016040528092919081815260200182805461056c90613f82565b80156105b75780601f1061058e576101008083540402835291602001916105b7565b820191905f5260205f20905b81548152906001019060200180831161059a57829003601f168201915b5050505050905090565b5f610523612170565b60c4545f6105d6611a2f565b90505f6105e282611b5e565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561062f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106539190613e41565b9050845f6106696106648380613fb4565b612192565b90508160200135811461068e5760405162461bcd60e51b815260040161031890613fd2565b5f6106dd60208401356106a46040860186614009565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061229292505050565b90506106e98380613fb4565b6106f7906020810190614052565b6001600160a01b0316816001600160a01b0316146107275760405162461bcd60e51b81526004016103189061406d565b6003546001190161074a5760405162461bcd60e51b815260040161031890613e58565b60026003556107598880613fb4565b610767906020810190614052565b6001600160a01b0316336001600160a01b0316146107c75760405162461bcd60e51b815260206004820152601b60248201527f54726163746f7246616365743a206e6f74207075626c697368657200000000006044820152606401610318565b6107d488602001356122ba565b6040516020890135907fc8f50fb0aa40a998e7d9e2a16962a065dac0fc6d4bd03ba2c4b278ad74cf725b905f90a25050600160035550805f60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108799190613e41565b146108965760405162461bcd60e51b815260040161031890613e8f565b505f6108a183611b5e565b9050835f60c4015410156108c75760405162461bcd60e51b815260040161031890613ebc565b5f5b835181101561092b578181815181106108e4576108e4613ef3565b60200260200101518382815181106108fe576108fe613ef3565b6020026020010151146109235760405162461bcd60e51b815260040161031890613f07565b6001016108c9565b50505050505f610939611a2f565b90505f8061094683611d3a565b915091505f5b83518110156109af5782818151811061096757610967613ef3565b602002602001015182828151811061098157610981613ef3565b602002602001015110156109a75760405162461bcd60e51b815260040161031890613f4b565b60010161094c565b5050505050565b5f6105236122d3565b5f6109c982612192565b92915050565b5f6109d861214c565b6001600160a01b03939093165f9081526001909301602090815260408085209385529290525090205490565b5f6109c9826122ee565b5f610a1761214c565b6001015f610a2361214c565b600201546001600160a01b0316815260208082019290925260409081015f9081209481529390915290912054919050565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610a9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abf9190613e41565b60c4549091505f610ace611a2f565b90505f610ada82611b5e565b60035490915060011901610b005760405162461bcd60e51b815260040161031890613e58565b6002600355610b14873388885f6001612307565b5060016003555f610b2483611b5e565b9050835f60c401541015610b7a5760405162461bcd60e51b815260206004820152601e60248201527f494e563a206e6f4f7574466c6f77205374616c6b2064656372656173656400006044820152606401610318565b5f5b8351811015610c1e57818181518110610b9757610b97613ef3565b6020026020010151838281518110610bb157610bb1613ef3565b60200260200101511115610c165760405162461bcd60e51b815260206004820152602660248201527f494e563a206e6f4f7574466c6f7720546f6b656e2062616c616e6365206465636044820152651c99585cd95960d21b6064820152608401610318565b600101610b7c565b505050505080610c2b5f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610c74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c989190613e41565b14610cb55760405162461bcd60e51b815260040161031890613e8f565b505f610cbf611a2f565b90505f80610ccc83611d3a565b915091505f5b8351811015610d3557828181518110610ced57610ced613ef3565b6020026020010151828281518110610d0757610d07613ef3565b60200260200101511015610d2d5760405162461bcd60e51b815260040161031890613f4b565b600101610cd2565b50505050505050565b60c4545f610d4a611a2f565b90505f610d5682611b5e565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610da3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc79190613e41565b9050845f610dd86106648380613fb4565b905081602001358114610dfd5760405162461bcd60e51b815260040161031890613fd2565b5f610e1360208401356106a46040860186614009565b9050610e1f8380613fb4565b610e2d906020810190614052565b6001600160a01b0316816001600160a01b031614610e5d5760405162461bcd60e51b81526004016103189061406d565b60035460011901610e805760405162461bcd60e51b815260040161031890613e58565b6002600355610e8f8880613fb4565b60600135610ea089602001356122ee565b10610ebd5760405162461bcd60e51b8152600401610318906140a4565b7f4376f5f9f462e92b26f2199cc2c7311bb255a02bac9a7efaa366a034a5c53bf188604051610eec9190614174565b60405180910390a15050600160035550805f60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610f47573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f6b9190613e41565b14610f885760405162461bcd60e51b815260040161031890613e8f565b505f610f9383611b5e565b9050835f60c401541015610fb95760405162461bcd60e51b815260040161031890613ebc565b5f5b835181101561101d57818181518110610fd657610fd6613ef3565b6020026020010151838281518110610ff057610ff0613ef3565b6020026020010151146110155760405162461bcd60e51b815260040161031890613f07565b600101610fbb565b50505050505f61102b611a2f565b90505f8061103883611d3a565b915091505f5b83518110156109af5782818151811061105957611059613ef3565b602002602001015182828151811061107357611073613ef3565b602002602001015110156110995760405162461bcd60e51b815260040161031890613f4b565b60010161103e565b60c4545f90816110af611a2f565b90505f6110bb82611b5e565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015611108573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112c9190613e41565b600354909150600119016111525760405162461bcd60e51b815260040161031890613e58565b60026003555f8088600181111561116b5761116b614281565b0361118a576111838761117d8b610a0e565b906124b8565b90506111b9565b600188600181111561119e5761119e614281565b036111b9576111b6876111b08b610a0e565b906124ca565b90505b806111c261214c565b6001015f6111ce61214c565b600201546001600160a01b0316815260208082019290925260409081015f9081208d825290925290205594506001600355806112075f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015611250573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112749190613e41565b146112915760405162461bcd60e51b815260040161031890613e8f565b505f61129c83611b5e565b9050835f60c4015410156112c25760405162461bcd60e51b815260040161031890613ebc565b5f5b8351811015611326578181815181106112df576112df613ef3565b60200260200101518382815181106112f9576112f9613ef3565b60200260200101511461131e5760405162461bcd60e51b815260040161031890613f07565b6001016112c4565b50505050505f611334611a2f565b90505f8061134183611d3a565b915091505f5b83518110156113aa5782818151811061136257611362613ef3565b602002602001015182828151811061137c5761137c613ef3565b602002602001015110156113a25760405162461bcd60e51b815260040161031890613f4b565b600101611347565b505050509392505050565b600454606090600119016114175760405162461bcd60e51b8152602060048201526024808201527f5265656e7472616e637947756172643a207265656e7472616e74206661726d2060448201526318d85b1b60e21b6064820152608401610318565b6003546001190161143a5760405162461bcd60e51b815260040161031890613e58565b60026004819055600355825f6114536106648380613fb4565b9050816020013581146114785760405162461bcd60e51b815260040161031890613fd2565b5f61148e60208401356106a46040860186614009565b905061149a8380613fb4565b6114a8906020810190614052565b6001600160a01b0316816001600160a01b0316146114d85760405162461bcd60e51b81526004016103189061406d565b855f6114e782602001356122ee565b90506114f38280613fb4565b6060013581106115155760405162461bcd60e51b8152600401610318906140a4565b426115208380613fb4565b608001351115801561153f57506115378280613fb4565b60a001354211155b6115995760405162461bcd60e51b815260206004820152602560248201527f54726163746f7246616365743a20626c75657072696e74206973206e6f742061604482015264637469766560d81b6064820152608401610318565b60208201356115a88380613fb4565b6115b6906020810190614052565b6001600160a01b0316337fec6826ad3e6d9c7a0e858c00562eade7c9772b8958ca60fbc54685dca9ab973b845a6040805192835260208301919091520160405180910390a461160882602001356124d5565b6116286116158380613fb4565b611623906020810190614052565b6124ff565b5f6116338980613fb4565b611641906020810190614009565b9050116116865760405162461bcd60e51b815260206004820152601360248201527254726163746f723a206461746120656d70747960681b6044820152606401610318565b6116938860200135612598565b61169c336125a8565b5f6116f46116aa8a80613fb4565b6116b8906020810190614009565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250600492506125d5915050565b806020019051810190611707919061430b565b90505f5b6117158a80613fb4565b611723906040810190614409565b905081101561180a575f6117378b80613fb4565b611745906040810190614409565b8381811061175557611755613ef3565b9050602002013590505f611775826001600160501b0360509190911c1690565b9050806001600160501b03168451116117d05760405162461bcd60e51b815260206004820152601b60248201527f54726163746f723a20706173746543616c6c496e646578204f4f4200000000006044820152606401610318565b611800828c86846001600160501b0316815181106117f0576117f0613ef3565b60200260200101515f0151612696565b505060010161170b565b5080516001600160401b0381111561182457611824613cae565b60405190808252806020026020018201604052801561185757816020015b60608152602001906001900390816118425790505b5096505f5b81518110156119195781818151811061187757611877613ef3565b60200260200101515f0151515f036118d15760405162461bcd60e51b815260206004820152601f60248201527f54726163746f723a20656d70747920416476616e6365644661726d43616c6c006044820152606401610318565b6118f48282815181106118e6576118e6613ef3565b60200260200101518961277f565b88828151811061190657611906613ef3565b602090810291909101015260010161185c565b50611922612808565b61192a612818565b50611933612845565b60208201356119428380613fb4565b611950906020810190614052565b6001600160a01b0316337f2a59671df0213f367a602d98450174900bf8fd2cf1feb73395b9d464e6d28474845a6040805192835260208301919091520160405180910390a4505060016004819055600355505f91506119af9050611a2f565b90505f806119bc83611d3a565b915091505f5b8351811015611a25578281815181106119dd576119dd613ef3565b60200260200101518282815181106119f7576119f7613ef3565b60200260200101511015611a1d5760405162461bcd60e51b815260040161031890613f4b565b6001016119c2565b5050505092915050565b60605f611a3a61284f565b90505f611a45612950565b90505f81518351611a569190614462565b9050806001600160401b03811115611a7057611a70613cae565b604051908082528060200260200182016040528015611a99578160200160208202803683370190505b5093505f5b8351811015611af357838181518110611ab957611ab9613ef3565b6020026020010151858281518110611ad357611ad3613ef3565b6001600160a01b0390921660209283029190910190910152600101611a9e565b505f5b8251811015611b5757828181518110611b1157611b11613ef3565b602002602001015185828651611b279190614462565b81518110611b3757611b37613ef3565b6001600160a01b0390921660209283029190910190910152600101611af6565b5050505090565b606081516001600160401b03811115611b7957611b79613cae565b604051908082528060200260200182016040528015611ba2578160200160208202803683370190505b5090505f5b8251811015611c5957828181518110611bc257611bc2613ef3565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611bf59190613b69565b602060405180830381865afa158015611c10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c349190613e41565b828281518110611c4657611c46613ef3565b6020908102919091010152600101611ba7565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600401546001600160a01b03163314611ce65760405162461bcd60e51b815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201526132b960f11b6064820152608401610318565b565b80611cf161214c565b60030190611cff90826144b9565b507ff971fd59bb19eeced60eb31fd11f75cb65846e5e5e576b063a072676a1759d2c81604051611d2f9190613b57565b60405180910390a150565b6060805f83516001600160401b03811115611d5757611d57613cae565b604051908082528060200260200182016040528015611d80578160200160208202803683370190505b50925083516001600160401b03811115611d9c57611d9c613cae565b604051908082528060200260200182016040528015611dc5578160200160208202803683370190505b5091505f5b84518110156121335781600101601b015f868381518110611ded57611ded613ef3565b6020908102919091018101516001600160a01b031682528101919091526040015f908120549060ca840190600181526020019081526020015f205f878481518110611e3a57611e3a613ef3565b6020908102919091018101516001600160a01b031682528101919091526040015f908120546001600160801b03169060ca8501908081526020019081526020015f205f888581518110611e8f57611e8f613ef3565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205488516001600160801b039091169160c78701918a9087908110611ed957611ed9613ef3565b6020908102919091018101516001600160a01b031682528101919091526040015f2054611f0f91906001600160801b0316614574565b611f199190614574565b6001600160801b0316611f2c9190614462565b848281518110611f3e57611f3e613ef3565b6020908102919091010152600182015485516001600160a01b0390911690869083908110611f6e57611f6e613ef3565b60200260200101516001600160a01b03160361201a578160010160080154848281518110611f9e57611f9e613ef3565b60200260200101818151611fb29190614462565b9052505f5b6008830154811015612018575f81815260208085019052604090206001810154600290910154611fe79190614594565b858381518110611ff957611ff9613ef3565b6020026020010181815161200d9190614462565b905250600101611fb7565b505b81600101610101015f015f86838151811061203757612037613ef3565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205484828151811061207157612071613ef3565b602002602001018181516120859190614462565b905250845185908290811061209c5761209c613ef3565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016120cf9190613b69565b602060405180830381865afa1580156120ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210e9190613e41565b83828151811061212057612120613ef3565b6020908102919091010152600101611dca565b5050915091565b5f61214361214c565b60040154905090565b7f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a0790565b5f6121796129bc565b905060016001600160a01b0382161161218f5750335b90565b5f6109c96040518060a0016040528060788152602001614898607891398051602091820120906121c490850185614052565b6121d16020860186614009565b6040516121df9291906145a7565b60405180910390208580604001906121f79190614409565b6040516020016122089291906145b6565b60405160208183030381529060405280519060200120866060013587608001358860a0013560405160200161227797969594939291909687526001600160a01b0395909516602087015260408601939093526060850191909152608084015260a083015260c082015260e00190565b604051602081830303815290604052805190602001206129d7565b5f805f806122a08686612a1d565b9250925092506122b08282612a66565b5090949350505050565b5f196122c461214c565b5f928352602052604090912055565b5f6122dc61214c565b600501546001600160a01b0316919050565b5f6122f761214c565b5f92835260205250604090205490565b5f8083600381111561231b5761231b614281565b14801561233857505f82600181111561233657612336614281565b145b15612438576040516370a0823160e01b81525f906001600160a01b038916906370a082319061236b908990600401613b69565b602060405180830381865afa158015612386573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123aa9190613e41565b90506123c16001600160a01b038916888888612b22565b61243081896001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016123f19190613b69565b602060405180830381865afa15801561240c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b09190613e41565b9150506124ae565b61244487858886612b8f565b935061245287858785612cd3565b846001600160a01b0316866001600160a01b0316886001600160a01b03167ff17dedb192dec928d65fe29571baf7bb2940578a1f9070ee29a836bf1a0728328787876040516124a3939291906145dd565b60405180910390a450825b9695505050505050565b5f6124c38284614462565b9392505050565b5f6124c38284614594565b6124dd61214c565b5f828152602091909152604081208054916124f783614618565b919050555050565b5f61250861214c565b600281015490915060016001600160a01b0390911611156125755760405162461bcd60e51b815260206004820152602160248201527f4c696254726163746f723a207075626c697368657220616c72656164792073656044820152601d60fa1b6064820152608401610318565b60020180546001600160a01b0319166001600160a01b0392909216919091179055565b806125a161214c565b6004015550565b806125b161214c565b60050180546001600160a01b0319166001600160a01b039290921691909117905550565b60605f8284516125e59190614594565b90505f816001600160401b0381111561260057612600613cae565b6040519080825280601f01601f19166020018201604052801561262a576020820181803683370190505b5090505f5b8281101561268d57856126428287614462565b8151811061265257612652613ef3565b602001015160f81c60f81b82828151811061266f5761266f613ef3565b60200101906001600160f81b03191690815f1a90535060010161262f565b50949350505050565b6001600160501b0360a084901c811690841669fffffffffffffffffffe1982016126f5576126c261214c565b60020154604080516001600160a01b03909216602083015201604051602081830303815290604052935060209150612740565b61270760016001600160501b03614630565b6001600160501b0316826001600160501b0316036127405760408051336020820152016040516020818303038152906040529350602091505b612753826001600160501b031685612d16565b612766816001600160501b031684612dcc565b6001600160501b038083168501519082168401526109af565b60605f8360200151515f146127b85783602001515f815181106127a4576127a4613ef3565b01602001516001600160f81b0319166127ba565b5f5b90506001600160f81b031981165f036127df5783516127d890612e84565b9150612801565b5f6127f2855f0151866020015186612eb9565b90506127fd81612e84565b9250505b5092915050565b600161281261214c565b60040155565b600161282261214c565b60050180546001600160a01b0319166001600160a01b0392909216919091179055565b600161257561214c565b60c9546060905f9081816001600160401b0381111561287057612870613cae565b604051908082528060200260200182016040528015612899578160200160208202803683370190505b5093505f5b828110156129465760c984018054829081106128bc576128bc613ef3565b5f91825260209091200154600160a01b900460ff161561293e5760c984018054829081106128ec576128ec613ef3565b5f918252602090912001546001600160a01b0316858361290b81614618565b94508151811061291d5761291d613ef3565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161289e565b5080845250505090565b60605f61295b612f86565b90505f5b8151811015611c595761298a82828151811061297d5761297d613ef3565b602002602001015161307d565b82828151811061299c5761299c613ef3565b6001600160a01b039092166020928302919091019091015260010161295f565b5f6129c561214c565b600201546001600160a01b0316919050565b5f6129e061310d565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f8351604103612a54576020840151604085015160608601515f1a612a46888285856131d1565b955095509550505050612a5f565b505081515f91506002905b9250925092565b5f826003811115612a7957612a79614281565b03612a82575050565b6001826003811115612a9657612a96614281565b03612ab45760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612ac857612ac8614281565b03612ae95760405163fce698f760e01b815260048101829052602401610318565b6003826003811115612afd57612afd614281565b03612b1e576040516335e2f38360e21b815260048101829052602401610318565b5050565b6040516001600160a01b038481166024830152838116604483015260648201839052612b899186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061328f565b50505050565b5f835f03612b9e57505f612ccb565b5f826003811115612bb157612bb1614281565b14612bfd57612bd78386866001866003811115612bd057612bd0614281565b14156132ec565b905080841480612bf857506003826003811115612bf657612bf6614281565b145b612ccb575b6040516370a0823160e01b81525f906001600160a01b038716906370a0823190612c2b903090600401613b69565b602060405180830381865afa158015612c46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6a9190613e41565b9050612c8d8430612c7b8589614594565b6001600160a01b038a16929190612b22565b612cc7612cc082886001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016123f19190613b69565b83906124b8565b9150505b949350505050565b8215612b89576001816001811115612ced57612ced614281565b03612d0257612cfd8285856133a1565b612b89565b612b896001600160a01b03851683856133ca565b6020821015612d715760405162461bcd60e51b815260206004820152602160248201527f4c696242797465733a20636f707942797465496e64657820746f6f20736d616c6044820152601b60fa1b6064820152608401610318565b8051821115612b1e5760405162461bcd60e51b815260206004820152602160248201527f4c696242797465733a20636f707942797465496e64657820746f6f206c6172676044820152606560f81b6064820152608401610318565b6020821015612e285760405162461bcd60e51b815260206004820152602260248201527f4c696242797465733a20706173746542797465496e64657820746f6f20736d616044820152611b1b60f21b6064820152608401610318565b8051821115612b1e5760405162461bcd60e51b815260206004820152602260248201527f4c696242797465733a20706173746542797465496e64657820746f6f206c6172604482015261676560f01b6064820152608401610318565b60208101516060905f80612e97836133fb565b9050612ea3818661348d565b94509150612eb18285613551565b505050919050565b60605f80612ec685613597565b91935090915050600160f81b6001600160f81b031983161480612ef65750600160f91b6001600160f81b03198316145b612f425760405162461bcd60e51b815260206004820152601d60248201527f436c6970626f6172643a2054797065206e6f7420737570706f727465640000006044820152606401610318565b8592505f5b8151811015612f7c57612f74828281518110612f6557612f65613ef3565b602002602001015186866136a2565b600101612f47565b5050509392505050565b60c9546060905f9081816001600160401b03811115612fa757612fa7613cae565b604051908082528060200260200182016040528015612fd0578160200160208202803683370190505b5093505f5b828110156129465760c98401805482908110612ff357612ff3613ef3565b5f91825260209091200154600160b81b900460ff16156130755760c9840180548290811061302357613023613ef3565b5f918252602090912001546001600160a01b0316858361304281614618565b94508151811061305457613054613ef3565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612fd5565b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156130ba573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130e19190810190614650565b9050806130ed826136fe565b815181106130fd576130fd613ef3565b6020026020010151915050919050565b5f6040518060800160405280605281526020016149106052913980516020918201206040805180820190915260078152662a3930b1ba37b960c91b9201919091527f81c9350df56df21f753a346355759c2d2795e66332fa4a6e4f330e4e4924cd0761317761214c565b60030160405161318791906146e4565b60408051918290038220602083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f80806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384111561320057505f91506003905082613285565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613251573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661327c57505f925060019150829050613285565b92505f91508190505b9450945094915050565b5f6132a36001600160a01b0384168361378f565b905080515f141580156132c75750808060200190518101906132c59190614756565b155b156132e75782604051635274afe760e01b81526004016103189190613b69565b505050565b5f806132f8868661379c565b905082806133065750838110155b6133615760405162461bcd60e51b815260206004820152602660248201527f42616c616e63653a20496e73756666696369656e7420696e7465726e616c2062604482015265616c616e636560d01b6064820152608401610318565b61336b81856137c8565b91505f6133788383614594565b9050613397878783613389876137dd565b61339290614775565b61380d565b5050949350505050565b5f6133ac848461379c565b90505f6133b982846124b8565b90506109af858583613392876137dd565b6040516001600160a01b038381166024830152604482018390526132e791859182169063a9059cbb90606401612b57565b6001600160e01b031981165f9081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60208190526040909120546001600160a01b03169081611c595760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f742065786973746044820152606401610318565b6004545f9060609082906002146134de5760405162461bcd60e51b8152602060048201526015602482015274155b9c1c9bdd1958dd19590819985c9b4818d85b1b605a1b6044820152606401610318565b600160038201556040516001600160a01b038616906134fe90869061478f565b5f60405180830381855af49150503d805f8114613536576040519150601f19603f3d011682016040523d82523d5f602084013e61353b565b606091505b5060026003909301929092559590945092505050565b81612b1e57604481511015613564575f80fd5b6004810190508080602001905181019061357e91906147a5565b60405162461bcd60e51b81526004016103189190613b57565b5f806060835f815181106135ad576135ad613ef3565b01602001516001600160f81b0319169250600160f81b839003613621576040805160018082528183019092529060208083019080368337019050509050838060200190518101906135fe9190613e41565b815f8151811061361057613610613ef3565b60200260200101818152505061364e565b6001600160f81b03198316600160f91b0361364e578380602001905181019061364a91906147e9565b9150505b5f8460018151811061366257613662613ef3565b01602001516001600160f81b0319169050600160f81b81900361369a57613697602086516136909190614594565b8690613909565b92505b509193909250565b81516001600160501b0360a085901c811691605086901c8216918616905f908690859081106136d3576136d3613ef3565b602002602001015190506136e78382612d16565b6136f18286612dcc565b8281015182860152610d35565b5f805b825182101561374f5782828151811061371c5761371c613ef3565b602090810291909101015160018201546001600160a01b039081169116146137445750919050565b816001019150613701565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b6044820152606401610318565b60606124c383835f6139b5565b6001600160a01b039182165f90815260208181526040808320939094168252601b909201909152205490565b5f8183106137d657816124c3565b5090919050565b5f6001600160ff1b038211156138095760405163123baf0360e11b815260048101839052602401610318565b5090565b5f808212156138635761384261382283614775565b6001600160a01b0386165f908152601c84016020526040902054906124ca565b6001600160a01b0385165f908152601c8301602052604090208190556138a4565b6001600160a01b0384165f908152601c8201602052604090205461388790836124b8565b6001600160a01b0385165f908152601c8301602052604090208190555b506001600160a01b038581165f81815260208481526040808320948916808452601b90950182529182902087905590518581527f18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42910160405180910390a35050505050565b5f81613916816020614462565b10156139595760405162461bcd60e51b8152602060048201526012602482015271746f55696e743235365f6f766572666c6f7760701b6044820152606401610318565b613964826020614462565b835110156139ac5760405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606401610318565b50016020015190565b6060814710156139da573060405163cd78605960e01b81526004016103189190613b69565b5f80856001600160a01b031684866040516139f5919061478f565b5f6040518083038185875af1925050503d805f8114613a2f576040519150601f19603f3d011682016040523d82523d5f602084013e613a34565b606091505b50915091506124ae868383606082613a5457613a4f82613a92565b6124c3565b8151158015613a6b57506001600160a01b0384163b155b15613a8b5783604051639996b31560e01b81526004016103189190613b69565b50806124c3565b805115613aa25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b5f8060208385031215613acf575f80fd5b82356001600160401b0380821115613ae5575f80fd5b818501915085601f830112613af8575f80fd5b813581811115613b06575f80fd5b866020828501011115613b17575f80fd5b60209290920196919550909350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6124c36020830184613b29565b6001600160a01b0391909116815260200190565b5f60608284031215611c59575f80fd5b5f60208284031215613b9d575f80fd5b81356001600160401b03811115613bb2575f80fd5b612ccb84828501613b7d565b5f60208284031215613bce575f80fd5b81356001600160401b03811115613be3575f80fd5b820160c081850312156124c3575f80fd5b6001600160a01b0381168114613abb575f80fd5b5f8060408385031215613c19575f80fd5b8235613c2481613bf4565b946020939093013593505050565b5f60208284031215613c42575f80fd5b5035919050565b5f805f60608486031215613c5b575f80fd5b8335613c6681613bf4565b92506020840135613c7681613bf4565b929592945050506040919091013590565b5f805f60608486031215613c99575f80fd5b83359250602084013560028110613c76575f80fd5b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715613ce457613ce4613cae565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613d1257613d12613cae565b604052919050565b5f6001600160401b03821115613d3257613d32613cae565b50601f01601f191660200190565b5f8060408385031215613d51575f80fd5b82356001600160401b0380821115613d67575f80fd5b613d7386838701613b7d565b93506020850135915080821115613d88575f80fd5b508301601f81018513613d99575f80fd5b8035613dac613da782613d1a565b613cea565b818152866020838501011115613dc0575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015613e3457603f19888603018452613e22858351613b29565b94509285019290850190600101613e06565b5092979650505050505050565b5f60208284031215613e51575f80fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604082015260600190565b6020808252601e908201527f494e563a206e6f4e6574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526024908201527f494e563a206e6f4e6574466c6f7720546f6b656e2062616c616e6365206368616040820152631b99d95960e21b606082015260800190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b600181811c90821680613f9657607f821691505b602082108103611c5957634e487b7160e01b5f52602260045260245ffd5b5f823560be19833603018112613fc8575f80fd5b9190910192915050565b6020808252601a908201527f54726163746f7246616365743a20696e76616c69642068617368000000000000604082015260600190565b5f808335601e1984360301811261401e575f80fd5b8301803591506001600160401b03821115614037575f80fd5b60200191503681900382131561404b575f80fd5b9250929050565b5f60208284031215614062575f80fd5b81356124c381613bf4565b6020808252601d908201527f54726163746f7246616365743a207369676e6572206d69736d61746368000000604082015260600190565b6020808252601e908201527f54726163746f7246616365743a206d61784e6f6e636520726561636865640000604082015260600190565b5f808335601e198436030181126140f0575f80fd5b83016020810192503590506001600160401b0381111561410e575f80fd5b80360382131561404b575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b0383111561415b575f80fd5b8260051b80836020870137939093016020019392505050565b602081525f823560be1984360301811261418c575f80fd5b60606020840152830180356141a081613bf4565b6001600160a01b031660808401526141bb60208201826140db565b60c060a08601526141d16101408601828461411c565b9150506040820135601e198336030181126141ea575f80fd5b82016020810190356001600160401b03811115614205575f80fd5b8060051b3603821315614216575f80fd5b858303607f190160c087015261422d838284614144565b92505050606082013560e0850152608082013561010085015260a08201356101208501526020850135604085015261426860408601866140db565b858303601f1901606087015292506124ae82848361411c565b634e487b7160e01b5f52602160045260245ffd5b5f6001600160401b038211156142ad576142ad613cae565b5060051b60200190565b5f6142c4613da784613d1a565b90508281528383830111156142d7575f80fd5b8282602083015e5f602084830101529392505050565b5f82601f8301126142fc575f80fd5b6124c3838351602085016142b7565b5f602080838503121561431c575f80fd5b82516001600160401b0380821115614332575f80fd5b818501915085601f830112614345575f80fd5b8151614353613da782614295565b81815260059190911b83018401908481019088831115614371575f80fd5b8585015b838110156143fc5780518581111561438b575f80fd5b86016040818c03601f19018113156143a1575f80fd5b6143a9613cc2565b89830151888111156143b9575f80fd5b6143c78e8c838701016142ed565b8252509082015190878211156143db575f80fd5b6143e98d8b848601016142ed565b818b015285525050918601918601614375565b5098975050505050505050565b5f808335601e1984360301811261441e575f80fd5b8301803591506001600160401b03821115614437575f80fd5b6020019150600581901b360382131561404b575f80fd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156109c9576109c961444e565b601f8211156132e757805f5260205f20601f840160051c8101602085101561449a5750805b601f840160051c820191505b818110156109af575f81556001016144a6565b81516001600160401b038111156144d2576144d2613cae565b6144e6816144e08454613f82565b84614475565b602080601f831160018114614519575f84156145025750858301515b5f19600386901b1c1916600185901b178555610512565b5f85815260208120601f198616915b8281101561454757888601518255948401946001909101908401614528565b508582101561456457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160801b038181168382160190808211156128015761280161444e565b818103818111156109c9576109c961444e565b818382375f9101908152919050565b5f6001600160fb1b038311156145ca575f80fd5b8260051b80858437919091019392505050565b83815260608101600484106145f4576145f4614281565b8360208301526002831061460a5761460a614281565b826040830152949350505050565b5f600182016146295761462961444e565b5060010190565b6001600160501b038281168282160390808211156128015761280161444e565b5f6020808385031215614661575f80fd5b82516001600160401b03811115614676575f80fd5b8301601f81018513614686575f80fd5b8051614694613da782614295565b81815260059190911b820183019083810190878311156146b2575f80fd5b928401925b828410156146d95783516146ca81613bf4565b825292840192908401906146b7565b979650505050505050565b5f8083546146f181613f82565b60018281168015614709576001811461471e5761474a565b60ff198416875282151583028701945061474a565b875f526020805f205f5b858110156147415781548a820152908401908201614728565b50505082870194505b50929695505050505050565b5f60208284031215614766575f80fd5b815180151581146124c3575f80fd5b5f600160ff1b82016147895761478961444e565b505f0390565b5f82518060208501845e5f920191825250919050565b5f602082840312156147b5575f80fd5b81516001600160401b038111156147ca575f80fd5b8201601f810184136147da575f80fd5b612ccb848251602084016142b7565b5f80604083850312156147fa575f80fd5b82516001600160f01b031981168114614811575f80fd5b809250506020808401516001600160401b0381111561482e575f80fd5b8401601f8101861361483e575f80fd5b805161484c613da782614295565b81815260059190911b8201830190838101908883111561486a575f80fd5b928401925b828410156148885783518252928401929084019061486f565b8095505050505050925092905056fe426c75657072696e742861646472657373207075626c69736865722c627974657320646174612c627974657333325b5d206f70657261746f725061737465496e737472732c75696e74323536206d61784e6f6e63652c75696e7432353620737461727454696d652c75696e7432353620656e6454696d6529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a2646970667358221220f6969979b7ef42c14ccbe48d7597f6002e7de9bcea55911a100784ab51e69e1b64736f6c63430008190033