From 1d93ece13e04b5a040dc087a9d5220151ea144bb Mon Sep 17 00:00:00 2001 From: lash Date: Sun, 19 Mar 2023 09:23:51 +0000 Subject: [PATCH] Eliminate solidity compiler warnings --- python/CHANGELOG | 2 ++ .../data/DemurrageTokenSingleNocap.bin | 2 +- .../data/DemurrageTokenSingleNocap.json | 2 +- .../data/DemurrageTokenSingleNocap.metadata.json | 2 +- python/setup.cfg | 2 +- solidity/DemurrageTokenSingleNocap.sol | 12 +++++------- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/python/CHANGELOG b/python/CHANGELOG index 659fbbd..2574ac9 100644 --- a/python/CHANGELOG +++ b/python/CHANGELOG @@ -1,3 +1,5 @@ +- 0.4.1 + * Eliminate solidity compiler warnings - 0.4.0 * Rename taxLevel to decayLevel in contract * Add sweep contract method to fully empty one account into another diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin index 507ff39..86e6df4 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin @@ -1 +1 @@ -6101006040523480156200001257600080fd5b506040516200621c3803806200621c833981810160405281019062000038919062000863565b6801000000000000000083600f0b126200005157600080fd5b6200005b62000578565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660069081620000ad919062000b84565b508560079081620000bf919062000b84565b508460ff16608081815250504260038190555060035460a08181525050603c83620000eb919062000c9a565b60c08181525050620001126001620002a96401000000000262002ee1176401000000009004565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055506200016c84620002d06401000000000262002f07176401000000009004565b600f0b60e081600f0b81525050620001a86000600260009054906101000a9004600f0b6000600162000324640100000000026401000000009004565b90506000819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000ce5565b6000677fffffffffffffff821115620002c157600080fd5b6040829060020a029050919050565b60008082600f0b13620002e257600080fd5b60806fb17217f7d1cf79abc9e3b39803f2f6af6200030f84620003a8640100000000026401000000009004565b600f0b02908060020a82049150509050919050565b6200032e62000578565b6200033862000578565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b60008082600f0b13620003ba57600080fd5b60008083600f0b9050680100000000000000008112620003f6576040819060008212600003808260020a82851804189250505090506040820191505b640100000000811262000425576020819060008212600003808260020a82851804189250505090506020820191505b62010000811262000452576010819060008212600003808260020a82851804189250505090506010820191505b61010081126200047e576008819060008212600003808260020a82851804189250505090506008820191505b60108112620004a9576004819060008212600003808260020a82851804189250505090506004820191505b60048112620004d4576002819060008212600003808260020a82851804189250505090506002820191505b60028112620004e4576001820191505b600060408084039060020a029050600083607f0386600f0b9060020a029050600067800000000000000090505b60008113156200056b578182029150600060ff83908060020a8204915050905080607f0183908060020a8204915050925080820284019350506001819060008212600003808260020a828518041892505050905062000511565b5081945050505050919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200061d82620005d2565b810181811067ffffffffffffffff821117156200063f576200063e620005e3565b5b80604052505050565b600062000654620005b4565b905062000662828262000612565b919050565b600067ffffffffffffffff821115620006855762000684620005e3565b5b6200069082620005d2565b9050602081019050919050565b60005b83811015620006bd578082015181840152602081019050620006a0565b60008484015250505050565b6000620006e0620006da8462000667565b62000648565b905082815260208101848484011115620006ff57620006fe620005cd565b5b6200070c8482856200069d565b509392505050565b600082601f8301126200072c576200072b620005c8565b5b81516200073e848260208601620006c9565b91505092915050565b600060ff82169050919050565b6200075f8162000747565b81146200076b57600080fd5b50565b6000815190506200077f8162000754565b92915050565b600081600f0b9050919050565b6200079d8162000785565b8114620007a957600080fd5b50565b600081519050620007bd8162000792565b92915050565b6000819050919050565b620007d881620007c3565b8114620007e457600080fd5b50565b600081519050620007f881620007cd565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082b82620007fe565b9050919050565b6200083d816200081e565b81146200084957600080fd5b50565b6000815190506200085d8162000832565b92915050565b60008060008060008060c08789031215620008835762000882620005be565b5b600087015167ffffffffffffffff811115620008a457620008a3620005c3565b5b620008b289828a0162000714565b965050602087015167ffffffffffffffff811115620008d657620008d5620005c3565b5b620008e489828a0162000714565b9550506040620008f789828a016200076e565b94505060606200090a89828a01620007ac565b93505060806200091d89828a01620007e7565b92505060a06200093089828a016200084c565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200099057607f821691505b602082108103620009a657620009a562000948565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b60006008830262000a137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009d1565b62000a1f8683620009d1565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a6262000a5c62000a5684620007c3565b62000a37565b620007c3565b9050919050565b6000819050919050565b62000a7e8362000a41565b62000a9662000a8d8262000a69565b848454620009e1565b825550505050565b600090565b62000aad62000a9e565b62000aba81848462000a73565b505050565b5b8181101562000ae25762000ad660008262000aa3565b60018101905062000ac0565b5050565b601f82111562000b315762000afb81620009ac565b62000b0684620009c1565b8101602085101562000b16578190505b62000b2e62000b2585620009c1565b83018262000abf565b50505b505050565b60008160020a8304905092915050565b600062000b596000198460080262000b36565b1980831691505092915050565b600062000b74838362000b46565b9150826002028217905092915050565b62000b8f826200093d565b67ffffffffffffffff81111562000bab5762000baa620005e3565b5b62000bb7825462000977565b62000bc482828562000ae6565b600060209050601f83116001811462000bfc576000841562000be7578287015190505b62000bf3858262000b66565b86555062000c63565b601f19841662000c0c86620009ac565b60005b8281101562000c365784890151825560018201915060208501945060208101905062000c0f565b8683101562000c56578489015162000c52601f89168262000b46565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ca782620007c3565b915062000cb483620007c3565b925082820262000cc481620007c3565b9150828204841483151762000cde5762000cdd62000c6b565b5b5092915050565b60805160a05160c05160e0516154b762000d656000396000818161153d01528181612465015281816126410152612a33015260008181611b28015281816124280152818161298b01528181612bcf0152612db7015260008181611b5401528181612bfb01528181612dd80152612e1d0152600061159b01526154b76000f3fe608060405234801561001057600080fd5b50600436106103ab576000357c0100000000000000000000000000000000000000000000000000000000900480636f8b44b0116101fb578063a457c2d71161012c578063d7a52fa9116100ca578063e69571af11610099578063e69571af14610be4578063e809529514610c14578063eda4e6d614610c32578063f2fde38b14610c50576103ab565b8063d7a52fa914610b4a578063d89135cd14610b66578063da2824a814610b84578063e54063a614610bb4576103ab565b8063b470aade11610106578063b470aade14610ac0578063c0ab707714610ade578063d340ef8a14610b0e578063d5abeb0114610b2c576103ab565b8063a457c2d714610a42578063a9059cbb14610a72578063b1cb0db314610aa2576103ab565b806384dde4af116101995780638f0b2d5d116101735780638f0b2d5d146109cc5780638f1df6bc146109e857806395d89b4114610a065780639f24880814610a24576103ab565b806384dde4af1461096057806386fe212d1461097e5780638da5cb5b146109ae576103ab565b806373f42561116101d557806373f42561146108d65780637445e33a146108f457806374bedb951461092457806379ba509714610942576103ab565b80636f8b44b01461086c57806370a0823114610888578063731f237c146108b8576103ab565b806331333487116102e057806347a505171161027e5780635ae06f7e1161024d5780635ae06f7e146107be5780635f408c04146107ee5780636787a9be1461080c5780636a2d094e1461083c576103ab565b806347a50517146107105780634abfbba21461074057806351b4541c1461077057806358b2833b146107a0576103ab565b806339509351116102ba578063395093511461066257806340452d911461069257806342966c68146106c4578063449a52f8146106e0576103ab565b806331333487146105f6578063313ce5671461062657806331a5995d14610644576103ab565b806318cbbcfc1161034d57806323a859441161032757806323a859441461053657806323b872dd146105665780632a7aec09146105965780632c1758c1146105c6576103ab565b806318cbbcfc146104ca5780631989c6a8146104e8578063213d1e1e14610506576103ab565b8063095ea7b311610389578063095ea7b31461042e57806309f28f3c1461045e57806311c566151461047c57806318160ddd146104ac576103ab565b806301681a62146103b057806301ffc9a7146103e057806306fdde0314610410575b600080fd5b6103ca60048036038101906103c59190614871565b610c80565b6040516103d791906148b7565b60405180910390f35b6103fa60048036038101906103f5919061492a565b610d69565b6040516104079190614972565b60405180910390f35b610418610ebd565b6040516104259190614a1d565b60405180910390f35b61044860048036038101906104439190614a6b565b610f4b565b6040516104559190614972565b60405180910390f35b610466611187565b6040516104739190614ac7565b60405180910390f35b61049660048036038101906104919190614b0e565b61119a565b6040516104a391906148b7565b60405180910390f35b6104b46111ea565b6040516104c191906148b7565b60405180910390f35b6104d2611201565b6040516104df91906148b7565b60405180910390f35b6104f0611206565b6040516104fd91906148b7565b60405180910390f35b610520600480360381019061051b9190614cef565b611212565b60405161052d91906148b7565b60405180910390f35b610550600480360381019061054b9190614cef565b61122b565b60405161055d9190614972565b60405180910390f35b610580600480360381019061057b9190614d1c565b611293565b60405161058d9190614972565b60405180910390f35b6105b060048036038101906105ab9190614cef565b6114b1565b6040516105bd9190614ac7565b60405180910390f35b6105e060048036038101906105db9190614d6f565b6114e9565b6040516105ed9190614972565b60405180910390f35b610610600480360381019061060b9190614d9c565b61151c565b60405161061d91906148b7565b60405180910390f35b61062e611599565b60405161063b91906148b7565b60405180910390f35b61064c6115bd565b60405161065991906148b7565b60405180910390f35b61067c60048036038101906106779190614a6b565b6115c3565b6040516106899190614972565b60405180910390f35b6106ac60048036038101906106a79190614d6f565b611759565b6040516106bb93929190614e09565b60405180910390f35b6106de60048036038101906106d99190614d6f565b6117c8565b005b6106fa60048036038101906106f59190614a6b565b611904565b6040516107079190614972565b60405180910390f35b61072a60048036038101906107259190614871565b611adb565b60405161073791906148b7565b60405180910390f35b61075a60048036038101906107559190614d6f565b611b24565b60405161076791906148b7565b60405180910390f35b61078a60048036038101906107859190614d6f565b611b84565b60405161079791906148b7565b60405180910390f35b6107a8611ba5565b6040516107b591906148b7565b60405180910390f35b6107d860048036038101906107d39190614871565b611bab565b6040516107e59190614972565b60405180910390f35b6107f6611cb5565b6040516108039190614e5c565b60405180910390f35b61082660048036038101906108219190614d6f565b611d82565b60405161083391906148b7565b60405180910390f35b61085660048036038101906108519190614d6f565b611dc3565b60405161086391906148b7565b60405180910390f35b61088660048036038101906108819190614d6f565b611de4565b005b6108a2600480360381019061089d9190614871565b611eac565b6040516108af91906148b7565b60405180910390f35b6108c0611f16565b6040516108cd91906148b7565b60405180910390f35b6108de611f27565b6040516108eb91906148b7565b60405180910390f35b61090e60048036038101906109099190614cef565b611f2d565b60405161091b91906148b7565b60405180910390f35b61092c611f5b565b60405161093991906148b7565b60405180910390f35b61094a611f61565b6040516109579190614972565b60405180910390f35b610968612108565b6040516109759190614e86565b60405180910390f35b61099860048036038101906109939190614d6f565b61212e565b6040516109a591906148b7565b60405180910390f35b6109b6612215565b6040516109c39190614e86565b60405180910390f35b6109e660048036038101906109e19190614871565b61223b565b005b6109f06122f0565b6040516109fd9190614972565b60405180910390f35b610a0e6125b1565b604051610a1b9190614a1d565b60405180910390f35b610a2c61263f565b604051610a399190614ac7565b60405180910390f35b610a5c6004803603810190610a579190614a6b565b612663565b604051610a699190614972565b60405180910390f35b610a8c6004803603810190610a879190614a6b565b612882565b604051610a999190614972565b60405180910390f35b610aaa612983565b604051610ab791906148b7565b60405180910390f35b610ac8612989565b604051610ad591906148b7565b60405180910390f35b610af86004803603810190610af39190614d6f565b6129ad565b604051610b0591906148b7565b60405180910390f35b610b16612b34565b604051610b2391906148b7565b60405180910390f35b610b34612b3a565b604051610b4191906148b7565b60405180910390f35b610b646004803603810190610b5f9190614d6f565b612b40565b005b610b6e612c3f565b604051610b7b91906148b7565b60405180910390f35b610b9e6004803603810190610b999190614871565b612c49565b604051610bab9190614972565b60405180910390f35b610bce6004803603810190610bc99190614cef565b612d1d565b604051610bdb91906148b7565b60405180910390f35b610bfe6004803603810190610bf99190614ea1565b612d31565b604051610c0b9190614f77565b60405180910390f35b610c1c612db1565b604051610c299190614fbd565b60405180910390f35b610c3a612e1b565b604051610c4791906148b7565b60405180910390f35b610c6a6004803603810190610c659190614871565b612e3f565b604051610c779190614972565b60405180910390f35b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d599190615007565b9250508190555080915050919050565b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610dbd5760019050610eb8565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610e0f5760019050610eb8565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610e615760019050610eb8565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610eb35760019050610eb8565b600090505b919050565b60068054610eca9061506a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef69061506a565b8015610f435780601f10610f1857610100808354040283529160200191610f43565b820191906000526020600020905b815481529060010190602001808311610f2657829003601f168201915b505050505081565b6000806000610f58611cb5565b905060028160ff1603610f7057600092505050611181565b60008160ff161115610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae906150e7565b60405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611080576000841461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690615153565b60405180910390fd5b5b6110886122f0565b5061109284611d82565b915081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258660405161117291906148b7565b60405180910390a36001925050505b92915050565b600260009054906101000a9004600f0b81565b6000806111c16111a985612ee1565b6111bc6111b66001612ee1565b86612f49565b612fb0565b90506111cc8161302f565b67ffffffffffffffff16846111e19190615173565b91505092915050565b6000600b546008546111fc9190615173565b905090565b600f81565b60008080549050905090565b6000816020015168ffffffffffffffffff169050919050565b600080826000015163ffffffff161115611248576000905061128e565b6000826020015168ffffffffffffffffff161115611269576000905061128e565b6000826040015167ffffffffffffffff161115611289576000905061128e565b600190505b919050565b6000806000806112a1611cb5565b905060028160ff16036112ba57600093505050506114aa565b60008160ff161115611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f8906150e7565b60405180910390fd5b6113096122f0565b5061131385611d82565b925082600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561139e57600080fd5b82600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461142a9190615173565b9250508190555061143c878785613064565b91508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161149b91906148b7565b60405180910390a38193505050505b9392505050565b60008067ffffffffffffffff836040015160070b169050600081600f0b036114e0576114dd6001612ee1565b90505b80915050919050565b6000600f82106114f857600080fd5b6000820361150d57600f601254149050611517565b8160125483161490505b919050565b60008060008061152b86612ee1565b925061153685612ee1565b91506115627f000000000000000000000000000000000000000000000000000000000000000083612fb0565b905061156d81613089565b90506115798382612fb0565b90506115848161302f565b67ffffffffffffffff16935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60125481565b6000806115ce6122f0565b506115d883611d82565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116669190615007565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161174691906148b7565b60405180910390a3600191505092915050565b6000818154811061176957600080fd5b906000526020600020016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900468ffffffffffffffffff169080600001600d9054906101000a900467ffffffffffffffff16905083565b60006117d2611cb5565b60ff16146117df57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661183557600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561188157600080fd5b600061188c82611d82565b90506118983382613116565b5081600b60008282546118ab9190615007565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040516118f891906148b7565b60405180910390a25050565b6000806000611911611cb5565b60ff161461191e57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119c35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f9906151f3565b60405180910390fd5b611a0a6122f0565b5060006011541115611a335760115483600854611a279190615007565b1115611a3257600080fd5b5b8260086000828254611a459190615007565b92505081905550611a5583611d82565b9050611a61848261321d565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051611abf91906148b7565b60405180910390a3611acf6132e1565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000082611b529190615213565b7f0000000000000000000000000000000000000000000000000000000000000000611b7d9190615007565b9050919050565b6000603c8242611b949190615173565b611b9e9190615284565b9050919050565b60035481565b6000611bba600160ff166114e9565b15611bc457600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c4b57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611c5457600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000601060009054906101000a900460ff1615611cd55760019050611d7f565b6000600f5403611ce85760009050611d7f565b600f544210611d7a57611d15603c600354611d039190615284565b600f54611d109190615173565b6129ad565b506001601060006101000a81548160ff0219169083151502179055507ff80dbaea4785589e52984ca36a31de106adc77759539a5c7d92883bf49692fe942604051611d6091906148b7565b60405180910390a1611d706122f0565b5060029050611d7f565b600090505b90565b600080611da6611d9184612ee1565b600260009054906101000a9004600f0b6134a5565b9050611db18161302f565b67ffffffffffffffff16915050919050565b6000603c8242611dd39190615173565b611ddd9190615284565b9050919050565b611df1600860ff166114e9565b15611dfb57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e5557600080fd5b611e5d6111ea565b8111611e6857600080fd5b6011547f9722adea12ab7ef86fc45b88f0e0b567639e8dddaae60261e08c03d747fbbfe682604051611e9a91906148b7565b60405180910390a28060118190555050565b6000806000806000611ec5611ec087611adb565b612ee1565b9350611ed2600354611b84565b9150611eed84600260009054906101000a9004600f0b612fb0565b9250611f0b611efb8461302f565b67ffffffffffffffff168361151c565b945050505050919050565b6000611f2260006129ad565b905090565b600b5481565b6000806000611f3b84611212565b9150611f46846114b1565b9050611f52828261119a565b92505050919050565b600a5481565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fbe57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060108210612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90615301565b60405180910390fd5b60006012548316146121ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b19061536d565b60405180910390fd5b81601260008282541792505081905550600f6012541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e60125460405161220391906148b7565b60405180910390a26012549050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612248600260ff166114e9565b1561225257600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122ac57600080fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006122fa6147c8565b6123026147c8565b61230a6147c8565b600080600080600061231a611f16565b50612323613531565b975061232e8861122b565b15612344576000985050505050505050506125ae565b60006009548154811061235a5761235961538d565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050955061240788612d1d565b94506001856124169190615007565b9050612421866114b1565b9350603c857f00000000000000000000000000000000000000000000000000000000000000006124519190615213565b61245b9190615284565b91506124976124927f000000000000000000000000000000000000000000000000000000000000000061248d85612ee1565b612fb0565b613089565b92506124ad6000846124a76111ea565b84612d31565b96506000879080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050612569876136c7565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161259991906148b7565b60405180910390a16001985050505050505050505b90565b600780546125be9061506a565b80601f01602080910402602001604051908101604052809291908181526020018280546125ea9061506a565b80156126375780601f1061260c57610100808354040283529160200191612637565b820191906000526020600020905b81548152906001019060200180831161261a57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061266f83611d82565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126fa57600080fd5b6127026122f0565b5080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461278f9190615173565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161286f91906148b7565b60405180910390a3600191505092915050565b600080600080612890611cb5565b905060028160ff16036128a9576000935050505061297d565b60008160ff1611156128f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e7906150e7565b60405180910390fd5b6128f86122f0565b5061290285611d82565b925061290f338785613064565b91508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161296e91906148b7565b60405180910390a38193505050505b92915050565b600f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000806000601060009054906101000a900460ff16156129d7576000945050505050612b2f565b6129e2600354611b84565b9250600083036129f9576000945050505050612b2f565b600260009054906101000a9004600f0b9050600086118015612a1a57508286105b15612a23578592505b612a2c83612ee1565b9150612a587f000000000000000000000000000000000000000000000000000000000000000083612fb0565b9350612a6384613089565b9350612a7e600260009054906101000a9004600f0b85612fb0565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff160217905550603c83612ac69190615213565b600354612ad39190615007565b60038190555080600f0b836003547f1c9c74563c32efd114cb36fb5e432d9386c8254d08456614804a33a3088ab736600260009054906101000a9004600f0b604051612b1f9190614ac7565b60405180910390a4829450505050505b919050565b60095481565b60115481565b6000612b4f600460ff166114e9565b15612b5957600080fd5b601060009054906101000a900460ff1615612b7357600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bcd57600080fd5b7f000000000000000000000000000000000000000000000000000000000000000082612bf99190615213565b7f0000000000000000000000000000000000000000000000000000000000000000612c249190615007565b9050600f548111612c3457600080fd5b80600f819055505050565b6000600b54905090565b6000612c58600160ff166114e9565b15612c6257600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cbc57600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000816000015163ffffffff169050919050565b612d396147c8565b612d416147c8565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042612e029190615173565b612e0c9190615284565b612e169190615007565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e9b57600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000677fffffffffffffff821115612ef857600080fd5b6040829060020a029050919050565b60008082600f0b13612f1857600080fd5b60806fb17217f7d1cf79abc9e3b39803f2f6af612f34846137e6565b600f0b02908060020a82049150509050919050565b60008082600f0b84600f0b0390507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b8112158015612f9d57506f7fffffffffffffffffffffffffffffff600f0b8113155b612fa657600080fd5b8091505092915050565b600080604083600f0b85600f0b029060008212600003808260020a82851804189250505090507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561301c57506f7fffffffffffffffffffffffffffffff600f0b8113155b61302557600080fd5b8091505092915050565b60008082600f0b121561304157600080fd5b604082600f0b9060008212600003808260020a8285180418925050509050919050565b6000806130718584613116565b5061307c848461321d565b5060019150509392505050565b60006840000000000000000082600f0b126130a357600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b12156130d75760009050613111565b61310e6080700171547652b82fe1777d0ffda0d23a7d1284600f0b029060008212600003808260020a8285180418925050506139ac565b90505b919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600085036131725760009350505050613217565b61317b86611adb565b9250848310156131c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b790615408565b60405180910390fd5b84836131cc9190615173565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000850361327957600093505050506132db565b61328286611adb565b925084836132909190615007565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60006132eb6147c8565b60006132f56111ea565b90506000600160008054905061330b9190615173565b8154811061331c5761331b61538d565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050915080826020019068ffffffffffffffffff16908168ffffffffffffffffff168152505081600060016000805490506133f79190615173565b815481106134085761340761538d565b5b9060005260206000200160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060019250505090565b60008082600f0b036134b657600080fd5b600082600f0b604085600f0b9060020a02816134d5576134d4615255565b5b0590507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561351e57506f7fffffffffffffffffffffffffffffff600f0b8113155b61352757600080fd5b8091505092915050565b6135396147c8565b6135416147c8565b6135496147c8565b600080600954815481106135605761355f61538d565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505092503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa15801561366b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368f9190615454565b6fffffffffffffffffffffffffffffffff1690506136ac83612d1d565b81116136bd578193505050506136c4565b8293505050505b90565b60008060006136d584611f2d565b6136dd6111ea565b6136e79190615173565b9150600a546136f583611d82565b6136ff9190615173565b905061372d600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261321d565b50836000015163ffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d3846040516137a191906148b7565b60405180910390a36001600960008282546137bc9190615007565b9250508190555080600a60008282546137d59190615007565b925050819055508192505050919050565b60008082600f0b136137f757600080fd5b60008083600f0b9050680100000000000000008112613832576040819060008212600003808260020a82851804189250505090506040820191505b6401000000008112613860576020819060008212600003808260020a82851804189250505090506020820191505b62010000811261388c576010819060008212600003808260020a82851804189250505090506010820191505b61010081126138b7576008819060008212600003808260020a82851804189250505090506008820191505b601081126138e1576004819060008212600003808260020a82851804189250505090506004820191505b6004811261390b576002819060008212600003808260020a82851804189250505090506002820191505b6002811261391a576001820191505b600060408084039060020a029050600083607f0386600f0b9060020a029050600067800000000000000090505b600081131561399f578182029150600060ff83908060020a8204915050905080607f0183908060020a8204915050925080820284019350506001819060008212600003808260020a8285180418925050509050613947565b5081945050505050919050565b60006840000000000000000082600f0b126139c657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b12156139fa57600090506147c3565b60006f80000000000000000000000000000000905060006780000000000000008416600f0b1315613a4857608070016a09e667f3bcc908b2fb1366ea957d3e8202908060020a820491505090505b60006740000000000000008416600f0b1315613a815760807001306fe0a31b7152de8d5a46305c85edec8202908060020a820491505090505b60006720000000000000008416600f0b1315613aba5760807001172b83c7d517adcdf7c8c50eb14a791f8202908060020a820491505090505b60006710000000000000008416600f0b1315613af357608070010b5586cf9890f6298b92b71842a983638202908060020a820491505090505b60006708000000000000008416600f0b1315613b2c5760807001059b0d31585743ae7c548eb68ca417fd8202908060020a820491505090505b60006704000000000000008416600f0b1315613b65576080700102c9a3e778060ee6f7caca4f7a29bde88202908060020a820491505090505b60006702000000000000008416600f0b1315613b9e57608070010163da9fb33356d84a66ae336dcdfa3f8202908060020a820491505090505b60006701000000000000008416600f0b1315613bd7576080700100b1afa5abcbed6129ab13ec11dc95438202908060020a820491505090505b600066800000000000008416600f0b1315613c0f57608070010058c86da1c09ea1ff19d294cf2f679b8202908060020a820491505090505b600066400000000000008416600f0b1315613c475760807001002c605e2e8cec506d21bfc89a23a00f8202908060020a820491505090505b600066200000000000008416600f0b1315613c7f576080700100162f3904051fa128bca9c55c31e5df8202908060020a820491505090505b600066100000000000008416600f0b1315613cb75760807001000b175effdc76ba38e31671ca9397258202908060020a820491505090505b600066080000000000008416600f0b1315613cef576080700100058ba01fb9f96d6cacd4b180917c3d8202908060020a820491505090505b600066040000000000008416600f0b1315613d2757608070010002c5cc37da9491d0985c348c68e7b38202908060020a820491505090505b600066020000000000008416600f0b1315613d5f5760807001000162e525ee054754457d59952920268202908060020a820491505090505b600066010000000000008416600f0b1315613d9757608070010000b17255775c040618bf4a4ade83fc8202908060020a820491505090505b6000658000000000008416600f0b1315613dce5760807001000058b91b5bc9ae2eed81e9b7d4cfab8202908060020a820491505090505b6000654000000000008416600f0b1315613e05576080700100002c5c89d5ec6ca4d7c8acc017b7c98202908060020a820491505090505b6000652000000000008416600f0b1315613e3c57608070010000162e43f4f831060e02d839a9d16d8202908060020a820491505090505b6000651000000000008416600f0b1315613e73576080700100000b1721bcfc99d9f890ea069117638202908060020a820491505090505b6000650800000000008416600f0b1315613eaa57608070010000058b90cf1e6d97f9ca14dbcc16288202908060020a820491505090505b6000650400000000008416600f0b1315613ee15760807001000002c5c863b73f016468f6bac5ca2b8202908060020a820491505090505b6000650200000000008416600f0b1315613f18576080700100000162e430e5a18f6119e3c02282a58202908060020a820491505090505b6000650100000000008416600f0b1315613f4f5760807001000000b1721835514b86e6d96efd1bfe8202908060020a820491505090505b60006480000000008416600f0b1315613f85576080700100000058b90c0b48c6be5df846c5b2ef8202908060020a820491505090505b60006440000000008416600f0b1315613fbb57608070010000002c5c8601cc6b9e94213c72737a8202908060020a820491505090505b60006420000000008416600f0b1315613ff15760807001000000162e42fff037df38aa2b219f068202908060020a820491505090505b60006410000000008416600f0b131561402757608070010000000b17217fba9c739aa5819f44f98202908060020a820491505090505b60006408000000008416600f0b131561405d5760807001000000058b90bfcdee5acd3c1cedc8238202908060020a820491505090505b60006404000000008416600f0b1315614093576080700100000002c5c85fe31f35a6a30da1be508202908060020a820491505090505b60006402000000008416600f0b13156140c957608070010000000162e42ff0999ce3541b9fffcf8202908060020a820491505090505b60006401000000008416600f0b13156140ff576080700100000000b17217f80f4ef5aadda455548202908060020a820491505090505b600063800000008416600f0b131561413457608070010000000058b90bfbf8479bd5a81b51ad8202908060020a820491505090505b600063400000008416600f0b13156141695760807001000000002c5c85fdf84bd62ae30a74cc8202908060020a820491505090505b600063200000008416600f0b131561419e576080700100000000162e42fefb2fed257559bdaa8202908060020a820491505090505b600063100000008416600f0b13156141d35760807001000000000b17217f7d5a7716bba4a9ae8202908060020a820491505090505b600063080000008416600f0b1315614208576080700100000000058b90bfbe9ddbac5e109cce8202908060020a820491505090505b600063040000008416600f0b131561423d57608070010000000002c5c85fdf4b15de6f17eb0d8202908060020a820491505090505b600063020000008416600f0b13156142725760807001000000000162e42fefa494f1478fde058202908060020a820491505090505b600063010000008416600f0b13156142a757608070010000000000b17217f7d20cf927c8e94c8202908060020a820491505090505b6000628000008416600f0b13156142db5760807001000000000058b90bfbe8f71cb4e4b33d8202908060020a820491505090505b6000624000008416600f0b131561430f576080700100000000002c5c85fdf477b662b269458202908060020a820491505090505b6000622000008416600f0b131561434357608070010000000000162e42fefa3ae53369388c8202908060020a820491505090505b6000621000008416600f0b1315614377576080700100000000000b17217f7d1d351a389d408202908060020a820491505090505b6000620800008416600f0b13156143ab57608070010000000000058b90bfbe8e8b2d3d4ede8202908060020a820491505090505b6000620400008416600f0b13156143df5760807001000000000002c5c85fdf4741bea6e77e8202908060020a820491505090505b6000620200008416600f0b1315614413576080700100000000000162e42fefa39fe95583c28202908060020a820491505090505b6000620100008416600f0b13156144475760807001000000000000b17217f7d1cfb72b45e18202908060020a820491505090505b60006180008416600f0b131561447a576080700100000000000058b90bfbe8e7cc35c3f08202908060020a820491505090505b60006140008416600f0b13156144ad57608070010000000000002c5c85fdf473e242ea388202908060020a820491505090505b60006120008416600f0b13156144e05760807001000000000000162e42fefa39f02b772c8202908060020a820491505090505b60006110008416600f0b131561451357608070010000000000000b17217f7d1cf7d83c1a8202908060020a820491505090505b60006108008416600f0b13156145465760807001000000000000058b90bfbe8e7bdcbe2e8202908060020a820491505090505b60006104008416600f0b1315614579576080700100000000000002c5c85fdf473dea871f8202908060020a820491505090505b60006102008416600f0b13156145ac57608070010000000000000162e42fefa39ef44d918202908060020a820491505090505b60006101008416600f0b13156145df576080700100000000000000b17217f7d1cf79e9498202908060020a820491505090505b600060808416600f0b131561461157608070010000000000000058b90bfbe8e7bce5448202908060020a820491505090505b600060408416600f0b13156146435760807001000000000000002c5c85fdf473de6eca8202908060020a820491505090505b600060208416600f0b1315614675576080700100000000000000162e42fefa39ef366f8202908060020a820491505090505b600060108416600f0b13156146a75760807001000000000000000b17217f7d1cf79afa8202908060020a820491505090505b600060088416600f0b13156146d9576080700100000000000000058b90bfbe8e7bcd6d8202908060020a820491505090505b600060048416600f0b131561470b57608070010000000000000002c5c85fdf473de6b28202908060020a820491505090505b600060028416600f0b131561473d5760807001000000000000000162e42fefa39ef3588202908060020a820491505090505b600060018416600f0b131561476f57608070010000000000000000b17217f7d1cf79ab8202908060020a820491505090505b604083600f0b9060008212600003808260020a828518041892505050603f03600f0b81908060020a820491505090506f7fffffffffffffffffffffffffffffff600f0b8111156147be57600080fd5b809150505b919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061483e82614813565b9050919050565b61484e81614833565b811461485957600080fd5b50565b60008135905061486b81614845565b92915050565b6000602082840312156148875761488661480e565b5b60006148958482850161485c565b91505092915050565b6000819050919050565b6148b18161489e565b82525050565b60006020820190506148cc60008301846148a8565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614907816148d2565b811461491257600080fd5b50565b600081359050614924816148fe565b92915050565b6000602082840312156149405761493f61480e565b5b600061494e84828501614915565b91505092915050565b60008115159050919050565b61496c81614957565b82525050565b60006020820190506149876000830184614963565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156149c75780820151818401526020810190506149ac565b60008484015250505050565b6000601f19601f8301169050919050565b60006149ef8261498d565b6149f98185614998565b9350614a098185602086016149a9565b614a12816149d3565b840191505092915050565b60006020820190508181036000830152614a3781846149e4565b905092915050565b614a488161489e565b8114614a5357600080fd5b50565b600081359050614a6581614a3f565b92915050565b60008060408385031215614a8257614a8161480e565b5b6000614a908582860161485c565b9250506020614aa185828601614a56565b9150509250929050565b600081600f0b9050919050565b614ac181614aab565b82525050565b6000602082019050614adc6000830184614ab8565b92915050565b614aeb81614aab565b8114614af657600080fd5b50565b600081359050614b0881614ae2565b92915050565b60008060408385031215614b2557614b2461480e565b5b6000614b3385828601614a56565b9250506020614b4485828601614af9565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614b8b826149d3565b810181811067ffffffffffffffff82111715614baa57614ba9614b53565b5b80604052505050565b6000614bbd614804565b9050614bc98282614b82565b919050565b600063ffffffff82169050919050565b614be781614bce565b8114614bf257600080fd5b50565b600081359050614c0481614bde565b92915050565b600068ffffffffffffffffff82169050919050565b614c2881614c0a565b8114614c3357600080fd5b50565b600081359050614c4581614c1f565b92915050565b600067ffffffffffffffff82169050919050565b614c6881614c4b565b8114614c7357600080fd5b50565b600081359050614c8581614c5f565b92915050565b600060608284031215614ca157614ca0614b4e565b5b614cab6060614bb3565b90506000614cbb84828501614bf5565b6000830152506020614ccf84828501614c36565b6020830152506040614ce384828501614c76565b60408301525092915050565b600060608284031215614d0557614d0461480e565b5b6000614d1384828501614c8b565b91505092915050565b600080600060608486031215614d3557614d3461480e565b5b6000614d438682870161485c565b9350506020614d548682870161485c565b9250506040614d6586828701614a56565b9150509250925092565b600060208284031215614d8557614d8461480e565b5b6000614d9384828501614a56565b91505092915050565b60008060408385031215614db357614db261480e565b5b6000614dc185828601614a56565b9250506020614dd285828601614a56565b9150509250929050565b614de581614bce565b82525050565b614df481614c0a565b82525050565b614e0381614c4b565b82525050565b6000606082019050614e1e6000830186614ddc565b614e2b6020830185614deb565b614e386040830184614dfa565b949350505050565b600060ff82169050919050565b614e5681614e40565b82525050565b6000602082019050614e716000830184614e4d565b92915050565b614e8081614833565b82525050565b6000602082019050614e9b6000830184614e77565b92915050565b60008060008060808587031215614ebb57614eba61480e565b5b6000614ec987828801614a56565b9450506020614eda87828801614af9565b9350506040614eeb87828801614a56565b9250506060614efc87828801614a56565b91505092959194509250565b614f1181614bce565b82525050565b614f2081614c0a565b82525050565b614f2f81614c4b565b82525050565b606082016000820151614f4b6000850182614f08565b506020820151614f5e6020850182614f17565b506040820151614f716040850182614f26565b50505050565b6000606082019050614f8c6000830184614f35565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b614fb781614f92565b82525050565b6000602082019050614fd26000830184614fae565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006150128261489e565b915061501d8361489e565b925082820190508082111561503557615034614fd8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061508257607f821691505b6020821081036150955761509461503b565b5b50919050565b7f4558504952454400000000000000000000000000000000000000000000000000600082015250565b60006150d1600783614998565b91506150dc8261509b565b602082019050919050565b60006020820190508181036000830152615100816150c4565b9050919050565b7f5a45524f5f464952535400000000000000000000000000000000000000000000600082015250565b600061513d600a83614998565b915061514882615107565b602082019050919050565b6000602082019050818103600083015261516c81615130565b9050919050565b600061517e8261489e565b91506151898361489e565b92508282039050818111156151a1576151a0614fd8565b5b92915050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006151dd600a83614998565b91506151e8826151a7565b602082019050919050565b6000602082019050818103600083015261520c816151d0565b9050919050565b600061521e8261489e565b91506152298361489e565b92508282026152378161489e565b9150828204841483151761524e5761524d614fd8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061528f8261489e565b915061529a8361489e565b9250826152aa576152a9615255565b5b828204905092915050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b60006152eb601183614998565b91506152f6826152b5565b602082019050919050565b6000602082019050818103600083015261531a816152de565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000615357601283614998565b915061536282615321565b602082019050919050565b600060208201905081810360008301526153868161534a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b60006153f2600d83614998565b91506153fd826153bc565b602082019050919050565b60006020820190508181036000830152615421816153e5565b9050919050565b61543181614f92565b811461543c57600080fd5b50565b60008151905061544e81615428565b92915050565b60006020828403121561546a5761546961480e565b5b60006154788482850161543f565b9150509291505056fea2646970667358221220b6ab446997d21e5b6e84b6c705c209cf53b5182ff5f6fe4b79f80236d00e874d64736f6c63430008120033 \ No newline at end of file +6101006040523480156200001257600080fd5b506040516200621938038062006219833981810160405281019062000038919062000863565b6801000000000000000083600f0b126200005157600080fd5b6200005b62000578565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660069081620000ad919062000b84565b508560079081620000bf919062000b84565b508460ff16608081815250504260038190555060035460a08181525050603c83620000eb919062000c9a565b60c08181525050620001126001620002a96401000000000262002ee6176401000000009004565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055506200016c84620002d06401000000000262002f0c176401000000009004565b600f0b60e081600f0b81525050620001a86000600260009054906101000a9004600f0b6000600162000324640100000000026401000000009004565b90506000819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000ce5565b6000677fffffffffffffff821115620002c157600080fd5b6040829060020a029050919050565b60008082600f0b13620002e257600080fd5b60806fb17217f7d1cf79abc9e3b39803f2f6af6200030f84620003a8640100000000026401000000009004565b600f0b02908060020a82049150509050919050565b6200032e62000578565b6200033862000578565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b60008082600f0b13620003ba57600080fd5b60008083600f0b9050680100000000000000008112620003f6576040819060008212600003808260020a82851804189250505090506040820191505b640100000000811262000425576020819060008212600003808260020a82851804189250505090506020820191505b62010000811262000452576010819060008212600003808260020a82851804189250505090506010820191505b61010081126200047e576008819060008212600003808260020a82851804189250505090506008820191505b60108112620004a9576004819060008212600003808260020a82851804189250505090506004820191505b60048112620004d4576002819060008212600003808260020a82851804189250505090506002820191505b60028112620004e4576001820191505b600060408084039060020a029050600083607f0386600f0b9060020a029050600067800000000000000090505b60008113156200056b578182029150600060ff83908060020a8204915050905080607f0183908060020a8204915050925080820284019350506001819060008212600003808260020a828518041892505050905062000511565b5081945050505050919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200061d82620005d2565b810181811067ffffffffffffffff821117156200063f576200063e620005e3565b5b80604052505050565b600062000654620005b4565b905062000662828262000612565b919050565b600067ffffffffffffffff821115620006855762000684620005e3565b5b6200069082620005d2565b9050602081019050919050565b60005b83811015620006bd578082015181840152602081019050620006a0565b60008484015250505050565b6000620006e0620006da8462000667565b62000648565b905082815260208101848484011115620006ff57620006fe620005cd565b5b6200070c8482856200069d565b509392505050565b600082601f8301126200072c576200072b620005c8565b5b81516200073e848260208601620006c9565b91505092915050565b600060ff82169050919050565b6200075f8162000747565b81146200076b57600080fd5b50565b6000815190506200077f8162000754565b92915050565b600081600f0b9050919050565b6200079d8162000785565b8114620007a957600080fd5b50565b600081519050620007bd8162000792565b92915050565b6000819050919050565b620007d881620007c3565b8114620007e457600080fd5b50565b600081519050620007f881620007cd565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082b82620007fe565b9050919050565b6200083d816200081e565b81146200084957600080fd5b50565b6000815190506200085d8162000832565b92915050565b60008060008060008060c08789031215620008835762000882620005be565b5b600087015167ffffffffffffffff811115620008a457620008a3620005c3565b5b620008b289828a0162000714565b965050602087015167ffffffffffffffff811115620008d657620008d5620005c3565b5b620008e489828a0162000714565b9550506040620008f789828a016200076e565b94505060606200090a89828a01620007ac565b93505060806200091d89828a01620007e7565b92505060a06200093089828a016200084c565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200099057607f821691505b602082108103620009a657620009a562000948565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b60006008830262000a137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009d1565b62000a1f8683620009d1565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a6262000a5c62000a5684620007c3565b62000a37565b620007c3565b9050919050565b6000819050919050565b62000a7e8362000a41565b62000a9662000a8d8262000a69565b848454620009e1565b825550505050565b600090565b62000aad62000a9e565b62000aba81848462000a73565b505050565b5b8181101562000ae25762000ad660008262000aa3565b60018101905062000ac0565b5050565b601f82111562000b315762000afb81620009ac565b62000b0684620009c1565b8101602085101562000b16578190505b62000b2e62000b2585620009c1565b83018262000abf565b50505b505050565b60008160020a8304905092915050565b600062000b596000198460080262000b36565b1980831691505092915050565b600062000b74838362000b46565b9150826002028217905092915050565b62000b8f826200093d565b67ffffffffffffffff81111562000bab5762000baa620005e3565b5b62000bb7825462000977565b62000bc482828562000ae6565b600060209050601f83116001811462000bfc576000841562000be7578287015190505b62000bf3858262000b66565b86555062000c63565b601f19841662000c0c86620009ac565b60005b8281101562000c365784890151825560018201915060208501945060208101905062000c0f565b8683101562000c56578489015162000c52601f89168262000b46565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ca782620007c3565b915062000cb483620007c3565b925082820262000cc481620007c3565b9150828204841483151762000cde5762000cdd62000c6b565b5b5092915050565b60805160a05160c05160e0516154b462000d656000396000818161153d01528181612466015281816126420152612a34015260008181611b28015281816124290152818161298c01528181612bd00152612db8015260008181611b5401528181612bfc01528181612dd90152612e1e0152600061159b01526154b46000f3fe608060405234801561001057600080fd5b50600436106103ab576000357c0100000000000000000000000000000000000000000000000000000000900480636f8b44b0116101fb578063a457c2d71161012c578063d7a52fa9116100ca578063e69571af11610099578063e69571af14610be4578063e809529514610c14578063eda4e6d614610c32578063f2fde38b14610c50576103ab565b8063d7a52fa914610b4a578063d89135cd14610b66578063da2824a814610b84578063e54063a614610bb4576103ab565b8063b470aade11610106578063b470aade14610ac0578063c0ab707714610ade578063d340ef8a14610b0e578063d5abeb0114610b2c576103ab565b8063a457c2d714610a42578063a9059cbb14610a72578063b1cb0db314610aa2576103ab565b806384dde4af116101995780638f0b2d5d116101735780638f0b2d5d146109cc5780638f1df6bc146109e857806395d89b4114610a065780639f24880814610a24576103ab565b806384dde4af1461096057806386fe212d1461097e5780638da5cb5b146109ae576103ab565b806373f42561116101d557806373f42561146108d65780637445e33a146108f457806374bedb951461092457806379ba509714610942576103ab565b80636f8b44b01461086c57806370a0823114610888578063731f237c146108b8576103ab565b806331333487116102e057806347a505171161027e5780635ae06f7e1161024d5780635ae06f7e146107be5780635f408c04146107ee5780636787a9be1461080c5780636a2d094e1461083c576103ab565b806347a50517146107105780634abfbba21461074057806351b4541c1461077057806358b2833b146107a0576103ab565b806339509351116102ba578063395093511461066257806340452d911461069257806342966c68146106c4578063449a52f8146106e0576103ab565b806331333487146105f6578063313ce5671461062657806331a5995d14610644576103ab565b806318cbbcfc1161034d57806323a859441161032757806323a859441461053657806323b872dd146105665780632a7aec09146105965780632c1758c1146105c6576103ab565b806318cbbcfc146104ca5780631989c6a8146104e8578063213d1e1e14610506576103ab565b8063095ea7b311610389578063095ea7b31461042e57806309f28f3c1461045e57806311c566151461047c57806318160ddd146104ac576103ab565b806301681a62146103b057806301ffc9a7146103e057806306fdde0314610410575b600080fd5b6103ca60048036038101906103c5919061486e565b610c80565b6040516103d791906148b4565b60405180910390f35b6103fa60048036038101906103f59190614927565b610d69565b604051610407919061496f565b60405180910390f35b610418610ebd565b6040516104259190614a1a565b60405180910390f35b61044860048036038101906104439190614a68565b610f4b565b604051610455919061496f565b60405180910390f35b610466611187565b6040516104739190614ac4565b60405180910390f35b61049660048036038101906104919190614b0b565b61119a565b6040516104a391906148b4565b60405180910390f35b6104b46111ea565b6040516104c191906148b4565b60405180910390f35b6104d2611201565b6040516104df91906148b4565b60405180910390f35b6104f0611206565b6040516104fd91906148b4565b60405180910390f35b610520600480360381019061051b9190614cec565b611212565b60405161052d91906148b4565b60405180910390f35b610550600480360381019061054b9190614cec565b61122b565b60405161055d919061496f565b60405180910390f35b610580600480360381019061057b9190614d19565b611293565b60405161058d919061496f565b60405180910390f35b6105b060048036038101906105ab9190614cec565b6114b1565b6040516105bd9190614ac4565b60405180910390f35b6105e060048036038101906105db9190614d6c565b6114e9565b6040516105ed919061496f565b60405180910390f35b610610600480360381019061060b9190614d99565b61151c565b60405161061d91906148b4565b60405180910390f35b61062e611599565b60405161063b91906148b4565b60405180910390f35b61064c6115bd565b60405161065991906148b4565b60405180910390f35b61067c60048036038101906106779190614a68565b6115c3565b604051610689919061496f565b60405180910390f35b6106ac60048036038101906106a79190614d6c565b611759565b6040516106bb93929190614e06565b60405180910390f35b6106de60048036038101906106d99190614d6c565b6117c8565b005b6106fa60048036038101906106f59190614a68565b611904565b604051610707919061496f565b60405180910390f35b61072a6004803603810190610725919061486e565b611adb565b60405161073791906148b4565b60405180910390f35b61075a60048036038101906107559190614d6c565b611b24565b60405161076791906148b4565b60405180910390f35b61078a60048036038101906107859190614d6c565b611b84565b60405161079791906148b4565b60405180910390f35b6107a8611ba5565b6040516107b591906148b4565b60405180910390f35b6107d860048036038101906107d3919061486e565b611bab565b6040516107e5919061496f565b60405180910390f35b6107f6611cb5565b6040516108039190614e59565b60405180910390f35b61082660048036038101906108219190614d6c565b611d82565b60405161083391906148b4565b60405180910390f35b61085660048036038101906108519190614d6c565b611dc3565b60405161086391906148b4565b60405180910390f35b61088660048036038101906108819190614d6c565b611de4565b005b6108a2600480360381019061089d919061486e565b611eac565b6040516108af91906148b4565b60405180910390f35b6108c0611f13565b6040516108cd91906148b4565b60405180910390f35b6108de611f24565b6040516108eb91906148b4565b60405180910390f35b61090e60048036038101906109099190614cec565b611f2a565b60405161091b91906148b4565b60405180910390f35b61092c611f58565b60405161093991906148b4565b60405180910390f35b61094a611f5e565b604051610957919061496f565b60405180910390f35b610968612109565b6040516109759190614e83565b60405180910390f35b61099860048036038101906109939190614d6c565b61212f565b6040516109a591906148b4565b60405180910390f35b6109b6612216565b6040516109c39190614e83565b60405180910390f35b6109e660048036038101906109e1919061486e565b61223c565b005b6109f06122f1565b6040516109fd919061496f565b60405180910390f35b610a0e6125b2565b604051610a1b9190614a1a565b60405180910390f35b610a2c612640565b604051610a399190614ac4565b60405180910390f35b610a5c6004803603810190610a579190614a68565b612664565b604051610a69919061496f565b60405180910390f35b610a8c6004803603810190610a879190614a68565b612883565b604051610a99919061496f565b60405180910390f35b610aaa612984565b604051610ab791906148b4565b60405180910390f35b610ac861298a565b604051610ad591906148b4565b60405180910390f35b610af86004803603810190610af39190614d6c565b6129ae565b604051610b0591906148b4565b60405180910390f35b610b16612b35565b604051610b2391906148b4565b60405180910390f35b610b34612b3b565b604051610b4191906148b4565b60405180910390f35b610b646004803603810190610b5f9190614d6c565b612b41565b005b610b6e612c40565b604051610b7b91906148b4565b60405180910390f35b610b9e6004803603810190610b99919061486e565b612c4a565b604051610bab919061496f565b60405180910390f35b610bce6004803603810190610bc99190614cec565b612d1e565b604051610bdb91906148b4565b60405180910390f35b610bfe6004803603810190610bf99190614e9e565b612d32565b604051610c0b9190614f74565b60405180910390f35b610c1c612db2565b604051610c299190614fba565b60405180910390f35b610c3a612e1c565b604051610c4791906148b4565b60405180910390f35b610c6a6004803603810190610c65919061486e565b612e40565b604051610c77919061496f565b60405180910390f35b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d599190615004565b9250508190555080915050919050565b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610dbd5760019050610eb8565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610e0f5760019050610eb8565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610e615760019050610eb8565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610eb35760019050610eb8565b600090505b919050565b60068054610eca90615067565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef690615067565b8015610f435780601f10610f1857610100808354040283529160200191610f43565b820191906000526020600020905b815481529060010190602001808311610f2657829003601f168201915b505050505081565b6000806000610f58611cb5565b905060028160ff1603610f7057600092505050611181565b60008160ff161115610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae906150e4565b60405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611080576000841461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690615150565b60405180910390fd5b5b6110886122f1565b5061109284611d82565b915081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258660405161117291906148b4565b60405180910390a36001925050505b92915050565b600260009054906101000a9004600f0b81565b6000806111c16111a985612ee6565b6111bc6111b66001612ee6565b86612f4e565b612fb5565b90506111cc81613034565b67ffffffffffffffff16846111e19190615170565b91505092915050565b6000600b546008546111fc9190615170565b905090565b600f81565b60008080549050905090565b6000816020015168ffffffffffffffffff169050919050565b600080826000015163ffffffff161115611248576000905061128e565b6000826020015168ffffffffffffffffff161115611269576000905061128e565b6000826040015167ffffffffffffffff161115611289576000905061128e565b600190505b919050565b6000806000806112a1611cb5565b905060028160ff16036112ba57600093505050506114aa565b60008160ff161115611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f8906150e4565b60405180910390fd5b6113096122f1565b5061131385611d82565b925082600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561139e57600080fd5b82600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461142a9190615170565b9250508190555061143c878785613069565b91508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161149b91906148b4565b60405180910390a38193505050505b9392505050565b60008067ffffffffffffffff836040015160070b169050600081600f0b036114e0576114dd6001612ee6565b90505b80915050919050565b6000600f82106114f857600080fd5b6000820361150d57600f601254149050611517565b8160125483161490505b919050565b60008060008061152b86612ee6565b925061153685612ee6565b91506115627f000000000000000000000000000000000000000000000000000000000000000083612fb5565b905061156d8161308c565b90506115798382612fb5565b905061158481613034565b67ffffffffffffffff16935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60125481565b6000806115ce6122f1565b506115d883611d82565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116669190615004565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161174691906148b4565b60405180910390a3600191505092915050565b6000818154811061176957600080fd5b906000526020600020016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900468ffffffffffffffffff169080600001600d9054906101000a900467ffffffffffffffff16905083565b60006117d2611cb5565b60ff16146117df57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661183557600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561188157600080fd5b600061188c82611d82565b90506118983382613119565b5081600b60008282546118ab9190615004565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040516118f891906148b4565b60405180910390a25050565b6000806000611911611cb5565b60ff161461191e57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119c35750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f9906151f0565b60405180910390fd5b611a0a6122f1565b5060006011541115611a335760115483600854611a279190615004565b1115611a3257600080fd5b5b8260086000828254611a459190615004565b92505081905550611a5583611d82565b9050611a61848261321d565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051611abf91906148b4565b60405180910390a3611acf6132de565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000082611b529190615210565b7f0000000000000000000000000000000000000000000000000000000000000000611b7d9190615004565b9050919050565b6000603c8242611b949190615170565b611b9e9190615281565b9050919050565b60035481565b6000611bba600160ff166114e9565b15611bc457600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c4b57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611c5457600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000601060009054906101000a900460ff1615611cd55760019050611d7f565b6000600f5403611ce85760009050611d7f565b600f544210611d7a57611d15603c600354611d039190615281565b600f54611d109190615170565b6129ae565b506001601060006101000a81548160ff0219169083151502179055507ff80dbaea4785589e52984ca36a31de106adc77759539a5c7d92883bf49692fe942604051611d6091906148b4565b60405180910390a1611d706122f1565b5060029050611d7f565b600090505b90565b600080611da6611d9184612ee6565b600260009054906101000a9004600f0b6134a2565b9050611db181613034565b67ffffffffffffffff16915050919050565b6000603c8242611dd39190615170565b611ddd9190615281565b9050919050565b611df1600860ff166114e9565b15611dfb57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e5557600080fd5b611e5d6111ea565b8111611e6857600080fd5b6011547f9722adea12ab7ef86fc45b88f0e0b567639e8dddaae60261e08c03d747fbbfe682604051611e9a91906148b4565b60405180910390a28060118190555050565b600080600080611ec3611ebe86611adb565b612ee6565b9250611ed0600354611b84565b9050611eeb83600260009054906101000a9004600f0b612fb5565b9150611f09611ef983613034565b67ffffffffffffffff168261151c565b9350505050919050565b6000611f1f60006129ae565b905090565b600b5481565b6000806000611f3884611212565b9150611f43846114b1565b9050611f4f828261119a565b92505050919050565b600a5481565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fbb57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600191505090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060108210612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b906152fe565b60405180910390fd5b60006012548316146121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b29061536a565b60405180910390fd5b81601260008282541792505081905550600f6012541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e60125460405161220491906148b4565b60405180910390a26012549050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612249600260ff166114e9565b1561225357600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122ad57600080fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006122fb6147c5565b6123036147c5565b61230b6147c5565b600080600080600061231b611f13565b5061232461352e565b975061232f8861122b565b15612345576000985050505050505050506125af565b60006009548154811061235b5761235a61538a565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050955061240888612d1e565b94506001856124179190615004565b9050612422866114b1565b9350603c857f00000000000000000000000000000000000000000000000000000000000000006124529190615210565b61245c9190615281565b91506124986124937f000000000000000000000000000000000000000000000000000000000000000061248e85612ee6565b612fb5565b61308c565b92506124ae6000846124a86111ea565b84612d32565b96506000879080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505061256a876136c4565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161259a91906148b4565b60405180910390a16001985050505050505050505b90565b600780546125bf90615067565b80601f01602080910402602001604051908101604052809291908181526020018280546125eb90615067565b80156126385780601f1061260d57610100808354040283529160200191612638565b820191906000526020600020905b81548152906001019060200180831161261b57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061267083611d82565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126fb57600080fd5b6127036122f1565b5080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127909190615170565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405161287091906148b4565b60405180910390a3600191505092915050565b600080600080612891611cb5565b905060028160ff16036128aa576000935050505061297e565b60008160ff1611156128f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e8906150e4565b60405180910390fd5b6128f96122f1565b5061290385611d82565b9250612910338785613069565b91508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161296f91906148b4565b60405180910390a38193505050505b92915050565b600f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000806000601060009054906101000a900460ff16156129d8576000945050505050612b30565b6129e3600354611b84565b9250600083036129fa576000945050505050612b30565b600260009054906101000a9004600f0b9050600086118015612a1b57508286105b15612a24578592505b612a2d83612ee6565b9150612a597f000000000000000000000000000000000000000000000000000000000000000083612fb5565b9350612a648461308c565b9350612a7f600260009054906101000a9004600f0b85612fb5565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff160217905550603c83612ac79190615210565b600354612ad49190615004565b60038190555080600f0b836003547f1c9c74563c32efd114cb36fb5e432d9386c8254d08456614804a33a3088ab736600260009054906101000a9004600f0b604051612b209190614ac4565b60405180910390a4829450505050505b919050565b60095481565b60115481565b6000612b50600460ff166114e9565b15612b5a57600080fd5b601060009054906101000a900460ff1615612b7457600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bce57600080fd5b7f000000000000000000000000000000000000000000000000000000000000000082612bfa9190615210565b7f0000000000000000000000000000000000000000000000000000000000000000612c259190615004565b9050600f548111612c3557600080fd5b80600f819055505050565b6000600b54905090565b6000612c59600160ff166114e9565b15612c6357600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612cbd57600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000816000015163ffffffff169050919050565b612d3a6147c5565b612d426147c5565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042612e039190615170565b612e0d9190615281565b612e179190615004565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e9c57600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000677fffffffffffffff821115612efd57600080fd5b6040829060020a029050919050565b60008082600f0b13612f1d57600080fd5b60806fb17217f7d1cf79abc9e3b39803f2f6af612f39846137e3565b600f0b02908060020a82049150509050919050565b60008082600f0b84600f0b0390507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b8112158015612fa257506f7fffffffffffffffffffffffffffffff600f0b8113155b612fab57600080fd5b8091505092915050565b600080604083600f0b85600f0b029060008212600003808260020a82851804189250505090507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561302157506f7fffffffffffffffffffffffffffffff600f0b8113155b61302a57600080fd5b8091505092915050565b60008082600f0b121561304657600080fd5b604082600f0b9060008212600003808260020a8285180418925050509050919050565b60006130758483613119565b50613080838361321d565b50600190509392505050565b60006840000000000000000082600f0b126130a657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b12156130da5760009050613114565b6131116080700171547652b82fe1777d0ffda0d23a7d1284600f0b029060008212600003808260020a8285180418925050506139a9565b90505b919050565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000840361317357600092505050613217565b61317c85611adb565b9150838210156131c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b890615405565b60405180910390fd5b83826131cd9190615170565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001925050505b92915050565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008403613277576000925050506132d8565b61328085611adb565b9150838261328e9190615004565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001925050505b92915050565b60006132e86147c5565b60006132f26111ea565b9050600060016000805490506133089190615170565b815481106133195761331861538a565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050915080826020019068ffffffffffffffffff16908168ffffffffffffffffff168152505081600060016000805490506133f49190615170565b815481106134055761340461538a565b5b9060005260206000200160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060019250505090565b60008082600f0b036134b357600080fd5b600082600f0b604085600f0b9060020a02816134d2576134d1615252565b5b0590507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561351b57506f7fffffffffffffffffffffffffffffff600f0b8113155b61352457600080fd5b8091505092915050565b6135366147c5565b61353e6147c5565b6135466147c5565b6000806009548154811061355d5761355c61538a565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505092503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015613668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368c9190615451565b6fffffffffffffffffffffffffffffffff1690506136a983612d1e565b81116136ba578193505050506136c1565b8293505050505b90565b60008060006136d284611f2a565b6136da6111ea565b6136e49190615170565b9150600a546136f283611d82565b6136fc9190615170565b905061372a600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261321d565b50836000015163ffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d38460405161379e91906148b4565b60405180910390a36001600960008282546137b99190615004565b9250508190555080600a60008282546137d29190615004565b925050819055508192505050919050565b60008082600f0b136137f457600080fd5b60008083600f0b905068010000000000000000811261382f576040819060008212600003808260020a82851804189250505090506040820191505b640100000000811261385d576020819060008212600003808260020a82851804189250505090506020820191505b620100008112613889576010819060008212600003808260020a82851804189250505090506010820191505b61010081126138b4576008819060008212600003808260020a82851804189250505090506008820191505b601081126138de576004819060008212600003808260020a82851804189250505090506004820191505b60048112613908576002819060008212600003808260020a82851804189250505090506002820191505b60028112613917576001820191505b600060408084039060020a029050600083607f0386600f0b9060020a029050600067800000000000000090505b600081131561399c578182029150600060ff83908060020a8204915050905080607f0183908060020a8204915050925080820284019350506001819060008212600003808260020a8285180418925050509050613944565b5081945050505050919050565b60006840000000000000000082600f0b126139c357600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b12156139f757600090506147c0565b60006f80000000000000000000000000000000905060006780000000000000008416600f0b1315613a4557608070016a09e667f3bcc908b2fb1366ea957d3e8202908060020a820491505090505b60006740000000000000008416600f0b1315613a7e5760807001306fe0a31b7152de8d5a46305c85edec8202908060020a820491505090505b60006720000000000000008416600f0b1315613ab75760807001172b83c7d517adcdf7c8c50eb14a791f8202908060020a820491505090505b60006710000000000000008416600f0b1315613af057608070010b5586cf9890f6298b92b71842a983638202908060020a820491505090505b60006708000000000000008416600f0b1315613b295760807001059b0d31585743ae7c548eb68ca417fd8202908060020a820491505090505b60006704000000000000008416600f0b1315613b62576080700102c9a3e778060ee6f7caca4f7a29bde88202908060020a820491505090505b60006702000000000000008416600f0b1315613b9b57608070010163da9fb33356d84a66ae336dcdfa3f8202908060020a820491505090505b60006701000000000000008416600f0b1315613bd4576080700100b1afa5abcbed6129ab13ec11dc95438202908060020a820491505090505b600066800000000000008416600f0b1315613c0c57608070010058c86da1c09ea1ff19d294cf2f679b8202908060020a820491505090505b600066400000000000008416600f0b1315613c445760807001002c605e2e8cec506d21bfc89a23a00f8202908060020a820491505090505b600066200000000000008416600f0b1315613c7c576080700100162f3904051fa128bca9c55c31e5df8202908060020a820491505090505b600066100000000000008416600f0b1315613cb45760807001000b175effdc76ba38e31671ca9397258202908060020a820491505090505b600066080000000000008416600f0b1315613cec576080700100058ba01fb9f96d6cacd4b180917c3d8202908060020a820491505090505b600066040000000000008416600f0b1315613d2457608070010002c5cc37da9491d0985c348c68e7b38202908060020a820491505090505b600066020000000000008416600f0b1315613d5c5760807001000162e525ee054754457d59952920268202908060020a820491505090505b600066010000000000008416600f0b1315613d9457608070010000b17255775c040618bf4a4ade83fc8202908060020a820491505090505b6000658000000000008416600f0b1315613dcb5760807001000058b91b5bc9ae2eed81e9b7d4cfab8202908060020a820491505090505b6000654000000000008416600f0b1315613e02576080700100002c5c89d5ec6ca4d7c8acc017b7c98202908060020a820491505090505b6000652000000000008416600f0b1315613e3957608070010000162e43f4f831060e02d839a9d16d8202908060020a820491505090505b6000651000000000008416600f0b1315613e70576080700100000b1721bcfc99d9f890ea069117638202908060020a820491505090505b6000650800000000008416600f0b1315613ea757608070010000058b90cf1e6d97f9ca14dbcc16288202908060020a820491505090505b6000650400000000008416600f0b1315613ede5760807001000002c5c863b73f016468f6bac5ca2b8202908060020a820491505090505b6000650200000000008416600f0b1315613f15576080700100000162e430e5a18f6119e3c02282a58202908060020a820491505090505b6000650100000000008416600f0b1315613f4c5760807001000000b1721835514b86e6d96efd1bfe8202908060020a820491505090505b60006480000000008416600f0b1315613f82576080700100000058b90c0b48c6be5df846c5b2ef8202908060020a820491505090505b60006440000000008416600f0b1315613fb857608070010000002c5c8601cc6b9e94213c72737a8202908060020a820491505090505b60006420000000008416600f0b1315613fee5760807001000000162e42fff037df38aa2b219f068202908060020a820491505090505b60006410000000008416600f0b131561402457608070010000000b17217fba9c739aa5819f44f98202908060020a820491505090505b60006408000000008416600f0b131561405a5760807001000000058b90bfcdee5acd3c1cedc8238202908060020a820491505090505b60006404000000008416600f0b1315614090576080700100000002c5c85fe31f35a6a30da1be508202908060020a820491505090505b60006402000000008416600f0b13156140c657608070010000000162e42ff0999ce3541b9fffcf8202908060020a820491505090505b60006401000000008416600f0b13156140fc576080700100000000b17217f80f4ef5aadda455548202908060020a820491505090505b600063800000008416600f0b131561413157608070010000000058b90bfbf8479bd5a81b51ad8202908060020a820491505090505b600063400000008416600f0b13156141665760807001000000002c5c85fdf84bd62ae30a74cc8202908060020a820491505090505b600063200000008416600f0b131561419b576080700100000000162e42fefb2fed257559bdaa8202908060020a820491505090505b600063100000008416600f0b13156141d05760807001000000000b17217f7d5a7716bba4a9ae8202908060020a820491505090505b600063080000008416600f0b1315614205576080700100000000058b90bfbe9ddbac5e109cce8202908060020a820491505090505b600063040000008416600f0b131561423a57608070010000000002c5c85fdf4b15de6f17eb0d8202908060020a820491505090505b600063020000008416600f0b131561426f5760807001000000000162e42fefa494f1478fde058202908060020a820491505090505b600063010000008416600f0b13156142a457608070010000000000b17217f7d20cf927c8e94c8202908060020a820491505090505b6000628000008416600f0b13156142d85760807001000000000058b90bfbe8f71cb4e4b33d8202908060020a820491505090505b6000624000008416600f0b131561430c576080700100000000002c5c85fdf477b662b269458202908060020a820491505090505b6000622000008416600f0b131561434057608070010000000000162e42fefa3ae53369388c8202908060020a820491505090505b6000621000008416600f0b1315614374576080700100000000000b17217f7d1d351a389d408202908060020a820491505090505b6000620800008416600f0b13156143a857608070010000000000058b90bfbe8e8b2d3d4ede8202908060020a820491505090505b6000620400008416600f0b13156143dc5760807001000000000002c5c85fdf4741bea6e77e8202908060020a820491505090505b6000620200008416600f0b1315614410576080700100000000000162e42fefa39fe95583c28202908060020a820491505090505b6000620100008416600f0b13156144445760807001000000000000b17217f7d1cfb72b45e18202908060020a820491505090505b60006180008416600f0b1315614477576080700100000000000058b90bfbe8e7cc35c3f08202908060020a820491505090505b60006140008416600f0b13156144aa57608070010000000000002c5c85fdf473e242ea388202908060020a820491505090505b60006120008416600f0b13156144dd5760807001000000000000162e42fefa39f02b772c8202908060020a820491505090505b60006110008416600f0b131561451057608070010000000000000b17217f7d1cf7d83c1a8202908060020a820491505090505b60006108008416600f0b13156145435760807001000000000000058b90bfbe8e7bdcbe2e8202908060020a820491505090505b60006104008416600f0b1315614576576080700100000000000002c5c85fdf473dea871f8202908060020a820491505090505b60006102008416600f0b13156145a957608070010000000000000162e42fefa39ef44d918202908060020a820491505090505b60006101008416600f0b13156145dc576080700100000000000000b17217f7d1cf79e9498202908060020a820491505090505b600060808416600f0b131561460e57608070010000000000000058b90bfbe8e7bce5448202908060020a820491505090505b600060408416600f0b13156146405760807001000000000000002c5c85fdf473de6eca8202908060020a820491505090505b600060208416600f0b1315614672576080700100000000000000162e42fefa39ef366f8202908060020a820491505090505b600060108416600f0b13156146a45760807001000000000000000b17217f7d1cf79afa8202908060020a820491505090505b600060088416600f0b13156146d6576080700100000000000000058b90bfbe8e7bcd6d8202908060020a820491505090505b600060048416600f0b131561470857608070010000000000000002c5c85fdf473de6b28202908060020a820491505090505b600060028416600f0b131561473a5760807001000000000000000162e42fefa39ef3588202908060020a820491505090505b600060018416600f0b131561476c57608070010000000000000000b17217f7d1cf79ab8202908060020a820491505090505b604083600f0b9060008212600003808260020a828518041892505050603f03600f0b81908060020a820491505090506f7fffffffffffffffffffffffffffffff600f0b8111156147bb57600080fd5b809150505b919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061483b82614810565b9050919050565b61484b81614830565b811461485657600080fd5b50565b60008135905061486881614842565b92915050565b6000602082840312156148845761488361480b565b5b600061489284828501614859565b91505092915050565b6000819050919050565b6148ae8161489b565b82525050565b60006020820190506148c960008301846148a5565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614904816148cf565b811461490f57600080fd5b50565b600081359050614921816148fb565b92915050565b60006020828403121561493d5761493c61480b565b5b600061494b84828501614912565b91505092915050565b60008115159050919050565b61496981614954565b82525050565b60006020820190506149846000830184614960565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156149c45780820151818401526020810190506149a9565b60008484015250505050565b6000601f19601f8301169050919050565b60006149ec8261498a565b6149f68185614995565b9350614a068185602086016149a6565b614a0f816149d0565b840191505092915050565b60006020820190508181036000830152614a3481846149e1565b905092915050565b614a458161489b565b8114614a5057600080fd5b50565b600081359050614a6281614a3c565b92915050565b60008060408385031215614a7f57614a7e61480b565b5b6000614a8d85828601614859565b9250506020614a9e85828601614a53565b9150509250929050565b600081600f0b9050919050565b614abe81614aa8565b82525050565b6000602082019050614ad96000830184614ab5565b92915050565b614ae881614aa8565b8114614af357600080fd5b50565b600081359050614b0581614adf565b92915050565b60008060408385031215614b2257614b2161480b565b5b6000614b3085828601614a53565b9250506020614b4185828601614af6565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614b88826149d0565b810181811067ffffffffffffffff82111715614ba757614ba6614b50565b5b80604052505050565b6000614bba614801565b9050614bc68282614b7f565b919050565b600063ffffffff82169050919050565b614be481614bcb565b8114614bef57600080fd5b50565b600081359050614c0181614bdb565b92915050565b600068ffffffffffffffffff82169050919050565b614c2581614c07565b8114614c3057600080fd5b50565b600081359050614c4281614c1c565b92915050565b600067ffffffffffffffff82169050919050565b614c6581614c48565b8114614c7057600080fd5b50565b600081359050614c8281614c5c565b92915050565b600060608284031215614c9e57614c9d614b4b565b5b614ca86060614bb0565b90506000614cb884828501614bf2565b6000830152506020614ccc84828501614c33565b6020830152506040614ce084828501614c73565b60408301525092915050565b600060608284031215614d0257614d0161480b565b5b6000614d1084828501614c88565b91505092915050565b600080600060608486031215614d3257614d3161480b565b5b6000614d4086828701614859565b9350506020614d5186828701614859565b9250506040614d6286828701614a53565b9150509250925092565b600060208284031215614d8257614d8161480b565b5b6000614d9084828501614a53565b91505092915050565b60008060408385031215614db057614daf61480b565b5b6000614dbe85828601614a53565b9250506020614dcf85828601614a53565b9150509250929050565b614de281614bcb565b82525050565b614df181614c07565b82525050565b614e0081614c48565b82525050565b6000606082019050614e1b6000830186614dd9565b614e286020830185614de8565b614e356040830184614df7565b949350505050565b600060ff82169050919050565b614e5381614e3d565b82525050565b6000602082019050614e6e6000830184614e4a565b92915050565b614e7d81614830565b82525050565b6000602082019050614e986000830184614e74565b92915050565b60008060008060808587031215614eb857614eb761480b565b5b6000614ec687828801614a53565b9450506020614ed787828801614af6565b9350506040614ee887828801614a53565b9250506060614ef987828801614a53565b91505092959194509250565b614f0e81614bcb565b82525050565b614f1d81614c07565b82525050565b614f2c81614c48565b82525050565b606082016000820151614f486000850182614f05565b506020820151614f5b6020850182614f14565b506040820151614f6e6040850182614f23565b50505050565b6000606082019050614f896000830184614f32565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b614fb481614f8f565b82525050565b6000602082019050614fcf6000830184614fab565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061500f8261489b565b915061501a8361489b565b925082820190508082111561503257615031614fd5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061507f57607f821691505b60208210810361509257615091615038565b5b50919050565b7f4558504952454400000000000000000000000000000000000000000000000000600082015250565b60006150ce600783614995565b91506150d982615098565b602082019050919050565b600060208201905081810360008301526150fd816150c1565b9050919050565b7f5a45524f5f464952535400000000000000000000000000000000000000000000600082015250565b600061513a600a83614995565b915061514582615104565b602082019050919050565b600060208201905081810360008301526151698161512d565b9050919050565b600061517b8261489b565b91506151868361489b565b925082820390508181111561519e5761519d614fd5565b5b92915050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006151da600a83614995565b91506151e5826151a4565b602082019050919050565b60006020820190508181036000830152615209816151cd565b9050919050565b600061521b8261489b565b91506152268361489b565b92508282026152348161489b565b9150828204841483151761524b5761524a614fd5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061528c8261489b565b91506152978361489b565b9250826152a7576152a6615252565b5b828204905092915050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b60006152e8601183614995565b91506152f3826152b2565b602082019050919050565b60006020820190508181036000830152615317816152db565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000615354601283614995565b915061535f8261531e565b602082019050919050565b6000602082019050818103600083015261538381615347565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b60006153ef600d83614995565b91506153fa826153b9565b602082019050919050565b6000602082019050818103600083015261541e816153e2565b9050919050565b61542e81614f8f565b811461543957600080fd5b50565b60008151905061544b81615425565b92915050565b6000602082840312156154675761546661480b565b5b60006154758482850161543c565b9150509291505056fea2646970667358221220539aa72e5d51e9412bd37f9234b90b4d7c64114d76a701a416b43ff52ffa3f2964736f6c63430008120033 \ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json index 0d42da7..b8e4caf 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"int128","name":"_decayLevel","type":"int128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"Cap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int128","name":"_foo","type":"int128"},{"indexed":true,"internalType":"uint256","name":"_bar","type":"uint256"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"int128","name":"_oldAmount","type":"int128"},{"indexed":false,"internalType":"int128","name":"_newAmount","type":"int128"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Expired","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":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyExpiry","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decayLevel","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"int128","name":"_demurrageAmount","type":"int128"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"isEmptyRedistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","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":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_expirePeriod","type":"uint256"}],"name":"setExpirePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"sweep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"int128","name":"_demurrageModifier","type":"int128"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"int128","name":"_decayLevel","type":"int128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"Cap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int128","name":"_foo","type":"int128"},{"indexed":true,"internalType":"uint256","name":"_bar","type":"uint256"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"int128","name":"_oldAmount","type":"int128"},{"indexed":false,"internalType":"int128","name":"_newAmount","type":"int128"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Expired","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":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyExpiry","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decayLevel","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"int128","name":"_demurrageAmount","type":"int128"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"isEmptyRedistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","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":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_expirePeriod","type":"uint256"}],"name":"setExpirePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"sweep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"int128","name":"_demurrageModifier","type":"int128"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.metadata.json b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.metadata.json index 316f3dc..893430f 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.metadata.json +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.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"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"int128","name":"_decayLevel","type":"int128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"Cap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int128","name":"_foo","type":"int128"},{"indexed":true,"internalType":"uint256","name":"_bar","type":"uint256"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"int128","name":"_oldAmount","type":"int128"},{"indexed":false,"internalType":"int128","name":"_newAmount","type":"int128"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Expired","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":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyExpiry","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decayLevel","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"int128","name":"_demurrageAmount","type":"int128"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"isEmptyRedistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","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":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_expirePeriod","type":"uint256"}],"name":"setExpirePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"sweep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"int128","name":"_demurrageModifier","type":"int128"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":{"balanceOf(address)":{"notice":"Implements ERC20"}},"version":1}},"settings":{"compilationTarget":{"DemurrageTokenSingleNocap.sol":"DemurrageTokenSingleNocap"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"DemurrageTokenSingleNocap.sol":{"keccak256":"0x83ef1889d24655a3d2f9d8f40460e14288d73a0c4db7c131a4f38ef7ad822dac","license":"GPL-3.0-or-later","urls":["bzz-raw://508ab875d3eec6e1360e84f24a64413b7c1743482e903a6e8b93de33f2be8745","dweb:/ipfs/QmTWQ2GPWYKZTGEan1Xd9DbCjETrknPvxBR7be2uWGjmmV"]},"aux/ABDKMath64x64.sol":{"keccak256":"0x089b21db72314836305ba36b1773c3f0c2d5ac3a0f418820557c17c0e57c3c50","license":"BSD-4-Clause","urls":["bzz-raw://730ce8d750b0a6588f0d0724ace1c4d6dd90cf6dc0d2805b775b065fce147dfa","dweb:/ipfs/Qmdx7xRKvhXu1JtAVs25bER3LN2oGj2ZjW8jEvJpzQyXhc"]}},"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"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"int128","name":"_decayLevel","type":"int128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"Cap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int128","name":"_foo","type":"int128"},{"indexed":true,"internalType":"uint256","name":"_bar","type":"uint256"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"int128","name":"_oldAmount","type":"int128"},{"indexed":false,"internalType":"int128","name":"_newAmount","type":"int128"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Expired","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":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyExpiry","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decayLevel","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"int128","name":"_demurrageAmount","type":"int128"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"isEmptyRedistribution","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","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":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_expirePeriod","type":"uint256"}],"name":"setExpirePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"sweep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"int128","name":"_demurrageModifier","type":"int128"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"period","type":"uint32"},{"internalType":"uint72","name":"value","type":"uint72"},{"internalType":"uint64","name":"demurrage","type":"uint64"}],"internalType":"struct DemurrageTokenSingleNocap.redistributionItem","name":"_redistribution","type":"tuple"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":{"balanceOf(address)":{"notice":"Implements ERC20"}},"version":1}},"settings":{"compilationTarget":{"DemurrageTokenSingleNocap.sol":"DemurrageTokenSingleNocap"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"DemurrageTokenSingleNocap.sol":{"keccak256":"0xe432f3c664a764fc907f6314139f097e30320dc3813692ae1e2aca9e7e6b8f5b","license":"GPL-3.0-or-later","urls":["bzz-raw://c09533b6440d03f9bc9913ec7fe30cc2e94769d668876391ebf6ea4e96de4545","dweb:/ipfs/QmYFN5TxToX85fy9oaDDR5PKahJ1ycqPffDVbRvqduP8TA"]},"aux/ABDKMath64x64.sol":{"keccak256":"0x089b21db72314836305ba36b1773c3f0c2d5ac3a0f418820557c17c0e57c3c50","license":"BSD-4-Clause","urls":["bzz-raw://730ce8d750b0a6588f0d0724ace1c4d6dd90cf6dc0d2805b775b065fce147dfa","dweb:/ipfs/Qmdx7xRKvhXu1JtAVs25bER3LN2oGj2ZjW8jEvJpzQyXhc"]}},"version":1} diff --git a/python/setup.cfg b/python/setup.cfg index 6f0cdab..8f97fdc 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = erc20-demurrage-token -version = 0.4.0 +version = 0.4.1 description = ERC20 token with redistributed continual demurrage author = Louis Holbrook author_email = dev@holbrook.no diff --git a/solidity/DemurrageTokenSingleNocap.sol b/solidity/DemurrageTokenSingleNocap.sol index 9b3edbd..5aca545 100644 --- a/solidity/DemurrageTokenSingleNocap.sol +++ b/solidity/DemurrageTokenSingleNocap.sol @@ -242,7 +242,6 @@ contract DemurrageTokenSingleNocap { int128 baseBalance; int128 currentDemurragedAmount; uint256 periodCount; - uint8 expiryState; baseBalance = ABDKMath64x64.fromUInt(baseBalanceOf(_account)); @@ -260,7 +259,6 @@ contract DemurrageTokenSingleNocap { /// Increases base balance for a single account function increaseBaseBalance(address _account, uint256 _delta) private returns (bool) { uint256 oldBalance; - uint256 newBalance; uint256 workAccount; workAccount = uint256(account[_account]); @@ -277,7 +275,6 @@ contract DemurrageTokenSingleNocap { /// Decreases base balance for a single account function decreaseBaseBalance(address _account, uint256 _delta) private returns (bool) { uint256 oldBalance; - uint256 newBalance; uint256 workAccount; workAccount = uint256(account[_account]); @@ -327,6 +324,7 @@ contract DemurrageTokenSingleNocap { function toRedistribution(uint256 _participants, int128 _demurrageModifier, uint256 _value, uint256 _period) public pure returns(redistributionItem memory) { redistributionItem memory redistribution; + _participants; redistribution.period = uint32(_period); redistribution.value = uint72(_value); redistribution.demurrage = uint64(uint128(_demurrageModifier) & 0xffffffffffffffff); @@ -392,7 +390,7 @@ contract DemurrageTokenSingleNocap { return lastRedistribution; } - function getDistribution(uint256 _supply, int128 _demurrageAmount) public view returns (uint256) { + function getDistribution(uint256 _supply, int128 _demurrageAmount) public pure returns (uint256) { int128 difference; difference = ABDKMath64x64.mul(ABDKMath64x64.fromUInt(_supply), ABDKMath64x64.sub(ABDKMath64x64.fromUInt(1), _demurrageAmount)); @@ -400,7 +398,7 @@ contract DemurrageTokenSingleNocap { } - function getDistributionFromRedistribution(redistributionItem memory _redistribution) public returns (uint256) { + function getDistributionFromRedistribution(redistributionItem memory _redistribution) public pure returns (uint256) { uint256 redistributionSupply; int128 redistributionDemurrage; @@ -643,8 +641,6 @@ contract DemurrageTokenSingleNocap { // ERC20 transfer backend for transfer, transferFrom function transferBase(address _from, address _to, uint256 _value) private returns (bool) { - uint256 period; - decreaseBaseBalance(_from, _value); increaseBaseBalance(_to, _value); @@ -655,6 +651,7 @@ contract DemurrageTokenSingleNocap { function transferOwnership(address _newOwner) public returns (bool) { require(msg.sender == owner); newOwner = _newOwner; + return true; } // Implements OwnedAccepter @@ -666,6 +663,7 @@ contract DemurrageTokenSingleNocap { owner = newOwner; newOwner = address(0); emit OwnershipTransferred(oldOwner, owner); + return true; } // Explicitly and irretrievably burn tokens