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
0x60806040523480156200001157600080fd5b5033806200003957604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000448162000061565b50600a80546001600160a01b03191690556101f4600155620000b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6142bf80620000c16000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806393119e0a1161011a578063d56fd88f116100ad578063f253bef31161007c578063f253bef3146104ac578063f2824b53146104b5578063f2fde38b146104c8578063f69d3fad146104db578063f8d4be6d146104ee57600080fd5b8063d56fd88f1461046b578063de9aa5941461047e578063efca8f0814610491578063f132914b146104a457600080fd5b8063aff31edc116100e9578063aff31edc14610417578063bf2d7b321461042a578063c06bb2051461044a578063c87b56dd1461045857600080fd5b806393119e0a146103b757806399b0eb62146103ca5780639c71a380146103dd578063a318a3261461040457600080fd5b8063631f98521161019d57806379d3cd001161016c57806379d3cd0014610318578063844e2cd51461036d578063865dfcd9146103805780638da5cb5b146103935780638f659487146103a457600080fd5b8063631f9852146102e157806368bd580e146102f55780636b3fc695146102fd578063715018a61461031057600080fd5b806340ce89c2116101d957806340ce89c21461025857806354214f691461028a578063561d6225146102ae57806362415a19146102c157600080fd5b8063094441d11461020b57806328c855d4146102205780632fa2acf81461023357806332c2f7f81461024f575b600080fd5b61021e610219366004613395565b610501565b005b61021e61022e3660046133d6565b610811565b61023c60015481565b6040519081526020015b60405180910390f35b61023c60095481565b60025461027290600160301b90046001600160a01b031681565b6040516001600160a01b039091168152602001610246565b60025461029e90600160281b900460ff1681565b6040519015158152602001610246565b61021e6102bc3660046133ff565b6108ad565b6102d46102cf36600461346a565b610a62565b60405161024691906134d3565b60025461029e90600160201b900460ff1681565b61021e610afc565b61021e61030b366004613527565b610b43565b61021e610ccd565b6103526103263660046135a9565b600760209081526000928352604080842090915290825290208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610246565b61021e61037b3660046135cb565b610ce1565b6102d461038e3660046135a9565b610eb0565b6000546001600160a01b0316610272565b61021e6103b236600461346a565b610ed4565b600a54610272906001600160a01b031681565b61021e6103d836600461346a565b61103d565b6002546103f19062010000900461ffff1681565b60405161ffff9091168152602001610246565b61021e610412366004613395565b611136565b61027261042536600461346a565b6113b9565b61043d61043836600461346a565b6113e3565b6040516102469190613600565b6002546103f19061ffff1681565b6102d461046636600461346a565b611560565b6102d461047936600461346a565b611659565b61021e61048c36600461365b565b611913565b61021e61049f36600461368e565b611a1d565b61023c611e0f565b61023c60065481565b6102d46104c336600461346a565b611e95565b61021e6104d63660046133d6565b611ef6565b61021e6104e9366004613731565b611f34565b6102726104fc3660046135a9565b611fcb565b610509612003565b600254600160201b900460ff161561053c5760405162461bcd60e51b81526004016105339061377c565b60405180910390fd5b80806105785760405162461bcd60e51b815260206004820152600b60248201526a08adae0e8f240c4c2e8c6d60ab1b6044820152606401610533565b600654600061058782846137be565b6001600160401b0381111561059e5761059e6137d5565b6040519080825280601f01601f1916602001820160405280156105c8576020820181803683370190505b5090506000805b84811015610771573660008888848181106105ec576105ec6137eb565b90506020028101906105fe9190613801565b909250905085811461064d5760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610533565b60005b8681101561076357600083838381811061066c5761066c6137eb565b90506020020135905060ff80168111156106c05760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610533565b6000828152600760209081526040808320848452825280832054858452600390925290912054116107295760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610533565b8060f81b87878151811061073f5761073f6137eb565b60200101906001600160f81b031916908160001a9053505060019485019401610650565b5082600101925050506105cf565b5061077b82612030565b6004547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a9906107ac9060019061384a565b600480546107bc9060019061384a565b815481106107cc576107cc6137eb565b60009182526020909120015460405161080192916001600160a01b0316909182526001600160a01b0316602082015260400190565b60405180910390a1505050505050565b610819612003565b600254600160201b900460ff16156108435760405162461bcd60e51b81526004016105339061377c565b6001600160a01b03811661088b5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610533565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6108b5612003565b600254600160201b900460ff16156108df5760405162461bcd60e51b81526004016105339061377c565b8281146109225760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610533565b60005b83811015610a5b5782828281811061093f5761093f6137eb565b9050602002810190610951919061385d565b60056000888886818110610967576109676137eb565b905060200201358152602001908152602001600020918261098992919061392c565b5060065485858381811061099f5761099f6137eb565b90506020020135106109d4578484828181106109bd576109bd6137eb565b9050602002013560016109d091906139eb565b6006555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa11858583818110610a0757610a076137eb565b90506020020135848484818110610a2057610a206137eb565b9050602002810190610a32919061385d565b604051610a41939291906139fe565b60405180910390a180610a5381613a34565b915050610925565b5050505050565b60056020526000908152604090208054610a7b906138a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa7906138a3565b8015610af45780601f10610ac957610100808354040283529160200191610af4565b820191906000526020600020905b815481529060010190602001808311610ad757829003601f168201915b505050505081565b610b04612003565b6002805464ff000000001916600160201b1790556040517fa0058887862c892ade184993a48c672897bca2e36ebf7fa2b4703d4805fc3a0190600090a1565b610b4b612003565b600254600160201b900460ff1615610b755760405162461bcd60e51b81526004016105339061377c565b6006548610610bb65760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610533565b60ff851115610bfc5760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610533565b610c3b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061207092505050565b600080610c6e88878790508888604051602001610c5a93929190613a4d565b60405160208183030381529060405261236d565b9250925050610cc3888886868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250610cbd915087905060206139eb565b8a612426565b5050505050505050565b610cd5612003565b610cdf60006124bc565b565b610ce9612003565b600254600160201b900460ff1615610d135760405162461bcd60e51b81526004016105339061377c565b610d1e600482613a7d565b15610d625760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c657474652073697a6560601b6044820152606401610533565b60ff610d6f600483613a91565b1115610dbd5760405162461bcd60e51b815260206004820152601a60248201527f546f6f206d616e7920636f6c6f727320696e2070616c657474650000000000006044820152606401610533565b616000610dcb8260206139eb565b1115610e195760405162461bcd60e51b815260206004820152601d60248201527f50616c6574746520746f6f206c6172676520666f72205353544f5245320000006044820152606401610533565b604051610e4690610e3290839085908290602001613a4d565b60405160208183030381529060405261250c565b600280546601000000000000600160d01b031916600160301b6001600160a01b0393841681029190911791829055604051910490911681527f12dd88e6366a1b048d43c30e6cc0d851079c669a59cb0b42bcda1a3770d2024c906020015b60405180910390a15050565b600860209081526000928352604080842090915290825290208054610a7b906138a3565b610edc612003565b600254600160201b900460ff1615610f065760405162461bcd60e51b81526004016105339061377c565b60008111610f4b5760405162461bcd60e51b8152602060048201526012602482015271496e76616c6964206368756e6b2073697a6560701b6044820152606401610533565b60045415610fab5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206368616e676520616674657220636f6d706f736974657320756044820152661c1b1bd859195960ca1b6064820152608401610533565b61600060065482610fbc91906137be565b11156110015760405162461bcd60e51b81526020600482015260146024820152734368756e6b2073697a6520746f6f206c6172676560601b6044820152606401610533565b60018190556040518181527f7d8bdfacda5f291d00f98aeade4529328fb3a620c7a4326be7e1109b38278ccc906020015b60405180910390a150565b600a546001600160a01b031633148061106057506000546001600160a01b031633145b61109d5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610533565b600254600160281b900460ff16156110ea5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481c995d99585b195960821b6044820152606401610533565b60098190556002805465ff00000000001916600160281b1790556040517f7d3263796ba5596ebeb4fac93bd3558059760d9281ecf726005ee5751b9e406e906110329083815260200190565b61113e612003565b600254600160201b900460ff16156111685760405162461bcd60e51b81526004016105339061377c565b60065481146111b45760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840c6dedae0dee6d2e8ca40d8cadccee8d60431b6044820152606401610533565b60005b818110156112bf5760ff8383838181106111d3576111d36137eb565b9050602002013511156112205760405162461bcd60e51b8152602060048201526015602482015274547261697420696e64657820746f6f206c6172676560581b6044820152606401610533565b600081815260076020526040812090848484818110611241576112416137eb565b6020908102929092013583525081810192909252604090810160009081205484825260039093522054116112ad5760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e8e4c2d2e840d2dcc8caf606b1b6044820152606401610533565b806112b781613a34565b9150506111b7565b50606060005b8281101561131c57818484838181106112e0576112e06137eb565b905060200201356040516020016112f8929190613aa5565b6040516020818303038152906040529150808061131490613a34565b9150506112c5565b5061132681612030565b6004547f82ed0dca89c66872470f12150bee36c2e71fdadb410898ecb2e7bd2c5bb2f6a9906113579060019061384a565b600480546113679060019061384a565b81548110611377576113776137eb565b6000918252602090912001546040516113ac92916001600160a01b0316909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b600481815481106113c957600080fd5b6000918252602090912001546001600160a01b0316905081565b60606113ed611e0f565b821061140b5760405162461bcd60e51b815260040161053390613ad7565b6000600654600161141c91906137be565b905060006001548461142e9190613a91565b9050600082600154866114419190613a7d565b61144b91906137be565b600454909150821061146f5760405162461bcd60e51b815260040161053390613b0e565b60006114ac60048481548110611487576114876137eb565b6000918252602090912001546001600160a01b0316836114a787826139eb565b612550565b905060006006546001600160401b038111156114ca576114ca6137d5565b6040519080825280602002602001820160405280156114f3578160200160208202803683370190505b50905060005b60065481101561155557828181518110611515576115156137eb565b602001015160f81c60f81b60f81c60ff16828281518110611538576115386137eb565b60209081029190910101528061154d81613a34565b9150506114f9565b509695505050505050565b600254606090600160281b900460ff1661158c5760405162461bcd60e51b815260040161053390613b38565b611594611e0f565b82106115d55760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081d1bdad95b88125160821b6044820152606401610533565b60006115e083611659565b905060006115ed846125b9565b905060006115fa8561278e565b61160384612820565b8360405160200161161693929190613b5e565b604051602081830303815290604052905061163081612820565b6040516020016116409190613c56565b6040516020818303038152906040529350505050919050565b600254606090600160281b900460ff166116855760405162461bcd60e51b815260040161053390613b38565b61168d611e0f565b82106116ab5760405162461bcd60e51b815260040161053390613ad7565b60006040518060a00160405280607b81526020016141cf607b91396002546116d69061ffff1661278e565b6002546116ec9062010000900461ffff1661278e565b60405180606001604052806031815260200161419e603191396040516020016117189493929190613c9b565b60405160208183030381529060405290506000600654600161173a91906137be565b905060006001548561174c9190613a91565b90506000826001548761175f9190613a7d565b61176991906137be565b600454909150821061178d5760405162461bcd60e51b815260040161053390613b0e565b60006117a560048481548110611487576114876137eb565b905060006117c7600260069054906101000a90046001600160a01b0316612846565b905060005b6006548110156118e55760008382815181106117ea576117ea6137eb565b01602090810151600084815260078352604080822060f89390931c808352928452808220815160608101835281548152600182015495810195909552600201549084018190529193500361183f5750506118d3565b6000838152600360205260408120825181546118919291908110611865576118656137eb565b600091825260209182902001549084015160408501516001600160a01b03909216916114a790826139eb565b9050600061189f8287612874565b8051909150156118ce578a816040516020016118bc929190613d02565b6040516020818303038152906040529a505b505050505b806118dd81613a34565b9150506117cc565b50856040516020016118f79190613d31565b60408051601f1981840301815291905298975050505050505050565b61191b612003565b600254600160201b900460ff16156119455760405162461bcd60e51b81526004016105339061377c565b60008261ffff1611801561195d575060008161ffff16115b801561196f57506101008261ffff1611155b801561198157506101008161ffff1611155b6119c35760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642063616e7661732073697a6560681b6044820152606401610533565b6002805461ffff84811663ffffffff19909216821762010000918516918202179092556040805191825260208201929092527f56f34234c034b58bdceb65c0489ea232c011d4eae18d1bed77492846d9754fb29101610ea4565b611a25612003565b600254600160201b900460ff1615611a4f5760405162461bcd60e51b81526004016105339061377c565b6006548710611a905760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103630bcb2b960991b6044820152606401610533565b8483148015611a9e57508281145b611ade5760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610533565b60005b85811015611bba5760ff878783818110611afd57611afd6137eb565b905060200201351115611b475760405162461bcd60e51b8152602060048201526012602482015271547261697420494420746f6f206c6172676560701b6044820152606401610533565b611ba8858583818110611b5c57611b5c6137eb565b9050602002810190611b6e919061385d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061207092505050565b80611bb281613a34565b915050611ae1565b50606060005b86811015611c61576000868683818110611bdc57611bdc6137eb565b9050602002810190611bee919061385d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508251604051939450611c3c938793509091508490602001613d5b565b6040516020818303038152906040529250508080611c5990613a34565b915050611bc0565b50600080611c6f8a8461236d565b92509250506000816020611c8391906139eb565b905060005b89811015611e0157600019898983818110611ca557611ca56137eb565b9050602002810190611cb7919061385d565b9050611cc48460206139eb565b611cce91906139eb565b1115611d0e5760405162461bcd60e51b815260206004820152600f60248201526e4f6666736574206f766572666c6f7760881b6044820152606401610533565b611db38c8c8c84818110611d2457611d246137eb565b90506020020135898985818110611d3d57611d3d6137eb565b9050602002810190611d4f919061385d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92508891508f90508e88818110611d9a57611d9a6137eb565b9050602002810190611dac919061385d565b9050612426565b888882818110611dc557611dc56137eb565b9050602002810190611dd7919061385d565b611de3915060206139eb565b611ded90836139eb565b915080611df981613a34565b915050611c88565b505050505050505050505050565b60065460009081908190611e249060016137be565b905060005b600454811015611e8d5781611e6460048381548110611e4a57611e4a6137eb565b6000918252602090912001546001600160a01b0316612846565b51611e6f9190613a91565b611e7990846139eb565b925080611e8581613a34565b915050611e29565b509092915050565b600254606090600160281b900460ff16611ec15760405162461bcd60e51b815260040161053390613b38565b611ec9611e0f565b8210611ee75760405162461bcd60e51b815260040161053390613ad7565b611ef0826125b9565b92915050565b611efe612003565b6001600160a01b038116611f2857604051631e4fbdf760e01b815260006004820152602401610533565b611f31816124bc565b50565b611f3c612003565b600254600160201b900460ff1615611f665760405162461bcd60e51b81526004016105339061377c565b6000838152600560205260409020611f7f82848361392c565b506006548310611f9857611f948360016139eb565b6006555b7f8821f6df0b2ec72e1cb3c7a521fdf0470f670496d3cc14b51084a427a22eaa118383836040516113ac939291906139fe565b60036020528160005260406000208181548110611fe757600080fd5b6000918252602090912001546001600160a01b03169150829050565b6000546001600160a01b03163314610cdf5760405163118cdaa760e01b8152336004820152602401610533565b600461203b8261250c565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905550565b805160000361207c5750565b60025460009061209b90600160301b90046001600160a01b0316612846565b905060208151116120e55760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c65747465206461746160601b6044820152606401610533565b60006120f082613d92565b835190915061210190600590613a7d565b1561214e5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642072656374616e676c652064617461206c656e6774680000006044820152606401610533565b60005b835181101561236757600084828151811061216e5761216e6137eb565b016020015160f81c90506000856121868460016139eb565b81518110612196576121966137eb565b016020015160f81c90506000866121ae8560026139eb565b815181106121be576121be6137eb565b016020015160f81c90506000876121d68660036139eb565b815181106121e6576121e66137eb565b016020015160f81c90506000886121fe8760046139eb565b8151811061220e5761220e6137eb565b016020015160025460f89190911c915061ffff1661223260ff858116908816613db6565b61ffff1611158015612263575060025462010000900461ffff1661225c60ff848116908716613db6565b61ffff1611155b6122a45760405162461bcd60e51b815260206004820152601260248201527152656374206f7574206f6620626f756e647360701b6044820152606401610533565b60008360ff161180156122ba575060008260ff16115b6122fd5760405162461bcd60e51b815260206004820152601460248201527316995c9bc81dda591d1a081bdc881a195a59da1d60621b6044820152606401610533565b61230a8160ff1688612c7d565b61234e5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e0c2d8cae8e8ca40d2dcc8caf605b1b6044820152606401610533565b505050505060058161236091906139eb565b9050612151565b50505050565b6000806000616000845111156123c55760405162461bcd60e51b815260206004820152601e60248201527f446174612065786365656473206d617820636f6e74726163742073697a6500006044820152606401610533565b60008581526003602052604090206123dc8561250c565b81546001808201845560008481526020902090910180546001600160a01b0319166001600160a01b03841617905582549195506124189161384a565b925060009150509250925092565b60408051606081018252848152602080820185815282840185815260008b8152600784528581208b82528452858120945185559151600185015551600290930192909255888252600881528282208883529052206124848582613dd8565b507fa10f932fb8c5cf0cf9966c7b46115c687b5a1d40e1962a40c455fce134fd03de8686868686604051610801959493929190613e97565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081518060401b6bfe61000180600a3d393df3000161fffe8211840152600b8101601584016000f091508161254a5763301164256000526004601cfd5b90915290565b60405161ffff82106125625761ffff91505b818310838303026001810184601f8401873c8082015160ff1661259c576001853b038060281c3d3d3e808403818511028203858211029150505b808252600081602084010152806040830101604052509392505050565b6060600060065460016125cc91906137be565b90506000600154846125de9190613a91565b9050600082600154866125f19190613a7d565b6125fb91906137be565b600454909150821061261f5760405162461bcd60e51b815260040161053390613b0e565b600061263760048481548110611487576114876137eb565b6040805180820190915260018152605b60f81b60208201529091506000805b600654811015612760576000848281518110612674576126746137eb565b01602090810151600084815260088352604080822060f89390931c80835292909352919091208054919250906126a9906138a3565b159050806126d157506000828152600760209081526040808320848452909152902060020154155b156126dc575061274e565b821561270557836040516020016126f39190613eca565b60405160208183030381529060405293505b600082815260056020908152604080832060088352818420858552835292819020905161273793889390929101613f62565b604051602081830303815290604052935060019250505b8061275881613a34565b915050612656565b50816040516020016127729190613fcf565b6040516020818303038152906040529650505050505050919050565b6060600061279b83612cf5565b60010190506000816001600160401b038111156127ba576127ba6137d5565b6040519080825280601f01601f1916602001820160405280156127e4576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846127ee57509392505050565b6060611ef08260405180606001604052806040815260200161424a604091396001612dcd565b60405164ffffffffff600019833b0116602181016000601f8401853c80825260408201810160405250919050565b606082516000036128945750604080516020810190915260008152611ef0565b60208251116128dc5760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642070616c65747465206461746160601b6044820152606401610533565b60006128e783613d92565b90506128f4600482613a7d565b1561293a5760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e0c2d8cae8e8ca40d8cadccee8d60531b6044820152606401610533565b6000612947600483613a91565b9050610100811061299a5760405162461bcd60e51b815260206004820152601860248201527f546f6f206d616e792070616c6574746520696e646963657300000000000000006044820152606401610533565b60006129a78260016139eb565b6001600160401b038111156129be576129be6137d5565b6040519080825280602002602001820160405280156129f157816020015b60608152602001906001900390816129dc5790505b50905060005b8651811015612b9e576000878281518110612a1457612a146137eb565b016020015160f81c9050600088612a2c8460016139eb565b81518110612a3c57612a3c6137eb565b016020015160f81c9050600089612a548560026139eb565b81518110612a6457612a646137eb565b016020015160f81c905060008a612a7c8660036139eb565b81518110612a8c57612a8c6137eb565b016020015160f81c905060008b612aa48760046139eb565b81518110612ab457612ab46137eb565b016020015160f81c905060ff819003612ad1575050505050612b8c565b6000612adf8660ff1661278e565b612aeb8660ff1661278e565b612af78660ff1661278e565b612b038660ff1661278e565b604051602001612b169493929190613ff4565b6040516020818303038152906040529050878260ff1681518110612b3c57612b3c6137eb565b602002602001015181604051602001612b56929190613d02565b604051602081830303815290604052888360ff1681518110612b7a57612b7a6137eb565b60200260200101819052505050505050505b612b976005826139eb565b90506129f7565b50606060005b8381101561155557828181518110612bbe57612bbe6137eb565b60200260200101515160000315612c6b576000612bdc8260046137be565b90506000612be982612f4e565b90506000612c248a612bfc8560206139eb565b612c079060036139eb565b81518110612c1757612c176137eb565b016020015160f81c613285565b9050848282888781518110612c3b57612c3b6137eb565b6020026020010151604051602001612c5694939291906140b1565b60405160208183030381529060405294505050505b80612c7581613a34565b915050612ba4565b6000612c8a600483613a7d565b15612cd05760405162461bcd60e51b8152602060048201526016602482015275092dcecc2d8d2c840e0c2d8cae8e8ca40d8cadccee8d60531b6044820152606401610533565b6000612cdd600484613a91565b905080841080612ced57508360ff145b949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612d345772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612d60576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612d7e57662386f26fc10000830492506010015b6305f5e1008310612d96576305f5e100830492506008015b6127108310612daa57612710830492506004015b60648310612dbc576064830492506002015b600a8310611ef05760010192915050565b60608351600003612ded5750604080516020810190915260008152612f47565b600082612e1e57600385516004612e0491906137be565b612e0f9060026139eb565b612e199190613a91565b612e43565b600385516002612e2e91906139eb565b612e389190613a91565b612e439060046137be565b90506000816001600160401b03811115612e5f57612e5f6137d5565b6040519080825280601f01601f191660200182016040528015612e89576020820181803683370190505b50905060018501602082018788518901602081018051600082525b82841015612eff576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450612ea4565b905250508515612f4057600388510660018114612f235760028114612f3657612f3e565b603d6001830353603d6002830353612f3e565b603d60018303535b505b5090925050505b9392505050565b60606000612f70600260069054906101000a90046001600160a01b0316612846565b8051909150612f808460036139eb565b10612fc65760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a59081c185b195d1d19481bd9999cd95d60521b6044820152606401610533565b600081612fd48560206139eb565b81518110612fe457612fe46137eb565b0160209081015160f81c915060009083906130009087906139eb565b61300b9060016139eb565b8151811061301b5761301b6137eb565b0160209081015160f81c915060009084906130379088906139eb565b6130429060026139eb565b81518110613052576130526137eb565b602001015160f81c60f81b60f81c90506040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048460ff16901c60ff16815181106130a6576130a66137eb565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525084600f1660ff16815181106130f1576130f16137eb565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048560ff16901c60ff1681518110613140576131406137eb565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525085600f1660ff168151811061318b5761318b6137eb565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525060048660ff16901c60ff16815181106131da576131da6137eb565b602001015160f81c60f81b6040518060400160405280601081526020016f181899199a1a9b1b9c1cb0b131b232b360811b81525086600f1660ff1681518110613225576132256137eb565b016020908101516040516001600160f81b0319978816928101929092529486166021820152928516602284015290841660238301528316602482015291166025820152602601604051602081830303815290604052945050505050919050565b60608160ff1660ff036132af5750506040805180820190915260018152603160f81b602082015290565b8160ff166000036132d75750506040805180820190915260018152600360fc1b602082015290565b600060ff6132e98482166103e86137be565b6132f39190613a91565b9050613308613303606483613a91565b61278e565b613322600a613318606485613a7d565b6133039190613a91565b60405160200161333392919061415d565b604051602081830303815290604052915050919050565b60008083601f84011261335c57600080fd5b5081356001600160401b0381111561337357600080fd5b6020830191508360208260051b850101111561338e57600080fd5b9250929050565b600080602083850312156133a857600080fd5b82356001600160401b038111156133be57600080fd5b6133ca8582860161334a565b90969095509350505050565b6000602082840312156133e857600080fd5b81356001600160a01b0381168114612f4757600080fd5b6000806000806040858703121561341557600080fd5b84356001600160401b038082111561342c57600080fd5b6134388883890161334a565b9096509450602087013591508082111561345157600080fd5b5061345e8782880161334a565b95989497509550505050565b60006020828403121561347c57600080fd5b5035919050565b60005b8381101561349e578181015183820152602001613486565b50506000910152565b600081518084526134bf816020860160208601613483565b601f01601f19169290920160200192915050565b602081526000612f4760208301846134a7565b60008083601f8401126134f857600080fd5b5081356001600160401b0381111561350f57600080fd5b60208301915083602082850101111561338e57600080fd5b6000806000806000806080878903121561354057600080fd5b863595506020870135945060408701356001600160401b038082111561356557600080fd5b6135718a838b016134e6565b9096509450606089013591508082111561358a57600080fd5b5061359789828a016134e6565b979a9699509497509295939492505050565b600080604083850312156135bc57600080fd5b50508035926020909101359150565b600080602083850312156135de57600080fd5b82356001600160401b038111156135f457600080fd5b6133ca858286016134e6565b6020808252825182820181905260009190848201906040850190845b818110156136385783518352928401929184019160010161361c565b50909695505050505050565b803561ffff8116811461365657600080fd5b919050565b6000806040838503121561366e57600080fd5b61367783613644565b915061368560208401613644565b90509250929050565b60008060008060008060006080888a0312156136a957600080fd5b8735965060208801356001600160401b03808211156136c757600080fd5b6136d38b838c0161334a565b909850965060408a01359150808211156136ec57600080fd5b6136f88b838c0161334a565b909650945060608a013591508082111561371157600080fd5b5061371e8a828b0161334a565b989b979a50959850939692959293505050565b60008060006040848603121561374657600080fd5b8335925060208401356001600160401b0381111561376357600080fd5b61376f868287016134e6565b9497909650939450505050565b60208082526012908201527110dbdb9d1c9858dd081a5cc81cd9585b195960721b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611ef057611ef06137a8565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261381857600080fd5b8301803591506001600160401b0382111561383257600080fd5b6020019150600581901b360382131561338e57600080fd5b81810381811115611ef057611ef06137a8565b6000808335601e1984360301811261387457600080fd5b8301803591506001600160401b0382111561388e57600080fd5b60200191503681900382131561338e57600080fd5b600181811c908216806138b757607f821691505b6020821081036138d757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561392757600081815260208120601f850160051c810160208610156139045750805b601f850160051c820191505b8181101561392357828155600101613910565b5050505b505050565b6001600160401b03831115613943576139436137d5565b6139578361395183546138a3565b836138dd565b6000601f84116001811461398b57600085156139735750838201355b600019600387901b1c1916600186901b178355610a5b565b600083815260209020601f19861690835b828110156139bc578685013582556020948501946001909201910161399c565b50868210156139d95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b80820180821115611ef057611ef06137a8565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060018201613a4657613a466137a8565b5060010190565b838152818360208301376000910160200190815292915050565b634e487b7160e01b600052601260045260246000fd5b600082613a8c57613a8c613a67565b500690565b600082613aa057613aa0613a67565b500490565b60008351613ab7818460208801613483565b60f89390931b6001600160f81b0319169190920190815260010192915050565b60208082526017908201527f496e76616c696420636f6d706f7369746520696e646578000000000000000000604082015260600190565b60208082526010908201526f125b9d985b1a590818da1d5b9ac8125160821b604082015260600190565b6020808252600c908201526b139bdd081c995d99585b195960a21b604082015260600190565b727b226e616d65223a22506978656c4e4654202360681b81528351600090613b8d816013850160208901613483565b7f222c226465736372697074696f6e223a2246756c6c79206f6e2d636861696e206013918401918201527f706978656c20617274204e4654222c22696d616765223a22646174613a696d6160338201527119d94bdcdd99cade1b5b0ed8985cd94d8d0b60721b60538201528451613c0b816065840160208901613483565b6e11161130ba3a3934b13aba32b9911d60891b606592909101918201528351613c3b816074840160208801613483565b607d60f81b6074929091019182015260750195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613c8e81601d850160208701613483565b91909101601d0192915050565b60008551613cad818460208a01613483565b855190830190613cc1818360208a01613483565b600160fd1b91019081528451613cde816001840160208901613483565b8451910190613cf4816001840160208801613483565b016001019695505050505050565b60008351613d14818460208801613483565b835190830190613d28818360208801613483565b01949350505050565b60008251613d43818460208701613483565b651e17b9bb339f60d11b920191825250600601919050565b60008451613d6d818460208901613483565b82018481528351613d85816020808501908801613483565b0160200195945050505050565b805160208083015191908110156138d75760001960209190910360031b1b16919050565b61ffff818116838216019080821115613dd157613dd16137a8565b5092915050565b81516001600160401b03811115613df157613df16137d5565b613e0581613dff84546138a3565b846138dd565b602080601f831160018114613e3a5760008415613e225750858301515b600019600386901b1c1916600185901b178555613923565b600085815260208120601f198616915b82811015613e6957888601518255948401946001909101908401613e4a565b5085821015613e875787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b85815284602082015260a060408201526000613eb660a08301866134a7565b606083019490945250608001529392505050565b60008251613edc818460208701613483565b600b60fa1b920191825250600101919050565b60008154613efc816138a3565b60018281168015613f145760018114613f2957613f58565b60ff1984168752821515830287019450613f58565b8560005260208060002060005b85811015613f4f5781548a820152908401908201613f36565b50505082870194505b5050505092915050565b60008451613f74818460208901613483565b6e3d913a3930b4ba2fba3cb832911d1160891b908301908152613f9a600f820186613eef565b6a1116113b30b63ab2911d1160a91b81529050613fba600b820185613eef565b61227d60f01b81526002019695505050505050565b60008251613fe1818460208701613483565b605d60f81b920191825250600101919050565b681e3932b1ba103c1e9160b91b81528451600090614019816009850160208a01613483565b6411103c9e9160d91b600991840191820152855161403e81600e840160208a01613483565b6811103bb4b23a341e9160b91b600e92909101918201528451614068816017840160208901613483565b6911103432b4b3b43a1e9160b11b601792909101918201528351614093816021840160208801613483565b6211179f60e91b602192909101918201526024019695505050505050565b600085516140c3818460208a01613483565b693c672066696c6c3d222360b01b90830190815285516140ea81600a840160208a01613483565b6f11103334b63616b7b830b1b4ba3c9e9160811b600a9290910191820152845161411b81601a840160208901613483565b61111f60f11b601a9290910191820152835161413e81601c840160208801613483565b631e17b39f60e11b601c92909101918201526020019695505050505050565b61181760f11b81526000835161417a816002850160208801613483565b835190830190614191816002840160208801613483565b0160020194935050505056fe223e3c7374796c653e726563747b73686170652d72656e646572696e673a637269737045646765737d3c2f7374796c653e3c7376672077696474683d223132303022206865696768743d2231323030222073686170652d72656e646572696e673d22637269737045646765732220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030204142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220225ef374696d42b143c42c24bf2b22d1cdf2626197db0b76f6f69e1d9044562264736f6c63430008140033