commit d7051b26c0461b30e3692601b32b40697ddc7811 parent 14fb2fe8eac1a47265f7128462fb6ca220b2b2c3 Author: lash <dev@holbrook.no> Date: Tue, 5 Sep 2023 03:22:33 +0100 Make allowance method public Diffstat:
6 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/python/CHANGELOG b/python/CHANGELOG @@ -1,3 +1,5 @@ +- 0.5.5 + * Make allowance method public - 0.5.4 * Add Transfer() event emission to sweep() in contract - 0.5.3 diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin @@ -1 +1 @@ -6101006040523480156200001257600080fd5b506040516200658338038062006583833981810160405281019062000038919062000859565b6801000000000000000083600f0b126200005157600080fd5b6200005b6200056e565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660069081620000ad919062000b7a565b508560079081620000bf919062000b7a565b508460ff16608081815250504260038190555060035460a08181525050603c83620000eb919062000c90565b60c081815250506200010d60016200029f640100000000026401000000009004565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055506200016284620002c6640100000000026401000000009004565b600f0b60e081600f0b815250506200019e6000600260009054906101000a9004600f0b600060016200031a640100000000026401000000009004565b90506000819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000cdb565b6000677fffffffffffffff821115620002b757600080fd5b6040829060020a029050919050565b60008082600f0b13620002d857600080fd5b60806fb17217f7d1cf79abc9e3b39803f2f6af62000305846200039e640100000000026401000000009004565b600f0b02908060020a82049150509050919050565b620003246200056e565b6200032e6200056e565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b60008082600f0b13620003b057600080fd5b60008083600f0b9050680100000000000000008112620003ec576040819060008212600003808260020a82851804189250505090506040820191505b64010000000081126200041b576020819060008212600003808260020a82851804189250505090506020820191505b62010000811262000448576010819060008212600003808260020a82851804189250505090506010820191505b610100811262000474576008819060008212600003808260020a82851804189250505090506008820191505b601081126200049f576004819060008212600003808260020a82851804189250505090506004820191505b60048112620004ca576002819060008212600003808260020a82851804189250505090506002820191505b60028112620004da576001820191505b600060408084039060020a029050600083607f0386600f0b9060020a029050600067800000000000000090505b600081131562000561578182029150600060ff83908060020a8204915050905080607f0183908060020a8204915050925080820284019350506001819060008212600003808260020a828518041892505050905062000507565b5081945050505050919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200061382620005c8565b810181811067ffffffffffffffff82111715620006355762000634620005d9565b5b80604052505050565b60006200064a620005aa565b905062000658828262000608565b919050565b600067ffffffffffffffff8211156200067b576200067a620005d9565b5b6200068682620005c8565b9050602081019050919050565b60005b83811015620006b357808201518184015260208101905062000696565b60008484015250505050565b6000620006d6620006d0846200065d565b6200063e565b905082815260208101848484011115620006f557620006f4620005c3565b5b6200070284828562000693565b509392505050565b600082601f830112620007225762000721620005be565b5b815162000734848260208601620006bf565b91505092915050565b600060ff82169050919050565b62000755816200073d565b81146200076157600080fd5b50565b60008151905062000775816200074a565b92915050565b600081600f0b9050919050565b62000793816200077b565b81146200079f57600080fd5b50565b600081519050620007b38162000788565b92915050565b6000819050919050565b620007ce81620007b9565b8114620007da57600080fd5b50565b600081519050620007ee81620007c3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082182620007f4565b9050919050565b620008338162000814565b81146200083f57600080fd5b50565b600081519050620008538162000828565b92915050565b60008060008060008060c08789031215620008795762000878620005b4565b5b600087015167ffffffffffffffff8111156200089a5762000899620005b9565b5b620008a889828a016200070a565b965050602087015167ffffffffffffffff811115620008cc57620008cb620005b9565b5b620008da89828a016200070a565b9550506040620008ed89828a0162000764565b94505060606200090089828a01620007a2565b93505060806200091389828a01620007dd565b92505060a06200092689828a0162000842565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098657607f821691505b6020821081036200099c576200099b6200093e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b60006008830262000a097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c7565b62000a158683620009c7565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a5862000a5262000a4c84620007b9565b62000a2d565b620007b9565b9050919050565b6000819050919050565b62000a748362000a37565b62000a8c62000a838262000a5f565b848454620009d7565b825550505050565b600090565b62000aa362000a94565b62000ab081848462000a69565b505050565b5b8181101562000ad85762000acc60008262000a99565b60018101905062000ab6565b5050565b601f82111562000b275762000af181620009a2565b62000afc84620009b7565b8101602085101562000b0c578190505b62000b2462000b1b85620009b7565b83018262000ab5565b50505b505050565b60008160020a8304905092915050565b600062000b4f6000198460080262000b2c565b1980831691505092915050565b600062000b6a838362000b3c565b9150826002028217905092915050565b62000b858262000933565b67ffffffffffffffff81111562000ba15762000ba0620005d9565b5b62000bad82546200096d565b62000bba82828562000adc565b600060209050601f83116001811462000bf2576000841562000bdd578287015190505b62000be9858262000b5c565b86555062000c59565b601f19841662000c0286620009a2565b60005b8281101562000c2c5784890151825560018201915060208501945060208101905062000c05565b8683101562000c4c578489015162000c48601f89168262000b3c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c9d82620007b9565b915062000caa83620007b9565b925082820262000cba81620007b9565b9150828204841483151762000cd45762000cd362000c61565b5b5092915050565b60805160a05160c05160e05161582862000d5b600039600081816118ae01528181612799015281816129860152612d82015260008181611ffb0152818161275c01528181612cda01528181612f1f015261314701526000818161202701528181612f4b0152818161316801526131ad0152600061190c01526158286000f3fe608060405234801561001057600080fd5b50600436106103d7576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e11610211578063a2309ff811610137578063d7a52fa9116100ca578063e69571af11610099578063e69571af14610ca8578063e809529514610cd8578063eda4e6d614610cf6578063f2fde38b14610d14576103d7565b8063d7a52fa914610c0e578063d89135cd14610c2a578063da2824a814610c48578063e54063a614610c78576103d7565b8063b470aade11610106578063b470aade14610b84578063c0ab707714610ba2578063d340ef8a14610bd2578063d5abeb0114610bf0576103d7565b8063a2309ff814610ae8578063a457c2d714610b06578063a9059cbb14610b36578063b1cb0db314610b66576103d7565b806386fe212d116101af5780638f1df6bc1161017e5780638f1df6bc14610a7257806394d008ef14610a9057806395d89b4114610aac5780639f24880814610aca576103d7565b806386fe212d146109ec5780638832e6e314610a1c5780638da5cb5b14610a385780638f0b2d5d14610a56576103d7565b8063731f237c116101eb578063731f237c146109625780637445e33a1461098057806374bedb95146109b057806384dde4af146109ce576103d7565b80636a2d094e146108e65780636f8b44b01461091657806370a0823114610932576103d7565b8063313334871161030157806344df8e701161029457806358b2833b1161026357806358b2833b1461084a5780635ae06f7e146108685780635f408c04146108985780636787a9be146108b6576103d7565b806344df8e701461079c57806347a50517146107ba5780634abfbba2146107ea57806351b4541c1461081a576103d7565b806340452d91116102d057806340452d91146106ee57806342966c6814610720578063449a52f81461075057806344d1718714610780576103d7565b80633133348714610652578063313ce5671461068257806331a5995d146106a057806339509351146106be576103d7565b806318cbbcfc1161037957806323b872dd1161034857806323b872dd146105925780632a7aec09146105c25780632b29ba23146105f25780632c1758c114610622576103d7565b806318cbbcfc146104f65780631989c6a814610514578063213d1e1e1461053257806323a8594414610562576103d7565b8063095ea7b3116103b5578063095ea7b31461045a57806309f28f3c1461048a57806311c56615146104a857806318160ddd146104d8576103d7565b806301681a62146103dc57806301ffc9a71461040c57806306fdde031461043c575b600080fd5b6103f660048036038101906103f19190614a9d565b610d44565b6040516104039190614ae3565b60405180910390f35b61042660048036038101906104219190614b56565b610e92565b6040516104339190614b9e565b60405180910390f35b610444611180565b6040516104519190614c49565b60405180910390f35b610474600480360381019061046f9190614c97565b61120e565b6040516104819190614b9e565b60405180910390f35b61049261144a565b60405161049f9190614cf3565b60405180910390f35b6104c260048036038101906104bd9190614d3a565b61145d565b6040516104cf9190614ae3565b60405180910390f35b6104e06114ad565b6040516104ed9190614ae3565b60405180910390f35b6104fe6114c4565b60405161050b9190614ae3565b60405180910390f35b61051c6114c9565b6040516105299190614ae3565b60405180910390f35b61054c60048036038101906105479190614f1b565b6114d5565b6040516105599190614ae3565b60405180910390f35b61057c60048036038101906105779190614f1b565b6114ee565b6040516105899190614b9e565b60405180910390f35b6105ac60048036038101906105a79190614f48565b611556565b6040516105b99190614b9e565b60405180910390f35b6105dc60048036038101906105d79190614f1b565b611774565b6040516105e99190614cf3565b60405180910390f35b61060c60048036038101906106079190614a9d565b6117ac565b6040516106199190614b9e565b60405180910390f35b61063c60048036038101906106379190614f9b565b61185a565b6040516106499190614b9e565b60405180910390f35b61066c60048036038101906106679190614fc8565b61188d565b6040516106799190614ae3565b60405180910390f35b61068a61190a565b6040516106979190614ae3565b60405180910390f35b6106a861192e565b6040516106b59190614ae3565b60405180910390f35b6106d860048036038101906106d39190614c97565b611934565b6040516106e59190614b9e565b60405180910390f35b61070860048036038101906107039190614f9b565b611aca565b60405161071793929190615035565b60405180910390f35b61073a60048036038101906107359190614f9b565b611b39565b6040516107479190614b9e565b60405180910390f35b61076a60048036038101906107659190614c97565b611d0a565b6040516107779190614b9e565b60405180910390f35b61079a600480360381019061079591906150d1565b611ee1565b005b6107a4611f5f565b6040516107b19190614b9e565b60405180910390f35b6107d460048036038101906107cf9190614a9d565b611fae565b6040516107e19190614ae3565b60405180910390f35b61080460048036038101906107ff9190614f9b565b611ff7565b6040516108119190614ae3565b60405180910390f35b610834600480360381019061082f9190614f9b565b612057565b6040516108419190614ae3565b60405180910390f35b610852612078565b60405161085f9190614ae3565b60405180910390f35b610882600480360381019061087d9190614a9d565b61207e565b60405161088f9190614b9e565b60405180910390f35b6108a0612188565b6040516108ad9190615161565b60405180910390f35b6108d060048036038101906108cb9190614f9b565b612255565b6040516108dd9190614ae3565b60405180910390f35b61090060048036038101906108fb9190614f9b565b612296565b60405161090d9190614ae3565b60405180910390f35b610930600480360381019061092b9190614f9b565b6122b7565b005b61094c60048036038101906109479190614a9d565b61237f565b6040516109599190614ae3565b60405180910390f35b61096a6123e6565b6040516109779190614ae3565b60405180910390f35b61099a60048036038101906109959190614f1b565b6123f7565b6040516109a79190614ae3565b60405180910390f35b6109b8612425565b6040516109c59190614ae3565b60405180910390f35b6109d661242b565b6040516109e3919061518b565b60405180910390f35b610a066004803603810190610a019190614f9b565b612451565b604051610a139190614ae3565b60405180910390f35b610a366004803603810190610a3191906150d1565b612538565b005b610a40612549565b604051610a4d919061518b565b60405180910390f35b610a706004803603810190610a6b9190614a9d565b61256f565b005b610a7a612624565b604051610a879190614b9e565b60405180910390f35b610aaa6004803603810190610aa591906150d1565b6128e5565b005b610ab46128f6565b604051610ac19190614c49565b60405180910390f35b610ad2612984565b604051610adf9190614cf3565b60405180910390f35b610af06129a8565b604051610afd9190614ae3565b60405180910390f35b610b206004803603810190610b1b9190614c97565b6129b2565b604051610b2d9190614b9e565b60405180910390f35b610b506004803603810190610b4b9190614c97565b612bd1565b604051610b5d9190614b9e565b60405180910390f35b610b6e612cd2565b604051610b7b9190614ae3565b60405180910390f35b610b8c612cd8565b604051610b999190614ae3565b60405180910390f35b610bbc6004803603810190610bb79190614f9b565b612cfc565b604051610bc99190614ae3565b60405180910390f35b610bda612e83565b604051610be79190614ae3565b60405180910390f35b610bf8612e89565b604051610c059190614ae3565b60405180910390f35b610c286004803603810190610c239190614f9b565b612e8f565b005b610c32612fcf565b604051610c3f9190614ae3565b60405180910390f35b610c626004803603810190610c5d9190614a9d565b612fd9565b604051610c6f9190614b9e565b60405180910390f35b610c926004803603810190610c8d9190614f1b565b6130ad565b604051610c9f9190614ae3565b60405180910390f35b610cc26004803603810190610cbd91906151a6565b6130c1565b604051610ccf919061527c565b60405180910390f35b610ce0613141565b604051610ced91906152c2565b60405180910390f35b610cfe6131ab565b604051610d0b9190614ae3565b60405180910390f35b610d2e6004803603810190610d299190614a9d565b6131cf565b604051610d3b9190614b9e565b60405180910390f35b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e1d919061530c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e819190614ae3565b60405180910390a380915050919050565b600063b61bc9417c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610ee6576001905061117b565b635878bcf47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610f38576001905061117b565b63bc4babdd7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610f8a576001905061117b565b630d7491f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610fdc576001905061117b565b63abe1f1f57c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361102e576001905061117b565b63841a0e947c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603611080576001905061117b565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036110d2576001905061117b565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603611124576001905061117b565b63d00179687c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603611176576001905061117b565b600090505b919050565b6006805461118d9061536f565b80601f01602080910402602001604051908101604052809291908181526020018280546111b99061536f565b80156112065780601f106111db57610100808354040283529160200191611206565b820191906000526020600020905b8154815290600101906020018083116111e957829003601f168201915b505050505081565b600080600061121b612188565b905060028160ff160361123357600092505050611444565b60008160ff16111561127a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611271906153ec565b60405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113435760008414611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133990615458565b60405180910390fd5b5b61134b612624565b5061135584612255565b915081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040516114359190614ae3565b60405180910390a36001925050505b92915050565b600260009054906101000a9004600f0b81565b60008061148461146c85613318565b61147f6114796001613318565b8661333e565b6133a5565b905061148f81613424565b67ffffffffffffffff16846114a49190615478565b91505092915050565b6000600b546008546114bf9190615478565b905090565b600f81565b60008080549050905090565b6000816020015168ffffffffffffffffff169050919050565b600080826000015163ffffffff16111561150b5760009050611551565b6000826020015168ffffffffffffffffff16111561152c5760009050611551565b6000826040015167ffffffffffffffff16111561154c5760009050611551565b600190505b919050565b600080600080611564612188565b905060028160ff160361157d576000935050505061176d565b60008160ff1611156115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb906153ec565b60405180910390fd5b6115cc612624565b506115d685612255565b925082600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561166157600080fd5b82600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ed9190615478565b925050819055506116ff878785613459565b91508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161175e9190614ae3565b60405180910390a38193505050505b9392505050565b60008067ffffffffffffffff836040015160070b169050600081600f0b036117a3576117a06001613318565b90505b80915050919050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118535750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000600f821061186957600080fd5b6000820361187e57600f601254149050611888565b8160125483161490505b919050565b60008060008061189c86613318565b92506118a785613318565b91506118d37f0000000000000000000000000000000000000000000000000000000000000000836133a5565b90506118de8161347c565b90506118ea83826133a5565b90506118f581613424565b67ffffffffffffffff16935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60125481565b60008061193f612624565b5061194983612255565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119d7919061530c565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611ab79190614ae3565b60405180910390a3600191505092915050565b60008181548110611ada57600080fd5b906000526020600020016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900468ffffffffffffffffff169080600001600d9054906101000a900467ffffffffffffffff16905083565b600080611b44612188565b60ff1614611b5157600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611bf65750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2c906154f8565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611c8157600080fd5b6000611c8c83612255565b9050611c983382613509565b5082600b6000828254611cab919061530c565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca584604051611cf89190614ae3565b60405180910390a26001915050919050565b6000806000611d17612188565b60ff1614611d2457600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dc95750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff906154f8565b60405180910390fd5b611e10612624565b5060006011541115611e395760115483600854611e2d919061530c565b1115611e3857600080fd5b5b8260086000828254611e4b919061530c565b92505081905550611e5b83612255565b9050611e67848261360d565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051611ec59190614ae3565b60405180910390a3611ed56136ce565b50600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4690615564565b60405180910390fd5b611f5883611b39565b5050505050565b6000611fa9600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b39565b905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826120259190615584565b7f0000000000000000000000000000000000000000000000000000000000000000612050919061530c565b9050919050565b6000603c82426120679190615478565b61207191906155f5565b9050919050565b60035481565b600061208d600160ff1661185a565b1561209757600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061211e57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61212757600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000601060009054906101000a900460ff16156121a85760019050612252565b6000600f54036121bb5760009050612252565b600f54421061224d576121e8603c6003546121d691906155f5565b600f546121e39190615478565b612cfc565b506001601060006101000a81548160ff0219169083151502179055507ff80dbaea4785589e52984ca36a31de106adc77759539a5c7d92883bf49692fe9426040516122339190614ae3565b60405180910390a1612243612624565b5060029050612252565b600090505b90565b60008061227961226484613318565b600260009054906101000a9004600f0b613892565b905061228481613424565b67ffffffffffffffff16915050919050565b6000603c82426122a69190615478565b6122b091906155f5565b9050919050565b6122c4600860ff1661185a565b156122ce57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461232857600080fd5b6123306114ad565b811161233b57600080fd5b6011547f9722adea12ab7ef86fc45b88f0e0b567639e8dddaae60261e08c03d747fbbfe68260405161236d9190614ae3565b60405180910390a28060118190555050565b60008060008061239661239186611fae565b613318565b92506123a3600354612057565b90506123be83600260009054906101000a9004600f0b6133a5565b91506123dc6123cc83613424565b67ffffffffffffffff168261188d565b9350505050919050565b60006123f26000612cfc565b905090565b6000806000612405846114d5565b915061241084611774565b905061241c828261145d565b92505050919050565b600a5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060108210612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248d90615672565b60405180910390fd5b60006012548316146124dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d4906156de565b60405180910390fd5b81601260008282541792505081905550600f6012541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e6012546040516125269190614ae3565b60405180910390a26012549050919050565b6125428484611d0a565b5050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61257c600260ff1661185a565b1561258657600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125e057600080fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061262e6149ef565b6126366149ef565b61263e6149ef565b600080600080600061264e6123e6565b5061265761391e565b9750612662886114ee565b15612678576000985050505050505050506128e2565b60006009548154811061268e5761268d6156fe565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050955061273b886130ad565b945060018561274a919061530c565b905061275586611774565b9350603c857f00000000000000000000000000000000000000000000000000000000000000006127859190615584565b61278f91906155f5565b91506127cb6127c67f00000000000000000000000000000000000000000000000000000000000000006127c185613318565b6133a5565b61347c565b92506127e16000846127db6114ad565b846130c1565b96506000879080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505061289d87613ab4565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516128cd9190614ae3565b60405180910390a16001985050505050505050505b90565b6128ef8484611d0a565b5050505050565b600780546129039061536f565b80601f016020809104026020016040519081016040528092919081815260200182805461292f9061536f565b801561297c5780601f106129515761010080835404028352916020019161297c565b820191906000526020600020905b81548152906001019060200180831161295f57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6000806129be83612255565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612a4957600080fd5b612a51612624565b5080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ade9190615478565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051612bbe9190614ae3565b60405180910390a3600191505092915050565b600080600080612bdf612188565b905060028160ff1603612bf85760009350505050612ccc565b60008160ff161115612c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c36906153ec565b60405180910390fd5b612c47612624565b50612c5185612255565b9250612c5e338785613459565b91508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612cbd9190614ae3565b60405180910390a38193505050505b92915050565b600f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000806000601060009054906101000a900460ff1615612d26576000945050505050612e7e565b612d31600354612057565b925060008303612d48576000945050505050612e7e565b600260009054906101000a9004600f0b9050600086118015612d6957508286105b15612d72578592505b612d7b83613318565b9150612da77f0000000000000000000000000000000000000000000000000000000000000000836133a5565b9350612db28461347c565b9350612dcd600260009054906101000a9004600f0b856133a5565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff160217905550603c83612e159190615584565b600354612e22919061530c565b60038190555080600f0b836003547f1c9c74563c32efd114cb36fb5e432d9386c8254d08456614804a33a3088ab736600260009054906101000a9004600f0b604051612e6e9190614cf3565b60405180910390a4829450505050505b919050565b60095481565b60115481565b600080612e9f600460ff1661185a565b15612ea957600080fd5b601060009054906101000a900460ff1615612ec357600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f1d57600080fd5b7f000000000000000000000000000000000000000000000000000000000000000083612f499190615584565b7f0000000000000000000000000000000000000000000000000000000000000000612f74919061530c565b9150600f548211612f8457600080fd5b600f54905081600f81905550807ff5bd6cb27a0006b5ea8618058a0d84719695cb6d984f4840bc1a54ca12ae4b7c600f54604051612fc29190614ae3565b60405180910390a2505050565b6000600b54905090565b6000612fe8600160ff1661185a565b15612ff257600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461304c57600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000816000015163ffffffff169050919050565b6130c96149ef565b6130d16149ef565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426131929190615478565b61319c91906155f5565b6131a6919061530c565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461322c57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b6000677fffffffffffffff82111561332f57600080fd5b6040829060020a029050919050565b60008082600f0b84600f0b0390507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561339257506f7fffffffffffffffffffffffffffffff600f0b8113155b61339b57600080fd5b8091505092915050565b600080604083600f0b85600f0b029060008212600003808260020a82851804189250505090507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561341157506f7fffffffffffffffffffffffffffffff600f0b8113155b61341a57600080fd5b8091505092915050565b60008082600f0b121561343657600080fd5b604082600f0b9060008212600003808260020a8285180418925050509050919050565b60006134658483613509565b50613470838361360d565b50600190509392505050565b60006840000000000000000082600f0b1261349657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b12156134ca5760009050613504565b6135016080700171547652b82fe1777d0ffda0d23a7d1284600f0b029060008212600003808260020a828518041892505050613bd3565b90505b919050565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000840361356357600092505050613607565b61356c85611fae565b9150838210156135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890615779565b60405180910390fd5b83826135bd9190615478565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001925050505b92915050565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008403613667576000925050506136c8565b61367085611fae565b9150838261367e919061530c565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001925050505b92915050565b60006136d86149ef565b60006136e26114ad565b9050600060016000805490506136f89190615478565b81548110613709576137086156fe565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050915080826020019068ffffffffffffffffff16908168ffffffffffffffffff168152505081600060016000805490506137e49190615478565b815481106137f5576137f46156fe565b5b9060005260206000200160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060019250505090565b60008082600f0b036138a357600080fd5b600082600f0b604085600f0b9060020a02816138c2576138c16155c6565b5b0590507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561390b57506f7fffffffffffffffffffffffffffffff600f0b8113155b61391457600080fd5b8091505092915050565b6139266149ef565b61392e6149ef565b6139366149ef565b6000806009548154811061394d5761394c6156fe565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505092503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015613a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a7c91906157c5565b6fffffffffffffffffffffffffffffffff169050613a99836130ad565b8111613aaa57819350505050613ab1565b8293505050505b90565b6000806000613ac2846123f7565b613aca6114ad565b613ad49190615478565b9150600a54613ae283612255565b613aec9190615478565b9050613b1a600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261360d565b50836000015163ffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d384604051613b8e9190614ae3565b60405180910390a3600160096000828254613ba9919061530c565b9250508190555080600a6000828254613bc2919061530c565b925050819055508192505050919050565b60006840000000000000000082600f0b12613bed57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b1215613c2157600090506149ea565b60006f80000000000000000000000000000000905060006780000000000000008416600f0b1315613c6f57608070016a09e667f3bcc908b2fb1366ea957d3e8202908060020a820491505090505b60006740000000000000008416600f0b1315613ca85760807001306fe0a31b7152de8d5a46305c85edec8202908060020a820491505090505b60006720000000000000008416600f0b1315613ce15760807001172b83c7d517adcdf7c8c50eb14a791f8202908060020a820491505090505b60006710000000000000008416600f0b1315613d1a57608070010b5586cf9890f6298b92b71842a983638202908060020a820491505090505b60006708000000000000008416600f0b1315613d535760807001059b0d31585743ae7c548eb68ca417fd8202908060020a820491505090505b60006704000000000000008416600f0b1315613d8c576080700102c9a3e778060ee6f7caca4f7a29bde88202908060020a820491505090505b60006702000000000000008416600f0b1315613dc557608070010163da9fb33356d84a66ae336dcdfa3f8202908060020a820491505090505b60006701000000000000008416600f0b1315613dfe576080700100b1afa5abcbed6129ab13ec11dc95438202908060020a820491505090505b600066800000000000008416600f0b1315613e3657608070010058c86da1c09ea1ff19d294cf2f679b8202908060020a820491505090505b600066400000000000008416600f0b1315613e6e5760807001002c605e2e8cec506d21bfc89a23a00f8202908060020a820491505090505b600066200000000000008416600f0b1315613ea6576080700100162f3904051fa128bca9c55c31e5df8202908060020a820491505090505b600066100000000000008416600f0b1315613ede5760807001000b175effdc76ba38e31671ca9397258202908060020a820491505090505b600066080000000000008416600f0b1315613f16576080700100058ba01fb9f96d6cacd4b180917c3d8202908060020a820491505090505b600066040000000000008416600f0b1315613f4e57608070010002c5cc37da9491d0985c348c68e7b38202908060020a820491505090505b600066020000000000008416600f0b1315613f865760807001000162e525ee054754457d59952920268202908060020a820491505090505b600066010000000000008416600f0b1315613fbe57608070010000b17255775c040618bf4a4ade83fc8202908060020a820491505090505b6000658000000000008416600f0b1315613ff55760807001000058b91b5bc9ae2eed81e9b7d4cfab8202908060020a820491505090505b6000654000000000008416600f0b131561402c576080700100002c5c89d5ec6ca4d7c8acc017b7c98202908060020a820491505090505b6000652000000000008416600f0b131561406357608070010000162e43f4f831060e02d839a9d16d8202908060020a820491505090505b6000651000000000008416600f0b131561409a576080700100000b1721bcfc99d9f890ea069117638202908060020a820491505090505b6000650800000000008416600f0b13156140d157608070010000058b90cf1e6d97f9ca14dbcc16288202908060020a820491505090505b6000650400000000008416600f0b13156141085760807001000002c5c863b73f016468f6bac5ca2b8202908060020a820491505090505b6000650200000000008416600f0b131561413f576080700100000162e430e5a18f6119e3c02282a58202908060020a820491505090505b6000650100000000008416600f0b13156141765760807001000000b1721835514b86e6d96efd1bfe8202908060020a820491505090505b60006480000000008416600f0b13156141ac576080700100000058b90c0b48c6be5df846c5b2ef8202908060020a820491505090505b60006440000000008416600f0b13156141e257608070010000002c5c8601cc6b9e94213c72737a8202908060020a820491505090505b60006420000000008416600f0b13156142185760807001000000162e42fff037df38aa2b219f068202908060020a820491505090505b60006410000000008416600f0b131561424e57608070010000000b17217fba9c739aa5819f44f98202908060020a820491505090505b60006408000000008416600f0b13156142845760807001000000058b90bfcdee5acd3c1cedc8238202908060020a820491505090505b60006404000000008416600f0b13156142ba576080700100000002c5c85fe31f35a6a30da1be508202908060020a820491505090505b60006402000000008416600f0b13156142f057608070010000000162e42ff0999ce3541b9fffcf8202908060020a820491505090505b60006401000000008416600f0b1315614326576080700100000000b17217f80f4ef5aadda455548202908060020a820491505090505b600063800000008416600f0b131561435b57608070010000000058b90bfbf8479bd5a81b51ad8202908060020a820491505090505b600063400000008416600f0b13156143905760807001000000002c5c85fdf84bd62ae30a74cc8202908060020a820491505090505b600063200000008416600f0b13156143c5576080700100000000162e42fefb2fed257559bdaa8202908060020a820491505090505b600063100000008416600f0b13156143fa5760807001000000000b17217f7d5a7716bba4a9ae8202908060020a820491505090505b600063080000008416600f0b131561442f576080700100000000058b90bfbe9ddbac5e109cce8202908060020a820491505090505b600063040000008416600f0b131561446457608070010000000002c5c85fdf4b15de6f17eb0d8202908060020a820491505090505b600063020000008416600f0b13156144995760807001000000000162e42fefa494f1478fde058202908060020a820491505090505b600063010000008416600f0b13156144ce57608070010000000000b17217f7d20cf927c8e94c8202908060020a820491505090505b6000628000008416600f0b13156145025760807001000000000058b90bfbe8f71cb4e4b33d8202908060020a820491505090505b6000624000008416600f0b1315614536576080700100000000002c5c85fdf477b662b269458202908060020a820491505090505b6000622000008416600f0b131561456a57608070010000000000162e42fefa3ae53369388c8202908060020a820491505090505b6000621000008416600f0b131561459e576080700100000000000b17217f7d1d351a389d408202908060020a820491505090505b6000620800008416600f0b13156145d257608070010000000000058b90bfbe8e8b2d3d4ede8202908060020a820491505090505b6000620400008416600f0b13156146065760807001000000000002c5c85fdf4741bea6e77e8202908060020a820491505090505b6000620200008416600f0b131561463a576080700100000000000162e42fefa39fe95583c28202908060020a820491505090505b6000620100008416600f0b131561466e5760807001000000000000b17217f7d1cfb72b45e18202908060020a820491505090505b60006180008416600f0b13156146a1576080700100000000000058b90bfbe8e7cc35c3f08202908060020a820491505090505b60006140008416600f0b13156146d457608070010000000000002c5c85fdf473e242ea388202908060020a820491505090505b60006120008416600f0b13156147075760807001000000000000162e42fefa39f02b772c8202908060020a820491505090505b60006110008416600f0b131561473a57608070010000000000000b17217f7d1cf7d83c1a8202908060020a820491505090505b60006108008416600f0b131561476d5760807001000000000000058b90bfbe8e7bdcbe2e8202908060020a820491505090505b60006104008416600f0b13156147a0576080700100000000000002c5c85fdf473dea871f8202908060020a820491505090505b60006102008416600f0b13156147d357608070010000000000000162e42fefa39ef44d918202908060020a820491505090505b60006101008416600f0b1315614806576080700100000000000000b17217f7d1cf79e9498202908060020a820491505090505b600060808416600f0b131561483857608070010000000000000058b90bfbe8e7bce5448202908060020a820491505090505b600060408416600f0b131561486a5760807001000000000000002c5c85fdf473de6eca8202908060020a820491505090505b600060208416600f0b131561489c576080700100000000000000162e42fefa39ef366f8202908060020a820491505090505b600060108416600f0b13156148ce5760807001000000000000000b17217f7d1cf79afa8202908060020a820491505090505b600060088416600f0b1315614900576080700100000000000000058b90bfbe8e7bcd6d8202908060020a820491505090505b600060048416600f0b131561493257608070010000000000000002c5c85fdf473de6b28202908060020a820491505090505b600060028416600f0b13156149645760807001000000000000000162e42fefa39ef3588202908060020a820491505090505b600060018416600f0b131561499657608070010000000000000000b17217f7d1cf79ab8202908060020a820491505090505b604083600f0b9060008212600003808260020a828518041892505050603f03600f0b81908060020a820491505090506f7fffffffffffffffffffffffffffffff600f0b8111156149e557600080fd5b809150505b919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614a6a82614a3f565b9050919050565b614a7a81614a5f565b8114614a8557600080fd5b50565b600081359050614a9781614a71565b92915050565b600060208284031215614ab357614ab2614a35565b5b6000614ac184828501614a88565b91505092915050565b6000819050919050565b614add81614aca565b82525050565b6000602082019050614af86000830184614ad4565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614b3381614afe565b8114614b3e57600080fd5b50565b600081359050614b5081614b2a565b92915050565b600060208284031215614b6c57614b6b614a35565b5b6000614b7a84828501614b41565b91505092915050565b60008115159050919050565b614b9881614b83565b82525050565b6000602082019050614bb36000830184614b8f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614bf3578082015181840152602081019050614bd8565b60008484015250505050565b6000601f19601f8301169050919050565b6000614c1b82614bb9565b614c258185614bc4565b9350614c35818560208601614bd5565b614c3e81614bff565b840191505092915050565b60006020820190508181036000830152614c638184614c10565b905092915050565b614c7481614aca565b8114614c7f57600080fd5b50565b600081359050614c9181614c6b565b92915050565b60008060408385031215614cae57614cad614a35565b5b6000614cbc85828601614a88565b9250506020614ccd85828601614c82565b9150509250929050565b600081600f0b9050919050565b614ced81614cd7565b82525050565b6000602082019050614d086000830184614ce4565b92915050565b614d1781614cd7565b8114614d2257600080fd5b50565b600081359050614d3481614d0e565b92915050565b60008060408385031215614d5157614d50614a35565b5b6000614d5f85828601614c82565b9250506020614d7085828601614d25565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614db782614bff565b810181811067ffffffffffffffff82111715614dd657614dd5614d7f565b5b80604052505050565b6000614de9614a2b565b9050614df58282614dae565b919050565b600063ffffffff82169050919050565b614e1381614dfa565b8114614e1e57600080fd5b50565b600081359050614e3081614e0a565b92915050565b600068ffffffffffffffffff82169050919050565b614e5481614e36565b8114614e5f57600080fd5b50565b600081359050614e7181614e4b565b92915050565b600067ffffffffffffffff82169050919050565b614e9481614e77565b8114614e9f57600080fd5b50565b600081359050614eb181614e8b565b92915050565b600060608284031215614ecd57614ecc614d7a565b5b614ed76060614ddf565b90506000614ee784828501614e21565b6000830152506020614efb84828501614e62565b6020830152506040614f0f84828501614ea2565b60408301525092915050565b600060608284031215614f3157614f30614a35565b5b6000614f3f84828501614eb7565b91505092915050565b600080600060608486031215614f6157614f60614a35565b5b6000614f6f86828701614a88565b9350506020614f8086828701614a88565b9250506040614f9186828701614c82565b9150509250925092565b600060208284031215614fb157614fb0614a35565b5b6000614fbf84828501614c82565b91505092915050565b60008060408385031215614fdf57614fde614a35565b5b6000614fed85828601614c82565b9250506020614ffe85828601614c82565b9150509250929050565b61501181614dfa565b82525050565b61502081614e36565b82525050565b61502f81614e77565b82525050565b600060608201905061504a6000830186615008565b6150576020830185615017565b6150646040830184615026565b949350505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126150915761509061506c565b5b8235905067ffffffffffffffff8111156150ae576150ad615071565b5b6020830191508360018202830111156150ca576150c9615076565b5b9250929050565b600080600080606085870312156150eb576150ea614a35565b5b60006150f987828801614a88565b945050602061510a87828801614c82565b935050604085013567ffffffffffffffff81111561512b5761512a614a3a565b5b6151378782880161507b565b925092505092959194509250565b600060ff82169050919050565b61515b81615145565b82525050565b60006020820190506151766000830184615152565b92915050565b61518581614a5f565b82525050565b60006020820190506151a0600083018461517c565b92915050565b600080600080608085870312156151c0576151bf614a35565b5b60006151ce87828801614c82565b94505060206151df87828801614d25565b93505060406151f087828801614c82565b925050606061520187828801614c82565b91505092959194509250565b61521681614dfa565b82525050565b61522581614e36565b82525050565b61523481614e77565b82525050565b606082016000820151615250600085018261520d565b506020820151615263602085018261521c565b506040820151615276604085018261522b565b50505050565b6000606082019050615291600083018461523a565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6152bc81615297565b82525050565b60006020820190506152d760008301846152b3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061531782614aca565b915061532283614aca565b925082820190508082111561533a576153396152dd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061538757607f821691505b60208210810361539a57615399615340565b5b50919050565b7f4558504952454400000000000000000000000000000000000000000000000000600082015250565b60006153d6600783614bc4565b91506153e1826153a0565b602082019050919050565b60006020820190508181036000830152615405816153c9565b9050919050565b7f5a45524f5f464952535400000000000000000000000000000000000000000000600082015250565b6000615442600a83614bc4565b915061544d8261540c565b602082019050919050565b6000602082019050818103600083015261547181615435565b9050919050565b600061548382614aca565b915061548e83614aca565b92508282039050818111156154a6576154a56152dd565b5b92915050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006154e2600a83614bc4565b91506154ed826154ac565b602082019050919050565b60006020820190508181036000830152615511816154d5565b9050919050565b7f4552525f4f4e4c595f53454c465f4255524e0000000000000000000000000000600082015250565b600061554e601283614bc4565b915061555982615518565b602082019050919050565b6000602082019050818103600083015261557d81615541565b9050919050565b600061558f82614aca565b915061559a83614aca565b92508282026155a881614aca565b915082820484148315176155bf576155be6152dd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061560082614aca565b915061560b83614aca565b92508261561b5761561a6155c6565b5b828204905092915050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b600061565c601183614bc4565b915061566782615626565b602082019050919050565b6000602082019050818103600083015261568b8161564f565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b60006156c8601283614bc4565b91506156d382615692565b602082019050919050565b600060208201905081810360008301526156f7816156bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6000615763600d83614bc4565b915061576e8261572d565b602082019050919050565b6000602082019050818103600083015261579281615756565b9050919050565b6157a281615297565b81146157ad57600080fd5b50565b6000815190506157bf81615799565b92915050565b6000602082840312156157db576157da614a35565b5b60006157e9848285016157b0565b9150509291505056fea264697066735822122029255efc5dc792c502a02e0530e898ad018373a32a688f89b0b566207da8570264736f6c63430008130033 -\ No newline at end of file +6101006040523480156200001257600080fd5b506040516200662338038062006623833981810160405281019062000038919062000859565b6801000000000000000083600f0b126200005157600080fd5b6200005b6200056e565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660069081620000ad919062000b7a565b508560079081620000bf919062000b7a565b508460ff16608081815250504260038190555060035460a08181525050603c83620000eb919062000c90565b60c081815250506200010d60016200029f640100000000026401000000009004565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055506200016284620002c6640100000000026401000000009004565b600f0b60e081600f0b815250506200019e6000600260009054906101000a9004600f0b600060016200031a640100000000026401000000009004565b90506000819080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000cdb565b6000677fffffffffffffff821115620002b757600080fd5b6040829060020a029050919050565b60008082600f0b13620002d857600080fd5b60806fb17217f7d1cf79abc9e3b39803f2f6af62000305846200039e640100000000026401000000009004565b600f0b02908060020a82049150509050919050565b620003246200056e565b6200032e6200056e565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b60008082600f0b13620003b057600080fd5b60008083600f0b9050680100000000000000008112620003ec576040819060008212600003808260020a82851804189250505090506040820191505b64010000000081126200041b576020819060008212600003808260020a82851804189250505090506020820191505b62010000811262000448576010819060008212600003808260020a82851804189250505090506010820191505b610100811262000474576008819060008212600003808260020a82851804189250505090506008820191505b601081126200049f576004819060008212600003808260020a82851804189250505090506004820191505b60048112620004ca576002819060008212600003808260020a82851804189250505090506002820191505b60028112620004da576001820191505b600060408084039060020a029050600083607f0386600f0b9060020a029050600067800000000000000090505b600081131562000561578182029150600060ff83908060020a8204915050905080607f0183908060020a8204915050925080820284019350506001819060008212600003808260020a828518041892505050905062000507565b5081945050505050919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200061382620005c8565b810181811067ffffffffffffffff82111715620006355762000634620005d9565b5b80604052505050565b60006200064a620005aa565b905062000658828262000608565b919050565b600067ffffffffffffffff8211156200067b576200067a620005d9565b5b6200068682620005c8565b9050602081019050919050565b60005b83811015620006b357808201518184015260208101905062000696565b60008484015250505050565b6000620006d6620006d0846200065d565b6200063e565b905082815260208101848484011115620006f557620006f4620005c3565b5b6200070284828562000693565b509392505050565b600082601f830112620007225762000721620005be565b5b815162000734848260208601620006bf565b91505092915050565b600060ff82169050919050565b62000755816200073d565b81146200076157600080fd5b50565b60008151905062000775816200074a565b92915050565b600081600f0b9050919050565b62000793816200077b565b81146200079f57600080fd5b50565b600081519050620007b38162000788565b92915050565b6000819050919050565b620007ce81620007b9565b8114620007da57600080fd5b50565b600081519050620007ee81620007c3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082182620007f4565b9050919050565b620008338162000814565b81146200083f57600080fd5b50565b600081519050620008538162000828565b92915050565b60008060008060008060c08789031215620008795762000878620005b4565b5b600087015167ffffffffffffffff8111156200089a5762000899620005b9565b5b620008a889828a016200070a565b965050602087015167ffffffffffffffff811115620008cc57620008cb620005b9565b5b620008da89828a016200070a565b9550506040620008ed89828a0162000764565b94505060606200090089828a01620007a2565b93505060806200091389828a01620007dd565b92505060a06200092689828a0162000842565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098657607f821691505b6020821081036200099c576200099b6200093e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b60006008830262000a097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c7565b62000a158683620009c7565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a5862000a5262000a4c84620007b9565b62000a2d565b620007b9565b9050919050565b6000819050919050565b62000a748362000a37565b62000a8c62000a838262000a5f565b848454620009d7565b825550505050565b600090565b62000aa362000a94565b62000ab081848462000a69565b505050565b5b8181101562000ad85762000acc60008262000a99565b60018101905062000ab6565b5050565b601f82111562000b275762000af181620009a2565b62000afc84620009b7565b8101602085101562000b0c578190505b62000b2462000b1b85620009b7565b83018262000ab5565b50505b505050565b60008160020a8304905092915050565b600062000b4f6000198460080262000b2c565b1980831691505092915050565b600062000b6a838362000b3c565b9150826002028217905092915050565b62000b858262000933565b67ffffffffffffffff81111562000ba15762000ba0620005d9565b5b62000bad82546200096d565b62000bba82828562000adc565b600060209050601f83116001811462000bf2576000841562000bdd578287015190505b62000be9858262000b5c565b86555062000c59565b601f19841662000c0286620009a2565b60005b8281101562000c2c5784890151825560018201915060208501945060208101905062000c05565b8683101562000c4c578489015162000c48601f89168262000b3c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c9d82620007b9565b915062000caa83620007b9565b925082820262000cba81620007b9565b9150828204841483151762000cd45762000cd362000c61565b5b5092915050565b60805160a05160c05160e0516158c862000d5b600039600081816118e9015281816127d4015281816129c10152612dbd0152600081816120360152818161279701528181612d1501528181612f5a01526131a701526000818161206201528181612f86015281816131c8015261320d0152600061194701526158c86000f3fe608060405234801561001057600080fd5b50600436106103e2576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e1161021c578063a457c2d711610137578063d89135cd116100ca578063e69571af11610099578063e69571af14610ce3578063e809529514610d13578063eda4e6d614610d31578063f2fde38b14610d4f576103e2565b8063d89135cd14610c35578063da2824a814610c53578063dd62ed3e14610c83578063e54063a614610cb3576103e2565b8063c0ab707711610106578063c0ab707714610bad578063d340ef8a14610bdd578063d5abeb0114610bfb578063d7a52fa914610c19576103e2565b8063a457c2d714610b11578063a9059cbb14610b41578063b1cb0db314610b71578063b470aade14610b8f576103e2565b80638832e6e3116101af57806394d008ef1161017e57806394d008ef14610a9b57806395d89b4114610ab75780639f24880814610ad5578063a2309ff814610af3576103e2565b80638832e6e314610a275780638da5cb5b14610a435780638f0b2d5d14610a615780638f1df6bc14610a7d576103e2565b80637445e33a116101eb5780637445e33a1461098b57806374bedb95146109bb57806384dde4af146109d957806386fe212d146109f7576103e2565b80636a2d094e146108f15780636f8b44b01461092157806370a082311461093d578063731f237c1461096d576103e2565b8063313334871161030c57806344df8e701161029f57806358b2833b1161026e57806358b2833b146108555780635ae06f7e146108735780635f408c04146108a35780636787a9be146108c1576103e2565b806344df8e70146107a757806347a50517146107c55780634abfbba2146107f557806351b4541c14610825576103e2565b806340452d91116102db57806340452d91146106f957806342966c681461072b578063449a52f81461075b57806344d171871461078b576103e2565b8063313334871461065d578063313ce5671461068d57806331a5995d146106ab57806339509351146106c9576103e2565b806318cbbcfc1161038457806323b872dd1161035357806323b872dd1461059d5780632a7aec09146105cd5780632b29ba23146105fd5780632c1758c11461062d576103e2565b806318cbbcfc146105015780631989c6a81461051f578063213d1e1e1461053d57806323a859441461056d576103e2565b8063095ea7b3116103c0578063095ea7b31461046557806309f28f3c1461049557806311c56615146104b357806318160ddd146104e3576103e2565b806301681a62146103e757806301ffc9a71461041757806306fdde0314610447575b600080fd5b61040160048036038101906103fc9190614afd565b610d7f565b60405161040e9190614b43565b60405180910390f35b610431600480360381019061042c9190614bb6565b610ecd565b60405161043e9190614bfe565b60405180910390f35b61044f6111bb565b60405161045c9190614ca9565b60405180910390f35b61047f600480360381019061047a9190614cf7565b611249565b60405161048c9190614bfe565b60405180910390f35b61049d611485565b6040516104aa9190614d53565b60405180910390f35b6104cd60048036038101906104c89190614d9a565b611498565b6040516104da9190614b43565b60405180910390f35b6104eb6114e8565b6040516104f89190614b43565b60405180910390f35b6105096114ff565b6040516105169190614b43565b60405180910390f35b610527611504565b6040516105349190614b43565b60405180910390f35b61055760048036038101906105529190614f7b565b611510565b6040516105649190614b43565b60405180910390f35b61058760048036038101906105829190614f7b565b611529565b6040516105949190614bfe565b60405180910390f35b6105b760048036038101906105b29190614fa8565b611591565b6040516105c49190614bfe565b60405180910390f35b6105e760048036038101906105e29190614f7b565b6117af565b6040516105f49190614d53565b60405180910390f35b61061760048036038101906106129190614afd565b6117e7565b6040516106249190614bfe565b60405180910390f35b61064760048036038101906106429190614ffb565b611895565b6040516106549190614bfe565b60405180910390f35b61067760048036038101906106729190615028565b6118c8565b6040516106849190614b43565b60405180910390f35b610695611945565b6040516106a29190614b43565b60405180910390f35b6106b3611969565b6040516106c09190614b43565b60405180910390f35b6106e360048036038101906106de9190614cf7565b61196f565b6040516106f09190614bfe565b60405180910390f35b610713600480360381019061070e9190614ffb565b611b05565b60405161072293929190615095565b60405180910390f35b61074560048036038101906107409190614ffb565b611b74565b6040516107529190614bfe565b60405180910390f35b61077560048036038101906107709190614cf7565b611d45565b6040516107829190614bfe565b60405180910390f35b6107a560048036038101906107a09190615131565b611f1c565b005b6107af611f9a565b6040516107bc9190614bfe565b60405180910390f35b6107df60048036038101906107da9190614afd565b611fe9565b6040516107ec9190614b43565b60405180910390f35b61080f600480360381019061080a9190614ffb565b612032565b60405161081c9190614b43565b60405180910390f35b61083f600480360381019061083a9190614ffb565b612092565b60405161084c9190614b43565b60405180910390f35b61085d6120b3565b60405161086a9190614b43565b60405180910390f35b61088d60048036038101906108889190614afd565b6120b9565b60405161089a9190614bfe565b60405180910390f35b6108ab6121c3565b6040516108b891906151c1565b60405180910390f35b6108db60048036038101906108d69190614ffb565b612290565b6040516108e89190614b43565b60405180910390f35b61090b60048036038101906109069190614ffb565b6122d1565b6040516109189190614b43565b60405180910390f35b61093b60048036038101906109369190614ffb565b6122f2565b005b61095760048036038101906109529190614afd565b6123ba565b6040516109649190614b43565b60405180910390f35b610975612421565b6040516109829190614b43565b60405180910390f35b6109a560048036038101906109a09190614f7b565b612432565b6040516109b29190614b43565b60405180910390f35b6109c3612460565b6040516109d09190614b43565b60405180910390f35b6109e1612466565b6040516109ee91906151eb565b60405180910390f35b610a116004803603810190610a0c9190614ffb565b61248c565b604051610a1e9190614b43565b60405180910390f35b610a416004803603810190610a3c9190615131565b612573565b005b610a4b612584565b604051610a5891906151eb565b60405180910390f35b610a7b6004803603810190610a769190614afd565b6125aa565b005b610a8561265f565b604051610a929190614bfe565b60405180910390f35b610ab56004803603810190610ab09190615131565b612920565b005b610abf612931565b604051610acc9190614ca9565b60405180910390f35b610add6129bf565b604051610aea9190614d53565b60405180910390f35b610afb6129e3565b604051610b089190614b43565b60405180910390f35b610b2b6004803603810190610b269190614cf7565b6129ed565b604051610b389190614bfe565b60405180910390f35b610b5b6004803603810190610b569190614cf7565b612c0c565b604051610b689190614bfe565b60405180910390f35b610b79612d0d565b604051610b869190614b43565b60405180910390f35b610b97612d13565b604051610ba49190614b43565b60405180910390f35b610bc76004803603810190610bc29190614ffb565b612d37565b604051610bd49190614b43565b60405180910390f35b610be5612ebe565b604051610bf29190614b43565b60405180910390f35b610c03612ec4565b604051610c109190614b43565b60405180910390f35b610c336004803603810190610c2e9190614ffb565b612eca565b005b610c3d61300a565b604051610c4a9190614b43565b60405180910390f35b610c6d6004803603810190610c689190614afd565b613014565b604051610c7a9190614bfe565b60405180910390f35b610c9d6004803603810190610c989190615206565b6130e8565b604051610caa9190614b43565b60405180910390f35b610ccd6004803603810190610cc89190614f7b565b61310d565b604051610cda9190614b43565b60405180910390f35b610cfd6004803603810190610cf89190615246565b613121565b604051610d0a919061531c565b60405180910390f35b610d1b6131a1565b604051610d289190615362565b60405180910390f35b610d3961320b565b604051610d469190614b43565b60405180910390f35b610d696004803603810190610d649190614afd565b61322f565b604051610d769190614bfe565b60405180910390f35b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e5891906153ac565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ebc9190614b43565b60405180910390a380915050919050565b600063b61bc9417c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610f2157600190506111b6565b635878bcf47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610f7357600190506111b6565b63bc4babdd7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610fc557600190506111b6565b630d7491f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361101757600190506111b6565b63abe1f1f57c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361106957600190506111b6565b63841a0e947c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036110bb57600190506111b6565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361110d57600190506111b6565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361115f57600190506111b6565b63d00179687c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036111b157600190506111b6565b600090505b919050565b600680546111c89061540f565b80601f01602080910402602001604051908101604052809291908181526020018280546111f49061540f565b80156112415780601f1061121657610100808354040283529160200191611241565b820191906000526020600020905b81548152906001019060200180831161122457829003601f168201915b505050505081565b60008060006112566121c3565b905060028160ff160361126e5760009250505061147f565b60008160ff1611156112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9061548c565b60405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561137e576000841461137d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611374906154f8565b60405180910390fd5b5b61138661265f565b5061139084612290565b915081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040516114709190614b43565b60405180910390a36001925050505b92915050565b600260009054906101000a9004600f0b81565b6000806114bf6114a785613378565b6114ba6114b46001613378565b8661339e565b613405565b90506114ca81613484565b67ffffffffffffffff16846114df9190615518565b91505092915050565b6000600b546008546114fa9190615518565b905090565b600f81565b60008080549050905090565b6000816020015168ffffffffffffffffff169050919050565b600080826000015163ffffffff161115611546576000905061158c565b6000826020015168ffffffffffffffffff161115611567576000905061158c565b6000826040015167ffffffffffffffff161115611587576000905061158c565b600190505b919050565b60008060008061159f6121c3565b905060028160ff16036115b857600093505050506117a8565b60008160ff1611156115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f69061548c565b60405180910390fd5b61160761265f565b5061161185612290565b925082600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561169c57600080fd5b82600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117289190615518565b9250508190555061173a8787856134b9565b91508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516117999190614b43565b60405180910390a38193505050505b9392505050565b60008067ffffffffffffffff836040015160070b169050600081600f0b036117de576117db6001613378565b90505b80915050919050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061188e5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000600f82106118a457600080fd5b600082036118b957600f6012541490506118c3565b8160125483161490505b919050565b6000806000806118d786613378565b92506118e285613378565b915061190e7f000000000000000000000000000000000000000000000000000000000000000083613405565b9050611919816134dc565b90506119258382613405565b905061193081613484565b67ffffffffffffffff16935050505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60125481565b60008061197a61265f565b5061198483612290565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a1291906153ac565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611af29190614b43565b60405180910390a3600191505092915050565b60008181548110611b1557600080fd5b906000526020600020016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900468ffffffffffffffffff169080600001600d9054906101000a900467ffffffffffffffff16905083565b600080611b7f6121c3565b60ff1614611b8c57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c315750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790615598565b60405180910390fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115611cbc57600080fd5b6000611cc783612290565b9050611cd33382613569565b5082600b6000828254611ce691906153ac565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca584604051611d339190614b43565b60405180910390a26001915050919050565b6000806000611d526121c3565b60ff1614611d5f57600080fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e045750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3a90615598565b60405180910390fd5b611e4b61265f565b5060006011541115611e745760115483600854611e6891906153ac565b1115611e7357600080fd5b5b8260086000828254611e8691906153ac565b92505081905550611e9683612290565b9050611ea2848261366d565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f885604051611f009190614b43565b60405180910390a3611f1061372e565b50600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190615604565b60405180910390fd5b611f9383611b74565b5050505050565b6000611fe4600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b74565b905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826120609190615624565b7f000000000000000000000000000000000000000000000000000000000000000061208b91906153ac565b9050919050565b6000603c82426120a29190615518565b6120ac9190615695565b9050919050565b60035481565b60006120c8600160ff16611895565b156120d257600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061215957503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61216257600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000601060009054906101000a900460ff16156121e3576001905061228d565b6000600f54036121f6576000905061228d565b600f54421061228857612223603c6003546122119190615695565b600f5461221e9190615518565b612d37565b506001601060006101000a81548160ff0219169083151502179055507ff80dbaea4785589e52984ca36a31de106adc77759539a5c7d92883bf49692fe94260405161226e9190614b43565b60405180910390a161227e61265f565b506002905061228d565b600090505b90565b6000806122b461229f84613378565b600260009054906101000a9004600f0b6138f2565b90506122bf81613484565b67ffffffffffffffff16915050919050565b6000603c82426122e19190615518565b6122eb9190615695565b9050919050565b6122ff600860ff16611895565b1561230957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461236357600080fd5b61236b6114e8565b811161237657600080fd5b6011547f9722adea12ab7ef86fc45b88f0e0b567639e8dddaae60261e08c03d747fbbfe6826040516123a89190614b43565b60405180910390a28060118190555050565b6000806000806123d16123cc86611fe9565b613378565b92506123de600354612092565b90506123f983600260009054906101000a9004600f0b613405565b915061241761240783613484565b67ffffffffffffffff16826118c8565b9350505050919050565b600061242d6000612d37565b905090565b600080600061244084611510565b915061244b846117af565b90506124578282611498565b92505050919050565b600a5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601082106124d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c890615712565b60405180910390fd5b6000601254831614612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f9061577e565b60405180910390fd5b81601260008282541792505081905550600f6012541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e6012546040516125619190614b43565b60405180910390a26012549050919050565b61257d8484611d45565b5050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6125b7600260ff16611895565b156125c157600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461261b57600080fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612669614a4f565b612671614a4f565b612679614a4f565b6000806000806000612689612421565b5061269261397e565b975061269d88611529565b156126b35760009850505050505050505061291d565b6000600954815481106126c9576126c861579e565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505095506127768861310d565b945060018561278591906153ac565b9050612790866117af565b9350603c857f00000000000000000000000000000000000000000000000000000000000000006127c09190615624565b6127ca9190615695565b91506128066128017f00000000000000000000000000000000000000000000000000000000000000006127fc85613378565b613405565b6134dc565b925061281c6000846128166114e8565b84613121565b96506000879080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050506128d887613b14565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516129089190614b43565b60405180910390a16001985050505050505050505b90565b61292a8484611d45565b5050505050565b6007805461293e9061540f565b80601f016020809104026020016040519081016040528092919081815260200182805461296a9061540f565b80156129b75780601f1061298c576101008083540402835291602001916129b7565b820191906000526020600020905b81548152906001019060200180831161299a57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6000806129f983612290565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612a8457600080fd5b612a8c61265f565b5080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b199190615518565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051612bf99190614b43565b60405180910390a3600191505092915050565b600080600080612c1a6121c3565b905060028160ff1603612c335760009350505050612d07565b60008160ff161115612c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c719061548c565b60405180910390fd5b612c8261265f565b50612c8c85612290565b9250612c993387856134b9565b91508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612cf89190614b43565b60405180910390a38193505050505b92915050565b600f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000806000601060009054906101000a900460ff1615612d61576000945050505050612eb9565b612d6c600354612092565b925060008303612d83576000945050505050612eb9565b600260009054906101000a9004600f0b9050600086118015612da457508286105b15612dad578592505b612db683613378565b9150612de27f000000000000000000000000000000000000000000000000000000000000000083613405565b9350612ded846134dc565b9350612e08600260009054906101000a9004600f0b85613405565b600260006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff160217905550603c83612e509190615624565b600354612e5d91906153ac565b60038190555080600f0b836003547f1c9c74563c32efd114cb36fb5e432d9386c8254d08456614804a33a3088ab736600260009054906101000a9004600f0b604051612ea99190614d53565b60405180910390a4829450505050505b919050565b60095481565b60115481565b600080612eda600460ff16611895565b15612ee457600080fd5b601060009054906101000a900460ff1615612efe57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f5857600080fd5b7f000000000000000000000000000000000000000000000000000000000000000083612f849190615624565b7f0000000000000000000000000000000000000000000000000000000000000000612faf91906153ac565b9150600f548211612fbf57600080fd5b600f54905081600f81905550807ff5bd6cb27a0006b5ea8618058a0d84719695cb6d984f4840bc1a54ca12ae4b7c600f54604051612ffd9190614b43565b60405180910390a2505050565b6000600b54905090565b6000613023600160ff16611895565b1561302d57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461308757600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600d602052816000526040600020602052806000526040600020600091509150505481565b6000816000015163ffffffff169050919050565b613129614a4f565b613131614a4f565b82816000019063ffffffff16908163ffffffff168152505083816020019068ffffffffffffffffff16908168ffffffffffffffffff168152505067ffffffffffffffff8516816040019067ffffffffffffffff16908167ffffffffffffffff168152505080915050949350505050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426131f29190615518565b6131fc9190615695565b61320691906153ac565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461328c57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001915050919050565b6000677fffffffffffffff82111561338f57600080fd5b6040829060020a029050919050565b60008082600f0b84600f0b0390507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b81121580156133f257506f7fffffffffffffffffffffffffffffff600f0b8113155b6133fb57600080fd5b8091505092915050565b600080604083600f0b85600f0b029060008212600003808260020a82851804189250505090507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561347157506f7fffffffffffffffffffffffffffffff600f0b8113155b61347a57600080fd5b8091505092915050565b60008082600f0b121561349657600080fd5b604082600f0b9060008212600003808260020a8285180418925050509050919050565b60006134c58483613569565b506134d0838361366d565b50600190509392505050565b60006840000000000000000082600f0b126134f657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b121561352a5760009050613564565b6135616080700171547652b82fe1777d0ffda0d23a7d1284600f0b029060008212600003808260020a828518041892505050613c33565b90505b919050565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600084036135c357600092505050613667565b6135cc85611fe9565b915083821015613611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360890615819565b60405180910390fd5b838261361d9190615518565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001925050505b92915050565b6000806000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600084036136c757600092505050613728565b6136d085611fe9565b915083826136de91906153ac565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001925050505b92915050565b6000613738614a4f565b60006137426114e8565b9050600060016000805490506137589190615518565b815481106137695761376861579e565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050915080826020019068ffffffffffffffffff16908168ffffffffffffffffff168152505081600060016000805490506138449190615518565b815481106138555761385461579e565b5b9060005260206000200160008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548168ffffffffffffffffff021916908368ffffffffffffffffff160217905550604082015181600001600d6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060019250505090565b60008082600f0b0361390357600080fd5b600082600f0b604085600f0b9060020a028161392257613921615666565b5b0590507fffffffffffffffffffffffffffffffff80000000000000000000000000000000600f0b811215801561396b57506f7fffffffffffffffffffffffffffffff600f0b8113155b61397457600080fd5b8091505092915050565b613986614a4f565b61398e614a4f565b613996614a4f565b600080600954815481106139ad576139ac61579e565b5b906000526020600020016040518060600160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a900468ffffffffffffffffff1668ffffffffffffffffff1668ffffffffffffffffff16815260200160008201600d9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505092503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015613ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613adc9190615865565b6fffffffffffffffffffffffffffffffff169050613af98361310d565b8111613b0a57819350505050613b11565b8293505050505b90565b6000806000613b2284612432565b613b2a6114e8565b613b349190615518565b9150600a54613b4283612290565b613b4c9190615518565b9050613b7a600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261366d565b50836000015163ffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9a2a887706623ad3ff7fc85652deeceabe9fe1e00466c597972079ee91ea40d384604051613bee9190614b43565b60405180910390a3600160096000828254613c0991906153ac565b9250508190555080600a6000828254613c2291906153ac565b925050819055508192505050919050565b60006840000000000000000082600f0b12613c4d57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000082600f0b1215613c815760009050614a4a565b60006f80000000000000000000000000000000905060006780000000000000008416600f0b1315613ccf57608070016a09e667f3bcc908b2fb1366ea957d3e8202908060020a820491505090505b60006740000000000000008416600f0b1315613d085760807001306fe0a31b7152de8d5a46305c85edec8202908060020a820491505090505b60006720000000000000008416600f0b1315613d415760807001172b83c7d517adcdf7c8c50eb14a791f8202908060020a820491505090505b60006710000000000000008416600f0b1315613d7a57608070010b5586cf9890f6298b92b71842a983638202908060020a820491505090505b60006708000000000000008416600f0b1315613db35760807001059b0d31585743ae7c548eb68ca417fd8202908060020a820491505090505b60006704000000000000008416600f0b1315613dec576080700102c9a3e778060ee6f7caca4f7a29bde88202908060020a820491505090505b60006702000000000000008416600f0b1315613e2557608070010163da9fb33356d84a66ae336dcdfa3f8202908060020a820491505090505b60006701000000000000008416600f0b1315613e5e576080700100b1afa5abcbed6129ab13ec11dc95438202908060020a820491505090505b600066800000000000008416600f0b1315613e9657608070010058c86da1c09ea1ff19d294cf2f679b8202908060020a820491505090505b600066400000000000008416600f0b1315613ece5760807001002c605e2e8cec506d21bfc89a23a00f8202908060020a820491505090505b600066200000000000008416600f0b1315613f06576080700100162f3904051fa128bca9c55c31e5df8202908060020a820491505090505b600066100000000000008416600f0b1315613f3e5760807001000b175effdc76ba38e31671ca9397258202908060020a820491505090505b600066080000000000008416600f0b1315613f76576080700100058ba01fb9f96d6cacd4b180917c3d8202908060020a820491505090505b600066040000000000008416600f0b1315613fae57608070010002c5cc37da9491d0985c348c68e7b38202908060020a820491505090505b600066020000000000008416600f0b1315613fe65760807001000162e525ee054754457d59952920268202908060020a820491505090505b600066010000000000008416600f0b131561401e57608070010000b17255775c040618bf4a4ade83fc8202908060020a820491505090505b6000658000000000008416600f0b13156140555760807001000058b91b5bc9ae2eed81e9b7d4cfab8202908060020a820491505090505b6000654000000000008416600f0b131561408c576080700100002c5c89d5ec6ca4d7c8acc017b7c98202908060020a820491505090505b6000652000000000008416600f0b13156140c357608070010000162e43f4f831060e02d839a9d16d8202908060020a820491505090505b6000651000000000008416600f0b13156140fa576080700100000b1721bcfc99d9f890ea069117638202908060020a820491505090505b6000650800000000008416600f0b131561413157608070010000058b90cf1e6d97f9ca14dbcc16288202908060020a820491505090505b6000650400000000008416600f0b13156141685760807001000002c5c863b73f016468f6bac5ca2b8202908060020a820491505090505b6000650200000000008416600f0b131561419f576080700100000162e430e5a18f6119e3c02282a58202908060020a820491505090505b6000650100000000008416600f0b13156141d65760807001000000b1721835514b86e6d96efd1bfe8202908060020a820491505090505b60006480000000008416600f0b131561420c576080700100000058b90c0b48c6be5df846c5b2ef8202908060020a820491505090505b60006440000000008416600f0b131561424257608070010000002c5c8601cc6b9e94213c72737a8202908060020a820491505090505b60006420000000008416600f0b13156142785760807001000000162e42fff037df38aa2b219f068202908060020a820491505090505b60006410000000008416600f0b13156142ae57608070010000000b17217fba9c739aa5819f44f98202908060020a820491505090505b60006408000000008416600f0b13156142e45760807001000000058b90bfcdee5acd3c1cedc8238202908060020a820491505090505b60006404000000008416600f0b131561431a576080700100000002c5c85fe31f35a6a30da1be508202908060020a820491505090505b60006402000000008416600f0b131561435057608070010000000162e42ff0999ce3541b9fffcf8202908060020a820491505090505b60006401000000008416600f0b1315614386576080700100000000b17217f80f4ef5aadda455548202908060020a820491505090505b600063800000008416600f0b13156143bb57608070010000000058b90bfbf8479bd5a81b51ad8202908060020a820491505090505b600063400000008416600f0b13156143f05760807001000000002c5c85fdf84bd62ae30a74cc8202908060020a820491505090505b600063200000008416600f0b1315614425576080700100000000162e42fefb2fed257559bdaa8202908060020a820491505090505b600063100000008416600f0b131561445a5760807001000000000b17217f7d5a7716bba4a9ae8202908060020a820491505090505b600063080000008416600f0b131561448f576080700100000000058b90bfbe9ddbac5e109cce8202908060020a820491505090505b600063040000008416600f0b13156144c457608070010000000002c5c85fdf4b15de6f17eb0d8202908060020a820491505090505b600063020000008416600f0b13156144f95760807001000000000162e42fefa494f1478fde058202908060020a820491505090505b600063010000008416600f0b131561452e57608070010000000000b17217f7d20cf927c8e94c8202908060020a820491505090505b6000628000008416600f0b13156145625760807001000000000058b90bfbe8f71cb4e4b33d8202908060020a820491505090505b6000624000008416600f0b1315614596576080700100000000002c5c85fdf477b662b269458202908060020a820491505090505b6000622000008416600f0b13156145ca57608070010000000000162e42fefa3ae53369388c8202908060020a820491505090505b6000621000008416600f0b13156145fe576080700100000000000b17217f7d1d351a389d408202908060020a820491505090505b6000620800008416600f0b131561463257608070010000000000058b90bfbe8e8b2d3d4ede8202908060020a820491505090505b6000620400008416600f0b13156146665760807001000000000002c5c85fdf4741bea6e77e8202908060020a820491505090505b6000620200008416600f0b131561469a576080700100000000000162e42fefa39fe95583c28202908060020a820491505090505b6000620100008416600f0b13156146ce5760807001000000000000b17217f7d1cfb72b45e18202908060020a820491505090505b60006180008416600f0b1315614701576080700100000000000058b90bfbe8e7cc35c3f08202908060020a820491505090505b60006140008416600f0b131561473457608070010000000000002c5c85fdf473e242ea388202908060020a820491505090505b60006120008416600f0b13156147675760807001000000000000162e42fefa39f02b772c8202908060020a820491505090505b60006110008416600f0b131561479a57608070010000000000000b17217f7d1cf7d83c1a8202908060020a820491505090505b60006108008416600f0b13156147cd5760807001000000000000058b90bfbe8e7bdcbe2e8202908060020a820491505090505b60006104008416600f0b1315614800576080700100000000000002c5c85fdf473dea871f8202908060020a820491505090505b60006102008416600f0b131561483357608070010000000000000162e42fefa39ef44d918202908060020a820491505090505b60006101008416600f0b1315614866576080700100000000000000b17217f7d1cf79e9498202908060020a820491505090505b600060808416600f0b131561489857608070010000000000000058b90bfbe8e7bce5448202908060020a820491505090505b600060408416600f0b13156148ca5760807001000000000000002c5c85fdf473de6eca8202908060020a820491505090505b600060208416600f0b13156148fc576080700100000000000000162e42fefa39ef366f8202908060020a820491505090505b600060108416600f0b131561492e5760807001000000000000000b17217f7d1cf79afa8202908060020a820491505090505b600060088416600f0b1315614960576080700100000000000000058b90bfbe8e7bcd6d8202908060020a820491505090505b600060048416600f0b131561499257608070010000000000000002c5c85fdf473de6b28202908060020a820491505090505b600060028416600f0b13156149c45760807001000000000000000162e42fefa39ef3588202908060020a820491505090505b600060018416600f0b13156149f657608070010000000000000000b17217f7d1cf79ab8202908060020a820491505090505b604083600f0b9060008212600003808260020a828518041892505050603f03600f0b81908060020a820491505090506f7fffffffffffffffffffffffffffffff600f0b811115614a4557600080fd5b809150505b919050565b6040518060600160405280600063ffffffff168152602001600068ffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614aca82614a9f565b9050919050565b614ada81614abf565b8114614ae557600080fd5b50565b600081359050614af781614ad1565b92915050565b600060208284031215614b1357614b12614a95565b5b6000614b2184828501614ae8565b91505092915050565b6000819050919050565b614b3d81614b2a565b82525050565b6000602082019050614b586000830184614b34565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614b9381614b5e565b8114614b9e57600080fd5b50565b600081359050614bb081614b8a565b92915050565b600060208284031215614bcc57614bcb614a95565b5b6000614bda84828501614ba1565b91505092915050565b60008115159050919050565b614bf881614be3565b82525050565b6000602082019050614c136000830184614bef565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614c53578082015181840152602081019050614c38565b60008484015250505050565b6000601f19601f8301169050919050565b6000614c7b82614c19565b614c858185614c24565b9350614c95818560208601614c35565b614c9e81614c5f565b840191505092915050565b60006020820190508181036000830152614cc38184614c70565b905092915050565b614cd481614b2a565b8114614cdf57600080fd5b50565b600081359050614cf181614ccb565b92915050565b60008060408385031215614d0e57614d0d614a95565b5b6000614d1c85828601614ae8565b9250506020614d2d85828601614ce2565b9150509250929050565b600081600f0b9050919050565b614d4d81614d37565b82525050565b6000602082019050614d686000830184614d44565b92915050565b614d7781614d37565b8114614d8257600080fd5b50565b600081359050614d9481614d6e565b92915050565b60008060408385031215614db157614db0614a95565b5b6000614dbf85828601614ce2565b9250506020614dd085828601614d85565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614e1782614c5f565b810181811067ffffffffffffffff82111715614e3657614e35614ddf565b5b80604052505050565b6000614e49614a8b565b9050614e558282614e0e565b919050565b600063ffffffff82169050919050565b614e7381614e5a565b8114614e7e57600080fd5b50565b600081359050614e9081614e6a565b92915050565b600068ffffffffffffffffff82169050919050565b614eb481614e96565b8114614ebf57600080fd5b50565b600081359050614ed181614eab565b92915050565b600067ffffffffffffffff82169050919050565b614ef481614ed7565b8114614eff57600080fd5b50565b600081359050614f1181614eeb565b92915050565b600060608284031215614f2d57614f2c614dda565b5b614f376060614e3f565b90506000614f4784828501614e81565b6000830152506020614f5b84828501614ec2565b6020830152506040614f6f84828501614f02565b60408301525092915050565b600060608284031215614f9157614f90614a95565b5b6000614f9f84828501614f17565b91505092915050565b600080600060608486031215614fc157614fc0614a95565b5b6000614fcf86828701614ae8565b9350506020614fe086828701614ae8565b9250506040614ff186828701614ce2565b9150509250925092565b60006020828403121561501157615010614a95565b5b600061501f84828501614ce2565b91505092915050565b6000806040838503121561503f5761503e614a95565b5b600061504d85828601614ce2565b925050602061505e85828601614ce2565b9150509250929050565b61507181614e5a565b82525050565b61508081614e96565b82525050565b61508f81614ed7565b82525050565b60006060820190506150aa6000830186615068565b6150b76020830185615077565b6150c46040830184615086565b949350505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126150f1576150f06150cc565b5b8235905067ffffffffffffffff81111561510e5761510d6150d1565b5b60208301915083600182028301111561512a576151296150d6565b5b9250929050565b6000806000806060858703121561514b5761514a614a95565b5b600061515987828801614ae8565b945050602061516a87828801614ce2565b935050604085013567ffffffffffffffff81111561518b5761518a614a9a565b5b615197878288016150db565b925092505092959194509250565b600060ff82169050919050565b6151bb816151a5565b82525050565b60006020820190506151d660008301846151b2565b92915050565b6151e581614abf565b82525050565b600060208201905061520060008301846151dc565b92915050565b6000806040838503121561521d5761521c614a95565b5b600061522b85828601614ae8565b925050602061523c85828601614ae8565b9150509250929050565b600080600080608085870312156152605761525f614a95565b5b600061526e87828801614ce2565b945050602061527f87828801614d85565b935050604061529087828801614ce2565b92505060606152a187828801614ce2565b91505092959194509250565b6152b681614e5a565b82525050565b6152c581614e96565b82525050565b6152d481614ed7565b82525050565b6060820160008201516152f060008501826152ad565b50602082015161530360208501826152bc565b50604082015161531660408501826152cb565b50505050565b600060608201905061533160008301846152da565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b61535c81615337565b82525050565b60006020820190506153776000830184615353565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006153b782614b2a565b91506153c283614b2a565b92508282019050808211156153da576153d961537d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061542757607f821691505b60208210810361543a576154396153e0565b5b50919050565b7f4558504952454400000000000000000000000000000000000000000000000000600082015250565b6000615476600783614c24565b915061548182615440565b602082019050919050565b600060208201905081810360008301526154a581615469565b9050919050565b7f5a45524f5f464952535400000000000000000000000000000000000000000000600082015250565b60006154e2600a83614c24565b91506154ed826154ac565b602082019050919050565b60006020820190508181036000830152615511816154d5565b9050919050565b600061552382614b2a565b915061552e83614b2a565b92508282039050818111156155465761554561537d565b5b92915050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000615582600a83614c24565b915061558d8261554c565b602082019050919050565b600060208201905081810360008301526155b181615575565b9050919050565b7f4552525f4f4e4c595f53454c465f4255524e0000000000000000000000000000600082015250565b60006155ee601283614c24565b91506155f9826155b8565b602082019050919050565b6000602082019050818103600083015261561d816155e1565b9050919050565b600061562f82614b2a565b915061563a83614b2a565b925082820261564881614b2a565b9150828204841483151761565f5761565e61537d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006156a082614b2a565b91506156ab83614b2a565b9250826156bb576156ba615666565b5b828204905092915050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b60006156fc601183614c24565b9150615707826156c6565b602082019050919050565b6000602082019050818103600083015261572b816156ef565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000615768601283614c24565b915061577382615732565b602082019050919050565b600060208201905081810360008301526157978161575b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6000615803600d83614c24565b915061580e826157cd565b602082019050919050565b60006020820190508181036000830152615832816157f6565b9050919050565b61584281615337565b811461584d57600080fd5b50565b60008151905061585f81615839565b92915050565b60006020828403121561587b5761587a614a95565b5b600061588984828501615850565b9150509291505056fea2646970667358221220956635fe0272508b863999b434ed5ea439b584de83b492e7ee2bcd62acfad43464736f6c63430008130033 +\ No newline at end of file diff --git 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":"uint256","name":"_oldTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTimestamp","type":"uint256"}],"name":"ExpiryChange","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":"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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_minter","type":"address"}],"name":"isWriter","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"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","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":"totalMinted","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":"uint256","name":"_oldTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTimestamp","type":"uint256"}],"name":"ExpiryChange","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":"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":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_minter","type":"address"}],"name":"isWriter","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"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","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":"totalMinted","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 @@ -1 +1 @@ -{"compiler":{"version":"0.8.19+commit.7dd6d404"},"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":"uint256","name":"_oldTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTimestamp","type":"uint256"}],"name":"ExpiryChange","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":"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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_minter","type":"address"}],"name":"isWriter","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"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","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":"totalMinted","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":"0x8faf191c462032a5c55902f0fec2fd7228da1a87638406cd06007650bc0784c7","license":"AGPL-3.0-or-later","urls":["bzz-raw://6c3af5a45c2aa1d504f66de0aa75c40831b4f65a7c66a69fb598aebe63d77293","dweb:/ipfs/QmNxppdJvdGodQuSDFi3z4wvL79hpV51Cf9jzGjxo7UdUg"]},"aux/ABDKMath64x64.sol":{"keccak256":"0x089b21db72314836305ba36b1773c3f0c2d5ac3a0f418820557c17c0e57c3c50","license":"BSD-4-Clause","urls":["bzz-raw://730ce8d750b0a6588f0d0724ace1c4d6dd90cf6dc0d2805b775b065fce147dfa","dweb:/ipfs/Qmdx7xRKvhXu1JtAVs25bER3LN2oGj2ZjW8jEvJpzQyXhc"]}},"version":1} +{"compiler":{"version":"0.8.19+commit.7dd6d404"},"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":"uint256","name":"_oldTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTimestamp","type":"uint256"}],"name":"ExpiryChange","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":"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":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_minter","type":"address"}],"name":"isWriter","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"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeMint","outputs":[],"stateMutability":"nonpayable","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":"totalMinted","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":"0xe7c88ed36f6f3cdc57147fe1684302fbfbaf47e05c051738e80e25ecf9a91aa0","license":"AGPL-3.0-or-later","urls":["bzz-raw://e5bbb9875999451c53dd85f8b0349a29026b387926351549f140851440301054","dweb:/ipfs/QmWTVGjkBpURV2r895YW3tqRncKFm8irfS1tJkr8Xgrw54"]},"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 @@ -1,6 +1,6 @@ [metadata] name = erc20-demurrage-token -version = 0.5.4 +version = 0.5.5 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 @@ -73,7 +73,7 @@ contract DemurrageTokenSingleNocap { mapping (address => bool) minter; // Storage for ERC20 approve/transferFrom methods - mapping (address => mapping (address => uint256 ) ) allowance; // holder -> spender -> amount (amount is subject to demurrage) + mapping (address => mapping (address => uint256 ) ) public allowance; // holder -> spender -> amount (amount is subject to demurrage) // Address to send unallocated redistribution tokens address public sinkAddress;