11.5k txs
50k calls
constructor
constructor(address nftInventory_, address lineManager_, address feeReceiver_, address elementReceiver_, address verificator_, uint256 expireTime_)
functions
CONTRACT_IDENTIFIER
viewfunction CONTRACT_IDENTIFIER() view returns (bytes32)
currencies
viewfunction currencies(uint8) view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
encodeRecipe
purefunction encodeRecipe(tuple recipe_) pure returns (bytes)
erc1155Addresses
viewfunction erc1155Addresses(uint8) view returns (address)
erc721Contracts
viewfunction erc721Contracts(uint8) view returns (address)
generateIdOfUsers
viewfunction generateIdOfUsers(address) view returns (uint256)
generateResultOfUsers
viewfunction generateResultOfUsers(address, uint256) view returns (uint256 lineNumber, uint8 ercType, uint8 contractType, uint240 quantity)
getAllItemsNotClaimedByUser
viewfunction getAllItemsNotClaimedByUser(address userAddress) view returns (tuple[])
getGenerateResultsOfUser
viewfunction getGenerateResultsOfUser(address userAddress_, uint256[] generateIds_) view returns (tuple[])
getLatestResultOfLines
viewfunction getLatestResultOfLines(address userAddress_) view returns (tuple[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
latestGenerateIdOfLineByUsers
viewfunction latestGenerateIdOfLineByUsers(address, uint256) view returns (uint256)
OPERATOR
viewfunction OPERATOR() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
addLine
nonpayablefunction addLine(uint256 lineNumber_, tuple priceInfo_, tuple signature_)
addOperator
nonpayablefunction addOperator(address operator)
claimAll
nonpayablefunction claimAll()
claimMulti
nonpayablefunction claimMulti(uint256[] generateIds)
claimOneLine
nonpayablefunction claimOneLine(uint256 lineNumber_)
generateErc1155
nonpayablefunction generateErc1155(uint256 lineNumber_, tuple recipe_, tuple signature_)
generateErc721
nonpayablefunction generateErc721(uint256 lineNumber_, tuple recipe_, tuple signature_)
generateNow
nonpayablefunction generateNow(uint256 lineNumber_, tuple priceInfo_, tuple signature_)
generateUgcEffect
nonpayablefunction generateUgcEffect(uint256 lineNumber_, tuple recipe_, tuple signature_)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
removeOperator
nonpayablefunction removeOperator(address operator)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setCurrencies
nonpayablefunction setCurrencies(uint8[] types_, address[] addresses)
setErc1155Addresses
nonpayablefunction setErc1155Addresses(uint8[] types_, address[] addresses)
setErc721Contracts
nonpayablefunction setErc721Contracts(uint8[] types_, address[] addresses)
setFeeReceiverAddress
nonpayablefunction setFeeReceiverAddress(address add_)
setLineManager
nonpayablefunction setLineManager(address add_)
setNftInventory
nonpayablefunction setNftInventory(address add_)
setNftReceiverAddress
nonpayablefunction setNftReceiverAddress(address add_)
setSignatureExpireTime
nonpayablefunction setSignatureExpireTime(uint256 time_)
setVerifierAddress
nonpayablefunction setVerifierAddress(address add_)
events
LineAdded
event LineAdded(uint256 lineNumber, address indexed userAddress, uint256 price, uint8 currencyType, uint256 timestamp)
LineSpeeded
event LineSpeeded(uint256 lineNumber, uint256 generateId, address indexed userAddress, uint256 price, uint8 currencyType, uint256 timestamp)
NftClaimedV3
event NftClaimedV3(uint256[] generateIds, address indexed userAddress, uint256 timestamp, uint256[][] resultIndexes)
NftGenerated
event NftGenerated(uint256[] tokenIds, uint256 indexed recipeId, (uint256 tokenId, uint8 ercType, uint8 contractType, uint240 quantity)[] elements, (uint256 generateId, uint256 lockedAt, uint256 lineNumber, address userAddress, uint256[] unlockedAts) lock)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
InvalidContract
error InvalidContract(uint8 ercType)
InvalidLineNumber
error InvalidLineNumber()
InvalidRecipeType
error InvalidRecipeType(uint8 ercType)
LineIsAlreadyUnlocked
error LineIsAlreadyUnlocked()
LineIsFree
error LineIsFree()
LineIsLocking
error LineIsLocking()
NothingToClaim
error NothingToClaim()
RecipeEmptyElements
error RecipeEmptyElements()
RecipeEmptyItemIds
error RecipeEmptyItemIds()
RecipeQuantityInvalid
error RecipeQuantityInvalid()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162005913380380620059138339810160408190526200003491620001a4565b60018055600280546001600160a01b03199081166001600160a01b038581169190911790925560038390557f1aedddb5170261705c678cdad98ad97772395dbc86509b87a40a2b84e8d3be18608052600a80548216888416179055600b80548216898416179055600c80548216878416179055600d8054909116918516919091179055620000cb6000620000c53390565b620000d7565b5050505050506200021c565b620000e38282620000e7565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e3576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001433390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200019f57600080fd5b919050565b60008060008060008060c08789031215620001be57600080fd5b620001c98762000187565b9550620001d96020880162000187565b9450620001e96040880162000187565b9350620001f96060880162000187565b9250620002096080880162000187565b915060a087015190509295509295509295565b6080516156b86200025b600039600081816105260152818161093501528181610d01015281816110f4015281816117db015261197001526156b86000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c80637c7c233611610146578063ac8a584a116100c3578063d547741f11610087578063d547741f14610651578063e4717f6a14610664578063ebc52d3714610677578063ef8284a51461068a578063f23a6e611461069d578063f6ff984e146106bc57600080fd5b8063ac8a584a146105c3578063bc197c81146105d6578063c8502dc9146105f5578063cc0e153b14610620578063d1058e591461064957600080fd5b806398374c731161010a57806398374c731461055b578063983d27371461056e5780639870d7fe146105955780639c4e3148146105a8578063a217fddf146105bb57600080fd5b80637c7c2336146104c55780637d3e4ed0146104e55780638f2c5cdc1461050e5780638f49bb6b1461052157806391d148541461054857600080fd5b80632f2ff15d116101d45780635be21426116101985780635be21426146103e85780635cec6261146103fb57806360f15ded1461040e57806366f099db146104215780636e34e0861461048457600080fd5b80632f2ff15d1461038957806336568abe1461039c5780633bc4d07b146103af5780633bd4ae64146103c25780634d5b2d2d146103d557600080fd5b8063150b7a021161021b578063150b7a02146102e9578063164dad1f1461032057806317e95526146103335780631910c21614610346578063248a9ca31461036657600080fd5b806301ffc9a71461025857806302d3049f1461028057806303ea29be146102ae57806304839f1f146102c357806305e52a72146102d6575b600080fd5b61026b610266366004614651565b6106cf565b60405190151581526020015b60405180910390f35b6102a061028e366004614697565b60076020526000908152604090205481565b604051908152602001610277565b6102c16102bc3660046146dc565b6106e0565b005b6102c16102d1366004614697565b610a54565b6102c16102e4366004614697565b610a80565b6103076102f73660046147fd565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610277565b6102c161032e3660046146dc565b610aac565b6102c1610341366004614697565b610dae565b610359610354366004614697565b610dd9565b60405161027791906148d7565b6102a061037436600461499a565b60009081526020819052604090206001015490565b6102c16103973660046149b3565b611040565b6102c16103aa3660046149b3565b611065565b6102c16103bd3660046149df565b6110e3565b6102c16103d03660046146dc565b611586565b6102c16103e33660046149df565b61195f565b6102c16103f6366004614a7b565b611b13565b6102c1610409366004614697565b611bd1565b61035961041c366004614697565b611bfd565b61047461042f366004614ae6565b60096020908152600092835260408084209091529082529020600281015460039091015460ff808216916101008104909116906201000090046001600160f01b031684565b6040516102779493929190614b10565b6104ad610492366004614b58565b6006602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610277565b6104d86104d3366004614b73565b611e13565b6040516102779190614bff565b6104ad6104f3366004614b58565b6005602052600090815260409020546001600160a01b031681565b6102c161051c36600461499a565b611eba565b6102a07f000000000000000000000000000000000000000000000000000000000000000081565b61026b6105563660046149b3565b611ecd565b6102c1610569366004614a7b565b611ef6565b6102a07f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c81565b6102c16105a3366004614697565b611fac565b6102c16105b6366004614697565b611fe0565b6102a0600081565b6102c16105d1366004614697565b61200c565b6103076105e4366004614c86565b63bc197c8160e01b95945050505050565b6102a0610603366004614ae6565b600860209081526000928352604080842090915290825290205481565b6104ad61062e366004614b58565b6004602052600090815260409020546001600160a01b031681565b6102c1612040565b6102c161065f3660046149b3565b61220a565b6102c1610672366004614d2f565b61222f565b610359610685366004614d70565b6123da565b6102c1610698366004614a7b565b6125d8565b6103076106ab366004614dc2565b63f23a6e6160e01b95945050505050565b6102c16106ca36600461499a565b61268e565b60006106da82612802565b92915050565b6106e8612827565b82600033600a546040516316ab5e5b60e11b81526001600160a01b038084166004830152929350911690632d56bcb690602401602060405180830381865afa158015610738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075c9190614e26565b82111561077c5760405163de07437760e01b815260040160405180910390fd5b6001600160a01b03811660008181526008602090815260408083208684528252808320549383526009825280832084845282528083208151815460e09481028201850190935260c0810183815290939192849284919084018282801561080157602002820191906000526020600020905b8154815260200190600101908083116107ed575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561085957602002820191906000526020600020905b815481526020019060010190808311610845575b505050918352505060028201546020820152600382015460409091019060ff16600181111561088a5761088a61489f565b600181111561089b5761089b61489f565b815260039190910154610100810460ff16602080840191909152620100009091046001600160f01b0316604090920191909152810151519091501580159061090e5750602081015180514291906108f490600190614e55565b8151811061090457610904614e68565b6020026020010151115b1561092c57604051630daf930560e41b815260040160405180910390fd5b843560208601357f0000000000000000000000000000000000000000000000000000000000000000811461097b5760405162461bcd60e51b815260040161097290614e7e565b60405180910390fd5b426003548361098a9190614ecb565b10156109a85760405162461bcd60e51b815260040161097290614ede565b336109b588828c8c612880565b6109d15760405162461bcd60e51b815260040161097290614f2d565b6109de60c08a018a614f58565b9050600003610a005760405163a267440760e01b815260040160405180910390fd5b610a32610a0d8a80614fa1565b610a1d60808d0160608e01614ff9565b610a2d60c08e0160a08f0161502b565b6128ed565b610a3f818b8b6000612973565b50505050505050610a4f60018055565b505050565b610a5e6000612c39565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610a8a6000612c39565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b610ab4612827565b82600033600a546040516316ab5e5b60e11b81526001600160a01b038084166004830152929350911690632d56bcb690602401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190614e26565b821115610b485760405163de07437760e01b815260040160405180910390fd5b6001600160a01b03811660008181526008602090815260408083208684528252808320549383526009825280832084845282528083208151815460e09481028201850190935260c08101838152909391928492849190840182828015610bcd57602002820191906000526020600020905b815481526020019060010190808311610bb9575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610c2557602002820191906000526020600020905b815481526020019060010190808311610c11575b505050918352505060028201546020820152600382015460409091019060ff166001811115610c5657610c5661489f565b6001811115610c6757610c6761489f565b815260039190910154610100810460ff16602080840191909152620100009091046001600160f01b03166040909201919091528101515190915015801590610cda575060208101518051429190610cc090600190614e55565b81518110610cd057610cd0614e68565b6020026020010151115b15610cf857604051630daf930560e41b815260040160405180910390fd5b843560208601357f00000000000000000000000000000000000000000000000000000000000000008114610d3e5760405162461bcd60e51b815260040161097290614e7e565b4260035483610d4d9190614ecb565b1015610d6b5760405162461bcd60e51b815260040161097290614ede565b33610d7888828c8c612c43565b610d945760405162461bcd60e51b815260040161097290614f2d565b610da1610a0d8a80614fa1565b610a3f818b8b6001612973565b610db86000612c39565b600280546001600160a01b0319166001600160a01b03831617905550565b50565b600a546040516375fe5f9b60e01b81526001600160a01b0383811660048301526060926000929116906375fe5f9b90602401602060405180830381865afa158015610e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4c9190614e26565b90506000816001600160401b03811115610e6857610e68614748565b604051908082528060200260200182016040528015610ea157816020015b610e8e61458c565b815260200190600190039081610e865790505b50905060005b82811015611038576001600160a01b03851660008181526008602090815260408083208584528252808320549383526009825280832084845282528083208151815460e09481028201850190935260c08101838152909391928492849190840182828015610f3457602002820191906000526020600020905b815481526020019060010190808311610f20575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f8c57602002820191906000526020600020905b815481526020019060010190808311610f78575b505050918352505060028201546020820152600382015460409091019060ff166001811115610fbd57610fbd61489f565b6001811115610fce57610fce61489f565b815260039190910154610100810460ff1660208301526201000090046001600160f01b031660409182015281018490528451909150819085908590811061101757611017614e68565b602002602001018190525050506001816110319190614ecb565b9050610ea7565b509392505050565b60008281526020819052604090206001015461105b81612c39565b610a4f8383612c74565b6001600160a01b03811633146110d55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610972565b6110df8282612cf8565b5050565b6110eb612827565b803560208201357f000000000000000000000000000000000000000000000000000000000000000081146111315760405162461bcd60e51b815260040161097290614e7e565b42600354836111409190614ecb565b101561115e5760405162461bcd60e51b815260040161097290614ede565b3361116b84828888612d5d565b6111875760405162461bcd60e51b815260040161097290614f2d565b61119f61119a6040870160208801614b58565b612ded565b84356111e25760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420756e697420707269636560701b6044820152606401610972565b600a546040516316ab5e5b60e11b81526001600160a01b03838116600483015290911690632d56bcb690602401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190614e26565b8611156112705760405163de07437760e01b815260040160405180910390fd5b6001600160a01b03811660008181526008602090815260408083208a84528252808320549383526009825280832084845282528083208151815460e09481028201850190935260c081018381529093919284928491908401828280156112f557602002820191906000526020600020905b8154815260200190600101908083116112e1575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561134d57602002820191906000526020600020905b815481526020019060010190808311611339575b505050918352505060028201546020820152600382015460409091019060ff16600181111561137e5761137e61489f565b600181111561138f5761138f61489f565b815260039190910154610100810460ff16602080840191909152620100009091046001600160f01b03166040909201919091528101518051919250906000036113eb5760405163b08bb7b960e01b815260040160405180910390fd5b600081600183516113fc9190614e55565b8151811061140c5761140c614e68565b60200260200101519050600042905080821161143b576040516308daeb3d60e01b815260040160405180910390fd5b600061144983838d35612e55565b905060005b84518110156114d25784818151811061146957611469614e68565b60200260200101516000146114c0576001600160a01b03881660009081526009602090815260408083208a845290915290206001018054849190839081106114b3576114b3614e68565b6000918252602090912001555b6114cb600182614ecb565b905061144e565b506115068188600c60009054906101000a90046001600160a01b03168e60200160208101906115019190614b58565b612eaf565b866001600160a01b03167f94fb207911ec4052570feb04c9aff140f8df6388ed5c326b396d0cd020ebe6858d88848f60200160208101906115479190614b58565b6040805194855260208501939093529183015260ff1660608201526080810185905260a00160405180910390a2505050505050505050610a4f60018055565b61158e612827565b82600033600a546040516316ab5e5b60e11b81526001600160a01b038084166004830152929350911690632d56bcb690602401602060405180830381865afa1580156115de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116029190614e26565b8211156116225760405163de07437760e01b815260040160405180910390fd5b6001600160a01b03811660008181526008602090815260408083208684528252808320549383526009825280832084845282528083208151815460e09481028201850190935260c081018381529093919284928491908401828280156116a757602002820191906000526020600020905b815481526020019060010190808311611693575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156116ff57602002820191906000526020600020905b8154815260200190600101908083116116eb575b505050918352505060028201546020820152600382015460409091019060ff1660018111156117305761173061489f565b60018111156117415761174161489f565b815260039190910154610100810460ff16602080840191909152620100009091046001600160f01b031660409092019190915281015151909150158015906117b457506020810151805142919061179a90600190614e55565b815181106117aa576117aa614e68565b6020026020010151115b156117d257604051630daf930560e41b815260040160405180910390fd5b843560208601357f000000000000000000000000000000000000000000000000000000000000000081146118185760405162461bcd60e51b815260040161097290614e7e565b42600354836118279190614ecb565b10156118455760405162461bcd60e51b815260040161097290614ede565b3361185288828c8c612880565b61186e5760405162461bcd60e51b815260040161097290614f2d565b61187b60c08a018a614f58565b905060000361189d5760405163a267440760e01b815260040160405180910390fd5b6118a78980614fa1565b90506000036118c95760405163dfe3c46f60e01b815260040160405180910390fd5b60016118db60808b0160608c01614ff9565b60018111156118ec576118ec61489f565b1461191b5761190160808a0160608b01614ff9565b60405163e68c312160e01b81526004016109729190615046565b61192b60c08a0160a08b0161502b565b6001600160f01b031660000361195457604051633c0a99e160e11b815260040160405180910390fd5b610a3f818b8b612ee3565b611967612827565b803560208201357f000000000000000000000000000000000000000000000000000000000000000081146119ad5760405162461bcd60e51b815260040161097290614e7e565b42600354836119bc9190614ecb565b10156119da5760405162461bcd60e51b815260040161097290614ede565b336119e784828888613069565b611a035760405162461bcd60e51b815260040161097290614f2d565b611a1661119a6040870160208801614b58565b600c54611a3b9086359083906001600160a01b031661150160408a0160208b01614b58565b600a546040516362cc8aff60e01b81526001600160a01b03838116600483015260248201899052909116906362cc8aff90604401600060405180830381600087803b158015611a8957600080fd5b505af1158015611a9d573d6000803e3d6000fd5b5050506001600160a01b03821690507f645ce66aa3ac46558a09527ff8012ce2ca65e252e6a241c600cbe03aaaff2382878735611ae060408a0160208b01614b58565b60408051938452602084019290925260ff169082015242606082015260800160405180910390a2505050610a4f60018055565b611b1d6000612c39565b828114611b2957600080fd5b60005b83811015611bca57611bb8858583818110611b4957611b49614e68565b9050602002016020810190611b5e9190614b58565b848484818110611b7057611b70614e68565b9050602002016020810190611b859190614697565b60ff91909116600090815260046020526040902080546001600160a01b0319166001600160a01b03909216919091179055565b611bc3600182614ecb565b9050611b2c565b5050505050565b611bdb6000612c39565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60606000611c0a836130cd565b6001600160a01b038416600090815260076020526040812054919250826001600160401b03811115611c3e57611c3e614748565b604051908082528060200260200182016040528015611c7757816020015b611c6461458c565b815260200190600190039081611c5c5790505b50905060006103e95b838111611e08576001600160a01b038716600090815260096020908152604080832084845282528083208151815460e09481028201850190935260c08101838152909391928492849190840182828015611cf957602002820191906000526020600020905b815481526020019060010190808311611ce5575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015611d5157602002820191906000526020600020905b815481526020019060010190808311611d3d575b505050918352505060028201546020820152600382015460409091019060ff166001811115611d8257611d8261489f565b6001811115611d9357611d9361489f565b815260039190910154610100810460ff1660208301526201000090046001600160f01b031660409091015280515190915015611df55780848481518110611ddc57611ddc614e68565b6020908102919091010152611df2600184614ecb565b92505b50611e01600182614ecb565b9050611c80565b509095945050505050565b60606000611e2460c0840184614f58565b604051602001611e359291906150c9565b60408051601f198184030181529190529050611e518380614fa1565b6040850135611e6660a0870160808801614b58565b611e766080880160608901614ff9565b6020880135611e8b60c08a0160a08b0161502b565b87604051602001611ea398979695949392919061510f565b604051602081830303815290604052915050919050565b611ec46000612c39565b610dd681600355565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b611f006000612c39565b828114611f0c57600080fd5b60005b83811015611bca57828282818110611f2957611f29614e68565b9050602002016020810190611f3e9190614697565b60056000878785818110611f5457611f54614e68565b9050602002016020810190611f699190614b58565b60ff168152602081019190915260400160002080546001600160a01b0319166001600160a01b0392909216919091179055611fa5600182614ecb565b9050611f0f565b611fb66000612c39565b610dd67f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c82612c74565b611fea6000612c39565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6120166000612c39565b610dd67f523a704056dcd17bcf83bed8b68c59416dac1119be77755efe3bde0a64e46e0c82612cf8565b33600061204c826130cd565b90508060000361206f576040516312d37ee560e31b815260040160405180910390fd5b6001600160a01b03821660009081526007602052604081205490826001600160401b038111156120a1576120a1614748565b6040519080825280602002602001820160405280156120ca578160200160208202803683370190505b5090506000836001600160401b038111156120e7576120e7614748565b60405190808252806020026020018201604052801561211a57816020015b60608152602001906001900390816121055790505b5090504260006103e95b8581116121bb576001600160a01b0388166000908152600960209081526040808320848452909152902054156121a9578085838151811061216757612167614e68565b60200260200101818152505061217e88828561313b565b84838151811061219057612190614e68565b60209081029190910101526121a6600183614ecb565b91505b6121b4600182614ecb565b9050612124565b50866001600160a01b03167f1d44720a44d651b98b0f48bfb30a5b447d48630f33ed9b7cd3b15aaaf997f0ad8584866040516121f9939291906151cb565b60405180910390a250505050505050565b60008281526020819052604090206001015461222581612c39565b610a4f8383612cf8565b8061223957600080fd5b33426000836001600160401b0381111561225557612255614748565b60405190808252806020026020018201604052801561228857816020015b60608152602001906001900390816122735790505b50905060005b8481101561238b576001600160a01b0384166000908152600960205260408120908787848181106122c1576122c1614e68565b905060200201358152602001908152602001600020600001805490506000036122fd576040516312d37ee560e31b815260040160405180910390fd5b6123208487878481811061231357612313614e68565b905060200201358561313b565b82828151811061233257612332614e68565b60200260200101819052508160008151811061235057612350614e68565b602002602001015151600003612379576040516312d37ee560e31b815260040160405180910390fd5b612384600182614ecb565b905061228e565b50826001600160a01b03167f1d44720a44d651b98b0f48bfb30a5b447d48630f33ed9b7cd3b15aaaf997f0ad868685856040516123cb94939291906151f6565b60405180910390a25050505050565b60606000826001600160401b038111156123f6576123f6614748565b60405190808252806020026020018201604052801561242f57816020015b61241c61458c565b8152602001906001900390816124145790505b50905060005b838110156125cd576001600160a01b03861660009081526009602052604081209086868481811061246857612468614e68565b9050602002013581526020019081526020016000206040518060c0016040529081600082018054806020026020016040519081016040528092919081815260200182805480156124d757602002820191906000526020600020905b8154815260200190600101908083116124c3575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561252f57602002820191906000526020600020905b81548152602001906001019080831161251b575b505050918352505060028201546020820152600382015460409091019060ff1660018111156125605761256061489f565b60018111156125715761257161489f565b815260039190910154610100810460ff1660208301526201000090046001600160f01b031660409091015282518390839081106125b0576125b0614e68565b60209081029190910101526125c6600182614ecb565b9050612435565b5090505b9392505050565b6125e26000612c39565b8281146125ee57600080fd5b60005b83811015611bca5782828281811061260b5761260b614e68565b90506020020160208101906126209190614697565b6006600087878581811061263657612636614e68565b905060200201602081019061264b9190614b58565b60ff168152602081019190915260400160002080546001600160a01b0319166001600160a01b0392909216919091179055612687600182614ecb565b90506125f1565b336000818152600860209081526040808320858452825280832054848452600983528184208185529092528220549091036126dc576040516312d37ee560e31b815260040160405180910390fd5b6040805160018082528183019092524291600091906020808301908036833750506040805160018082528183019092529293506000929150602082015b6060815260200190600190039081612719579050509050838260008151811061274457612744614e68565b60200260200101818152505061275b85858561313b565b8160008151811061276e5761276e614e68565b60200260200101819052508060008151811061278c5761278c614e68565b6020026020010151516000036127b5576040516312d37ee560e31b815260040160405180910390fd5b846001600160a01b03167f1d44720a44d651b98b0f48bfb30a5b447d48630f33ed9b7cd3b15aaaf997f0ad8385846040516127f2939291906151cb565b60405180910390a2505050505050565b60006001600160e01b03198216630271189760e51b14806106da57506106da8261356a565b6002600154036128795760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610972565b6002600155565b60008061288c83611e13565b9050600086602001358686848a600001356040516020016128b1959493929190615222565b6040516020818303038152906040528051906020012090506128e2818880604001906128dd9190615261565b61359f565b979650505050505050565b600083900361290f5760405163dfe3c46f60e01b815260040160405180910390fd5b60008260018111156129235761292361489f565b14612943578160405163e68c312160e01b81526004016109729190615046565b806001600160f01b031660011461296d57604051633c0a99e160e11b815260040160405180910390fd5b50505050565b600060058161298860a0860160808701614b58565b60ff1681526020810191909152604001600020546001600160a01b03169050806129c8576000604051638c44e19160e01b81526004016109729190615046565b60006129d48480614fa1565b905090506000816001600160401b038111156129f2576129f2614748565b604051908082528060200260200182016040528015612a1b578160200160208202803683370190505b509050612a3487612a2f60c0880188614f58565b61360b565b8315612b035760005b82811015612afd576000612a518780614fa1565b83818110612a6157612a61614e68565b905060200201359050846001600160a01b03166342842e0e8a30846040518463ffffffff1660e01b8152600401612a9a939291906152a7565b600060405180830381600087803b158015612ab457600080fd5b505af1158015612ac8573d6000803e3d6000fd5b5050505080838381518110612adf57612adf614e68565b602090810291909101015250612af6600182614ecb565b9050612a3d565b50612bd0565b60005b82811015612bce576000612b3a85612b1e8980614fa1565b85818110612b2e57612b2e614e68565b90506020020135613889565b6040516340c10f1960e01b8152306004820152602481018290529091506001600160a01b038616906340c10f1990604401600060405180830381600087803b158015612b8557600080fd5b505af1158015612b99573d6000803e3d6000fd5b5050505080838381518110612bb057612bb0614e68565b602090810291909101015250612bc7600182614ecb565b9050612b06565b505b6000612be088888460008a613945565b905060408601357f343784962246d9d0fa91219d73896a10051a7deec83e4010eac88bdfd9527d5b83612c1660c08a018a614f58565b85604051612c279493929190615310565b60405180910390a25050505050505050565b610dd68133613c33565b600080612c4f83611e13565b9050600086602001358287878a600001356040516020016128b195949392919061534a565b612c7e8282611ecd565b6110df576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055612cb43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612d028282611ecd565b156110df576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000808560200135848460000135856020016020810190612d7e9190614b58565b604080516020810195909552840192909252606083015260ff1660808201526001600160a01b03861660a0820152863560c082015260e0015b604051602081830303815290604052805190602001209050612de3818780604001906128dd9190615261565b9695505050505050565b60ff81166000908152600460205260409020546001600160a01b0316610dd65760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e743a496e76616c69642063757272656e637920747970650000006044820152606401610972565b600080612e628486614e55565b90506000612e71603c8361539f565b600003612e8a57612e83603c836153b3565b9050612ea3565b612e95603c836153b3565b612ea0906001614ecb565b90505b60006128e285836153c7565b60ff81166000908152600460205260409020546001600160a01b0316612ed784308784613c8c565b611bca85858584613e3a565b6000600681612ef860a0850160808601614b58565b60ff1681526020810191909152604001600020546001600160a01b031603612f36576001604051638c44e19160e01b81526004016109729190615046565b612f4783612a2f60c0840184614f58565b6000612f538280614fa1565b9050905060005b81811015612fca57612fb8612f7560a0850160808601614b58565b612f7f8580614fa1565b84818110612f8f57612f8f614e68565b905060200201358560a0016020810190612fa9919061502b565b6001600160f01b031630613ea2565b612fc3600182614ecb565b9050612f5a565b5060006130188585612fdc8680614fa1565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250600192508991506139459050565b905060408301357f343784962246d9d0fa91219d73896a10051a7deec83e4010eac88bdfd9527d5b61304a8580614fa1565b61305760c0880188614f58565b866040516123cb9594939291906153de565b60008085602001358585856000013586602001602081019061308b9190614b58565b6040805160208101969096526001600160a01b03909416938501939093526060840191909152608083015260ff1660a0820152863560c082015260e001612db7565b6001600160a01b038116600090815260076020526040812054816103e95b828111611038576001600160a01b03851660009081526009602090815260408083208484529091529020541561312957613126600183614ecb565b91505b613134600182614ecb565b90506130eb565b6001600160a01b038316600090815260096020908152604080832085845282528083208151815460e09481028201850190935260c0810183815260609594919384928491908401828280156131af57602002820191906000526020600020905b81548152602001906001019080831161319b575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561320757602002820191906000526020600020905b8154815260200190600101908083116131f3575b505050918352505060028201546020820152600382015460409091019060ff1660018111156132385761323861489f565b60018111156132495761324961489f565b815260039190910154610100810460ff16602080840191909152620100009091046001600160f01b03166040909201919091528101518051919250906000805b828110156132fb578381815181106132a3576132a3614e68565b60200260200101516000146132e957868482815181106132c5576132c5614e68565b6020026020010151116132e4576132dd600183614ecb565b91506132e9565b6132fb565b6132f4600182614ecb565b9050613289565b508060000361331f57505060408051600081526020810190915292506125d1915050565b6000816001600160401b0381111561333957613339614748565b604051908082528060200260200182016040528015613362578160200160208202803683370190505b5090506000805b848110156134ba5785818151811061338357613383614e68565b60200260200101516000146134a857888682815181106133a5576133a5614e68565b6020026020010151116134a357808383815181106133c5576133c5614e68565b60209081029190910101526133db600183614ecb565b915061341c8b886080015189606001518a60a001516001600160f01b03168b60000151868151811061340f5761340f614e68565b6020026020010151613fab565b6001600160a01b038b1660009081526009602090815260408083208d8452909152902060010180548290811061345457613454614e68565b600091825260208083209091018290556001600160a01b038d1682526009815260408083208d8452909152902080548290811061349357613493614e68565b60009182526020822001556134a8565b6134ba565b6134b3600182614ecb565b9050613369565b506001600160a01b038a1660009081526009602090815260408083208c845290915290206001908101906134ee9086614e55565b815481106134fe576134fe614e68565b906000526020600020015460000361355d576001600160a01b038a1660009081526009602090815260408083208c845290915281209061353e82826145d3565b61354c6001830160006145d3565b506000600282018190556003909101555b5098975050505050505050565b60006001600160e01b03198216637965db0b60e01b14806106da57506301ffc9a760e01b6001600160e01b03198316146106da565b600254604080516020601f85018190048102820181019092528381526000926001600160a01b0316916135f9919086908690819084018382808284376000920191909152506135f392508991506141029050565b90614135565b6001600160a01b031614949350505050565b8060005b81811015611bca57600084848381811061362b5761362b614e68565b9050608002018036038101906136419190615425565b905060008160200151600181111561365b5761365b61489f565b036136e35760408082015160ff166000908152600560205281902054600d5483519251632142170760e11b81526001600160a01b03928316936342842e0e936136ac938c93911691906004016152a7565b600060405180830381600087803b1580156136c657600080fd5b505af11580156136da573d6000803e3d6000fd5b50505050613876565b600081606001516001600160f01b03161161374a5760405162461bcd60e51b815260206004820152602160248201527f4572633131353520656c656d656e743a20496e76616c6964207175616e7469746044820152607960f81b6064820152608401610972565b6040808201805160ff908116600090815260066020529283205491516001600160a01b0390921692911690036137f957600d5482516060840151604051637921219560e11b81526001600160a01b038581169463f242432a946137c2948e94939092169290916001600160f01b03169060040161549a565b600060405180830381600087803b1580156137dc57600080fd5b505af11580156137f0573d6000803e3d6000fd5b50505050613874565b600d5482516060840151604051637921219560e11b81526001600160a01b038581169463f242432a94613841948e94939092169290916001600160f01b03169060040161549a565b600060405180830381600087803b15801561385b57600080fd5b505af115801561386f573d6000803e3d6000fd5b505050505b505b50613882600182614ecb565b905061360f565b600b5460405163670dd5ad60e11b81526001600160a01b0384811660048301526024820184905260016044830152600092839291169063ce1bab5a906064016020604051808303816000875af11580156138e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390b91906154dd565b6001600160801b03169050600061392182614151565b905060008261393183600a6155ea565b61393b90876153c7565b612de39190614ecb565b6139806040518060a0016040528060008152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b6001600160a01b03861660009081526007602052604081205490036139c1576001600160a01b03861660009081526007602052604090206103e990556139f0565b6001600160a01b03861660009081526007602052604081208054600192906139ea908490614ecb565b90915550505b6001600160a01b0386166000908152600760209081526040822054865190924292860135916001600160401b03811115613a2c57613a2c614748565b604051908082528060200260200182016040528015613a55578160200160208202803683370190505b50905060005b8851811015613ab257613a6f816001614ecb565b613a7990846153c7565b613a839085614ecb565b828281518110613a9557613a95614e68565b6020908102919091010152613aab600182614ecb565b9050613a5b565b506040518060c001604052808981526020018281526020018a8152602001886001811115613ae257613ae261489f565b8152602001613af760a0890160808a01614b58565b60ff168152602001613b0f60c0890160a08a0161502b565b6001600160f01b031690526001600160a01b038b1660009081526009602090815260408083208884528252909120825180519192613b52928492909101906145f1565b506020828101518051613b6b92600185019201906145f1565b5060408201516002820155606082015160038201805460ff191660018381811115613b9857613b9861489f565b02179055506080828101516003909201805460a0948501516001600160f01b0316620100000261ffff60ff95861661010002169490911693909317929092179091556001600160a01b038c1660008181526008602090815260408083208f845282529182902089905581519485018252978452968301959095529481018a905260608101939093529282019290925291505095945050505050565b613c3d8282611ecd565b6110df57613c4a8161418c565b613c5583602061419e565b604051602001613c669291906155f6565b60408051601f198184030181529082905262461bcd60e51b825261097291600401614bff565b6040516370a0823160e01b81526001600160a01b0385811660048301528391908316906370a08231906024016020604051808303816000875af1158015613cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfb9190614e26565b1015613d5e5760405162461bcd60e51b815260206004820152602c60248201527f45786368616e67652063757272656e63792062616c616e6365206f662075736560448201526b7220697320746f6f206c6f7760a01b6064820152608401610972565b604051636eb1769f60e11b81526001600160a01b038581166004830152848116602483015283919083169063dd62ed3e906044016020604051808303816000875af1158015613db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd59190614e26565b101561296d5760405162461bcd60e51b815260206004820152602e60248201527f45786368616e67652063757272656e637920616c6c6f77616e6365206f66207560448201526d73657220697320746f6f206c6f7760901b6064820152608401610972565b6040516323b872dd60e01b81526001600160a01b038216906323b872dd90613e6a908690869089906004016152a7565b600060405180830381600087803b158015613e8457600080fd5b505af1158015613e98573d6000803e3d6000fd5b5050505050505050565b60ff84166000818152600660205260408120546001600160a01b0316919003613f3b5760405163b8b31cc360e01b815260048101859052602481018490526001600160a01b0383811660448301526000606483015282169063b8b31cc3906084015b600060405180830381600087803b158015613f1e57600080fd5b505af1158015613f32573d6000803e3d6000fd5b50505050611bca565b604051631a5a942d60e21b81526001600160a01b038381166004830152602482018690526044820185905282169063696a50b490606401600060405180830381600087803b158015613f8c57600080fd5b505af1158015613fa0573d6000803e3d6000fd5b505050505050505050565b6000836001811115613fbf57613fbf61489f565b036140095760ff841660009081526005602052604090819020549051632142170760e11b81526001600160a01b03909116906342842e0e90613f04903090899086906004016152a7565b60ff84166000818152600660205260408120546001600160a01b031691900361409557604051637921219560e11b81526001600160a01b0382169063f242432a9061405e9030908a908790899060040161549a565b600060405180830381600087803b15801561407857600080fd5b505af115801561408c573d6000803e3d6000fd5b505050506140fa565b604051637921219560e11b81526001600160a01b0382169063f242432a906140c79030908a908790899060040161549a565b600060405180830381600087803b1580156140e157600080fd5b505af11580156140f5573d6000803e3d6000fd5b505050505b505050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b60008060006141448585614339565b915091506110388161437e565b60008160000361416357506001919050565b8160005b81156125d157614178600182614ecb565b9050614185600a836153b3565b9150614167565b60606106da6001600160a01b03831660145b606060006141ad8360026153c7565b6141b8906002614ecb565b6001600160401b038111156141cf576141cf614748565b6040519080825280601f01601f1916602001820160405280156141f9576020820181803683370190505b509050600360fc1b8160008151811061421457614214614e68565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061424357614243614e68565b60200101906001600160f81b031916908160001a90535060006142678460026153c7565b614272906001614ecb565b90505b60018111156142ea576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106142a6576142a6614e68565b1a60f81b8282815181106142bc576142bc614e68565b60200101906001600160f81b031916908160001a90535060049490941c936142e38161566b565b9050614275565b5083156125d15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610972565b600080825160410361436f5760208301516040840151606085015160001a614363878285856144c8565b94509450505050614377565b506000905060025b9250929050565b60008160048111156143925761439261489f565b0361439a5750565b60018160048111156143ae576143ae61489f565b036143fb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610972565b600281600481111561440f5761440f61489f565b0361445c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610972565b60038160048111156144705761447061489f565b03610dd65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610972565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156144ff5750600090506003614583565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614553573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661457c57600060019250925050614583565b9150600090505b94509492505050565b6040518060c00160405280606081526020016060815260200160008152602001600060018111156145bf576145bf61489f565b815260006020820181905260409091015290565b5080546000825590600052602060002090810190610dd6919061463c565b82805482825590600052602060002090810192821561462c579160200282015b8281111561462c578251825591602001919060010190614611565b5061463892915061463c565b5090565b5b80821115614638576000815560010161463d565b60006020828403121561466357600080fd5b81356001600160e01b0319811681146125d157600080fd5b80356001600160a01b038116811461469257600080fd5b919050565b6000602082840312156146a957600080fd5b6125d18261467b565b600060e082840312156146c457600080fd5b50919050565b6000606082840312156146c457600080fd5b6000806000606084860312156146f157600080fd5b8335925060208401356001600160401b038082111561470f57600080fd5b61471b878388016146b2565b9350604086013591508082111561473157600080fd5b5061473e868287016146ca565b9150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561478657614786614748565b604052919050565b600082601f83011261479f57600080fd5b81356001600160401b038111156147b8576147b8614748565b6147cb601f8201601f191660200161475e565b8181528460208386010111156147e057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561481357600080fd5b61481c8561467b565b935061482a6020860161467b565b92506040850135915060608501356001600160401b0381111561484c57600080fd5b6148588782880161478e565b91505092959194509250565b600081518084526020808501945080840160005b8381101561489457815187529582019590820190600101614878565b509495945050505050565b634e487b7160e01b600052602160045260246000fd5b600281106148d357634e487b7160e01b600052602160045260246000fd5b9052565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561498c57603f19898403018552815160c0815181865261492482870182614864565b915050888201518582038a87015261493c8282614864565b9150508782015188860152606080830151614959828801826148b5565b505060808281015160ff169086015260a0918201516001600160f01b0316919094015293860193908601906001016148fe565b509098975050505050505050565b6000602082840312156149ac57600080fd5b5035919050565b600080604083850312156149c657600080fd5b823591506149d66020840161467b565b90509250929050565b600080600083850360808112156149f557600080fd5b843593506040601f1982011215614a0b57600080fd5b5060208401915060608401356001600160401b03811115614a2b57600080fd5b61473e868287016146ca565b60008083601f840112614a4957600080fd5b5081356001600160401b03811115614a6057600080fd5b6020830191508360208260051b850101111561437757600080fd5b60008060008060408587031215614a9157600080fd5b84356001600160401b0380821115614aa857600080fd5b614ab488838901614a37565b90965094506020870135915080821115614acd57600080fd5b50614ada87828801614a37565b95989497509550505050565b60008060408385031215614af957600080fd5b614b028361467b565b946020939093013593505050565b84815260808101614b2460208301866148b5565b60ff9390931660408201526001600160f01b039190911660609091015292915050565b803560ff8116811461469257600080fd5b600060208284031215614b6a57600080fd5b6125d182614b47565b600060208284031215614b8557600080fd5b81356001600160401b03811115614b9b57600080fd5b614ba7848285016146b2565b949350505050565b60005b83811015614bca578181015183820152602001614bb2565b50506000910152565b60008151808452614beb816020860160208601614baf565b601f01601f19169290920160200192915050565b6020815260006125d16020830184614bd3565b600082601f830112614c2357600080fd5b813560206001600160401b03821115614c3e57614c3e614748565b8160051b614c4d82820161475e565b9283528481018201928281019087851115614c6757600080fd5b83870192505b848310156128e257823582529183019190830190614c6d565b600080600080600060a08688031215614c9e57600080fd5b614ca78661467b565b9450614cb56020870161467b565b935060408601356001600160401b0380821115614cd157600080fd5b614cdd89838a01614c12565b94506060880135915080821115614cf357600080fd5b614cff89838a01614c12565b93506080880135915080821115614d1557600080fd5b50614d228882890161478e565b9150509295509295909350565b60008060208385031215614d4257600080fd5b82356001600160401b03811115614d5857600080fd5b614d6485828601614a37565b90969095509350505050565b600080600060408486031215614d8557600080fd5b614d8e8461467b565b925060208401356001600160401b03811115614da957600080fd5b614db586828701614a37565b9497909650939450505050565b600080600080600060a08688031215614dda57600080fd5b614de38661467b565b9450614df16020870161467b565b9350604086013592506060860135915060808601356001600160401b03811115614e1a57600080fd5b614d228882890161478e565b600060208284031215614e3857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156106da576106da614e3f565b634e487b7160e01b600052603260045260246000fd5b6020808252602d908201527f5369676e617475726556657269666965723a496e76616c696420636f6e74726160408201526c31ba1034b232b73a34b334b2b960991b606082015260800190565b808201808211156106da576106da614e3f565b6020808252602f908201527f5369676e617475726556657269666965723a5369676e6174757265206861732060408201526e185b1c9958591e48195e1c1a5c9959608a1b606082015260800190565b602080825260119082015270496e76616c6964207369676e617475726560781b604082015260600190565b6000808335601e19843603018112614f6f57600080fd5b8301803591506001600160401b03821115614f8957600080fd5b6020019150600781901b360382131561437757600080fd5b6000808335601e19843603018112614fb857600080fd5b8301803591506001600160401b03821115614fd257600080fd5b6020019150600581901b360382131561437757600080fd5b80356002811061469257600080fd5b60006020828403121561500b57600080fd5b6125d182614fea565b80356001600160f01b038116811461469257600080fd5b60006020828403121561503d57600080fd5b6125d182615014565b602081016106da82846148b5565b8183526000602080850194508260005b85811015614894578135875261507b838301614fea565b615087848901826148b5565b50604060ff615097828501614b47565b169088015260606001600160f01b036150b1848301615014565b16908801526080968701969190910190600101615064565b602081526000614ba7602083018486615054565b81835260006001600160fb1b038311156150f657600080fd5b8260051b80836020870137939093016020019392505050565b60e08152600061512360e083018a8c6150dd565b88602084015260ff8816604084015261513f60608401886148b5565b608083018690526001600160f01b03851660a084015282810360c08401526151678185614bd3565b9b9a5050505050505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156151be5782840389526151ac848351614864565b98850198935090840190600101615194565b5091979650505050505050565b6060815260006151de6060830186614864565b8460208401528281036040840152612de38185615176565b60608152600061520a6060830186886150dd565b84602084015282810360408401526128e28185615176565b85815260018060a01b038516602082015283604082015260a06060820152600061524f60a0830185614bd3565b90508260808301529695505050505050565b6000808335601e1984360301811261527857600080fd5b8301803591506001600160401b0382111561529257600080fd5b60200191503681900382131561437757600080fd5b6001600160a01b039384168152919092166020820152604081019190915260600190565b80518252602081015160208301526040810151604083015260018060a01b0360608201511660608301526000608082015160a06080850152614ba760a0850182614864565b6060815260006153236060830187614864565b8281036020840152615336818688615054565b905082810360408401526128e281856152cb565b85815260a06020820152600061536360a0830187614bd3565b6001600160a01b0395909516604083015250606081019290925260809091015292915050565b634e487b7160e01b600052601260045260246000fd5b6000826153ae576153ae615389565b500690565b6000826153c2576153c2615389565b500490565b80820281158282048414176106da576106da614e3f565b6060815260006153f26060830187896150dd565b8281036020840152615405818688615054565b9050828103604084015261541981856152cb565b98975050505050505050565b60006080828403121561543757600080fd5b604051608081018181106001600160401b038211171561545957615459614748565b6040528235815261546c60208401614fea565b602082015261547d60408401614b47565b604082015261548e60608401615014565b60608201529392505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260029082015261060f60f31b60c082015260e00190565b6000602082840312156154ef57600080fd5b81516001600160801b03811681146125d157600080fd5b600181815b8085111561554157816000190482111561552757615527614e3f565b8085161561553457918102915b93841c939080029061550b565b509250929050565b600082615558575060016106da565b81615565575060006106da565b816001811461557b5760028114615585576155a1565b60019150506106da565b60ff84111561559657615596614e3f565b50506001821b6106da565b5060208310610133831016604e8410600b84101617156155c4575081810a6106da565b6155ce8383615506565b80600019048211156155e2576155e2614e3f565b029392505050565b60006125d18383615549565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161562e816017850160208801614baf565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161565f816028840160208801614baf565b01602801949350505050565b60008161567a5761567a614e3f565b50600019019056fea2646970667358221220af07ce1a5b85a2a0d8bfdb052f66df026e9bde3ec43e98adb3b3b9c874374de964736f6c63430008110033000000000000000000000000263a9c0eb5d3f9b6c08b9c7e9e149c6b8ec60c2e000000000000000000000000f3b7a3ab5ae2fa59a303a81a0c03e07b90d93a050000000000000000000000002744ae359c4ebac49b6696becefdb39f738aaa3e0000000000000000000000005b00f8c66a9128549771a03abcfe3fd124abffdc00000000000000000000000062d0e5e193854a4943dec1a48ffc3d6744ab5f54000000000000000000000000000000000000000000000000000000000000012c