0 txs
1 call
constructor
constructor()
functions
canvasHeight
viewfunction canvasHeight() view returns (uint16)
canvasWidth
viewfunction canvasWidth() view returns (uint16)
compositesPerChunk
viewfunction compositesPerChunk() view returns (uint256)
compositesPointers
viewfunction compositesPointers(uint256) view returns (address)
getComposite
viewfunction getComposite(uint256 compositeIndex) view returns (uint256[])
getCompositesCount
viewfunction getCompositesCount() view returns (uint256)
isRevealed
viewfunction isRevealed() view returns (bool)
isSealed
viewfunction isSealed() view returns (bool)
layerNames
viewfunction layerNames(uint256) view returns (string)
mintbayGenerativeContract
viewfunction mintbayGenerativeContract() view returns (address)
numberOfLayers
viewfunction numberOfLayers() view returns (uint256)
owner
viewfunction owner() view returns (address)
palettePointer
viewfunction palettePointer() view returns (address)
revealSeed
viewfunction revealSeed() view returns (uint256)
tokenAttributes
viewfunction tokenAttributes(uint256 compositeIndex) view returns (bytes)
tokenImageSvg
viewfunction tokenImageSvg(uint256 compositeIndex) view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
traitNames
viewfunction traitNames(uint256, uint256) view returns (string)
traitPointers
viewfunction traitPointers(uint256, uint256) view returns (address)
traits
viewfunction traits(uint256, uint256) view returns (uint256 pointerIndex, uint256 offset, uint256 length)
addComposite
nonpayablefunction addComposite(uint256[] traitIndices)
addCompositesBatch
nonpayablefunction addCompositesBatch(uint256[][] traitIndicesArray)
addTrait
nonpayablefunction addTrait(uint256 layerId, uint256 traitId, bytes data, string name)
addTraitsBatch
nonpayablefunction addTraitsBatch(uint256 layerId, uint256[] traitIds, bytes[] datas, string[] names)
renounceOwnership
nonpayablefunction renounceOwnership()
sealContract
nonpayablefunction sealContract()
setCanvasSize
nonpayablefunction setCanvasSize(uint16 _width, uint16 _height)
setCompositesPerChunk
nonpayablefunction setCompositesPerChunk(uint256 _compositesPerChunk)
setLayer
nonpayablefunction setLayer(uint256 layerId, string name)
setLayersBatch
nonpayablefunction setLayersBatch(uint256[] layerIds, string[] names)
setMintbayGenerativeContract
nonpayablefunction setMintbayGenerativeContract(address _mintbayGenerativeContract)
setPalette
nonpayablefunction setPalette(bytes _palette)
setRevealSeed
nonpayablefunction setRevealSeed(uint256 _seed)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CanvasSizeSet
event CanvasSizeSet(uint16 width, uint16 height)
CompositeChunkAdded
event CompositeChunkAdded(uint256 chunkId, address pointer)
CompositesPerChunkSet
event CompositesPerChunkSet(uint256 compositesPerChunk)
ContractSealed
event ContractSealed()
LayerSet
event LayerSet(uint256 layerId, string name)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PaletteSet
event PaletteSet(address pointer)
RevealSeedSet
event RevealSeedSet(uint256 seed)
TraitAdded
event TraitAdded(uint256 layerId, uint256 traitId, string name, uint256 pointerIndex, uint256 offset)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040523480156200001157600080fd5b5033806200003957604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000448162000061565b50600a80546001600160a01b03191690556101f4600155620000b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61427880620000c16000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806393119e0a1161011a578063d56fd88f116100ad578063f253bef31161007c578063f253bef3146104ac578063f2824b53146104b5578063f2fde38b146104c8578063f69d3fad146104db578063f8d4be6d146104ee57600080fd5b8063d56fd88f1461046b578063de9aa5941461047e578063efca8f0814610491578063f132914b146104a457600080fd5b8063aff31edc116100e9578063aff31edc14610417578063bf2d7b321461042a578063c06bb2051461044a578063c87b56dd1461045857600080fd5b806393119e0a146103b757806399b0eb62146103ca5780639c71a380146103dd578063a318a3261461040457600080fd5b8063631f98521161019d57806379d3cd001161016c57806379d3cd0014610318578063844e2cd51461036d578063865dfcd9146103805780638da5cb5b146103935780638f659487146103a457600080fd5b8063631f9852146102e157806368bd580e146102f55780636b3fc695146102fd578063715018a61461031057600080fd5b806340ce89c2116101d957806340ce89c21461025857806354214f691461028a578063561d6225146102ae57806362415a19146102c157600080fd5b8063094441d11461020b57806328c855d4146102205780632fa2acf81461023357806332c2f7f81461024f575b600080fd5b61021e6102193660046133bb565b610501565b005b61021e61022e3660046133fc565b610811565b61023c60015481565b6040519081526020015b60405180910390f35b61023c60095481565b60025461027290600160301b90046001600160a01b031681565b6040516001600160a01b039091168152602001610246565b60025461029e90600160281b900460ff1681565b6040519015158152602001610246565b61021e6102bc366004613425565b6108ad565b6102d46102cf366004613490565b610a62565b60405161024691906134f9565b60025461029e90600160201b900460ff1681565b61021e610afc565b61021e61030b36600461354d565b610b43565b61021e610ccd565b6103526103263660046135cf565b600760209081526000928352604080842090915290825290208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610246565b61021e61037b3660046135f1565b610ce1565b6102d461038e3660046135cf565b610eb0565b6000546001600160a01b0316610272565b61021e6103b2366004613490565b610ed4565b600a54610272906001600160a01b031681565b61021e6103d8366004613490565b61103c565b6002546103f19062010000900461ffff1681565b60405161ffff9091168152602001610246565b61021e6104123660046133bb565b6111c8565b610272610425366004613490565b61143e565b61043d610438366004613490565b611468565b6040516102469190613626565b6002546103f19061ffff1681565b6102d4610466366004613490565b611577565b6102d4610479366004613490565b611635565b61021e61048c366004613675565b61167e565b61021e61049f3660046136a8565b611788565b61023c611afc565b61023c60065481565b6102d46104c3366004613490565b611b82565b61021e6104d63660046133fc565b611bc4565b61021e6104e936600461374b565b611c02565b6102726104fc3660046135cf565b611c99565b610509611cd1565b600254600160201b900460ff161561053c5760405162461bcd60e51b815260040161053390613796565b60405180910390fd5b80806105785760405162461bcd60e51b815260206004820152600b60248201526a08adae0e8f240c4c2e8c6d60ab1b6044820152606401610533565b600654600061058782846137d8565b6001600160401b0381111561059e5761059e6137ef565b6040519080825280601f01601f1916602001820160405280156105c8576020820181803683370190505b5090506000805b84811015610771573660008888848181106105ec576105ec613805565b90506020028101906105fe919061381b565b909250905085811461064d5760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610533565b60005b8681101561076357600083838381811061066c5761066c613805565b90506020020135905060ff80168111156106c05760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610533565b6000828152600760209081526040808320848452825280832054858452600390925290912054116107295760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610533565b8060f81b87878151811061073f5761073f613805565b60200101906001600160f81b031916908160001a9053505060019485019401610650565b5082600101925050506105cf565b5061077b82611cfe565b6004547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a9906107ac90600190613864565b600480546107bc90600190613864565b815481106107cc576107cc613805565b60009182526020909120015460405161080192916001600160a01b0316909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b610819611cd1565b600254600160201b900460ff16156108435760405162461bcd60e51b815260040161053390613796565b6001600160a01b03811661088b5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610533565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6108b5611cd1565b600254600160201b900460ff16156108df5760405162461bcd60e51b815260040161053390613796565b8281146109225760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610533565b60005b83811015610a5b5782828281811061093f5761093f613805565b90506020028101906109519190613877565b6005600088888681811061096757610967613805565b9050602002013581526020019081526020016000209182610989929190613946565b5060065485858381811061099f5761099f613805565b90506020020135106109d4578484828181106109bd576109bd613805565b9050602002013560016109d09190613a05565b6006555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa11858583818110610a0757610a07613805565b90506020020135848484818110610a2057610a20613805565b9050602002810190610a329190613877565b604051610a4193929190613a18565b60405180910390a180610a5381613a4e565b915050610925565b5050505050565b60056020526000908152604090208054610a7b906138bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa7906138bd565b8015610af45780601f10610ac957610100808354040283529160200191610af4565b820191906000526020600020905b815481529060010190602001808311610ad757829003601f168201915b505050505081565b610b04611cd1565b6002805464ff000000001916600160201b1790556040517fa0058887862c892ade184993a48c672897bca2e36ebf7fa2b4703d4805fc3a0190600090a1565b610b4b611cd1565b600254600160201b900460ff1615610b755760405162461bcd60e51b815260040161053390613796565b6006548610610bb65760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610533565b60ff851115610bfc5760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610533565b610c3b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3e92505050565b600080610c6e88878790508888604051602001610c5a93929190613a67565b60405160208183030381529060405261203b565b9250925050610cc3888886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250610cbd91508790506020613a05565b8a6120f4565b5050505050505050565b610cd5611cd1565b610cdf600061218a565b565b610ce9611cd1565b600254600160201b900460ff1615610d135760405162461bcd60e51b815260040161053390613796565b610d1e600482613a97565b15610d625760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c657474652073697a6560601b6044820152606401610533565b60ff610d6f600483613aab565b1115610dbd5760405162461bcd60e51b815260206004820152601a60248201527f546f6f206d616e7920636f6c6f727320696e2070616c657474650000000000006044820152606401610533565b616000610dcb826020613a05565b1115610e195760405162461bcd60e51b815260206004820152601d60248201527f50616c6574746520746f6f206c6172676520666f72205353544f5245320000006044820152606401610533565b604051610e4690610e3290839085908290602001613a67565b6040516020818303038152906040526121da565b600280546601000000000000600160d01b031916600160301b6001600160a01b0393841681029190911791829055604051910490911681527f12dd88e6366a1b048d43c30e6cc0d851079c669a59cb0b42bcda1a3770d2024c906020015b60405180910390a15050565b600860209081526000928352604080842090915290825290208054610a7b906138bd565b610edc611cd1565b600254600160201b900460ff1615610f065760405162461bcd60e51b815260040161053390613796565b60008111610f4b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b6044820152606401610533565b60045415610fab5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206368616e676520616674657220636f6d706f736974657320756044820152661c1b1bd859195960ca1b6064820152608401610533565b61600060065482610fbc91906137d8565b11156110015760405162461bcd60e51b81526020600482015260146024820152734368756e6b2073697a6520746f6f206c6172676560601b6044820152606401610533565b60018190556040518181527f7d8bdfacda5f291d00f98aeade4529328fb3a620c7a4326be7e1109b38278ccc9060200160405180910390a150565b600a546001600160a01b031633148061105f57506000546001600160a01b031633145b61109c5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610533565b600254600160281b900460ff16156110e95760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481c995d99585b195960821b6044820152606401610533565b60006110f3611afc565b9050600081116111355760405162461bcd60e51b815260206004820152600d60248201526c4e6f20636f6d706f736974657360981b6044820152606401610533565b6009829055600182175b611149818361221e565b6001146111625761115b600282613a05565b905061113f565b600b8190556111718284613a97565b600c556002805465ff00000000001916600160281b1790556040517f7d3263796ba5596ebeb4fac93bd3558059760d9281ecf726005ee5751b9e406e906111bb9085815260200190565b60405180910390a1505050565b6111d0611cd1565b600254600160201b900460ff16156111fa5760405162461bcd60e51b815260040161053390613796565b60065481146112465760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610533565b60005b818110156113515760ff83838381811061126557611265613805565b9050602002013511156112b25760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610533565b6000818152600760205260408120908484848181106112d3576112d3613805565b60209081029290920135835250818101929092526040908101600090812054848252600390935220541161133f5760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610533565b8061134981613a4e565b915050611249565b50606060005b828110156113ae578184848381811061137257611372613805565b9050602002013560405160200161138a929190613abf565b604051602081830303815290604052915080806113a690613a4e565b915050611357565b506113b881611cfe565b6004547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a9906113e990600190613864565b600480546113f990600190613864565b8154811061140957611409613805565b6000918252602090912001546040516111bb92916001600160a01b0316909182526001600160a01b0316602082015260400190565b6004818154811061144e57600080fd5b6000918252602090912001546001600160a01b0316905081565b6060611472611afc565b82106114ba5760405162461bcd60e51b8152602060048201526017602482015276092dcecc2d8d2c840c6dedae0dee6d2e8ca40d2dcc8caf604b1b6044820152606401610533565b60006114c583612245565b50905060006006546001600160401b038111156114e4576114e46137ef565b60405190808252806020026020018201604052801561150d578160200160208202803683370190505b50905060005b60065481101561156f5782818151811061152f5761152f613805565b602001015160f81c60f81b60f81c60ff1682828151811061155257611552613805565b60209081029190910101528061156781613a4e565b915050611513565b509392505050565b600254606090600160281b900460ff166115a35760405162461bcd60e51b815260040161053390613af1565b60006115ae83612333565b905060006115bb82612385565b905060006115c8836125ac565b905060006115d586612757565b6115de846127e9565b836040516020016115f193929190613b17565b604051602081830303815290604052905061160b816127e9565b60405160200161161b9190613c0f565b604051602081830303815290604052945050505050919050565b600254606090600160281b900460ff166116615760405162461bcd60e51b815260040161053390613af1565b600061166c83612333565b905061167781612385565b9392505050565b611686611cd1565b600254600160201b900460ff16156116b05760405162461bcd60e51b815260040161053390613796565b60008261ffff161180156116c8575060008161ffff16115b80156116da57506101008261ffff1611155b80156116ec57506101008161ffff1611155b61172e5760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642063616e7661732073697a6560681b6044820152606401610533565b6002805461ffff84811663ffffffff19909216821762010000918516918202179092556040805191825260208201929092527f56f34234c034b58bdceb65c0489ea232c011d4eae18d1bed77492846d9754fb29101610ea4565b611790611cd1565b600254600160201b900460ff16156117ba5760405162461bcd60e51b815260040161053390613796565b60065487106117fb5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610533565b848314801561180957508281145b6118495760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610533565b60005b858110156119255760ff87878381811061186857611868613805565b9050602002013511156118b25760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610533565b6119138585838181106118c7576118c7613805565b90506020028101906118d99190613877565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d3e92505050565b8061191d81613a4e565b91505061184c565b50606060005b868110156119cc57600086868381811061194757611947613805565b90506020028101906119599190613877565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082516040519394506119a7938793509091508490602001613c54565b60405160208183030381529060405292505080806119c490613a4e565b91505061192b565b506000806119da8a8461203b565b925092505060008160206119ee9190613a05565b905060005b89811015611aee57611aa08c8c8c84818110611a1157611a11613805565b90506020020135898985818110611a2a57611a2a613805565b9050602002810190611a3c9190613877565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508891508f90508e88818110611a8757611a87613805565b9050602002810190611a999190613877565b90506120f4565b888882818110611ab257611ab2613805565b9050602002810190611ac49190613877565b611ad091506020613a05565b611ada9083613a05565b915080611ae681613a4e565b9150506119f3565b505050505050505050505050565b60065460009081908190611b119060016137d8565b905060005b600454811015611b7a5781611b5160048381548110611b3757611b37613805565b6000918252602090912001546001600160a01b031661280f565b51611b5c9190613aab565b611b669084613a05565b925080611b7281613a4e565b915050611b16565b509092915050565b600254606090600160281b900460ff16611bae5760405162461bcd60e51b815260040161053390613af1565b6000611bb983612333565b9050611677816125ac565b611bcc611cd1565b6001600160a01b038116611bf657604051631e4fbdf760e01b815260006004820152602401610533565b611bff8161218a565b50565b611c0a611cd1565b600254600160201b900460ff1615611c345760405162461bcd60e51b815260040161053390613796565b6000838152600560205260409020611c4d828483613946565b506006548310611c6657611c62836001613a05565b6006555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa118383836040516111bb93929190613a18565b60036020528160005260406000208181548110611cb557600080fd5b6000918252602090912001546001600160a01b03169150829050565b6000546001600160a01b03163314610cdf5760405163118cdaa760e01b8152336004820152602401610533565b6004611d09826121da565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905550565b8051600003611d4a5750565b600254600090611d6990600160301b90046001600160a01b031661280f565b90506020815111611db35760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c65747465206461746160601b6044820152606401610533565b6000611dbe82613c8b565b8351909150611dcf90600590613a97565b15611e1c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642072656374616e676c652064617461206c656e6774680000006044820152606401610533565b60005b8351811015612035576000848281518110611e3c57611e3c613805565b016020015160f81c9050600085611e54846001613a05565b81518110611e6457611e64613805565b016020015160f81c9050600086611e7c856002613a05565b81518110611e8c57611e8c613805565b016020015160f81c9050600087611ea4866003613a05565b81518110611eb457611eb4613805565b016020015160f81c9050600088611ecc876004613a05565b81518110611edc57611edc613805565b016020015160025460f89190911c915061ffff16611f0060ff858116908816613caf565b61ffff1611158015611f31575060025462010000900461ffff16611f2a60ff848116908716613caf565b61ffff1611155b611f725760405162461bcd60e51b815260206004820152601260248201527152656374206f7574206f6620626f756e647360701b6044820152606401610533565b60008360ff16118015611f88575060008260ff16115b611fcb5760405162461bcd60e51b815260206004820152601460248201527316995c9bc81dda591d1a081bdc881a195a59da1d60621b6044820152606401610533565b611fd88160ff168861283d565b61201c5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e0c2d8cae8e8ca40d2dcc8caf605b1b6044820152606401610533565b505050505060058161202e9190613a05565b9050611e1f565b50505050565b6000806000616000845111156120935760405162461bcd60e51b815260206004820152601e60248201527f446174612065786365656473206d617820636f6e74726163742073697a6500006044820152606401610533565b60008581526003602052604090206120aa856121da565b81546001808201845560008481526020902090910180546001600160a01b0319166001600160a01b03841617905582549195506120e691613864565b925060009150509250925092565b60408051606081018252848152602080820185815282840185815260008b8152600784528581208b82528452858120945185559151600185015551600290930192909255888252600881528282208883529052206121528582613cd1565b507fa10f932fb8c5cf0cf9966c7b46115c687b5a1d40e1962a40c455fce134fd03de8686868686604051610801959493929190613d90565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081518060401b6bfe61000180600a3d393df3000161fffe8211840152600b8101601584016000f09150816122185763301164256000526004601cfd5b90915290565b60005b811561223c57816122328185613a97565b9093509150612221565b50815b92915050565b6060806000600654600161225991906137d8565b905060006001548561226b9190613aab565b90506000826001548761227e9190613a97565b61228891906137d8565b60045490915082106122cf5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a590818da1d5b9ac8125160821b6044820152606401610533565b61230a600483815481106122e5576122e5613805565b6000918252602090912001546001600160a01b0316826123058682613a05565b6128b5565b60025490955061232990600160301b90046001600160a01b031661280f565b9350505050915091565b600254600090600160281b900460ff1661234b575090565b6000612355611afc565b905080600003612366575090919050565b80600c5484600b5402018161237d5761237d613a81565b069392505050565b606061238f611afc565b82106123d75760405162461bcd60e51b8152602060048201526017602482015276092dcecc2d8d2c840c6dedae0dee6d2e8ca40d2dcc8caf604b1b6044820152606401610533565b60006040518060a00160405280607b8152602001614188607b91396002546124029061ffff16612757565b6002546124189062010000900461ffff16612757565b604051806060016040528060318152602001614157603191396040516020016124449493929190613dc3565b604051602081830303815290604052905060008061246185612245565b9150915060005b60065481101561258157600083828151811061248657612486613805565b01602090810151600084815260078352604080822060f89390931c80835292845280822081516060810183528154815260018201549581019590955260020154908401819052919350036124db57505061256f565b60008381526003602052604081208251815461252d929190811061250157612501613805565b600091825260209182902001549084015160408501516001600160a01b03909216916123059082613a05565b9050600061253b828761291e565b80519091501561256a578781604051602001612558929190613e2a565b60405160208183030381529060405297505b505050505b8061257981613a4e565b915050612468565b50826040516020016125939190613e59565b60408051601f1981840301815291905295945050505050565b60606125b6611afc565b82106125f75760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081d1bdad95b88125160821b6044820152606401610533565b600061260283612245565b506040805180820190915260018152605b60f81b60208201529091506000805b60065481101561272c57600084828151811061264057612640613805565b01602090810151600084815260088352604080822060f89390931c8083529290935291909120805491925090612675906138bd565b1590508061269d57506000828152600760209081526040808320848452909152902060020154155b156126a8575061271a565b82156126d157836040516020016126bf9190613e83565b60405160208183030381529060405293505b600082815260056020908152604080832060088352818420858552835292819020905161270393889390929101613f1b565b604051602081830303815290604052935060019250505b8061272481613a4e565b915050612622565b508160405160200161273e9190613f88565b6040516020818303038152906040529350505050919050565b6060600061276483612d32565b60010190506000816001600160401b03811115612783576127836137ef565b6040519080825280601f01601f1916602001820160405280156127ad576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846127b757509392505050565b606061223f82604051806060016040528060408152602001614203604091396001612e0a565b60405164ffffffffff600019833b0116602181016000601f8401853c80825260408201810160405250919050565b600061284a600483613a97565b156128905760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e0c2d8cae8e8ca40d8cadccee8d60531b6044820152606401610533565b600061289d600484613aab565b9050808410806128ad57508360ff145b949350505050565b60405161ffff82106128c75761ffff91505b818310838303026001810184601f8401873c8082015160ff16612901576001853b038060281c3d3d3e808403818511028203858211029150505b808252600081602084010152806040830101604052509392505050565b6060825160000361293e575060408051602081019091526000815261223f565b60208251116129865760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c65747465206461746160601b6044820152606401610533565b600061299183613c8b565b905061299e600482613a97565b156129e45760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e0c2d8cae8e8ca40d8cadccee8d60531b6044820152606401610533565b60006129f1600483613aab565b90506101008110612a445760405162461bcd60e51b815260206004820152601860248201527f546f6f206d616e792070616c6574746520696e646963657300000000000000006044820152606401610533565b6000612a51826001613a05565b6001600160401b03811115612a6857612a686137ef565b604051908082528060200260200182016040528015612a9b57816020015b6060815260200190600190039081612a865790505b50905060005b8651811015612c48576000878281518110612abe57612abe613805565b016020015160f81c9050600088612ad6846001613a05565b81518110612ae657612ae6613805565b016020015160f81c9050600089612afe856002613a05565b81518110612b0e57612b0e613805565b016020015160f81c905060008a612b26866003613a05565b81518110612b3657612b36613805565b016020015160f81c905060008b612b4e876004613a05565b81518110612b5e57612b5e613805565b016020015160f81c905060ff819003612b7b575050505050612c36565b6000612b898660ff16612757565b612b958660ff16612757565b612ba18660ff16612757565b612bad8660ff16612757565b604051602001612bc09493929190613fad565b6040516020818303038152906040529050878260ff1681518110612be657612be6613805565b602002602001015181604051602001612c00929190613e2a565b604051602081830303815290604052888360ff1681518110612c2457612c24613805565b60200260200101819052505050505050505b612c41600582613a05565b9050612aa1565b50606060005b83811015612d2757828181518110612c6857612c68613805565b60200260200101515160000315612d15576000612c868260046137d8565b90506000612c9382612f89565b90506000612cce8a612ca6856020613a05565b612cb1906003613a05565b81518110612cc157612cc1613805565b016020015160f81c6132ab565b9050848282888781518110612ce557612ce5613805565b6020026020010151604051602001612d00949392919061406a565b60405160208183030381529060405294505050505b80612d1f81613a4e565b915050612c4e565b509695505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612d715772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612d9d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612dbb57662386f26fc10000830492506010015b6305f5e1008310612dd3576305f5e100830492506008015b6127108310612de757612710830492506004015b60648310612df9576064830492506002015b600a831061223f5760010192915050565b60608351600003612e2a5750604080516020810190915260008152611677565b600082612e5b57600385516004612e4191906137d8565b612e4c906002613a05565b612e569190613aab565b612e80565b600385516002612e6b9190613a05565b612e759190613aab565b612e809060046137d8565b90506000816001600160401b03811115612e9c57612e9c6137ef565b6040519080825280601f01601f191660200182016040528015612ec6576020820181803683370190505b50905060018501602082018788518901602081018051600082525b82841015612f3c576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450612ee1565b905250508515612f7d57600388510660018114612f605760028114612f7357612f7b565b603d6001830353603d6002830353612f7b565b603d60018303535b505b50909695505050505050565b60606000612fab600260069054906101000a90046001600160a01b031661280f565b8051909150612fbb846003613a05565b106130015760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c185b195d1d19481bd9999cd95d60521b6044820152606401610533565b60008161300f856020613a05565b8151811061301f5761301f613805565b0160209081015160f81c9150600090839061303b908790613a05565b613046906001613a05565b8151811061305657613056613805565b0160209081015160f81c91506000908490613072908890613a05565b61307d906002613a05565b8151811061308d5761308d613805565b602001015160f81c60f81b60f81c90506040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048460ff16901c60ff16815181106130e1576130e1613805565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525084600f1660ff168151811061312c5761312c613805565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048560ff16901c60ff168151811061317b5761317b613805565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525085600f1660ff16815181106131c6576131c6613805565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048660ff16901c60ff168151811061321557613215613805565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525086600f1660ff168151811061326057613260613805565b016020908101516040516001600160f81b031997881692810192909252948616602182015292851660228401529084166023830152831660248201529116602582015260260161161b565b60608160ff1660ff036132d55750506040805180820190915260018152603160f81b602082015290565b8160ff166000036132fd5750506040805180820190915260018152600360fc1b602082015290565b600060ff61330f8482166103e86137d8565b6133199190613aab565b905061332e613329606483613aab565b612757565b613348600a61333e606485613a97565b6133299190613aab565b604051602001613359929190614116565b604051602081830303815290604052915050919050565b60008083601f84011261338257600080fd5b5081356001600160401b0381111561339957600080fd5b6020830191508360208260051b85010111156133b457600080fd5b9250929050565b600080602083850312156133ce57600080fd5b82356001600160401b038111156133e457600080fd5b6133f085828601613370565b90969095509350505050565b60006020828403121561340e57600080fd5b81356001600160a01b038116811461167757600080fd5b6000806000806040858703121561343b57600080fd5b84356001600160401b038082111561345257600080fd5b61345e88838901613370565b9096509450602087013591508082111561347757600080fd5b5061348487828801613370565b95989497509550505050565b6000602082840312156134a257600080fd5b5035919050565b60005b838110156134c45781810151838201526020016134ac565b50506000910152565b600081518084526134e58160208601602086016134a9565b601f01601f19169290920160200192915050565b60208152600061167760208301846134cd565b60008083601f84011261351e57600080fd5b5081356001600160401b0381111561353557600080fd5b6020830191508360208285010111156133b457600080fd5b6000806000806000806080878903121561356657600080fd5b863595506020870135945060408701356001600160401b038082111561358b57600080fd5b6135978a838b0161350c565b909650945060608901359150808211156135b057600080fd5b506135bd89828a0161350c565b979a9699509497509295939492505050565b600080604083850312156135e257600080fd5b50508035926020909101359150565b6000806020838503121561360457600080fd5b82356001600160401b0381111561361a57600080fd5b6133f08582860161350c565b6020808252825182820181905260009190848201906040850190845b81811015612f7d57835183529284019291840191600101613642565b803561ffff8116811461367057600080fd5b919050565b6000806040838503121561368857600080fd5b6136918361365e565b915061369f6020840161365e565b90509250929050565b60008060008060008060006080888a0312156136c357600080fd5b8735965060208801356001600160401b03808211156136e157600080fd5b6136ed8b838c01613370565b909850965060408a013591508082111561370657600080fd5b6137128b838c01613370565b909650945060608a013591508082111561372b57600080fd5b506137388a828b01613370565b989b979a50959850939692959293505050565b60008060006040848603121561376057600080fd5b8335925060208401356001600160401b0381111561377d57600080fd5b6137898682870161350c565b9497909650939450505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81cd9585b195960721b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761223f5761223f6137c2565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261383257600080fd5b8301803591506001600160401b0382111561384c57600080fd5b6020019150600581901b36038213156133b457600080fd5b8181038181111561223f5761223f6137c2565b6000808335601e1984360301811261388e57600080fd5b8301803591506001600160401b038211156138a857600080fd5b6020019150368190038213156133b457600080fd5b600181811c908216806138d157607f821691505b6020821081036138f157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561394157600081815260208120601f850160051c8101602086101561391e5750805b601f850160051c820191505b8181101561393d5782815560010161392a565b5050505b505050565b6001600160401b0383111561395d5761395d6137ef565b6139718361396b83546138bd565b836138f7565b6000601f8411600181146139a5576000851561398d5750838201355b600019600387901b1c1916600186901b178355610a5b565b600083815260209020601f19861690835b828110156139d657868501358255602094850194600190920191016139b6565b50868210156139f35760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8082018082111561223f5761223f6137c2565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060018201613a6057613a606137c2565b5060010190565b838152818360208301376000910160200190815292915050565b634e487b7160e01b600052601260045260246000fd5b600082613aa657613aa6613a81565b500690565b600082613aba57613aba613a81565b500490565b60008351613ad18184602088016134a9565b60f89390931b6001600160f81b0319169190920190815260010192915050565b6020808252600c908201526b139bdd081c995d99585b195960a21b604082015260600190565b727b226e616d65223a22506978656c4e4654202360681b81528351600090613b468160138501602089016134a9565b7f222c226465736372697074696f6e223a2246756c6c79206f6e2d636861696e206013918401918201527f706978656c20617274204e4654222c22696d616765223a22646174613a696d6160338201527119d94bdcdd99cade1b5b0ed8985cd94d8d0b60721b60538201528451613bc48160658401602089016134a9565b6e11161130ba3a3934b13aba32b9911d60891b606592909101918201528351613bf48160748401602088016134a9565b607d60f81b6074929091019182015260750195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613c4781601d8501602087016134a9565b91909101601d0192915050565b60008451613c668184602089016134a9565b82018481528351613c7e8160208085019088016134a9565b0160200195945050505050565b805160208083015191908110156138f15760001960209190910360031b1b16919050565b61ffff818116838216019080821115613cca57613cca6137c2565b5092915050565b81516001600160401b03811115613cea57613cea6137ef565b613cfe81613cf884546138bd565b846138f7565b602080601f831160018114613d335760008415613d1b5750858301515b600019600386901b1c1916600185901b17855561393d565b600085815260208120601f198616915b82811015613d6257888601518255948401946001909101908401613d43565b5085821015613d805787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b85815284602082015260a060408201526000613daf60a08301866134cd565b606083019490945250608001529392505050565b60008551613dd5818460208a016134a9565b855190830190613de9818360208a016134a9565b600160fd1b91019081528451613e068160018401602089016134a9565b8451910190613e1c8160018401602088016134a9565b016001019695505050505050565b60008351613e3c8184602088016134a9565b835190830190613e508183602088016134a9565b01949350505050565b60008251613e6b8184602087016134a9565b651e17b9bb339f60d11b920191825250600601919050565b60008251613e958184602087016134a9565b600b60fa1b920191825250600101919050565b60008154613eb5816138bd565b60018281168015613ecd5760018114613ee257613f11565b60ff1984168752821515830287019450613f11565b8560005260208060002060005b85811015613f085781548a820152908401908201613eef565b50505082870194505b5050505092915050565b60008451613f2d8184602089016134a9565b6e3d913a3930b4ba2fba3cb832911d1160891b908301908152613f53600f820186613ea8565b6a1116113b30b63ab2911d1160a91b81529050613f73600b820185613ea8565b61227d60f01b81526002019695505050505050565b60008251613f9a8184602087016134a9565b605d60f81b920191825250600101919050565b681e3932b1ba103c1e9160b91b81528451600090613fd2816009850160208a016134a9565b6411103c9e9160d91b6009918401918201528551613ff781600e840160208a016134a9565b6811103bb4b23a341e9160b91b600e929091019182015284516140218160178401602089016134a9565b6911103432b4b3b43a1e9160b11b60179290910191820152835161404c8160218401602088016134a9565b6211179f60e91b602192909101918201526024019695505050505050565b6000855161407c818460208a016134a9565b693c672066696c6c3d222360b01b90830190815285516140a381600a840160208a016134a9565b6f11103334b63616b7b830b1b4ba3c9e9160811b600a929091019182015284516140d481601a8401602089016134a9565b61111f60f11b601a929091019182015283516140f781601c8401602088016134a9565b631e17b39f60e11b601c92909101918201526020019695505050505050565b61181760f11b8152600083516141338160028501602088016134a9565b83519083019061414a8160028401602088016134a9565b0160020194935050505056fe223e3c7374796c653e726563747b73686170652d72656e646572696e673a637269737045646765737d3c2f7374796c653e3c7376672077696474683d223132303022206865696768743d2231323030222073686170652d72656e646572696e673d22637269737045646765732220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030204142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220b50480a1b9f2e3f297b84df884104648dfab18c9f1427bd841fe9a41b7a32bf164736f6c63430008140033