eth-erc721

ERC-721 'NFT' token interface with example developer badge token contract
Log | Files | Refs | LICENSE

commit a1ccdaac9590b4dd2f9570b74e8ddcefecc7c93d
parent c96ce4407f1bd914420428d5aa8c29ee6ee2b408
Author: lash <dev@holbrook.no>
Date:   Tue, 21 Mar 2023 20:18:55 +0000

Correct interface signatures

Diffstat:
Mpython/CHANGELOG | 2++
Mpython/eth_badgetoken/data/BadgeToken.bin | 4++--
Mpython/eth_badgetoken/data/BadgeToken.metadata.json | 2+-
Mpython/setup.cfg | 2+-
Msolidity/BadgeToken.sol | 9+++------
5 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/python/CHANGELOG b/python/CHANGELOG @@ -1,3 +1,5 @@ +- 0.1.3 + * Correct interface signatures in contract (ERC165) - 0.1.2 * Add Badge Token contract metadata - 0.1.1 diff --git a/python/eth_badgetoken/data/BadgeToken.bin b/python/eth_badgetoken/data/BadgeToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200307d3803806200307d833981810160405281019062000037919062000236565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b90816200008891906200050c565b5080600c90816200009a91906200050c565b505050620005f3565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200010c82620000c1565b810181811067ffffffffffffffff821117156200012e576200012d620000d2565b5b80604052505050565b600062000143620000a3565b905062000151828262000101565b919050565b600067ffffffffffffffff821115620001745762000173620000d2565b5b6200017f82620000c1565b9050602081019050919050565b60005b83811015620001ac5780820151818401526020810190506200018f565b60008484015250505050565b6000620001cf620001c98462000156565b62000137565b905082815260208101848484011115620001ee57620001ed620000bc565b5b620001fb8482856200018c565b509392505050565b600082601f8301126200021b576200021a620000b7565b5b81516200022d848260208601620001b8565b91505092915050565b6000806040838503121562000250576200024f620000ad565b5b600083015167ffffffffffffffff811115620002715762000270620000b2565b5b6200027f8582860162000203565b925050602083015167ffffffffffffffff811115620002a357620002a2620000b2565b5b620002b18582860162000203565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200030e57607f821691505b602082108103620003245762000323620002c6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b600060088302620003917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200034f565b6200039d86836200034f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003ea620003e4620003de84620003b5565b620003bf565b620003b5565b9050919050565b6000819050919050565b6200040683620003c9565b6200041e6200041582620003f1565b8484546200035f565b825550505050565b600090565b6200043562000426565b62000442818484620003fb565b505050565b5b818110156200046a576200045e6000826200042b565b60018101905062000448565b5050565b601f821115620004b95762000483816200032a565b6200048e846200033f565b810160208510156200049e578190505b620004b6620004ad856200033f565b83018262000447565b50505b505050565b60008160020a8304905092915050565b6000620004e160001984600802620004be565b1980831691505092915050565b6000620004fc8383620004ce565b9150826002028217905092915050565b6200051782620002bb565b67ffffffffffffffff811115620005335762000532620000d2565b5b6200053f8254620002f5565b6200054c8282856200046e565b600060209050601f8311600181146200058457600084156200056f578287015190505b6200057b8582620004ee565b865550620005eb565b601f19841662000594866200032a565b60005b82811015620005be5784890151825560018201915060208501945060208101905062000597565b86831015620005de5784890151620005da601f891682620004ce565b8355505b6001600288020188555050505b505050505050565b612a7a80620006036000396000f3fe608060405260043610610152576000357c0100000000000000000000000000000000000000000000000000000000900480636352211e116100c8578063b88d4fde1161008c578063b88d4fde14610468578063c793c6c114610484578063c87b56dd146104c1578063c9796c39146104fe578063e985e9c51461053b578063f2fde38b1461057857610152565b80636352211e1461036f57806370a08231146103ac5780638da5cb5b146103e957806395d89b4114610414578063a22cb4651461043f57610152565b806323b872dd1161011a57806323b872dd146102435780632f745c591461025f57806342842e0e1461029c578063449a52f8146102b85780634f6ccce7146102f557806350a1676e1461033257610152565b806301ffc9a71461015757806306fdde0314610194578063081812fc146101bf578063095ea7b3146101fc57806318160ddd14610218575b600080fd5b34801561016357600080fd5b5061017e60048036038101906101799190612230565b6105b5565b60405161018b9190612278565b60405180910390f35b3480156101a057600080fd5b506101a96107ad565b6040516101b69190612323565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e1919061237b565b61083b565b6040516101f391906123e9565b60405180910390f35b61021660048036038101906102119190612430565b610878565b005b34801561022457600080fd5b5061022d610994565b60405161023a919061247f565b60405180910390f35b61025d6004803603810190610258919061249a565b6109a1565b005b34801561026b57600080fd5b5061028660048036038101906102819190612430565b610a10565b604051610293919061247f565b60405180910390f35b6102b660048036038101906102b1919061249a565b610ac1565b005b3480156102c457600080fd5b506102df60048036038101906102da9190612430565b610b30565b6040516102ec9190612278565b60405180910390f35b34801561030157600080fd5b5061031c6004803603810190610317919061237b565b610e0a565b604051610329919061247f565b60405180910390f35b34801561033e57600080fd5b506103596004803603810190610354919061237b565b610e32565b604051610366919061247f565b60405180910390f35b34801561037b57600080fd5b506103966004803603810190610391919061237b565b610e72565b6040516103a391906123e9565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce91906124ed565b610eaf565b6040516103e0919061247f565b60405180910390f35b3480156103f557600080fd5b506103fe610ef8565b60405161040b91906123e9565b60405180910390f35b34801561042057600080fd5b50610429610f1c565b6040516104369190612323565b60405180910390f35b34801561044b57600080fd5b5061046660048036038101906104619190612546565b610faa565b005b610482600480360381019061047d91906126bb565b61124c565b005b34801561049057600080fd5b506104ab60048036038101906104a691906124ed565b611370565b6040516104b8919061247f565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e3919061237b565b611388565b6040516104f59190612323565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190612774565b6113ce565b6040516105329190612323565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d91906127a1565b6119e9565b60405161056f9190612278565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a91906124ed565b611a81565b6040516105ac9190612278565b60405180910390f35b60006380ac58cd7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361060957600190506107a8565b635b5e139f7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361065b57600190506107a8565b63780e9d637c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036106ad57600190506107a8565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036106ff57600190506107a8565b63f1b0aa157c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361075157600190506107a8565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036107a357600190506107a8565b600090505b919050565b600b80546107ba90612810565b80601f01602080910402602001604051908101604052809291908181526020018280546107e690612810565b80156108335780601f1061080857610100808354040283529160200191610833565b820191906000526020600020905b81548152906001019060200180831161081657829003601f168201915b505050505081565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e357600080fd5b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600180549050905090565b60606109af84848484611c37565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210610a5d57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610aae57610aad612841565b5b9060005260206000200154905092915050565b6060610acf84848484611c37565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8a57600080fd5b600060036000848152602001908152602001600020541480610bb157506000600180549050145b610bba57600080fd5b600080600180549050915083905060018190806001815401808255809150506001900390600052602060002001600090919091909150558160036000838152602001908152602001600020819055506002439080600181540180825580915050600190039060005260206000200160009091909190915055846004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360066000600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050815260200190815260200160002081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190915055600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d949061289f565b91905055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f886604051610df6919061247f565b60405180910390a360019250505092915050565b600060018281548110610e2057610e1f612841565b5b90600052602060002001549050919050565b6000806003600084815260200190815260200160002054905060028181548110610e5f57610e5e612841565b5b9060005260206000200154915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8054610f2990612810565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5590612810565b8015610fa25780601f10610f7757610100808354040283529160200191610fa2565b820191906000526020600020905b815481529060010190602001808311610f8557829003601f168201915b505050505081565b80156110cb57600073ffffffffffffffffffffffffffffffffffffffff16600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104857600080fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111e3565b600073ffffffffffffffffffffffffffffffffffffffff16600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361116357600080fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112409190612278565b60405180910390a35050565b61125884848484611c37565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f75c9e114f073c346aac7d1d7e9a3c3c14edabcdd27de07d1d9e425f45d318c5e600a60008781526020019081526020016000206001600a60008981526020019081526020016000208054905061133991906128e7565b8154811061134a57611349612841565b5b9060005260206000200154604051611362919061292a565b60405180910390a450505050565b60076020528060005260406000206000915090505481565b60606113c760016003600085815260200190815260200160002054815481106113b4576113b3612841565b5b90600052602060002001546001026113ce565b9050919050565b606080600080604767ffffffffffffffff8111156113ef576113ee612590565b5b6040519080825280601f01601f1916602001820160405280156114215781602001600182028036833780820191505090505b5092507f73000000000000000000000000000000000000000000000000000000000000008360008151811061145957611458612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f6800000000000000000000000000000000000000000000000000000000000000836001815181106114bd576114bc612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f61000000000000000000000000000000000000000000000000000000000000008360028151811061152157611520612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f32000000000000000000000000000000000000000000000000000000000000008360038151811061158557611584612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f3500000000000000000000000000000000000000000000000000000000000000836004815181106115e9576115e8612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f36000000000000000000000000000000000000000000000000000000000000008360058151811061164d5761164c612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f3a00000000000000000000000000000000000000000000000000000000000000836006815181106116b1576116b0612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506007905060005b60208110156119dd57600460f087836020811061170757611706612841565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff1610156117df576030836117769190612952565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106117ab576117aa612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611851565b6057836117ec9190612952565b7f01000000000000000000000000000000000000000000000000000000000000000284838151811061182157611820612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f86826020811061186657611865612841565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff16101561193d576030836118c89190612952565b7f010000000000000000000000000000000000000000000000000000000000000002846001846118f89190612987565b8151811061190957611908612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506119bb565b60578361194a9190612952565b7f0100000000000000000000000000000000000000000000000000000000000000028460018461197a9190612987565b8151811061198b5761198a612841565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6002826119c89190612987565b915080806119d59061289f565b9150506116e7565b50829350505050919050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611adc57600080fd5b606060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015611b9057611b7d8387848481548110611b6c57611b6b612841565b5b906000526020600020015487611c37565b8080611b889061289f565b915050611b48565b50846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360019350505050919050565b60006004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508473ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cda57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611e0e573373ffffffffffffffffffffffffffffffffffffffff166008600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611e0457503373ffffffffffffffffffffffffffffffffffffffff16600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611e0d57600080fd5b5b60006008600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611eef91906128e7565b81548110611f0057611eff612841565b5b9060005260206000200154600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600660008681526020019081526020016000205481548110611f6f57611f6e612841565b5b9060005260206000200181905550600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611fcd906129bb565b9190505550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190915055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906120889061289f565b9190505550836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b82518110156121bc578281815181106120fe576120fd612841565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600a600086815260200190815260200160002060208361218a9190612a13565b8154811061219b5761219a612841565b5b906000526020600020018190555080806121b49061289f565b9150506120e2565b505050505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61220d816121d8565b811461221857600080fd5b50565b60008135905061222a81612204565b92915050565b600060208284031215612246576122456121ce565b5b60006122548482850161221b565b91505092915050565b60008115159050919050565b6122728161225d565b82525050565b600060208201905061228d6000830184612269565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122cd5780820151818401526020810190506122b2565b60008484015250505050565b6000601f19601f8301169050919050565b60006122f582612293565b6122ff818561229e565b935061230f8185602086016122af565b612318816122d9565b840191505092915050565b6000602082019050818103600083015261233d81846122ea565b905092915050565b6000819050919050565b61235881612345565b811461236357600080fd5b50565b6000813590506123758161234f565b92915050565b600060208284031215612391576123906121ce565b5b600061239f84828501612366565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123d3826123a8565b9050919050565b6123e3816123c8565b82525050565b60006020820190506123fe60008301846123da565b92915050565b61240d816123c8565b811461241857600080fd5b50565b60008135905061242a81612404565b92915050565b60008060408385031215612447576124466121ce565b5b60006124558582860161241b565b925050602061246685828601612366565b9150509250929050565b61247981612345565b82525050565b60006020820190506124946000830184612470565b92915050565b6000806000606084860312156124b3576124b26121ce565b5b60006124c18682870161241b565b93505060206124d28682870161241b565b92505060406124e386828701612366565b9150509250925092565b600060208284031215612503576125026121ce565b5b60006125118482850161241b565b91505092915050565b6125238161225d565b811461252e57600080fd5b50565b6000813590506125408161251a565b92915050565b6000806040838503121561255d5761255c6121ce565b5b600061256b8582860161241b565b925050602061257c85828601612531565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125c8826122d9565b810181811067ffffffffffffffff821117156125e7576125e6612590565b5b80604052505050565b60006125fa6121c4565b905061260682826125bf565b919050565b600067ffffffffffffffff82111561262657612625612590565b5b61262f826122d9565b9050602081019050919050565b82818337600083830152505050565b600061265e6126598461260b565b6125f0565b90508281526020810184848401111561267a5761267961258b565b5b61268584828561263c565b509392505050565b600082601f8301126126a2576126a1612586565b5b81356126b284826020860161264b565b91505092915050565b600080600080608085870312156126d5576126d46121ce565b5b60006126e38782880161241b565b94505060206126f48782880161241b565b935050604061270587828801612366565b925050606085013567ffffffffffffffff811115612726576127256121d3565b5b6127328782880161268d565b91505092959194509250565b6000819050919050565b6127518161273e565b811461275c57600080fd5b50565b60008135905061276e81612748565b92915050565b60006020828403121561278a576127896121ce565b5b60006127988482850161275f565b91505092915050565b600080604083850312156127b8576127b76121ce565b5b60006127c68582860161241b565b92505060206127d78582860161241b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061282857607f821691505b60208210810361283b5761283a6127e1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128aa82612345565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128dc576128db612870565b5b600182019050919050565b60006128f282612345565b91506128fd83612345565b925082820390508181111561291557612914612870565b5b92915050565b6129248161273e565b82525050565b600060208201905061293f600083018461291b565b92915050565b600060ff82169050919050565b600061295d82612945565b915061296883612945565b9250828201905060ff81111561298157612980612870565b5b92915050565b600061299282612345565b915061299d83612345565b92508282019050808211156129b5576129b4612870565b5b92915050565b60006129c682612345565b9150600082036129d9576129d8612870565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a1e82612345565b9150612a2983612345565b925082612a3957612a386129e4565b5b82820690509291505056fea26469706673582212204305ff2a0513a86fec10bb960dc2604b256e38064f691660a31a3278d71f275c64736f6c63430008120033 -\ No newline at end of file +60806040523480156200001157600080fd5b506040516200302b3803806200302b833981810160405281019062000037919062000236565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b90816200008891906200050c565b5080600c90816200009a91906200050c565b505050620005f3565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200010c82620000c1565b810181811067ffffffffffffffff821117156200012e576200012d620000d2565b5b80604052505050565b600062000143620000a3565b905062000151828262000101565b919050565b600067ffffffffffffffff821115620001745762000173620000d2565b5b6200017f82620000c1565b9050602081019050919050565b60005b83811015620001ac5780820151818401526020810190506200018f565b60008484015250505050565b6000620001cf620001c98462000156565b62000137565b905082815260208101848484011115620001ee57620001ed620000bc565b5b620001fb8482856200018c565b509392505050565b600082601f8301126200021b576200021a620000b7565b5b81516200022d848260208601620001b8565b91505092915050565b6000806040838503121562000250576200024f620000ad565b5b600083015167ffffffffffffffff811115620002715762000270620000b2565b5b6200027f8582860162000203565b925050602083015167ffffffffffffffff811115620002a357620002a2620000b2565b5b620002b18582860162000203565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200030e57607f821691505b602082108103620003245762000323620002c6565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b600060088302620003917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200034f565b6200039d86836200034f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003ea620003e4620003de84620003b5565b620003bf565b620003b5565b9050919050565b6000819050919050565b6200040683620003c9565b6200041e6200041582620003f1565b8484546200035f565b825550505050565b600090565b6200043562000426565b62000442818484620003fb565b505050565b5b818110156200046a576200045e6000826200042b565b60018101905062000448565b5050565b601f821115620004b95762000483816200032a565b6200048e846200033f565b810160208510156200049e578190505b620004b6620004ad856200033f565b83018262000447565b50505b505050565b60008160020a8304905092915050565b6000620004e160001984600802620004be565b1980831691505092915050565b6000620004fc8383620004ce565b9150826002028217905092915050565b6200051782620002bb565b67ffffffffffffffff811115620005335762000532620000d2565b5b6200053f8254620002f5565b6200054c8282856200046e565b600060209050601f8311600181146200058457600084156200056f578287015190505b6200057b8582620004ee565b865550620005eb565b601f19841662000594866200032a565b60005b82811015620005be5784890151825560018201915060208501945060208101905062000597565b86831015620005de5784890151620005da601f891682620004ce565b8355505b6001600288020188555050505b505050505050565b612a2880620006036000396000f3fe608060405260043610610152576000357c0100000000000000000000000000000000000000000000000000000000900480636352211e116100c8578063b88d4fde1161008c578063b88d4fde14610468578063c793c6c114610484578063c87b56dd146104c1578063c9796c39146104fe578063e985e9c51461053b578063f2fde38b1461057857610152565b80636352211e1461036f57806370a08231146103ac5780638da5cb5b146103e957806395d89b4114610414578063a22cb4651461043f57610152565b806323b872dd1161011a57806323b872dd146102435780632f745c591461025f57806342842e0e1461029c578063449a52f8146102b85780634f6ccce7146102f557806350a1676e1461033257610152565b806301ffc9a71461015757806306fdde0314610194578063081812fc146101bf578063095ea7b3146101fc57806318160ddd14610218575b600080fd5b34801561016357600080fd5b5061017e600480360381019061017991906121de565b6105b5565b60405161018b9190612226565b60405180910390f35b3480156101a057600080fd5b506101a961075b565b6040516101b691906122d1565b60405180910390f35b3480156101cb57600080fd5b506101e660048036038101906101e19190612329565b6107e9565b6040516101f39190612397565b60405180910390f35b610216600480360381019061021191906123de565b610826565b005b34801561022457600080fd5b5061022d610942565b60405161023a919061242d565b60405180910390f35b61025d60048036038101906102589190612448565b61094f565b005b34801561026b57600080fd5b50610286600480360381019061028191906123de565b6109be565b604051610293919061242d565b60405180910390f35b6102b660048036038101906102b19190612448565b610a6f565b005b3480156102c457600080fd5b506102df60048036038101906102da91906123de565b610ade565b6040516102ec9190612226565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190612329565b610db8565b604051610329919061242d565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190612329565b610de0565b604051610366919061242d565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612329565b610e20565b6040516103a39190612397565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061249b565b610e5d565b6040516103e0919061242d565b60405180910390f35b3480156103f557600080fd5b506103fe610ea6565b60405161040b9190612397565b60405180910390f35b34801561042057600080fd5b50610429610eca565b60405161043691906122d1565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906124f4565b610f58565b005b610482600480360381019061047d9190612669565b6111fa565b005b34801561049057600080fd5b506104ab60048036038101906104a6919061249b565b61131e565b6040516104b8919061242d565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190612329565b611336565b6040516104f591906122d1565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190612722565b61137c565b60405161053291906122d1565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d919061274f565b611997565b60405161056f9190612226565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a919061249b565b611a2f565b6040516105ac9190612226565b60405180910390f35b600063c22876c37c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036106095760019050610756565b63d283ef1d7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361065b5760019050610756565b63dd9d20877c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036106ad5760019050610756565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036106ff5760019050610756565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036107515760019050610756565b600090505b919050565b600b8054610768906127be565b80601f0160208091040260200160405190810160405280929190818152602001828054610794906127be565b80156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b505050505081565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089157600080fd5b816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000600180549050905090565b606061095d84848484611be5565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210610a0b57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610a5c57610a5b6127ef565b5b9060005260206000200154905092915050565b6060610a7d84848484611be5565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60003373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3857600080fd5b600060036000848152602001908152602001600020541480610b5f57506000600180549050145b610b6857600080fd5b600080600180549050915083905060018190806001815401808255809150506001900390600052602060002001600090919091909150558160036000838152602001908152602001600020819055506002439080600181540180825580915050600190039060005260206000200160009091909190915055846004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360066000600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050815260200190815260200160002081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190915055600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d429061284d565b91905055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f886604051610da4919061242d565b60405180910390a360019250505092915050565b600060018281548110610dce57610dcd6127ef565b5b90600052602060002001549050919050565b6000806003600084815260200190815260200160002054905060028181548110610e0d57610e0c6127ef565b5b9060005260206000200154915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c8054610ed7906127be565b80601f0160208091040260200160405190810160405280929190818152602001828054610f03906127be565b8015610f505780601f10610f2557610100808354040283529160200191610f50565b820191906000526020600020905b815481529060010190602001808311610f3357829003601f168201915b505050505081565b801561107957600073ffffffffffffffffffffffffffffffffffffffff16600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff657600080fd5b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611191565b600073ffffffffffffffffffffffffffffffffffffffff16600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361111157600080fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111ee9190612226565b60405180910390a35050565b61120684848484611be5565b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f75c9e114f073c346aac7d1d7e9a3c3c14edabcdd27de07d1d9e425f45d318c5e600a60008781526020019081526020016000206001600a6000898152602001908152602001600020805490506112e79190612895565b815481106112f8576112f76127ef565b5b906000526020600020015460405161131091906128d8565b60405180910390a450505050565b60076020528060005260406000206000915090505481565b60606113756001600360008581526020019081526020016000205481548110611362576113616127ef565b5b906000526020600020015460010261137c565b9050919050565b606080600080604767ffffffffffffffff81111561139d5761139c61253e565b5b6040519080825280601f01601f1916602001820160405280156113cf5781602001600182028036833780820191505090505b5092507f730000000000000000000000000000000000000000000000000000000000000083600081518110611407576114066127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f68000000000000000000000000000000000000000000000000000000000000008360018151811061146b5761146a6127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f6100000000000000000000000000000000000000000000000000000000000000836002815181106114cf576114ce6127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f320000000000000000000000000000000000000000000000000000000000000083600381518110611533576115326127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f350000000000000000000000000000000000000000000000000000000000000083600481518110611597576115966127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f3600000000000000000000000000000000000000000000000000000000000000836005815181106115fb576115fa6127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f3a000000000000000000000000000000000000000000000000000000000000008360068151811061165f5761165e6127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506007905060005b602081101561198b57600460f08783602081106116b5576116b46127ef565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000027f010000000000000000000000000000000000000000000000000000000000000090041660ff16908060020a82049150509250600a8360ff16101561178d576030836117249190612900565b7f010000000000000000000000000000000000000000000000000000000000000002848381518110611759576117586127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506117ff565b60578361179a9190612900565b7f0100000000000000000000000000000000000000000000000000000000000000028483815181106117cf576117ce6127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b600f868260208110611814576118136127ef565b5b1a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004169250600a8360ff1610156118eb576030836118769190612900565b7f010000000000000000000000000000000000000000000000000000000000000002846001846118a69190612935565b815181106118b7576118b66127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611969565b6057836118f89190612900565b7f010000000000000000000000000000000000000000000000000000000000000002846001846119289190612935565b81518110611939576119386127ef565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505b6002826119769190612935565b915080806119839061284d565b915050611695565b50829350505050919050565b60008173ffffffffffffffffffffffffffffffffffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a8a57600080fd5b606060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015611b3e57611b2b8387848481548110611b1a57611b196127ef565b5b906000526020600020015487611be5565b8080611b369061284d565b915050611af6565b50846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360019350505050919050565b60006004600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508473ffffffffffffffffffffffffffffffffffffffff166004600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611dbc573373ffffffffffffffffffffffffffffffffffffffff166008600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611db257503373ffffffffffffffffffffffffffffffffffffffff16600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611dbb57600080fd5b5b60006008600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611e9d9190612895565b81548110611eae57611ead6127ef565b5b9060005260206000200154600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600660008681526020019081526020016000205481548110611f1d57611f1c6127ef565b5b9060005260206000200181905550600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611f7b90612969565b9190505550600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190915055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906120369061284d565b9190505550836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b825181101561216a578281815181106120ac576120ab6127ef565b5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600a600086815260200190815260200160002060208361213891906129c1565b81548110612149576121486127ef565b5b906000526020600020018190555080806121629061284d565b915050612090565b505050505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6121bb81612186565b81146121c657600080fd5b50565b6000813590506121d8816121b2565b92915050565b6000602082840312156121f4576121f361217c565b5b6000612202848285016121c9565b91505092915050565b60008115159050919050565b6122208161220b565b82525050565b600060208201905061223b6000830184612217565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561227b578082015181840152602081019050612260565b60008484015250505050565b6000601f19601f8301169050919050565b60006122a382612241565b6122ad818561224c565b93506122bd81856020860161225d565b6122c681612287565b840191505092915050565b600060208201905081810360008301526122eb8184612298565b905092915050565b6000819050919050565b612306816122f3565b811461231157600080fd5b50565b600081359050612323816122fd565b92915050565b60006020828403121561233f5761233e61217c565b5b600061234d84828501612314565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061238182612356565b9050919050565b61239181612376565b82525050565b60006020820190506123ac6000830184612388565b92915050565b6123bb81612376565b81146123c657600080fd5b50565b6000813590506123d8816123b2565b92915050565b600080604083850312156123f5576123f461217c565b5b6000612403858286016123c9565b925050602061241485828601612314565b9150509250929050565b612427816122f3565b82525050565b6000602082019050612442600083018461241e565b92915050565b6000806000606084860312156124615761246061217c565b5b600061246f868287016123c9565b9350506020612480868287016123c9565b925050604061249186828701612314565b9150509250925092565b6000602082840312156124b1576124b061217c565b5b60006124bf848285016123c9565b91505092915050565b6124d18161220b565b81146124dc57600080fd5b50565b6000813590506124ee816124c8565b92915050565b6000806040838503121561250b5761250a61217c565b5b6000612519858286016123c9565b925050602061252a858286016124df565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61257682612287565b810181811067ffffffffffffffff821117156125955761259461253e565b5b80604052505050565b60006125a8612172565b90506125b4828261256d565b919050565b600067ffffffffffffffff8211156125d4576125d361253e565b5b6125dd82612287565b9050602081019050919050565b82818337600083830152505050565b600061260c612607846125b9565b61259e565b90508281526020810184848401111561262857612627612539565b5b6126338482856125ea565b509392505050565b600082601f8301126126505761264f612534565b5b81356126608482602086016125f9565b91505092915050565b600080600080608085870312156126835761268261217c565b5b6000612691878288016123c9565b94505060206126a2878288016123c9565b93505060406126b387828801612314565b925050606085013567ffffffffffffffff8111156126d4576126d3612181565b5b6126e08782880161263b565b91505092959194509250565b6000819050919050565b6126ff816126ec565b811461270a57600080fd5b50565b60008135905061271c816126f6565b92915050565b6000602082840312156127385761273761217c565b5b60006127468482850161270d565b91505092915050565b600080604083850312156127665761276561217c565b5b6000612774858286016123c9565b9250506020612785858286016123c9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127d657607f821691505b6020821081036127e9576127e861278f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612858826122f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361288a5761288961281e565b5b600182019050919050565b60006128a0826122f3565b91506128ab836122f3565b92508282039050818111156128c3576128c261281e565b5b92915050565b6128d2816126ec565b82525050565b60006020820190506128ed60008301846128c9565b92915050565b600060ff82169050919050565b600061290b826128f3565b9150612916836128f3565b9250828201905060ff81111561292f5761292e61281e565b5b92915050565b6000612940826122f3565b915061294b836122f3565b92508282019050808211156129635761296261281e565b5b92915050565b6000612974826122f3565b9150600082036129875761298661281e565b5b600182039050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129cc826122f3565b91506129d7836122f3565b9250826129e7576129e6612992565b5b82820690509291505056fea264697066735822122068d2adbd8b8bf35aef329cb804cbfc33f3ac3c8ea8dc9482f229473aae408c1164736f6c63430008120033 +\ No newline at end of file diff --git a/python/eth_badgetoken/data/BadgeToken.metadata.json b/python/eth_badgetoken/data/BadgeToken.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"createdAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenOwnerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"BadgeToken.sol":"BadgeToken"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"BadgeToken.sol":{"keccak256":"0x5dccb4d1188099581e90751f2035c85747f47b12098363bdee18e75e233f984b","license":"GPL-3.0-or-later","urls":["bzz-raw://c5987a612c3037dd3c531719b0d7dfc7dba7a24fc1383a10f6d359d47f8aaa74","dweb:/ipfs/QmNPjh7UcfmbFM3yLut9HSBSn3chmuRNzQLGn4zw8xaXBp"]}},"version":1} +{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":false,"internalType":"bool","name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"TransferWithData","type":"event"},{"inputs":[{"internalType":"address","name":"_approved","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"createdAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_data","type":"bytes32"}],"name":"toURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenOwnerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"BadgeToken.sol":"BadgeToken"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"BadgeToken.sol":{"keccak256":"0x75a42566d147f8c89e77393bf98863dae6b0d2522773ad9cfc6c716f20fccba0","license":"GPL-3.0-or-later","urls":["bzz-raw://9aa400e79d556e7ffc8934a6e9657282c79a2f1d229785fd4ea0721e909648ec","dweb:/ipfs/QmXsgkCF54XciuH46gkxYPXtb2vaPamxi5w6R8drqioL7y"]}},"version":1} diff --git a/python/setup.cfg b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eth-erc721 -version = 0.1.2 +version = 0.1.3 description = ERC721 interface and simple contract with deployment script providing arbitrary minting of NFTs with freely settable tokenids author = Louis Holbrook author_email = dev@holbrook.no diff --git a/solidity/BadgeToken.sol b/solidity/BadgeToken.sol @@ -250,21 +250,18 @@ contract BadgeToken { // EIP-165 function supportsInterface(bytes4 interfaceID) external pure returns (bool) { - if (interfaceID == 0x80ac58cd) { // EIP 721 + if (interfaceID == 0xc22876c3) { // EIP 721 return true; } - if (interfaceID == 0x5b5e139f) { // EIP 721 (Metadata - optional) + if (interfaceID == 0xd283ef1d) { // EIP 721 (Metadata - optional) return true; } - if (interfaceID == 0x780e9d63) { // EIP 721 (Enumerable - optional) + if (interfaceID == 0xdd9d2087) { // EIP 721 (Enumerable - optional) return true; } if (interfaceID == 0x449a52f8) { // Minter return true; } - if (interfaceID == 0xf1b0aa15) { // FungibleMinter - return true; - } if (interfaceID == 0x01ffc9a7) { // EIP 165 return true; }