0 txs
0 calls
constructor
No constructor.
functions
featureMetadata
viewfunction featureMetadata(bytes32) view returns (uint32 currentSize, uint32 numFinalized, bytes24 log)
featureTraitId
purefunction featureTraitId(uint32 _projectId, string _featureName, string _traitValue, uint32 _version) pure returns (bytes32)
featureTraitInfo
viewfunction featureTraitInfo(bytes32) view returns (address tokenContract, uint32 projectId, string featureName, string traitValue)
hasTrait
viewfunction hasTrait(address _tokenContract, uint256 _tokenId, bytes _trait) view returns (bool)
oracleSigner
viewfunction oracleSigner() view returns (address)
owner
viewfunction owner() view returns (address)
projectTraitId
purefunction projectTraitId(uint32 _projectId, uint32 _version) pure returns (bytes32)
projectTraitInfo
viewfunction projectTraitInfo(bytes32) view returns (address tokenContract, uint32 projectId, uint32 size, string name)
supportsInterface
purefunction supportsInterface(bytes4 _interfaceId) pure returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeatureInfo
nonpayablefunction setFeatureInfo(tuple _msg, bytes _signature, uint8 _signatureKind)
setOracleSigner
nonpayablefunction setOracleSigner(address _oracleSigner)
setProjectInfo
nonpayablefunction setProjectInfo(tuple _msg, bytes _signature, uint8 _signatureKind)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateTrait
nonpayablefunction updateTrait(tuple _msg, bytes _signature, uint8 _signatureKind)
events
FeatureInfoSet
event FeatureInfoSet(bytes32 indexed traitId, uint32 indexed projectId, string indexed nameAndValue, string featureName, string traitValue, uint32 version, address tokenContract)
OracleSignerChanged
event OracleSignerChanged(address indexed oracleSigner)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ProjectInfoSet
event ProjectInfoSet(bytes32 indexed traitId, uint32 indexed projectId, string name, uint32 version, uint32 size, address tokenContract)
TraitUpdated
event TraitUpdated(bytes32 indexed traitId, uint32 newSize, uint32 newNumFinalized, bytes24 newLog)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61319b806200007f6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063a18470ef11610066578063a18470ef1461029b578063b887face146102be578063e6edc43f146102df578063f2fde38b146102f257600080fd5b8063715018a61461024f57806378da0eb6146102575780638da5cb5b1461026a57806394d487b71461028857600080fd5b80631ddcc8da116100d35780631ddcc8da146101f157806328bff9db146102065780635172a71f14610219578063660fff8d1461023c57600080fd5b806301ffc9a7146100fa5780630f9dd05c146101225780631709a61b146101ac575b600080fd5b61010d61010836600461259d565b610305565b60405190151581526020015b60405180910390f35b6101676101303660046125df565b600560205260009081526040908190205463ffffffff80821692640100000000830490911691680100000000000000009004901b83565b6040805163ffffffff94851681529390921660208401527fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001690820152606001610119565b6001546101cc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b6102046101ff3660046127bd565b6103b3565b005b6102046102143660046128b8565b61075f565b61022c6102273660046125df565b61084e565b604051610119949392919061294f565b61020461024a366004612994565b610948565b610204610e14565b610204610265366004612aaf565b610ea1565b60005473ffffffffffffffffffffffffffffffffffffffff166101cc565b61010d610296366004612b4a565b61121b565b6102ae6102a93660046125df565b6112b2565b6040516101199493929190612bd3565b6102d16102cc366004612c2b565b611399565b604051908152602001610119565b6102d16102ed366004612c5e565b611414565b6102046103003660046128b8565b611496565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f94d487b700000000000000000000000000000000000000000000000000000000141561035957506001919050565b7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014156103ab57506001919050565b506000919050565b6103c66103bf846115c6565b83836116d6565b600073ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602181526020016131456021913990610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b60405180910390fd5b50606083015151151560405180606001604052806021815260200161314560219139906104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b5060808301515115156040518060600160405280602181526020016131456021913990610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b5060006105288460400151856060015186608001518760000151611414565b600081815260036020908152604091829020548251808401909352601f83527f417274626c6f636b734f7261636c653a20414c52454144595f45584953545300918301919091529192509073ffffffffffffffffffffffffffffffffffffffff16156105c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b50604080516080808201835260208088015173ffffffffffffffffffffffffffffffffffffffff90811684528885015163ffffffff9081168386019081526060808c0151878901908152958c0151908701526000888152600385529690962085518154975190921674010000000000000000000000000000000000000000027fffffffffffffffff0000000000000000000000000000000000000000000000009097169190921617949094178455905180519293926106869260018501920190612504565b50606082015180516106a2916002840191602090910190612504565b505050606084015160808501516040516106c0929190602001612cf6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526106f891612d4e565b6040518091039020846040015163ffffffff16827f29897f82da50b0013da3d853032b3389bad321a4187d49ea3d1b9034f3d0b9138760600151886080015189600001518a602001516040516107519493929190612d6a565b60405180910390a450505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044c565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517eb26dea850e8f7abcee9d808c73344495b426cad63203ec479242fe2bd8013990600090a250565b6002602052600090815260409020805460018201805473ffffffffffffffffffffffffffffffffffffffff83169363ffffffff74010000000000000000000000000000000000000000850481169478010000000000000000000000000000000000000000000000009004169290916108c590612dc3565b80601f01602080910402602001604051908101604052809291908181526020018280546108f190612dc3565b801561093e5780601f106109135761010080835404028352916020019161093e565b820191906000526020600020905b81548152906001019060200180831161092157829003601f168201915b5050505050905084565b6000610953846117f8565b90506109608184846116d6565b835160008181526003602090815260409182902054825160608101909352602180845273ffffffffffffffffffffffffffffffffffffffff9091161515929161314590830139906109de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b506000818152600560209081526040918290208251606081018452905463ffffffff80821683526401000000008204811693830184905268010000000000000000909104841b7fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016828501529288015190928116821015610af3578091506000886040015190508067ffffffffffffffff1916846040015167ffffffffffffffff1916146040518060400160405280601e81526020017f417274626c6f636b734f7261636c653a20494e56414c49445f5354415445000081525090610af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b50505b825160005b896020015151811015610c1e5760008a602001518281518110610b1d57610b1d612e17565b602090810291909101810151805160008a8152600484526040808220838352855281205483850151948b015193955091939192831990921691610b609085611856565b60408051808201909152601a81527f417274626c6f636b734f7261636c653a20494d4d555441424c45000000000000602082015290831691508115610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b5060008b815260046020908152604080832087845290915290208383179055610bfa826118b4565b610c049088612e75565b965050505050508080610c1690612e9d565b915050610af8565b506000846000015163ffffffff168263ffffffff16148015610c4f5750846020015163ffffffff168463ffffffff16145b90508015610c635750505050505050505050565b60408581015181517fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008216602082015291820189905290600090606001604051602081830303815290604052805190602001209050600060405180606001604052808663ffffffff1681526020018863ffffffff1681526020018367ffffffffffffffff1916815250905080600560008b815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160086101000a81548177ffffffffffffffffffffffffffffffffffffffffffffffff021916908360401c0217905550905050887f48d6c06b3d8d5c9d72c23c6e09739c9993b52e7c5df425e0882f2719aa12c189868985604051610dfd9392919063ffffffff93841681529190921660208201527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000091909116604082015260600190565b60405180910390a250505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044c565b610e9f6000611b12565b565b610ead6103bf84611b87565b6000836060015163ffffffff16116040518060600160405280602181526020016131456021913990610f0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b50600073ffffffffffffffffffffffffffffffffffffffff16836020015173ffffffffffffffffffffffffffffffffffffffff1614156040518060600160405280602181526020016131456021913990610f93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b5060808301515115156040518060600160405280602181526020016131456021913990610fed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b50600061100284604001518560000151611399565b600081815260026020908152604091829020548251808401909352601f83527f417274626c6f636b734f7261636c653a20414c52454144595f4558495354530091830191909152919250907801000000000000000000000000000000000000000000000000900463ffffffff16156110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b50604080516080808201835260208088015173ffffffffffffffffffffffffffffffffffffffff90811684528885015163ffffffff9081168386019081526060808c01518316878901908152958c015190870190815260008981526002865297909720865181549251965184167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9790941674010000000000000000000000000000000000000000027fffffffffffffffff000000000000000000000000000000000000000000000000909316941693909317179390931692909217825592518051929391926111b89260018501920190612504565b50905050836040015163ffffffff16817f9ee02502b55934a6377aa1ef42d95753b8e4efd5c104f379a5f29cdd38875332866080015187600001518860600151896020015160405161120d9493929190612ed6565b60405180910390a350505050565b6000806112288385612f24565b90508060ff81166112475761123e878784611c5a565b925050506112aa565b60ff81166001141561125e5761123e878784611d27565b604051806060016040528060218152602001613145602191396040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b949350505050565b6003602052600090815260409020805460018201805473ffffffffffffffffffffffffffffffffffffffff8316937401000000000000000000000000000000000000000090930463ffffffff1692919061130b90612dc3565b80601f016020809104026020016040519081016040528092919081815260200182805461133790612dc3565b80156113845780601f1061135957610100808354040283529160200191611384565b820191906000526020600020905b81548152906001019060200180831161136757829003601f168201915b5050505050908060020180546108c590612dc3565b600080600084846040516020016113b293929190612fca565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169150505b92915050565b600080600186868686604051602001611431959493929190612ff6565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179695505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044c565b73ffffffffffffffffffffffffffffffffffffffff81166115ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161044c565b6115c381611b12565b50565b60007fb84d7bb9525366590d5e514a4abda4ac3023d210647bd545ade6b375f0f1282b826000015183602001518460400151856060015160405160200161160d9190612d4e565b6040516020818303038152906040528051906020012086608001516040516020016116389190612d4e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019790975263ffffffff9586169082015273ffffffffffffffffffffffffffffffffffffffff90931660608401529216608082015260a081019190915260c081019190915260e0015b604051602081830303815290604052805190602001209050919050565b600061176561175d604080517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660208201527f6c8875fcce1d309aa935bc0e09c360290394c732d3330d675aa8db7bd02649299181019190915246606082015230608082015260009060a00160405160208183030381529060405280519060200120905090565b858585611df4565b60015460408051808201909152601d81527f417274626c6f636b734f7261636c653a20554e415554484f52495a4544000000602082015291925073ffffffffffffffffffffffffffffffffffffffff8084169116146117f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9190612ce3565b5050505050565b60007f75680d6fbd41c44bd1cd8f9bec62e450d6117898df7b1687e3a74976cfa18317826000015161182d8460200151611f59565b60408086015181516020810195909552908401929092526060830152608082015260a0016116b9565b6000600882901b63ffffffff841681111561187557600091505061140e565b60006118878263ffffffff871661304b565b905060ff81111561189e576000199250505061140e565b6118ab600180831b61304b565b95945050505050565b60007f5555555555555555555555555555555555555555555555555555555555555555600183901c167f5555555555555555555555555555555555555555555555555555555555555555831661190a9190613062565b91507f3333333333333333333333333333333333333333333333333333333333333333600283901c167f333333333333333333333333333333333333333333333333333333333333333383166119609190613062565b91507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f600483901c167f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f83166119b69190613062565b91507eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff600883901c167eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff8316611a0a9190613062565b91507dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff601083901c167dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff8316611a5c9190613062565b91507bffffffff00000000ffffffff00000000ffffffff00000000ffffffff602083901c167bffffffff00000000ffffffff00000000ffffffff00000000ffffffff8316611aaa9190613062565b915077ffffffffffffffff0000000000000000ffffffffffffffff604083901c1677ffffffffffffffff0000000000000000ffffffffffffffff8316611af09190613062565b915061140e608083901c6fffffffffffffffffffffffffffffffff8416613062565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60007ff49b8ee5a0396d720700b2d2fa9384f7dcd3b9e2063cbda42dd8b58bc412fc4d82600001518360200151846040015185606001518660800151604051602001611bd39190612d4e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019790975263ffffffff9586169082015273ffffffffffffffffffffffffffffffffffffffff909316606084015290831660808301529190911660a082015260c081019190915260e0016116b9565b6000818152600260205260408120805473ffffffffffffffffffffffffffffffffffffffff8082169163ffffffff7401000000000000000000000000000000000000000082048116927801000000000000000000000000000000000000000000000000909204169088168314611cd7576000945050505050611d20565b81611ce5620f4240896130a9565b14611cf7576000945050505050611d20565b80611d05620f4240896130bd565b10611d17576000945050505050611d20565b60019450505050505b9392505050565b6000818152600360205260408120805473ffffffffffffffffffffffffffffffffffffffff8082169174010000000000000000000000000000000000000000900463ffffffff169087168214611d835760009350505050611d20565b80611d91620f4240886130a9565b14611da25760009350505050611d20565b6000611db1620f4240836130d1565b611dbb908861304b565b6000878152600460209081526040808320600885901c8452909152902054600160ff9092169190911b1615159450505050509392505050565b6000806001836002811115611e0b57611e0b612f60565b1415611e4b576040805160208101889052908101869052611e44906060016040516020818303038152906040528051906020012061202f565b9050611f45565b6002836002811115611e5f57611e5f612f60565b1415611ebe57604080517f19010000000000000000000000000000000000000000000000000000000000006020808301919091526022820189905260428083018990528351808403909101815260629092019092528051910120611e44565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5369676e6174757265436865636b65723a206e6f207369676e6174757265206760448201527f6976656e00000000000000000000000000000000000000000000000000000000606482015260840161044c565b611f4f818561206a565b9695505050505050565b600080825167ffffffffffffffff811115611f7657611f766125f8565b604051908082528060200260200182016040528015611f9f578160200160208202803683370190505b50905060005b8351811015611fff57611fd0848281518110611fc357611fc3612e17565b602002602001015161208e565b828281518110611fe257611fe2612e17565b602090810291909101015280611ff781612e9d565b915050611fa5565b5080604051602001612011919061310e565b60405160208183030381529060405280519060200120915050919050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016116b9565b600080600061207985856120db565b915091506120868161214b565b509392505050565b80516020808301516040516000936116b9937fe203643163d776bdb28d8e91bef9748af842adcb3c101c2e8a32bacd7499cd93939192019283526020830191909152604082015260600190565b6000808251604114156121125760208301516040840151606085015160001a612106878285856123a4565b94509450505050612144565b82516040141561213c57602083015160408401516121318683836124bc565b935093505050612144565b506000905060025b9250929050565b600081600481111561215f5761215f612f60565b14156121685750565b600181600481111561217c5761217c612f60565b14156121e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161044c565b60028160048111156121f8576121f8612f60565b1415612260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161044c565b600381600481111561227457612274612f60565b1415612302576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161044c565b600481600481111561231657612316612f60565b14156115c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161044c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156123db57506000905060036124b3565b8460ff16601b141580156123f357508460ff16601c14155b1561240457506000905060046124b3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612458573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166124ac576000600192509250506124b3565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831660ff84901c601b016124f6878288856123a4565b935093505050935093915050565b82805461251090612dc3565b90600052602060002090601f0160209004810192826125325760008555612578565b82601f1061254b57805160ff1916838001178555612578565b82800160010185558215612578579182015b8281111561257857825182559160200191906001019061255d565b50612584929150612588565b5090565b5b808211156125845760008155600101612589565b6000602082840312156125af57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2057600080fd5b6000602082840312156125f157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561264a5761264a6125f8565b60405290565b6040516060810167ffffffffffffffff8111828210171561264a5761264a6125f8565b6040805190810167ffffffffffffffff8111828210171561264a5761264a6125f8565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156126dd576126dd6125f8565b604052919050565b803563ffffffff811681146126f957600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146115c357600080fd5b600082601f83011261273157600080fd5b813567ffffffffffffffff81111561274b5761274b6125f8565b61277c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612696565b81815284602083860101111561279157600080fd5b816020850160208301376000918101602001919091529392505050565b8035600381106126f957600080fd5b6000806000606084860312156127d257600080fd5b833567ffffffffffffffff808211156127ea57600080fd5b9085019060a082880312156127fe57600080fd5b612806612627565b61280f836126e5565b8152602083013561281f816126fe565b6020820152612830604084016126e5565b604082015260608301358281111561284757600080fd5b61285389828601612720565b60608301525060808301358281111561286b57600080fd5b61287789828601612720565b6080830152509450602086013591508082111561289357600080fd5b506128a086828701612720565b9250506128af604085016127ae565b90509250925092565b6000602082840312156128ca57600080fd5b8135611d20816126fe565b60005b838110156128f05781810151838201526020016128d8565b838111156128ff576000848401525b50505050565b6000815180845261291d8160208601602086016128d5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff85168152600063ffffffff808616602084015280851660408401525060806060830152611f4f6080830184612905565b6000806000606084860312156129a957600080fd5b833567ffffffffffffffff808211156129c157600080fd5b90850190606082880312156129d557600080fd5b6129dd612650565b82358152602080840135838111156129f457600080fd5b8401601f81018a13612a0557600080fd5b803584811115612a1757612a176125f8565b612a25838260051b01612696565b81815260069190911b8201830190838101908c831115612a4457600080fd5b928401925b82841015612a87576040848e031215612a625760008081fd5b612a6a612673565b843581528585013586820152825260409093019290840190612a49565b8585015250505060409384013593820193909352945090850135908082111561289357600080fd5b600080600060608486031215612ac457600080fd5b833567ffffffffffffffff80821115612adc57600080fd5b9085019060a08288031215612af057600080fd5b612af8612627565b612b01836126e5565b81526020830135612b11816126fe565b6020820152612b22604084016126e5565b6040820152612b33606084016126e5565b606082015260808301358281111561286b57600080fd5b60008060008060608587031215612b6057600080fd5b8435612b6b816126fe565b935060208501359250604085013567ffffffffffffffff80821115612b8f57600080fd5b818701915087601f830112612ba357600080fd5b813581811115612bb257600080fd5b886020828501011115612bc457600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8516815263ffffffff84166020820152608060408201526000612c0e6080830185612905565b8281036060840152612c208185612905565b979650505050505050565b60008060408385031215612c3e57600080fd5b612c47836126e5565b9150612c55602084016126e5565b90509250929050565b60008060008060808587031215612c7457600080fd5b612c7d856126e5565b9350602085013567ffffffffffffffff80821115612c9a57600080fd5b612ca688838901612720565b94506040870135915080821115612cbc57600080fd5b50612cc987828801612720565b925050612cd8606086016126e5565b905092959194509250565b602081526000611d206020830184612905565b60008351612d088184602088016128d5565b7f3a200000000000000000000000000000000000000000000000000000000000009083019081528351612d428160028401602088016128d5565b01600201949350505050565b60008251612d608184602087016128d5565b9190910192915050565b608081526000612d7d6080830187612905565b8281036020840152612d8f8187612905565b91505063ffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b600181811c90821680612dd757607f821691505b60208210811415612e11577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600063ffffffff808316818516808303821115612e9457612e94612e46565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ecf57612ecf612e46565b5060010190565b608081526000612ee96080830187612905565b63ffffffff958616602084015293909416604082015273ffffffffffffffffffffffffffffffffffffffff9190911660609091015292915050565b8035602083101561140e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110612fc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60608101612fd88286612f8f565b63ffffffff8085166020840152808416604084015250949350505050565b6130008187612f8f565b600063ffffffff808716602084015260a0604084015261302360a0840187612905565b83810360608501526130358187612905565b9250508084166080840152509695505050505050565b60008282101561305d5761305d612e46565b500390565b6000821982111561307557613075612e46565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826130b8576130b861307a565b500490565b6000826130cc576130cc61307a565b500690565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561310957613109612e46565b500290565b815160009082906020808601845b838110156131385781518552938201939082019060010161311c565b5092969550505050505056fe417274626c6f636b734f7261636c653a20494e56414c49445f415247554d454e54a2646970667358221220b6ea8ef8fde447b3ad33ce678c9d04d8d68eca91c50219125485e981995bcdaa64736f6c63430008090033