0 txs
1 call
constructor
constructor()
functions
CONTRACT_ADMIN
viewfunction CONTRACT_ADMIN() view returns (bytes32)
ECRegistry
viewfunction ECRegistry() view returns (address)
getBitAndWordPosition
viewfunction getBitAndWordPosition(uint8 sideID, uint32 tokenId) view returns (uint16 wordPos, uint256 bitPos, uint256 traitsLength)
getDataStream
viewfunction getDataStream(uint8 side, uint16 start, uint16 len) view returns (uint256[] data)
getIndividualTraitData
viewfunction getIndividualTraitData(uint8 sideID, uint8 layerID, uint32 tokenId) view returns (uint256)
getRandomDataStream
viewfunction getRandomDataStream(uint8 side, uint16[] positions) view returns (uint256[] data)
getTraitNames
viewfunction getTraitNames(uint8 sideID) view returns (string[])
getValue
viewfunction getValue(uint32 tokenId, uint8 sideId, uint8 layerId) view returns (uint8)
getValues
viewfunction getValues(uint32 tokenId, uint8 sideId) view returns (uint8[] response)
getValues
viewfunction getValues(uint32 tokenId) view returns (uint8[][] response)
getValues
viewfunction getValues(uint32[] tokenIds) view returns (uint8[][][] response)
getWholeTraitData
viewfunction getWholeTraitData(uint8 sideID, uint32 tokenId) view returns (uint256)
layerPointers
viewfunction layerPointers(uint8, uint8, uint256) view returns (string)
maxTokenID
viewfunction maxTokenID(uint8) view returns (uint32)
maxUsedIndex
viewfunction maxUsedIndex(uint8) view returns (uint16)
MetaData
viewfunction MetaData() view returns (string[] sideNames, tuple[][] Fields, uint16[] wordCounts)
numberOfSides
viewfunction numberOfSides() view returns (uint8)
numberOfTraits
viewfunction numberOfTraits(uint8) view returns (uint256)
traitId
viewfunction traitId() view returns (uint16)
traitInfoLength
viewfunction traitInfoLength(uint8) view returns (uint256)
traitSetNames
viewfunction traitSetNames(uint8) view returns (string)
version
purefunction version() pure returns (uint256)
visualTraitData
viewfunction visualTraitData(uint8, uint16) view returns (uint256)
visualTraitPositions
viewfunction visualTraitPositions(uint8, string) view returns (uint8)
visualTraits
viewfunction visualTraits(uint8, uint8) view returns (uint8 start, uint8 len, string name)
createTraitSet
nonpayablefunction createTraitSet(string traitSetName, tuple[] traitInfo)
init
nonpayablefunction init(address _registry, uint16 _traitId)
setIndividualTraitData
nonpayablefunction setIndividualTraitData(uint8 sideID, uint8 layerID, uint32 tokenId, uint256 newData)
setTraitsByRandomWords
nonpayablefunction setTraitsByRandomWords(uint8 sideID, uint16[] indexes, uint256[] values, uint32 _maxTokenID)
setTraitsByRandomWordsWithMasks
nonpayablefunction setTraitsByRandomWordsWithMasks(uint8 sideID, uint16[] indexes, uint256[] values, uint256[] masks, uint32 _maxTokenID)
setWholeTraitData
nonpayablefunction setWholeTraitData(uint8 sideID, uint32 tokenId, uint256 newData)
events
TraitsUpdated
event TraitsUpdated(uint8 sideID, uint32 tokenId, uint256 newData, uint256 oldData)
updateTraitEvent
event updateTraitEvent(uint8 _side, uint16 indexed _tokenId, uint256 _newData, uint8 dataLength)
WordFound
event WordFound(uint8 sideID, uint256 nwordPos, uint256 answer)
WordUpdated
event WordUpdated(uint8 sideID, uint256 wordPos, uint256 answer)
errors
No errors.
creation bytecode
0x6080604052348015600f57600080fd5b50601a6000602a601e565b60cb565b60005460ff161560855760405162461bcd60e51b815260206004820152602860248201527f56697375616c547261697452656769737472793a20416c726561647920696e696044820152671d1a585b1a5cd95960c21b606482015260840160405180910390fd5b600080546001600160a01b039093166301000000026301000000600160b81b031961ffff9093166101000262ffffff199094169390931760011791909116919091179055565b6133ac806100da6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806356d892621161010f578063815509ac116100a2578063d20c376f11610071578063d20c376f1461051e578063d2fd155e14610531578063dc535c5214610544578063e56d84fa1461057657600080fd5b8063815509ac146104855780638fc59014146104a5578063a4c87076146104cc578063ba47c9271461050b57600080fd5b8063769b18b2116100de578063769b18b21461042857806378b395881461043b5780637a5d049e1461044e5780637e309bfb1461046e57600080fd5b806356d89262146103b85780635bf63c88146103ef57806362c919fa146104025780636a6f5f221461041557600080fd5b80632657fc36116101875780635045374211610156578063504537421461036857806351fe15171461037b57806354fd4d501461039b578063551a65f0146103a557600080fd5b80632657fc36146102cd578063343f97f8146102ed5780633525f5d31461030d5780633b39d01f1461032f57600080fd5b80631f376b53116101c35780631f376b5314610253578063202ec651146102725780632282de351461028757806323f6cf18146102ba57600080fd5b8063022d7a98146101ea57806312ea5cba146102135780631dda701514610233575b600080fd5b6101fd6101f83660046125ae565b6105b1565b60405161020a91906125e1565b60405180910390f35b610226610221366004612628565b6106b6565b60405161020a91906126aa565b610246610241366004612708565b610761565b60405161020a919061275a565b6008546102609060ff1681565b60405160ff909116815260200161020a565b610285610280366004612792565b610830565b005b61029a6102953660046127be565b6108f5565b6040805161ffff909416845260208401929092529082015260600161020a565b6102466102c83660046127fa565b610911565b6102e06102db36600461283d565b610a5b565b60405161020a91906128b2565b6103006102fb3660046128c5565b610bab565b60405161020a9190612988565b61032061031b3660046129ec565b610e3b565b60405161020a93929190612a08565b61035a61033d366004612a36565b600560209081526000928352604080842090915290825290205481565b60405190815260200161020a565b610285610376366004612a60565b610ef6565b61038e610389366004612b1a565b611271565b60405161020a9190612b35565b6378965ed961035a565b6102266103b336600461283d565b611422565b6103dc6103c636600461283d565b60096020526000908152604090205461ffff1681565b60405161ffff909116815260200161020a565b6000546103dc90610100900461ffff1681565b610285610410366004612b48565b61143b565b610285610423366004612b93565b61155a565b61035a610436366004612c29565b611863565b610260610449366004612c63565b6118bf565b61035a61045c36600461283d565b60076020526000908152604090205481565b61047661190a565b60405161020a93929190612cdd565b61035a61049336600461283d565b60066020526000908152604090205481565b61035a7fcc3e15b6937a2f69a6f5452031b5fbab5ab7de91ec2efae0db33241e870e612181565b6102606104da366004612dde565b6002602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b61035a6105193660046127be565b611936565b61028561052c366004612e9f565b611942565b61028561053f366004612f2e565b611bac565b60005461055e90630100000090046001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b61059c61058436600461283d565b600a6020526000908152604090205463ffffffff1681565b60405163ffffffff909116815260200161020a565b606060006105bf8385611bba565b60ff8416600090815260076020526040902054909150806001600160401b038111156105ed576105ed612dc8565b604051908082528060200260200182016040528015610616578160200160208202803683370190505b5092506000805b828160ff1610156106ab5760ff808716600090815260016020818152604080842086861685529091529091205461010090049091169061065f9080831b612f6e565b8386901c16868360ff168151811061067957610679612f81565b60ff909216602092830291909101909101526106958184612f97565b92505080806106a390612faa565b91505061061d565b505050505b92915050565b6003602090815260009384526040808520825292845282842090528252902080546106e090612fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461070c90612fc9565b80156107595780601f1061072e57610100808354040283529160200191610759565b820191906000526020600020905b81548152906001019060200180831161073c57829003601f168201915b505050505081565b6060816001600160401b0381111561077b5761077b612dc8565b6040519080825280602002602001820160405280156107a4578160200160208202803683370190505b50905060005b828110156108285760ff85166000908152600560205260408120908585848181106107d7576107d7612f81565b90506020020160208101906107ec9190613003565b61ffff1661ffff1681526020019081526020016000205482828151811061081557610815612f81565b60209081029190910101526001016107aa565b509392505050565b600054604051630403639960e31b8152336004820152610100820461ffff16602482015263010000009091046001600160a01b03169063201b1cc890604401602060405180830381865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b0919061301e565b6108d55760405162461bcd60e51b81526004016108cc90613040565b60405180910390fd5b60006108e18484611bba565b90506108ef84848484611cba565b50505050565b60008060006109048585612090565b9250925092509250925092565b60ff831660009081526009602052604090205460609061ffff90811690841611610a545760ff841660009081526009602052604081205481906109599061ffff166001613068565b905061ffff811661096a8587613068565b61ffff161015610990578361097f868361308a565b6109899190613068565b9150610994565b8391505b8361ffff166001600160401b038111156109b0576109b0612dc8565b6040519080825280602002602001820160405280156109d9578160200160208202803683370190505b5092508460005b8361ffff168161ffff161015610a4f5760ff881660009081526005602052604081209083610a0d816130a5565b945061ffff1661ffff16815260200190815260200160002054858261ffff1681518110610a3c57610a3c612f81565b60209081029190910101526001016109e0565b505050505b9392505050565b60ff8116600090815260076020526040812054606091816001600160401b03811115610a8957610a89612dc8565b604051908082528060200260200182016040528015610abc57816020015b6060815260200190600190039081610aa75790505b50905060005b828160ff1610156108285760ff80861660009081526001602081815260408084209486168452939052919020018054610afa90612fc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2690612fc9565b8015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b5050505050828260ff1681518110610b8d57610b8d612f81565b60200260200101819052508080610ba390612faa565b915050610ac2565b60085460609060ff16826001600160401b03811115610bcc57610bcc612dc8565b604051908082528060200260200182016040528015610bff57816020015b6060815260200190600190039081610bea5790505b50915060005b83811015610e33576000858583818110610c2157610c21612f81565b9050602002016020810190610c369190612b1a565b90508260ff166001600160401b03811115610c5357610c53612dc8565b604051908082528060200260200182016040528015610c8657816020015b6060815260200190600190039081610c715790505b50848381518110610c9957610c99612f81565b602002602001018190525060005b8360ff168160ff161015610e29576000610cc18284611bba565b60ff8316600090815260076020526040902054909150806001600160401b03811115610cef57610cef612dc8565b604051908082528060200260200182016040528015610d18578160200160208202803683370190505b50878681518110610d2b57610d2b612f81565b60200260200101518460ff1681518110610d4757610d47612f81565b60200260200101819052506000805b828160ff161015610e195760ff8086166000908152600160208181526040808420868616855290915290912054610100900490911690610d989080831b612f6e565b8386901c168a8981518110610daf57610daf612f81565b60200260200101518760ff1681518110610dcb57610dcb612f81565b60200260200101518360ff1681518110610de757610de7612f81565b60ff90921660209283029190910190910152610e038184612f97565b9250508080610e1190612faa565b915050610d56565b505060019092019150610ca79050565b5050600101610c05565b505092915050565b600160208181526000938452604080852090915291835291208054918101805460ff80851694610100900416929190610e7390612fc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9f90612fc9565b8015610eec5780601f10610ec157610100808354040283529160200191610eec565b820191906000526020600020905b815481529060010190602001808311610ecf57829003601f168201915b5050505050905083565b600054604051630403639960e31b8152336004820152610100820461ffff16602482015263010000009091046001600160a01b03169063201b1cc890604401602060405180830381865afa158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f76919061301e565b610f925760405162461bcd60e51b81526004016108cc90613040565b858414610ff45760405162461bcd60e51b815260206004820152602a60248201527f696e64657820262076616c75652061727261797320617265206f6620756e65716044820152690eac2d840d8cadccee8d60b31b60648201526084016108cc565b8582146110555760405162461bcd60e51b815260206004820152602960248201527f696e6465782026206d61736b2061727261797320617265206f6620756e6571756044820152680c2d840d8cadccee8d60bb1b60648201526084016108cc565b60005b8681101561117357600084848381811061107457611074612f81565b9050602002013519600560008c60ff1660ff16815260200190815260200160002060008b8b868181106110a9576110a9612f81565b90506020020160208101906110be9190613003565b61ffff1661ffff1681526020019081526020016000205416905060008585848181106110ec576110ec612f81565b9050602002013588888581811061110557611105612f81565b90506020020135169050808217600560008d60ff1660ff16815260200190815260200160002060008c8c8781811061113f5761113f612f81565b90506020020160208101906111549190613003565b61ffff1681526020810191909152604001600020555050600101611058565b5060ff881660009081526009602052604090205461ffff168787611198600182612f6e565b8181106111a7576111a7612f81565b90506020020160208101906111bc9190613003565b61ffff16111561121e5786866111d3600182612f6e565b8181106111e2576111e2612f81565b90506020020160208101906111f79190613003565b60ff89166000908152600960205260409020805461ffff191661ffff929092169190911790555b60ff88166000908152600a602052604090205463ffffffff808316911610156112675760ff88166000908152600a60205260409020805463ffffffff191663ffffffff83161790555b5050505050505050565b60085460609060ff16806001600160401b0381111561129257611292612dc8565b6040519080825280602002602001820160405280156112c557816020015b60608152602001906001900390816112b05790505b50915060005b8160ff168160ff16101561141b5760006112e58286611bba565b60ff8316600090815260076020526040902054909150806001600160401b0381111561131357611313612dc8565b60405190808252806020026020018201604052801561133c578160200160208202803683370190505b50858460ff168151811061135257611352612f81565b60200260200101819052506000805b828160ff16101561140b5760ff80861660009081526001602081815260408084208686168552909152909120546101009004909116906113a39080831b612f6e565b8386901c16888760ff16815181106113bd576113bd612f81565b60200260200101518360ff16815181106113d9576113d9612f81565b60ff909216602092830291909101909101526113f58184612f97565b925050808061140390612faa565b915050611361565b5050600190920191506112cb9050565b5050919050565b600460205260009081526040902080546106e090612fc9565b600054604051630403639960e31b8152336004820152610100820461ffff16602482015263010000009091046001600160a01b03169063201b1cc890604401602060405180830381865afa158015611497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bb919061301e565b6114d75760405162461bcd60e51b81526004016108cc90613040565b60006114e38584611bba565b60ff86811660009081526001602081815260408084208a86168552909152822054939450838316936101009004909216916115209080841b612f6e565b84841c169050600085841b61153783861b87612f6e565b6115419190612f97565b905061154f89888388611cba565b505050505050505050565b600054604051630403639960e31b8152336004820152610100820461ffff16602482015263010000009091046001600160a01b03169063201b1cc890604401602060405180830381865afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da919061301e565b6115f65760405162461bcd60e51b81526004016108cc90613040565b6008805460009160ff909116908261160d83612faa565b82546101009290920a60ff81810219909316918316021790915581166000908152600460205260409020909150611645858783613113565b506000805b60ff81168411156118375760ff8084166000908152600260205260409020829187908790841681811061167f5761167f612f81565b905060200281019061169191906131d3565b61169f9060208101906131f3565b6040516116ad929190613239565b908152602001604051809103902060006101000a81548160ff021916908360ff16021790555060405180606001604052808360ff16815260200186868460ff168181106116fc576116fc612f81565b905060200281019061170e91906131d3565b61171c90602081019061283d565b60ff16815260200186868460ff1681811061173957611739612f81565b905060200281019061174b91906131d3565b6117599060208101906131f3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505060ff80871682526001602081815260408085208885168652825293849020865181549288015185166101000261ffff1990931694169390931717825591840151909250908201906117e09082613249565b5090505084848260ff168181106117f9576117f9612f81565b905060200281019061180b91906131d3565b61181990602081019061283d565b6118239083613308565b91508061182f81612faa565b91505061164a565b5060ff918216600090815260076020908152604080832095909555600690529290922091169055505050565b6000806118708584611bba565b60ff86811660009081526001602081815260408084208a8616855290915290912054929350828216926101009004909116906118ae9080831b612f6e565b8284901c1693505050509392505050565b6000806118cc8486611bba565b60ff8581166000908152600160208181526040808420898616855290915290912054929350828216926101009004909116906118ae9080831b612f6e565b606080606080606061191a6120dc565b90925090508181611929612430565b9450945094505050909192565b6000610a548383611bba565b600054604051630403639960e31b8152336004820152610100820461ffff16602482015263010000009091046001600160a01b03169063201b1cc890604401602060405180830381865afa15801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c2919061301e565b6119de5760405162461bcd60e51b81526004016108cc90613040565b838214611a2d5760405162461bcd60e51b815260206004820152601c60248201527f61727261797320617265206f6620756e657175616c206c656e6774680000000060448201526064016108cc565b60005b84811015611ab057838382818110611a4a57611a4a612f81565b90506020020135600560008960ff1660ff1681526020019081526020016000206000888885818110611a7e57611a7e612f81565b9050602002016020810190611a939190613003565b61ffff168152602081019190915260400160002055600101611a30565b5060ff861660009081526009602052604090205461ffff168585611ad5600182612f6e565b818110611ae457611ae4612f81565b9050602002016020810190611af99190613003565b61ffff161115611b5b578484611b10600182612f6e565b818110611b1f57611b1f612f81565b9050602002016020810190611b349190613003565b60ff87166000908152600960205260409020805461ffff191661ffff929092169190911790555b60ff86166000908152600a602052604090205463ffffffff80831691161015611ba45760ff86166000908152600a60205260409020805463ffffffff191663ffffffff83161790555b505050505050565b611bb682826124da565b5050565b600080600080611bca8686612090565b9194509092509050610100611bdf8383612f97565b1015611c275760ff8616600090815260056020908152604080832061ffff87168452909152812054821c90611c17600180861b612f6e565b9190911694506106b09350505050565b60ff8616600090815260056020908152604080832061ffff87168452909152812054821c90611c5883610100612f6e565b60ff8916600090815260056020526040812090611c76886001613068565b61ffff168152602081019190915260400160009081205490911b9150611c9f600180871b612f6e565b9050611cad82821684612f97565b96505050505050506106b0565b60ff841660009081526006602052604081205490611cde8263ffffffff8716613321565b90506000611cee6101008361334e565b90506000611cfe61010084613362565b9050610100611d0d8584612f97565b1015611e005760ff8816600081815260056020908152604080832061ffff86168085529083529281902054815194855291840192909252908201819052907fc9b6901613acaf5e563e292f3d9dc93b44d64d3a2d2c479bcdbcf959f25915c39060600160405180910390a1611d8486841b82612f6e565b9050611d9287841b82612f97565b60ff8a16600081815260056020908152604080832061ffff88168085529083529281902085905580519384529083019190915281018290529091507fcca17a54ba5b73df0ed02fd16c8d085086b7608ff375adfbfe1184258197e94a9060600160405180910390a150612036565b60ff8816600081815260056020818152604080842061ffff871685528083529084205494845291905281611e35856001613068565b61ffff1661ffff1681526020019081526020016000205490507fc9b6901613acaf5e563e292f3d9dc93b44d64d3a2d2c479bcdbcf959f25915c38a8484604051611e9b9392919060ff93909316835261ffff919091166020830152604082015260600190565b60405180910390a17fc9b6901613acaf5e563e292f3d9dc93b44d64d3a2d2c479bcdbcf959f25915c38a611ed0856001613068565b6040805160ff909316835261ffff9091166020830152810183905260600160405180910390a1611f0287851b83612f6e565b9150611f1088851b83612f97565b9150611f1e84610100612f6e565b611f2b9088901c82612f6e565b9050611f3984610100612f6e565b611f469089901c82612f97565b60ff8b16600081815260056020818152604080842061ffff8a168552808352908420889055938352529192508291611f7f866001613068565b61ffff9081168252602080830193909352604091820160002093909355805160ff8e1681529286169183019190915281018390527fcca17a54ba5b73df0ed02fd16c8d085086b7608ff375adfbfe1184258197e94a9060600160405180910390a17fcca17a54ba5b73df0ed02fd16c8d085086b7608ff375adfbfe1184258197e94a8a61200d856001613068565b6040805160ff909316835261ffff9091166020830152810183905260600160405180910390a150505b6040805160ff8a16815263ffffffff89166020820152908101879052606081018690527fa15e4c203a9a35a6fa3b7f0aef836dcab5df435656db5d51ca6e2e32dbc8f06a9060800160405180910390a15050505050505050565b60ff82166000908152600660205260408120548190816120b68263ffffffff8716613321565b90506120c46101008261334e565b92506120d261010082613362565b9350509250925092565b600854606090819060ff16806001600160401b038111156120ff576120ff612dc8565b60405190808252806020026020018201604052801561213257816020015b606081526020019060019003908161211d5790505b5091508060ff166001600160401b0381111561215057612150612dc8565b60405190808252806020026020018201604052801561218357816020015b606081526020019060019003908161216e5790505b50925060005b8160ff168160ff16101561242a5760ff8116600090815260046020526040902080546121b490612fc9565b80601f01602080910402602001604051908101604052809291908181526020018280546121e090612fc9565b801561222d5780601f106122025761010080835404028352916020019161222d565b820191906000526020600020905b81548152906001019060200180831161221057829003601f168201915b5050505050848260ff168151811061224757612247612f81565b60209081029190910181019190915260ff8216600090815260079091526040902054806001600160401b0381111561228157612281612dc8565b6040519080825280602002602001820160405280156122ce57816020015b6040805160608082018352600080835260208301529181019190915281526020019060019003908161229f5790505b50848360ff16815181106122e4576122e4612f81565b602002602001018190525060005b818160ff1610156124205760ff808416600090815260016020818152604080842086861685528252928390208351606081018552815480871682526101009004909516918501919091529081018054919284019161234f90612fc9565b80601f016020809104026020016040519081016040528092919081815260200182805461237b90612fc9565b80156123c85780601f1061239d576101008083540402835291602001916123c8565b820191906000526020600020905b8154815290600101906020018083116123ab57829003601f168201915b505050505081525050858460ff16815181106123e6576123e6612f81565b60200260200101518260ff168151811061240257612402612f81565b6020026020010181905250808061241890612faa565b9150506122f2565b5050600101612189565b50509091565b60085460609060ff16806001600160401b0381111561245157612451612dc8565b60405190808252806020026020018201604052801561247a578160200160208202803683370190505b50915060005b8160ff168160ff1610156124d55760ff8116600081815260096020526040902054845161ffff90911691859181106124ba576124ba612f81565b61ffff90921660209283029190910190910152600101612480565b505090565b60005460ff161561253e5760405162461bcd60e51b815260206004820152602860248201527f56697375616c547261697452656769737472793a20416c726561647920696e696044820152671d1a585b1a5cd95960c21b60648201526084016108cc565b600080546001600160a01b039093166301000000026301000000600160b81b031961ffff9093166101000262ffffff199094169390931760011791909116919091179055565b803563ffffffff8116811461259857600080fd5b919050565b803560ff8116811461259857600080fd5b600080604083850312156125c157600080fd5b6125ca83612584565b91506125d86020840161259d565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561261c57835160ff16835292840192918401916001016125fd565b50909695505050505050565b60008060006060848603121561263d57600080fd5b6126468461259d565b92506126546020850161259d565b9150604084013590509250925092565b6000815180845260005b8181101561268a5760208185018101518683018201520161266e565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a546020830184612664565b60008083601f8401126126cf57600080fd5b5081356001600160401b038111156126e657600080fd5b6020830191508360208260051b850101111561270157600080fd5b9250929050565b60008060006040848603121561271d57600080fd5b6127268461259d565b925060208401356001600160401b0381111561274157600080fd5b61274d868287016126bd565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b8181101561261c57835183529284019291840191600101612776565b6000806000606084860312156127a757600080fd5b6127b08461259d565b925061265460208501612584565b600080604083850312156127d157600080fd5b6127da8361259d565b91506125d860208401612584565b803561ffff8116811461259857600080fd5b60008060006060848603121561280f57600080fd5b6128188461259d565b9250612826602085016127e8565b9150612834604085016127e8565b90509250925092565b60006020828403121561284f57600080fd5b610a548261259d565b60008282518085526020808601955060208260051b8401016020860160005b848110156128a557601f19868403018952612893838351612664565b98840198925090830190600101612877565b5090979650505050505050565b602081526000610a546020830184612858565b600080602083850312156128d857600080fd5b82356001600160401b038111156128ee57600080fd5b6128fa858286016126bd565b90969095509350505050565b600082825180855260208086019550808260051b8401018186016000805b8581101561297a57868403601f19018a52825180518086529086019086860190845b8181101561296557835160ff1683529288019291880191600101612946565b50509a86019a94505091840191600101612924565b509198975050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156129df57603f198886030184526129cd858351612906565b945092850192908501906001016129b1565b5092979650505050505050565b600080604083850312156129ff57600080fd5b6125ca8361259d565b60ff8416815260ff83166020820152606060408201526000612a2d6060830184612664565b95945050505050565b60008060408385031215612a4957600080fd5b612a528361259d565b91506125d8602084016127e8565b60008060008060008060008060a0898b031215612a7c57600080fd5b612a858961259d565b975060208901356001600160401b0380821115612aa157600080fd5b612aad8c838d016126bd565b909950975060408b0135915080821115612ac657600080fd5b612ad28c838d016126bd565b909750955060608b0135915080821115612aeb57600080fd5b50612af88b828c016126bd565b9094509250612b0b905060808a01612584565b90509295985092959890939650565b600060208284031215612b2c57600080fd5b610a5482612584565b602081526000610a546020830184612906565b60008060008060808587031215612b5e57600080fd5b612b678561259d565b9350612b756020860161259d565b9250612b8360408601612584565b9396929550929360600135925050565b60008060008060408587031215612ba957600080fd5b84356001600160401b0380821115612bc057600080fd5b818701915087601f830112612bd457600080fd5b813581811115612be357600080fd5b886020828501011115612bf557600080fd5b602092830196509450908601359080821115612c1057600080fd5b50612c1d878288016126bd565b95989497509550505050565b600080600060608486031215612c3e57600080fd5b612c478461259d565b9250612c556020850161259d565b915061283460408501612584565b600080600060608486031215612c7857600080fd5b612c8184612584565b9250612c8f6020850161259d565b91506128346040850161259d565b60008151808452602080850194506020840160005b83811015612cd257815161ffff1687529582019590820190600101612cb2565b509495945050505050565b60006060808352612cf16060840187612858565b6020848203818601528187518084528284019150828160051b850101838a0160005b83811015612da557601f1987840381018652825180518086529088019088860190600581901b87018a0160005b82811015612d8e57888203860184528451805160ff90811684528d820151168d8401526040908101519083018f9052612d7b8f840182612664565b958d0195948d0194925050600101612d40565b50988a019896505050928701925050600101612d13565b50508781036040890152612db9818a612c9d565b9b9a5050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612df157600080fd5b612dfa8361259d565b915060208301356001600160401b0380821115612e1657600080fd5b818501915085601f830112612e2a57600080fd5b813581811115612e3c57612e3c612dc8565b604051601f8201601f19908116603f01168101908382118183101715612e6457612e64612dc8565b81604052828152886020848701011115612e7d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060008060808789031215612eb857600080fd5b612ec18761259d565b955060208701356001600160401b0380821115612edd57600080fd5b612ee98a838b016126bd565b90975095506040890135915080821115612f0257600080fd5b50612f0f89828a016126bd565b9094509250612f22905060608801612584565b90509295509295509295565b60008060408385031215612f4157600080fd5b82356001600160a01b0381168114612a5257600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156106b0576106b0612f58565b634e487b7160e01b600052603260045260246000fd5b808201808211156106b0576106b0612f58565b600060ff821660ff8103612fc057612fc0612f58565b60010192915050565b600181811c90821680612fdd57607f821691505b602082108103612ffd57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561301557600080fd5b610a54826127e8565b60006020828403121561303057600080fd5b81518015158114610a5457600080fd5b6020808252600e908201526d139bdd08105d5d1a1bdc9a5cd95960921b604082015260600190565b61ffff81811683821601908082111561308357613083612f58565b5092915050565b61ffff82811682821603908082111561308357613083612f58565b600061ffff8083168181036130bc576130bc612f58565b6001019392505050565b601f82111561310e576000816000526020600020601f850160051c810160208610156130ef5750805b601f850160051c820191505b81811015611ba4578281556001016130fb565b505050565b6001600160401b0383111561312a5761312a612dc8565b61313e836131388354612fc9565b836130c6565b6000601f841160018114613172576000851561315a5750838201355b600019600387901b1c1916600186901b1783556131cc565b600083815260209020601f19861690835b828110156131a35786850135825560209485019460019092019101613183565b50868210156131c05760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008235603e198336030181126131e957600080fd5b9190910192915050565b6000808335601e1984360301811261320a57600080fd5b8301803591506001600160401b0382111561322457600080fd5b60200191503681900382131561270157600080fd5b8183823760009101908152919050565b81516001600160401b0381111561326257613262612dc8565b613276816132708454612fc9565b846130c6565b602080601f8311600181146132ab57600084156132935750858301515b600019600386901b1c1916600185901b178555611ba4565b600085815260208120601f198616915b828110156132da578886015182559484019460019091019084016132bb565b50858210156132f85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff81811683821601908111156106b0576106b0612f58565b80820281158282048414176106b0576106b0612f58565b634e487b7160e01b600052601260045260246000fd5b60008261335d5761335d613338565b500690565b60008261337157613371613338565b50049056fea2646970667358221220b223aedf487af06b50c66aa06d4df87eea5b0f370e79b997e35a6896b12b005164736f6c63430008190033