tx · 9bRmPr2Jf4AUW4RWvokUZLd7wmrWx6t8LsGbVMwbHWY2

3N4ynz2uyA7cErymQd46zgwVJEEfXYDRXtA:  -0.02500000 Waves

2023.08.14 17:51 [2710374] smart account 3N4ynz2uyA7cErymQd46zgwVJEEfXYDRXtA > SELF 0.00000000 Waves

{ "type": 13, "id": "9bRmPr2Jf4AUW4RWvokUZLd7wmrWx6t8LsGbVMwbHWY2", "fee": 2500000, "feeAssetId": null, "timestamp": 1692024750712, "version": 2, "chainId": 84, "sender": "3N4ynz2uyA7cErymQd46zgwVJEEfXYDRXtA", "senderPublicKey": "CiRX9ubobzbD36ZwTyuBFiPnPkmzMQ7GDsF3hMoVbcVR", "proofs": [ "Q46Fh4WguM8XVqhgZjvJH9AcjypiYMwriGC28gwpT2TYZoZ21nGogX62SUrMjpS2KYWznVNyavozs6DB3Tci7bb" ], "script": "base64:AAIFAAAAAAAAACEIAhIICgYBAQEBAQQSAwoBARIDCgEBEgMKAQESBAoCCAgAAAATAAAAABR0b2tlbl9pc3N1ZV9pbml0X21zZwIAAAAfQk1MIFRva2VuIENyZWF0ZWQgU3VjY2Vzc2Z1bGx5LgAAAAARdG9rZW5faXNzdWVfZXJyb3ICAAAAWlRoZSBCTUwgdG9rZW4gY291bGQgbm90IGJlIGZvdW5kLiBQbGVhc2UgdXNlIHRoZSBDcmVhdGVfQk1MIGZ1bmN0aW9uIHRvIGlzc3VlIGEgQk1MIHRva2VuLgAAAAALQk1MX1Rva2VuSUQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAAtCTUxfVG9rZW5JRAUAAAARdG9rZW5faXNzdWVfZXJyb3IAAAAAI3ByZXNhbGVfdGltZXN0YW1wX2NvbnRyb2xsZXJfcHVia2V5AQAAACDjrdey1Io21qI8AxObYBZMNWPHMCK947HpXHsKae68IwAAAAASY29udHJvbGxlcl9hZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAACNwcmVzYWxlX3RpbWVzdGFtcF9jb250cm9sbGVyX3B1YmtleQAAAAAOZXhwaXJlZHRzZXJyb3ICAAAAOFN0YXJ0IFRpbWVzdGFtcCBjYW4ndCBiZSBsZXNzIHRoYW4gbGFzdCBibG9jayBUaW1lc3RhbXAuAAAAAAd0c2Vycm9yAgAAADxFbmQgVGltZXN0YW1wIGNhbid0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBTdGFydCBUaW1lc3RhbXAAAAAACnByaWNlZXJyb3ICAAAAJlRva2VuIFByaWNlIGNhbid0IGJlIGxlc3MgdGhhbiBvciBaZXJvAAAAAAhjYXBlcnJvcgIAAAAzU29mdCBDYXAgQW1vdW50IGNhbid0IGJlIG1vcmUgdGhhbiBIYXJkIENhcCBBbW91bnQuAAAAAAhvcmRlcm1zZwIAAAAyPGgxPlByZXNhbGUgT3JkZXIgU3VibWl0dGVkIFN1Y2Nlc3NmdWxseSE8L2gxPjxicj4AAAAAEHByZXNhbGVfaW5pdF9tc2cCAAAANzxoMT5QcmVTYWxlIFBhcmFtZXRlcnMgU3VibWl0dGVkIFN1Y2Nlc3NmdWxseSE8L2gxPjxicj4AAAAACXB5bXRlcnJvcgIAAAArREFwcCBOZWVkIFdBVkVTIFRva2VuIGFzIEF0dGFjaCBwYXltZW50WzFdLgAAAAAOb3JkZXJweW10ZXJyb3ICAAAALUF0dGFjaGVkIHBheW1lbnRbMV0gaXMgbGVzcyB0aGFuIHRva2VuIHByaWNlIAAAAAAMbGF1bmNoX2Vycm9yAgAAACZEYXBwIHdpbGwgc3RhcnQgUHJlLVNhbGUgYXQgVGltZXN0YW1wIAAAAAALbWluYmFsZXJyb3ICAAAAZk1pbmltdW0gMC4xIFdBVkVTIHJlcXVpcmVkIG9uIFlvdXIgQWRkcmVzcywgUGxlYXNlIGhvbGQgbWluLiAwLjEgV0FWRVMgb24geW91ciBBZGRyZXNzIHRvIHBsYWNlIG9yZGVyLgAAAAAPcHJlc2FsZV9lbmRfZXJyAgAAACBQcmUtU2FsZSBpcyBvdmVyIGZvciB0aGlzIFJvdW5kLgAAAAATcHJlc2FsZV9ub3RfZW5kX2VycgIAAAAkUHJlLVNhbGUgaXMgbm90IG92ZXIgZm9yIHRoaXMgUm91bmQuAAAAAApyZWZ1bmRfZXJyAgAAAHpTb2Z0Y2FwIG9yIEhhcmQgQ2FwIGFscmVhZHkgUmVhY2hlZCBvciBwcm9iYWJseSBQcmVTYWxlIHdhcyBTZXQgd2l0aCBGYWxzZSB0byBSZWZ1bmQsIHNvIG5vIFJlZnVuZCBhbGxvd2VkIGZvciB0aGlzIFJvdW5kLgAAAAAPcmVmdW5kX2luaXRfbXNnAgAAACs8aDE+UmVmdW5kIFJlY2VpdmVkIFN1Y2Nlc3NmdWxseSEuPC9oMT48YnI+AAAABQAAAAFpAQAAABRTZXRQcmVTYWxlUGFyYW1ldGVycwAAAAYAAAAXUHJlc2FsZV9TdGFydF9UaW1lU3RhbXAAAAAVUHJlc2FsZV9FbmRfVGltZVN0YW1wAAAAC1Rva2VuX1ByaWNlAAAAD1NvZnRfQ2FwX0Ftb3VudAAAAA9IYXJkX0NhcF9BbW91bnQAAAAMQWxsb3dfUmVmdW5kBAAAAAdTdGFydFRTBQAAABdQcmVzYWxlX1N0YXJ0X1RpbWVTdGFtcAQAAAAFRW5kVFMFAAAAFVByZXNhbGVfRW5kX1RpbWVTdGFtcAQAAAAScmVhZF9mdW5kaW5nX3JvdW5kBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAFUN1cnJlbnRfRnVuZGluZ19Sb3VuZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAA1jdXJyZW50X3JvdW5kCQAAZAAAAAIFAAAAEnJlYWRfZnVuZGluZ19yb3VuZAAAAAAAAAAAAQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAASY29udHJvbGxlcl9hZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACVUaGlzIEFkZHJlc3MgaXMgbm90IEF1dGhvcml6ZWQuIE9ubHkgCQAEJQAAAAEFAAAAEmNvbnRyb2xsZXJfYWRkcmVzcwIAAAAiIGlzIEF1dGhvcml6ZWQgQWRkcmVzcyB0byBTaWduIGl0LgMJAABmAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAF1ByZXNhbGVfU3RhcnRfVGltZVN0YW1wCQAAAgAAAAEFAAAADmV4cGlyZWR0c2Vycm9yAwkBAAAAAiE9AAAAAgkAATEAAAABCQABpAAAAAEFAAAAF1ByZXNhbGVfU3RhcnRfVGltZVN0YW1wAAAAAAAAAAANCQAAAgAAAAECAAAAb1N0YXJ0IFRpbWVzdGFtcCBpcyBXcm9uZy4gUGxlYXNlIEVudGVyIGEgVmFsaWQgVGltZXN0YW1wLiBQcm9iYWJseSB5b3UgZW50ZXJlZCBhbiBUaW1lc3RhbXAgbGVzcyB0aGFuIDEzIENoYXJzLgMJAQAAAAIhPQAAAAIJAAExAAAAAQkAAaQAAAABBQAAABVQcmVzYWxlX0VuZF9UaW1lU3RhbXAAAAAAAAAAAA0JAAACAAAAAQIAAABtRW5kIFRpbWVzdGFtcCBpcyBXcm9uZy4gUGxlYXNlIEVudGVyIGEgVmFsaWQgVGltZXN0YW1wLiBQcm9iYWJseSB5b3UgZW50ZXJlZCBhbiBUaW1lc3RhbXAgbGVzcyB0aGFuIDEzIENoYXJzLgMJAABmAAAAAgAAAAAAAAAAAQUAAAALVG9rZW5fUHJpY2UJAAACAAAAAQUAAAAKcHJpY2VlcnJvcgMJAABnAAAAAgUAAAAHU3RhcnRUUwUAAAAFRW5kVFMJAAACAAAAAQUAAAAHdHNlcnJvcgMJAABmAAAAAgUAAAAPU29mdF9DYXBfQW1vdW50BQAAAA9IYXJkX0NhcF9BbW91bnQJAAACAAAAAQUAAAAIY2FwZXJyb3IJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAFUN1cnJlbnRfRnVuZGluZ19Sb3VuZAUAAAANY3VycmVudF9yb3VuZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAADWN1cnJlbnRfcm91bmQCAAAAGF9QcmVzYWxlX1N0YXJ0X1RpbWVTdGFtcAUAAAAHU3RhcnRUUwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAADWN1cnJlbnRfcm91bmQCAAAAFl9QcmVzYWxlX0VuZF9UaW1lU3RhbXAFAAAABUVuZFRTCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAANY3VycmVudF9yb3VuZAIAAAAMX1Rva2VuX1ByaWNlBQAAAAtUb2tlbl9QcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAADWN1cnJlbnRfcm91bmQCAAAAEF9Tb2Z0X0NhcF9BbW91bnQFAAAAD1NvZnRfQ2FwX0Ftb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAADWN1cnJlbnRfcm91bmQCAAAAEF9IYXJkX0NhcF9BbW91bnQFAAAAD0hhcmRfQ2FwX0Ftb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAADWN1cnJlbnRfcm91bmQCAAAAEV9Jbml0aWF0ZWRfSGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAA1jdXJyZW50X3JvdW5kAgAAAA1fQWxsb3dfUmVmdW5kBQAAAAxBbGxvd19SZWZ1bmQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHbWVzc2FnZQUAAAAQcHJlc2FsZV9pbml0X21zZwUAAAADbmlsAAAAAWkBAAAAEVBsYWNlUHJlc2FsZU9yZGVyAAAAAQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kBAAAABZyZWFkX3JvdW5kX3Rva2VuX3ByaWNlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAADF9Ub2tlbl9QcmljZQIAAAAtVG9rZW4gUHJpY2Ugbm90IEZvdW5kIGZvciB0aGlzIFByZXNhbGUgUm91bmQuBAAAABNyZWFkX3JvdW5kX3N0YXJ0X3RzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAGF9QcmVzYWxlX1N0YXJ0X1RpbWVTdGFtcAIAAAAxU3RhcnQgVGltZXN0YW1wIG5vdCBGb3VuZCBmb3IgdGhpcyBQcmVzYWxlIFJvdW5kLgQAAAARcmVhZF9yb3VuZF9lbmRfdHMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAWX1ByZXNhbGVfRW5kX1RpbWVTdGFtcAIAAAAvRW5kIFRpbWVzdGFtcCBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAFHJlYWRfU29mdF9DYXBfQW1vdW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAEF9Tb2Z0X0NhcF9BbW91bnQCAAAAMVNvZnQgQ2FwIEFtb3VudCBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAFHJlYWRfSGFyZF9DYXBfQW1vdW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAEF9IYXJkX0NhcF9BbW91bnQCAAAAMUhhcmQgQ2FwIEFtb3VudCBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAEXJlYWRfQWxsb3dfUmVmdW5kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAADV9BbGxvd19SZWZ1bmQCAAAAKVJlZnVuZCBpcyBub3Qgc2V0IGZvciB0aGlzIFByZXNhbGUgUm91bmQuBAAAAAVXQVZFUwUAAAAEdW5pdAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQUAAAAJcHltdGVycm9yBAAAABVyZWFkX2Z1bmRzX2NvbGxlY3Rpb24EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAEV9GdW5kc19Db2xsZWN0aW9uAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFnRvdGFsX2Z1bmRzX2NvbGxlY3Rpb24JAABkAAAAAgUAAAAVcmVhZF9mdW5kc19jb2xsZWN0aW9uCAUAAAADcG10AAAABmFtb3VudAQAAAAXcmVhZF9hdXRvX3dpdGhkcmF3X3R4bnMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAGV90b3RhbF9hdXRvX3dpdGhkcmF3X3R4bnMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAYdG90YWxfYXV0b193aXRoZHJhd190eG5zCQAAZAAAAAIFAAAAF3JlYWRfYXV0b193aXRoZHJhd190eG5zAAAAAAAAAAABBAAAAA9yZWFkX3RvdGFsX3R4bnMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAC190b3RhbF90eG5zAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAACnRvdGFsX3R4bnMJAABkAAAAAgUAAAAPcmVhZF90b3RhbF90eG5zAAAAAAAAAAABBAAAAB9yZWFkX3VzZXJfdG90YWxfZnVuZHNfZGVwb3NpdGVkBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAAV8FAAAACmN1cnJlbnRLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAadXNlcl90b3RhbF9mdW5kc19kZXBvc2l0ZWQJAABkAAAAAgUAAAAfcmVhZF91c2VyX3RvdGFsX2Z1bmRzX2RlcG9zaXRlZAgFAAAAA3BtdAAAAAZhbW91bnQEAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMJAABlAAAAAgUAAAAUcmVhZF9Tb2Z0X0NhcF9BbW91bnQFAAAAFnRvdGFsX2Z1bmRzX2NvbGxlY3Rpb24EAAAAFnBlbmRpbmdfaGFyZGNhcF9zdGF0dXMJAABlAAAAAgUAAAAUcmVhZF9IYXJkX0NhcF9BbW91bnQFAAAAFnRvdGFsX2Z1bmRzX2NvbGxlY3Rpb24DCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAEFAAAACXB5bXRlcnJvcgMJAABmAAAAAgUAAAAWcmVhZF9yb3VuZF90b2tlbl9wcmljZQgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAOb3JkZXJweW10ZXJyb3ICAAAAAVsJAAGkAAAAAQUAAAAWcmVhZF9yb3VuZF90b2tlbl9wcmljZQIAAAAHLzEwXjguXQMJAABmAAAAAgUAAAATcmVhZF9yb3VuZF9zdGFydF90cwgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAACAAAAAQkAASwAAAACBQAAAAxsYXVuY2hfZXJyb3IJAAGkAAAAAQUAAAATcmVhZF9yb3VuZF9zdGFydF90cwMJAABmAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAEXJlYWRfcm91bmRfZW5kX3RzCQAAAgAAAAEFAAAAD3ByZXNhbGVfZW5kX2VycgMDCQAAZgAAAAIFAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMAAAAAAAAAAAAJAABmAAAAAgUAAAAWcGVuZGluZ19oYXJkY2FwX3N0YXR1cwAAAAAAAAAAAAcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABFfRnVuZHNfQ29sbGVjdGlvbgUAAAAWdG90YWxfZnVuZHNfY29sbGVjdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAABXwUAAAAKY3VycmVudEtleQUAAAAadXNlcl90b3RhbF9mdW5kc19kZXBvc2l0ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABlfdG90YWxfYXV0b193aXRoZHJhd190eG5zBQAAABdyZWFkX2F1dG9fd2l0aGRyYXdfdHhucwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAC190b3RhbF90eG5zBQAAAAp0b3RhbF90eG5zCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAXX3BlbmRpbmdfc29mdGNhcF9zdGF0dXMFAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABdfcGVuZGluZ19oYXJkY2FwX3N0YXR1cwUAAAAWcGVuZGluZ19oYXJkY2FwX3N0YXR1cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAPX3NvZnRjYXBfc3RhdHVzAgAAAAJObwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAPX2hhcmRjYXBfc3RhdHVzAgAAAAJObwkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAADV9BbGxvd19SZWZ1bmQFAAAAEXJlYWRfQWxsb3dfUmVmdW5kCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAB21lc3NhZ2UFAAAACG9yZGVybXNnBQAAAANuaWwDAwMJAABnAAAAAgAAAAAAAAAAAAUAAAAWcGVuZGluZ19zb2Z0Y2FwX3N0YXR1cwkAAGYAAAACBQAAABZwZW5kaW5nX2hhcmRjYXBfc3RhdHVzAAAAAAAAAAAABwkAAAAAAAACBQAAABh0b3RhbF9hdXRvX3dpdGhkcmF3X3R4bnMAAAAAAAAAAAEHCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAARX0Z1bmRzX0NvbGxlY3Rpb24FAAAAFnRvdGFsX2Z1bmRzX2NvbGxlY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAAV8FAAAACmN1cnJlbnRLZXkFAAAAGnVzZXJfdG90YWxfZnVuZHNfZGVwb3NpdGVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAZX3RvdGFsX2F1dG9fd2l0aGRyYXdfdHhucwUAAAAYdG90YWxfYXV0b193aXRoZHJhd190eG5zCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAALX3RvdGFsX3R4bnMFAAAACnRvdGFsX3R4bnMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABdfcGVuZGluZ19zb2Z0Y2FwX3N0YXR1cwUAAAAWcGVuZGluZ19zb2Z0Y2FwX3N0YXR1cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAF19wZW5kaW5nX2hhcmRjYXBfc3RhdHVzBQAAABZwZW5kaW5nX2hhcmRjYXBfc3RhdHVzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAA9fc29mdGNhcF9zdGF0dXMCAAAAA1llcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAPX2hhcmRjYXBfc3RhdHVzAgAAAAJObwkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAADV9BbGxvd19SZWZ1bmQHCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEmNvbnRyb2xsZXJfYWRkcmVzcwUAAAAWdG90YWxfZnVuZHNfY29sbGVjdGlvbgUAAAAEdW5pdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAdtZXNzYWdlBQAAAAhvcmRlcm1zZwUAAAADbmlsAwMDCQAAZwAAAAIAAAAAAAAAAAAFAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMJAABmAAAAAgUAAAAWcGVuZGluZ19oYXJkY2FwX3N0YXR1cwAAAAAAAAAAAAcJAABmAAAAAgUAAAAYdG90YWxfYXV0b193aXRoZHJhd190eG5zAAAAAAAAAAABBwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAEV9GdW5kc19Db2xsZWN0aW9uBQAAABZ0b3RhbF9mdW5kc19jb2xsZWN0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAAFfBQAAAApjdXJyZW50S2V5BQAAABp1c2VyX3RvdGFsX2Z1bmRzX2RlcG9zaXRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAGV90b3RhbF9hdXRvX3dpdGhkcmF3X3R4bnMFAAAAGHRvdGFsX2F1dG9fd2l0aGRyYXdfdHhucwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAC190b3RhbF90eG5zBQAAAAp0b3RhbF90eG5zCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAXX3BlbmRpbmdfc29mdGNhcF9zdGF0dXMFAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABdfcGVuZGluZ19oYXJkY2FwX3N0YXR1cwUAAAAWcGVuZGluZ19oYXJkY2FwX3N0YXR1cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAPX3NvZnRjYXBfc3RhdHVzAgAAAANZZXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAD19oYXJkY2FwX3N0YXR1cwIAAAACTm8JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAA1fQWxsb3dfUmVmdW5kBwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABJjb250cm9sbGVyX2FkZHJlc3MIBQAAAANwbXQAAAAGYW1vdW50BQAAAAR1bml0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAB21lc3NhZ2UFAAAACG9yZGVybXNnBQAAAANuaWwDAwMJAABnAAAAAgAAAAAAAAAAAAUAAAAWcGVuZGluZ19zb2Z0Y2FwX3N0YXR1cwkAAGcAAAACAAAAAAAAAAAABQAAABZwZW5kaW5nX2hhcmRjYXBfc3RhdHVzBwkAAAAAAAACBQAAABh0b3RhbF9hdXRvX3dpdGhkcmF3X3R4bnMAAAAAAAAAAAEHCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAARX0Z1bmRzX0NvbGxlY3Rpb24FAAAAFnRvdGFsX2Z1bmRzX2NvbGxlY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAAV8FAAAACmN1cnJlbnRLZXkFAAAAGnVzZXJfdG90YWxfZnVuZHNfZGVwb3NpdGVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAZX3RvdGFsX2F1dG9fd2l0aGRyYXdfdHhucwUAAAAYdG90YWxfYXV0b193aXRoZHJhd190eG5zCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAALX3RvdGFsX3R4bnMFAAAACnRvdGFsX3R4bnMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABdfcGVuZGluZ19zb2Z0Y2FwX3N0YXR1cwUAAAAWcGVuZGluZ19zb2Z0Y2FwX3N0YXR1cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAF19wZW5kaW5nX2hhcmRjYXBfc3RhdHVzBQAAABZwZW5kaW5nX2hhcmRjYXBfc3RhdHVzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAA9fc29mdGNhcF9zdGF0dXMCAAAAA1llcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAPX2hhcmRjYXBfc3RhdHVzAgAAAANZZXMJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAA1fQWxsb3dfUmVmdW5kBwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABJjb250cm9sbGVyX2FkZHJlc3MFAAAAFnRvdGFsX2Z1bmRzX2NvbGxlY3Rpb24FAAAABHVuaXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHbWVzc2FnZQUAAAAIb3JkZXJtc2cFAAAAA25pbAMDAwkAAGcAAAACAAAAAAAAAAAABQAAABZwZW5kaW5nX3NvZnRjYXBfc3RhdHVzCQAAZwAAAAIAAAAAAAAAAAAFAAAAFnBlbmRpbmdfaGFyZGNhcF9zdGF0dXMHCQAAZgAAAAIFAAAAGHRvdGFsX2F1dG9fd2l0aGRyYXdfdHhucwAAAAAAAAAAAQcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABFfRnVuZHNfQ29sbGVjdGlvbgUAAAAWdG90YWxfZnVuZHNfY29sbGVjdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAABXwUAAAAKY3VycmVudEtleQUAAAAadXNlcl90b3RhbF9mdW5kc19kZXBvc2l0ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABlfdG90YWxfYXV0b193aXRoZHJhd190eG5zBQAAABh0b3RhbF9hdXRvX3dpdGhkcmF3X3R4bnMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAAtfdG90YWxfdHhucwUAAAAKdG90YWxfdHhucwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAF19wZW5kaW5nX3NvZnRjYXBfc3RhdHVzBQAAABZwZW5kaW5nX3NvZnRjYXBfc3RhdHVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAXX3BlbmRpbmdfaGFyZGNhcF9zdGF0dXMFAAAAFnBlbmRpbmdfaGFyZGNhcF9zdGF0dXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAD19zb2Z0Y2FwX3N0YXR1cwIAAAADWWVzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAA9faGFyZGNhcF9zdGF0dXMCAAAAA1llcwkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAADV9BbGxvd19SZWZ1bmQHCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEmNvbnRyb2xsZXJfYWRkcmVzcwgFAAAAA3BtdAAAAAZhbW91bnQFAAAABHVuaXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHbWVzc2FnZQUAAAAIb3JkZXJtc2cFAAAAA25pbAkAAAIAAAABAgAAAAZFcnJvci4AAAABaQEAAAAGUmVmdW5kAAAAAQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kBAAAAAVXQVZFUwUAAAAEdW5pdAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABVyZWFkX0luaXRpYXRlZF9IZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAARX0luaXRpYXRlZF9IZWlnaHQCAAAAMkluaXRpYXRlZCBIZWlnaHQgbm90IEZvdW5kIGZvciB0aGlzIFByZXNhbGUgUm91bmQuBAAAABZyZWFkX3JvdW5kX3Rva2VuX3ByaWNlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAADF9Ub2tlbl9QcmljZQIAAAAtVG9rZW4gUHJpY2Ugbm90IEZvdW5kIGZvciB0aGlzIFByZXNhbGUgUm91bmQuBAAAABNyZWFkX3JvdW5kX3N0YXJ0X3RzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAGF9QcmVzYWxlX1N0YXJ0X1RpbWVTdGFtcAIAAAAxU3RhcnQgVGltZXN0YW1wIG5vdCBGb3VuZCBmb3IgdGhpcyBQcmVzYWxlIFJvdW5kLgQAAAARcmVhZF9yb3VuZF9lbmRfdHMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAWX1ByZXNhbGVfRW5kX1RpbWVTdGFtcAIAAAAvRW5kIFRpbWVzdGFtcCBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAFHJlYWRfU29mdF9DYXBfQW1vdW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAEF9Tb2Z0X0NhcF9BbW91bnQCAAAAMVNvZnQgQ2FwIEFtb3VudCBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAFHJlYWRfSGFyZF9DYXBfQW1vdW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAEF9IYXJkX0NhcF9BbW91bnQCAAAAMUhhcmQgQ2FwIEFtb3VudCBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAG3JlYWRfdG90YWxfZnVuZHNfY29sbGVjdGlvbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAABFfRnVuZHNfQ29sbGVjdGlvbgIAAAA4VG90YWwgRnVuZHMgQ29sbGVjdGlvbiBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAH3JlYWRfdXNlcl90b3RhbF9mdW5kc19kZXBvc2l0ZWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAAFfBQAAAApjdXJyZW50S2V5AgAAADtObyBEZXBvc2l0IHdhcyBtYWRlIGJ5IHRoaXMgQWRkcmVzcyBmb3IgdGhpcyBQcmVzYWxlIFJvdW5kLgQAAAARcmVhZF9BbGxvd19SZWZ1bmQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBsAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAANX0FsbG93X1JlZnVuZAIAAAA4QWxsb3dfUmVmdW5kIGhhcyBubyBCb29sZW4gRW50cnkgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMJAABlAAAAAgUAAAAUcmVhZF9Tb2Z0X0NhcF9BbW91bnQFAAAAG3JlYWRfdG90YWxfZnVuZHNfY29sbGVjdGlvbgQAAAAWcGVuZGluZ19oYXJkY2FwX3N0YXR1cwkAAGUAAAACBQAAABRyZWFkX0hhcmRfQ2FwX0Ftb3VudAUAAAAbcmVhZF90b3RhbF9mdW5kc19jb2xsZWN0aW9uBAAAAAxtaWxsaXNlY29uZHMAAAAAAAAAA+gEAAAABm1pbnV0ZQkAAGgAAAACAAAAAAAAAAA8BQAAAAxtaWxsaXNlY29uZHMEAAAAFXJvdW5kX3RpbWVfZGlmZmVyZW5jZQkAAGUAAAACBQAAABFyZWFkX3JvdW5kX2VuZF90cwUAAAATcmVhZF9yb3VuZF9zdGFydF90cwQAAAAWYWRkaXRpb25hbF9zYWZlX2Jsb2NrcwAAAAAAAAAACgQAAAASYmxvY2tzdGltZXRvbWF0dXJlCQAAZAAAAAIJAABkAAAAAgUAAAAVcmVhZF9Jbml0aWF0ZWRfSGVpZ2h0CQAAawAAAAMFAAAAFXJvdW5kX3RpbWVfZGlmZmVyZW5jZQAAAAAAAAAAAQUAAAAGbWludXRlBQAAABZhZGRpdGlvbmFsX3NhZmVfYmxvY2tzBAAAAA9wZW5kaW5nX3JlZnVuZHMJAABlAAAAAgUAAAAbcmVhZF90b3RhbF9mdW5kc19jb2xsZWN0aW9uBQAAAB9yZWFkX3VzZXJfdG90YWxfZnVuZHNfZGVwb3NpdGVkAwkAAGYAAAACBQAAABJibG9ja3N0aW1ldG9tYXR1cmUIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAE3ByZXNhbGVfbm90X2VuZF9lcnICAAAAFCBQbGVhc2UgV2FpdCBVbnRpbCB+CQABpAAAAAEFAAAAEmJsb2Nrc3RpbWV0b21hdHVyZQIAAAATIEhlaWdodCBpcyByZWFjaGVkLgMJAAAAAAAAAgUAAAARcmVhZF9BbGxvd19SZWZ1bmQHCQAAAgAAAAEFAAAACnJlZnVuZF9lcnIDCQAAAAAAAAIFAAAAH3JlYWRfdXNlcl90b3RhbF9mdW5kc19kZXBvc2l0ZWQAAAAAAAAAAAAJAAACAAAAAQIAAAAwUmVmdW5kIGhhcyBiZWVuIEFscmVhZHkgQ2xhaW1lZCBieSB0aGlzIEFkZHJlc3MuAwMJAABmAAAAAgUAAAAWcGVuZGluZ19zb2Z0Y2FwX3N0YXR1cwAAAAAAAAAAAAkAAGYAAAACBQAAABZwZW5kaW5nX2hhcmRjYXBfc3RhdHVzAAAAAAAAAAAABwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAApjdXJyZW50S2V5BQAAAB9yZWFkX3VzZXJfdG90YWxfZnVuZHNfZGVwb3NpdGVkBQAAAAVXQVZFUwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAABXwIAAAAOUGVuZGluZ19SZWZ1bmQFAAAAD3BlbmRpbmdfcmVmdW5kcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAABXwUAAAAKY3VycmVudEtleQAAAAAAAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAAdtZXNzYWdlBQAAAA9yZWZ1bmRfaW5pdF9tc2cFAAAAA25pbAMDCQAAZwAAAAIAAAAAAAAAAAAFAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMJAABmAAAAAgUAAAAWcGVuZGluZ19oYXJkY2FwX3N0YXR1cwAAAAAAAAAAAAcJAAACAAAAAQIAAABnU29mdENhcCBBbHJlYWR5IFJlYWNoZWQgZm9yIHRoaXMgUm91bmQuIFBsZWFzZSBDbGljayBvbiAnQ2xhaW0gVG9rZW5zJyBGdW5jdGlvbiB0byBSZWNlaXZlIFlvdXIgVG9rZW5zLgMDCQAAZwAAAAIAAAAAAAAAAAAFAAAAFnBlbmRpbmdfc29mdGNhcF9zdGF0dXMJAABnAAAAAgAAAAAAAAAAAAUAAAAWcGVuZGluZ19oYXJkY2FwX3N0YXR1cwcJAAACAAAAAQIAAABeU29mdENhcCBhbmQgSGFyZCBBbHJlYWR5IFJlYWNoZWQgZm9yIHRoaXMgUm91bmQuIFBsZWFzZSBDbGljayBvbiBDbGFpbSB0byBSZWNlaXZlIFlvdXIgVG9rZW5zLgkAAAIAAAABAgAAABJXcm9uZyBFbnRyeSBGb3VuZC4AAAABaQEAAAAMQ2xhaW1fVG9rZW5zAAAAAQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABXNjYWxlAAAAAAAF9eEABAAAABRyZWFkX3NvZnRfY2FwX3N0YXR1cwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAA9fc29mdGNhcF9zdGF0dXMCAAAAMFNvZnRDYXAgU3RhdHVzIG5vdCBGb3VuZCBmb3IgdGhpcyBQcmVzYWxlIFJvdW5kLgQAAAAUcmVhZF9oYXJkX2NhcF9zdGF0dXMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAPX2hhcmRjYXBfc3RhdHVzAgAAADBIYXJkQ2FwIFN0YXR1cyBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAFnJlYWRfcm91bmRfdG9rZW5fcHJpY2UJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAMX1Rva2VuX1ByaWNlAgAAAC1Ub2tlbiBQcmljZSBub3QgRm91bmQgZm9yIHRoaXMgUHJlc2FsZSBSb3VuZC4EAAAAH3JlYWRfdXNlcl90b3RhbF9mdW5kc19kZXBvc2l0ZWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAAFfBQAAAApjdXJyZW50S2V5AgAAADtObyBEZXBvc2l0IHdhcyBtYWRlIGJ5IHRoaXMgQWRkcmVzcyBmb3IgdGhpcyBQcmVzYWxlIFJvdW5kLgQAAAAWY2FsY3VsYXRlX3RvdGFsX3Rva2VucwkAAGsAAAADBQAAAB9yZWFkX3VzZXJfdG90YWxfZnVuZHNfZGVwb3NpdGVkBQAAAAVzY2FsZQUAAAAWcmVhZF9yb3VuZF90b2tlbl9wcmljZQQAAAAYdXNlcl90b2tlbnNfY2xhaW1fYW1vdW50CQAAawAAAAMFAAAAH3JlYWRfdXNlcl90b3RhbF9mdW5kc19kZXBvc2l0ZWQFAAAABXNjYWxlBQAAABZyZWFkX3JvdW5kX3Rva2VuX3ByaWNlBAAAABlyZWFkX3RvdGFsX3Rva2Vuc19jbGFpbWVkBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAABNFbnRlcl9QcmVzYWxlX1JvdW5kAgAAAA9fVG9rZW5zX0NsYWltZWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAUdG90YWxfdG9rZW5zX2NsYWltZWQJAABkAAAAAgUAAAAZcmVhZF90b3RhbF90b2tlbnNfY2xhaW1lZAUAAAAYdXNlcl90b2tlbnNfY2xhaW1fYW1vdW50BAAAABZwZW5kaW5nX3Rva2Vuc19jbGFpbWVkCQAAZQAAAAIFAAAAFmNhbGN1bGF0ZV90b3RhbF90b2tlbnMFAAAAGHVzZXJfdG9rZW5zX2NsYWltX2Ftb3VudAMJAAAAAAAAAgUAAAAUcmVhZF9zb2Z0X2NhcF9zdGF0dXMCAAAAAk5vCQAAAgAAAAECAAAARk5vIFRva2VucyBDbGFpbSxhcyBTb2Z0Q2FwIEFtb3VudCBkaWRuJ3QgcmVhY2ggbnVtYmVycyBmb3IgdGhpcyBSb3VuZC4DAwkAAAAAAAACBQAAABRyZWFkX3NvZnRfY2FwX3N0YXR1cwIAAAADWWVzBgkAAAAAAAACBQAAABRyZWFkX2hhcmRfY2FwX3N0YXR1cwIAAAADWWVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAGkAAAAAQUAAAATRW50ZXJfUHJlc2FsZV9Sb3VuZAIAAAAPX1Rva2Vuc19DbGFpbWVkBQAAABR0b3RhbF90b2tlbnNfY2xhaW1lZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAAE0VudGVyX1ByZXNhbGVfUm91bmQCAAAAGF9QZW5kaW5nX1Rva2Vuc19Ub19DbGFpbQUAAAAWcGVuZGluZ190b2tlbnNfY2xhaW1lZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAApjdXJyZW50S2V5BQAAABh1c2VyX3Rva2Vuc19jbGFpbV9hbW91bnQFAAAAC0JNTF9Ub2tlbklEBQAAAANuaWwJAAACAAAAAQIAAAASV3JvbmcgRW50cnkgRm91bmQuAAAAAWkBAAAACE1pbnRfQk1MAAAAAgAAAAlUb2tlbk5hbWUAAAAQVG9rZW5EZXNjcmlwdGlvbgQAAAAFYXNzZXQJAARCAAAABQUAAAAJVG9rZW5OYW1lBQAAABBUb2tlbkRlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAIBgQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVhc3NldAQAAAAMcmVhZF9jb3VudGVyBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAE0Fzc2V0X0lzc3VlX0NvdW50ZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAScmVhZF90b3RhbF9jb3VudGVyCQAAZAAAAAIFAAAADHJlYWRfY291bnRlcgAAAAAAAAAAAQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAASY29udHJvbGxlcl9hZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACVUaGlzIEFkZHJlc3MgaXMgbm90IEF1dGhvcml6ZWQuIE9ubHkgCQAEJQAAAAEFAAAAEmNvbnRyb2xsZXJfYWRkcmVzcwIAAAAiIGlzIEF1dGhvcml6ZWQgQWRkcmVzcyB0byBTaWduIGl0LgMJAABmAAAAAgUAAAAScmVhZF90b3RhbF9jb3VudGVyAAAAAAAAAAABCQAAAgAAAAECAAAAGUJNTCBUb2tlbiBBbHJlYWR5IElzc3VlZC4JAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAALQk1MX1Rva2VuSUQJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAATQXNzZXRfSXNzdWVfQ291bnRlcgUAAAAScmVhZF90b3RhbF9jb3VudGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAB21lc3NhZ2UFAAAAFHRva2VuX2lzc3VlX2luaXRfbXNnCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAHYXNzZXRJZAAAAAAAAAAAAQUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXnLarKr", "height": 2710374, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: fGN9aG2rcSyJ6vuK5wbkfnX2AaZ7WB43NbSfVvcSvgc Next: 7db3EagPT5AMAaWX5Dy3d2ZZZuQr8JsggwNYQDaWGhGq Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let token_issue_init_msg = "BML Token Created Successfully."
5+
6+let token_issue_error = "The BML token could not be found. Please use the Create_BML function to issue a BML token."
7+
8+let BML_TokenID = valueOrErrorMessage(fromBase58String(getStringValue(this, "BML_TokenID")), token_issue_error)
9+
410 let presale_timestamp_controller_pubkey = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
511
612 let controller_address = addressFromPublicKey(presale_timestamp_controller_pubkey)
3238 let refund_err = "Softcap or Hard Cap already Reached or probably PreSale was Set with False to Refund, so no Refund allowed for this Round."
3339
3440 let refund_init_msg = "<h1>Refund Received Successfully!.</h1><br>"
35-
36-let token_issue_error = "The BML token could not be found. Please use the Create_BML function to issue a BML token."
3741
3842 @Callable(i)
3943 func SetPreSaleParameters (Presale_Start_TimeStamp,Presale_End_TimeStamp,Token_Price,Soft_Cap_Amount,Hard_Cap_Amount,Allow_Refund) = {
195199
196200 @Callable(i)
197201 func Claim_Tokens (Enter_Presale_Round) = {
198- let BML_TokenID = valueOrErrorMessage(fromBase58String(getStringValue(this, "BML_TokenID")), token_issue_error)
199202 let currentKey = toBase58String(i.caller.bytes)
200203 let scale = 100000000
201204 let read_soft_cap_status = valueOrErrorMessage(getString(this, (toString(Enter_Presale_Round) + "_softcap_status")), "SoftCap Status not Found for this Presale Round.")
227230 func Mint_BML (TokenName,TokenDescription) = {
228231 let asset = Issue(TokenName, TokenDescription, 1, 8, true)
229232 let assetId = calculateAssetId(asset)
233+ let read_counter = match getInteger(this, "Asset_Issue_Counter") {
234+ case a: Int =>
235+ a
236+ case _ =>
237+ 0
238+ }
239+ let read_total_counter = (read_counter + 1)
230240 if ((i.caller != controller_address))
231241 then throw((("This Address is not Authorized. Only " + toString(controller_address)) + " is Authorized Address to Sign it."))
232- else [asset, StringEntry("BML_TokenID", toBase58String(assetId)), Burn(assetId, 1)]
242+ else if ((read_total_counter > 1))
243+ then throw("BML Token Already Issued.")
244+ else [asset, StringEntry("BML_TokenID", toBase58String(assetId)), IntegerEntry("Asset_Issue_Counter", read_total_counter), StringEntry("message", token_issue_init_msg), Burn(assetId, 1)]
233245 }
234-
235-
236-
237-@Callable(i)
238-func Delete () = [DeleteEntry("BML_TokenID")]
239246
240247
241248 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let token_issue_init_msg = "BML Token Created Successfully."
5+
6+let token_issue_error = "The BML token could not be found. Please use the Create_BML function to issue a BML token."
7+
8+let BML_TokenID = valueOrErrorMessage(fromBase58String(getStringValue(this, "BML_TokenID")), token_issue_error)
9+
410 let presale_timestamp_controller_pubkey = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
511
612 let controller_address = addressFromPublicKey(presale_timestamp_controller_pubkey)
713
814 let expiredtserror = "Start Timestamp can't be less than last block Timestamp."
915
1016 let tserror = "End Timestamp can't be less than or equal to Start Timestamp"
1117
1218 let priceerror = "Token Price can't be less than or Zero"
1319
1420 let caperror = "Soft Cap Amount can't be more than Hard Cap Amount."
1521
1622 let ordermsg = "<h1>Presale Order Submitted Successfully!</h1><br>"
1723
1824 let presale_init_msg = "<h1>PreSale Parameters Submitted Successfully!</h1><br>"
1925
2026 let pymterror = "DApp Need WAVES Token as Attach payment[1]."
2127
2228 let orderpymterror = "Attached payment[1] is less than token price "
2329
2430 let launch_error = "Dapp will start Pre-Sale at Timestamp "
2531
2632 let minbalerror = "Minimum 0.1 WAVES required on Your Address, Please hold min. 0.1 WAVES on your Address to place order."
2733
2834 let presale_end_err = "Pre-Sale is over for this Round."
2935
3036 let presale_not_end_err = "Pre-Sale is not over for this Round."
3137
3238 let refund_err = "Softcap or Hard Cap already Reached or probably PreSale was Set with False to Refund, so no Refund allowed for this Round."
3339
3440 let refund_init_msg = "<h1>Refund Received Successfully!.</h1><br>"
35-
36-let token_issue_error = "The BML token could not be found. Please use the Create_BML function to issue a BML token."
3741
3842 @Callable(i)
3943 func SetPreSaleParameters (Presale_Start_TimeStamp,Presale_End_TimeStamp,Token_Price,Soft_Cap_Amount,Hard_Cap_Amount,Allow_Refund) = {
4044 let StartTS = Presale_Start_TimeStamp
4145 let EndTS = Presale_End_TimeStamp
4246 let read_funding_round = match getInteger(this, "Current_Funding_Round") {
4347 case a: Int =>
4448 a
4549 case _ =>
4650 0
4751 }
4852 let current_round = (read_funding_round + 1)
4953 if ((i.caller != controller_address))
5054 then throw((("This Address is not Authorized. Only " + toString(controller_address)) + " is Authorized Address to Sign it."))
5155 else if ((lastBlock.timestamp > Presale_Start_TimeStamp))
5256 then throw(expiredtserror)
5357 else if ((size(toString(Presale_Start_TimeStamp)) != 13))
5458 then throw("Start Timestamp is Wrong. Please Enter a Valid Timestamp. Probably you entered an Timestamp less than 13 Chars.")
5559 else if ((size(toString(Presale_End_TimeStamp)) != 13))
5660 then throw("End Timestamp is Wrong. Please Enter a Valid Timestamp. Probably you entered an Timestamp less than 13 Chars.")
5761 else if ((1 > Token_Price))
5862 then throw(priceerror)
5963 else if ((StartTS >= EndTS))
6064 then throw(tserror)
6165 else if ((Soft_Cap_Amount > Hard_Cap_Amount))
6266 then throw(caperror)
6367 else [IntegerEntry("Current_Funding_Round", current_round), IntegerEntry((toString(current_round) + "_Presale_Start_TimeStamp"), StartTS), IntegerEntry((toString(current_round) + "_Presale_End_TimeStamp"), EndTS), IntegerEntry((toString(current_round) + "_Token_Price"), Token_Price), IntegerEntry((toString(current_round) + "_Soft_Cap_Amount"), Soft_Cap_Amount), IntegerEntry((toString(current_round) + "_Hard_Cap_Amount"), Hard_Cap_Amount), IntegerEntry((toString(current_round) + "_Initiated_Height"), height), BooleanEntry((toString(current_round) + "_Allow_Refund"), Allow_Refund), StringEntry("message", presale_init_msg)]
6468 }
6569
6670
6771
6872 @Callable(i)
6973 func PlacePresaleOrder (Enter_Presale_Round) = {
7074 let read_round_token_price = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Token_Price")), "Token Price not Found for this Presale Round.")
7175 let read_round_start_ts = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Presale_Start_TimeStamp")), "Start Timestamp not Found for this Presale Round.")
7276 let read_round_end_ts = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Presale_End_TimeStamp")), "End Timestamp not Found for this Presale Round.")
7377 let read_Soft_Cap_Amount = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Soft_Cap_Amount")), "Soft Cap Amount not Found for this Presale Round.")
7478 let read_Hard_Cap_Amount = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Hard_Cap_Amount")), "Hard Cap Amount not Found for this Presale Round.")
7579 let read_Allow_Refund = valueOrErrorMessage(getBoolean(this, (toString(Enter_Presale_Round) + "_Allow_Refund")), "Refund is not set for this Presale Round.")
7680 let WAVES = unit
7781 let currentKey = toBase58String(i.caller.bytes)
7882 let pmt = if ((size(i.payments) == 1))
7983 then i.payments[0]
8084 else throw(pymterror)
8185 let read_funds_collection = match getInteger(this, (toString(Enter_Presale_Round) + "_Funds_Collection")) {
8286 case a: Int =>
8387 a
8488 case _ =>
8589 0
8690 }
8791 let total_funds_collection = (read_funds_collection + pmt.amount)
8892 let read_auto_withdraw_txns = match getInteger(this, (toString(Enter_Presale_Round) + "_total_auto_withdraw_txns")) {
8993 case a: Int =>
9094 a
9195 case _ =>
9296 0
9397 }
9498 let total_auto_withdraw_txns = (read_auto_withdraw_txns + 1)
9599 let read_total_txns = match getInteger(this, (toString(Enter_Presale_Round) + "_total_txns")) {
96100 case a: Int =>
97101 a
98102 case _ =>
99103 0
100104 }
101105 let total_txns = (read_total_txns + 1)
102106 let read_user_total_funds_deposited = match getInteger(this, ((toString(Enter_Presale_Round) + "_") + currentKey)) {
103107 case a: Int =>
104108 a
105109 case _ =>
106110 0
107111 }
108112 let user_total_funds_deposited = (read_user_total_funds_deposited + pmt.amount)
109113 let pending_softcap_status = (read_Soft_Cap_Amount - total_funds_collection)
110114 let pending_hardcap_status = (read_Hard_Cap_Amount - total_funds_collection)
111115 if (isDefined(pmt.assetId))
112116 then throw(pymterror)
113117 else if ((read_round_token_price > pmt.amount))
114118 then throw((((orderpymterror + "[") + toString(read_round_token_price)) + "/10^8.]"))
115119 else if ((read_round_start_ts > lastBlock.timestamp))
116120 then throw((launch_error + toString(read_round_start_ts)))
117121 else if ((lastBlock.timestamp > read_round_end_ts))
118122 then throw(presale_end_err)
119123 else if (if ((pending_softcap_status > 0))
120124 then (pending_hardcap_status > 0)
121125 else false)
122126 then [IntegerEntry((toString(Enter_Presale_Round) + "_Funds_Collection"), total_funds_collection), IntegerEntry(((toString(Enter_Presale_Round) + "_") + currentKey), user_total_funds_deposited), IntegerEntry((toString(Enter_Presale_Round) + "_total_auto_withdraw_txns"), read_auto_withdraw_txns), IntegerEntry((toString(Enter_Presale_Round) + "_total_txns"), total_txns), IntegerEntry((toString(Enter_Presale_Round) + "_pending_softcap_status"), pending_softcap_status), IntegerEntry((toString(Enter_Presale_Round) + "_pending_hardcap_status"), pending_hardcap_status), StringEntry((toString(Enter_Presale_Round) + "_softcap_status"), "No"), StringEntry((toString(Enter_Presale_Round) + "_hardcap_status"), "No"), BooleanEntry((toString(Enter_Presale_Round) + "_Allow_Refund"), read_Allow_Refund), StringEntry("message", ordermsg)]
123127 else if (if (if ((0 >= pending_softcap_status))
124128 then (pending_hardcap_status > 0)
125129 else false)
126130 then (total_auto_withdraw_txns == 1)
127131 else false)
128132 then [IntegerEntry((toString(Enter_Presale_Round) + "_Funds_Collection"), total_funds_collection), IntegerEntry(((toString(Enter_Presale_Round) + "_") + currentKey), user_total_funds_deposited), IntegerEntry((toString(Enter_Presale_Round) + "_total_auto_withdraw_txns"), total_auto_withdraw_txns), IntegerEntry((toString(Enter_Presale_Round) + "_total_txns"), total_txns), IntegerEntry((toString(Enter_Presale_Round) + "_pending_softcap_status"), pending_softcap_status), IntegerEntry((toString(Enter_Presale_Round) + "_pending_hardcap_status"), pending_hardcap_status), StringEntry((toString(Enter_Presale_Round) + "_softcap_status"), "Yes"), StringEntry((toString(Enter_Presale_Round) + "_hardcap_status"), "No"), BooleanEntry((toString(Enter_Presale_Round) + "_Allow_Refund"), false), ScriptTransfer(controller_address, total_funds_collection, unit), StringEntry("message", ordermsg)]
129133 else if (if (if ((0 >= pending_softcap_status))
130134 then (pending_hardcap_status > 0)
131135 else false)
132136 then (total_auto_withdraw_txns > 1)
133137 else false)
134138 then [IntegerEntry((toString(Enter_Presale_Round) + "_Funds_Collection"), total_funds_collection), IntegerEntry(((toString(Enter_Presale_Round) + "_") + currentKey), user_total_funds_deposited), IntegerEntry((toString(Enter_Presale_Round) + "_total_auto_withdraw_txns"), total_auto_withdraw_txns), IntegerEntry((toString(Enter_Presale_Round) + "_total_txns"), total_txns), IntegerEntry((toString(Enter_Presale_Round) + "_pending_softcap_status"), pending_softcap_status), IntegerEntry((toString(Enter_Presale_Round) + "_pending_hardcap_status"), pending_hardcap_status), StringEntry((toString(Enter_Presale_Round) + "_softcap_status"), "Yes"), StringEntry((toString(Enter_Presale_Round) + "_hardcap_status"), "No"), BooleanEntry((toString(Enter_Presale_Round) + "_Allow_Refund"), false), ScriptTransfer(controller_address, pmt.amount, unit), StringEntry("message", ordermsg)]
135139 else if (if (if ((0 >= pending_softcap_status))
136140 then (0 >= pending_hardcap_status)
137141 else false)
138142 then (total_auto_withdraw_txns == 1)
139143 else false)
140144 then [IntegerEntry((toString(Enter_Presale_Round) + "_Funds_Collection"), total_funds_collection), IntegerEntry(((toString(Enter_Presale_Round) + "_") + currentKey), user_total_funds_deposited), IntegerEntry((toString(Enter_Presale_Round) + "_total_auto_withdraw_txns"), total_auto_withdraw_txns), IntegerEntry((toString(Enter_Presale_Round) + "_total_txns"), total_txns), IntegerEntry((toString(Enter_Presale_Round) + "_pending_softcap_status"), pending_softcap_status), IntegerEntry((toString(Enter_Presale_Round) + "_pending_hardcap_status"), pending_hardcap_status), StringEntry((toString(Enter_Presale_Round) + "_softcap_status"), "Yes"), StringEntry((toString(Enter_Presale_Round) + "_hardcap_status"), "Yes"), BooleanEntry((toString(Enter_Presale_Round) + "_Allow_Refund"), false), ScriptTransfer(controller_address, total_funds_collection, unit), StringEntry("message", ordermsg)]
141145 else if (if (if ((0 >= pending_softcap_status))
142146 then (0 >= pending_hardcap_status)
143147 else false)
144148 then (total_auto_withdraw_txns > 1)
145149 else false)
146150 then [IntegerEntry((toString(Enter_Presale_Round) + "_Funds_Collection"), total_funds_collection), IntegerEntry(((toString(Enter_Presale_Round) + "_") + currentKey), user_total_funds_deposited), IntegerEntry((toString(Enter_Presale_Round) + "_total_auto_withdraw_txns"), total_auto_withdraw_txns), IntegerEntry((toString(Enter_Presale_Round) + "_total_txns"), total_txns), IntegerEntry((toString(Enter_Presale_Round) + "_pending_softcap_status"), pending_softcap_status), IntegerEntry((toString(Enter_Presale_Round) + "_pending_hardcap_status"), pending_hardcap_status), StringEntry((toString(Enter_Presale_Round) + "_softcap_status"), "Yes"), StringEntry((toString(Enter_Presale_Round) + "_hardcap_status"), "Yes"), BooleanEntry((toString(Enter_Presale_Round) + "_Allow_Refund"), false), ScriptTransfer(controller_address, pmt.amount, unit), StringEntry("message", ordermsg)]
147151 else throw("Error.")
148152 }
149153
150154
151155
152156 @Callable(i)
153157 func Refund (Enter_Presale_Round) = {
154158 let WAVES = unit
155159 let currentKey = toBase58String(i.caller.bytes)
156160 let read_Initiated_Height = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Initiated_Height")), "Initiated Height not Found for this Presale Round.")
157161 let read_round_token_price = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Token_Price")), "Token Price not Found for this Presale Round.")
158162 let read_round_start_ts = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Presale_Start_TimeStamp")), "Start Timestamp not Found for this Presale Round.")
159163 let read_round_end_ts = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Presale_End_TimeStamp")), "End Timestamp not Found for this Presale Round.")
160164 let read_Soft_Cap_Amount = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Soft_Cap_Amount")), "Soft Cap Amount not Found for this Presale Round.")
161165 let read_Hard_Cap_Amount = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Hard_Cap_Amount")), "Hard Cap Amount not Found for this Presale Round.")
162166 let read_total_funds_collection = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Funds_Collection")), "Total Funds Collection not Found for this Presale Round.")
163167 let read_user_total_funds_deposited = valueOrErrorMessage(getInteger(this, ((toString(Enter_Presale_Round) + "_") + currentKey)), "No Deposit was made by this Address for this Presale Round.")
164168 let read_Allow_Refund = valueOrErrorMessage(getBoolean(this, (toString(Enter_Presale_Round) + "_Allow_Refund")), "Allow_Refund has no Boolen Entry for this Presale Round.")
165169 let pending_softcap_status = (read_Soft_Cap_Amount - read_total_funds_collection)
166170 let pending_hardcap_status = (read_Hard_Cap_Amount - read_total_funds_collection)
167171 let milliseconds = 1000
168172 let minute = (60 * milliseconds)
169173 let round_time_difference = (read_round_end_ts - read_round_start_ts)
170174 let additional_safe_blocks = 10
171175 let blockstimetomature = ((read_Initiated_Height + fraction(round_time_difference, 1, minute)) + additional_safe_blocks)
172176 let pending_refunds = (read_total_funds_collection - read_user_total_funds_deposited)
173177 if ((blockstimetomature > lastBlock.height))
174178 then throw((((presale_not_end_err + " Please Wait Until ~") + toString(blockstimetomature)) + " Height is reached."))
175179 else if ((read_Allow_Refund == false))
176180 then throw(refund_err)
177181 else if ((read_user_total_funds_deposited == 0))
178182 then throw("Refund has been Already Claimed by this Address.")
179183 else if (if ((pending_softcap_status > 0))
180184 then (pending_hardcap_status > 0)
181185 else false)
182186 then [ScriptTransfer(addressFromStringValue(currentKey), read_user_total_funds_deposited, WAVES), IntegerEntry(((toString(Enter_Presale_Round) + "_") + "Pending_Refund"), pending_refunds), IntegerEntry(((toString(Enter_Presale_Round) + "_") + currentKey), 0), StringEntry("message", refund_init_msg)]
183187 else if (if ((0 >= pending_softcap_status))
184188 then (pending_hardcap_status > 0)
185189 else false)
186190 then throw("SoftCap Already Reached for this Round. Please Click on 'Claim Tokens' Function to Receive Your Tokens.")
187191 else if (if ((0 >= pending_softcap_status))
188192 then (0 >= pending_hardcap_status)
189193 else false)
190194 then throw("SoftCap and Hard Already Reached for this Round. Please Click on Claim to Receive Your Tokens.")
191195 else throw("Wrong Entry Found.")
192196 }
193197
194198
195199
196200 @Callable(i)
197201 func Claim_Tokens (Enter_Presale_Round) = {
198- let BML_TokenID = valueOrErrorMessage(fromBase58String(getStringValue(this, "BML_TokenID")), token_issue_error)
199202 let currentKey = toBase58String(i.caller.bytes)
200203 let scale = 100000000
201204 let read_soft_cap_status = valueOrErrorMessage(getString(this, (toString(Enter_Presale_Round) + "_softcap_status")), "SoftCap Status not Found for this Presale Round.")
202205 let read_hard_cap_status = valueOrErrorMessage(getString(this, (toString(Enter_Presale_Round) + "_hardcap_status")), "HardCap Status not Found for this Presale Round.")
203206 let read_round_token_price = valueOrErrorMessage(getInteger(this, (toString(Enter_Presale_Round) + "_Token_Price")), "Token Price not Found for this Presale Round.")
204207 let read_user_total_funds_deposited = valueOrErrorMessage(getInteger(this, ((toString(Enter_Presale_Round) + "_") + currentKey)), "No Deposit was made by this Address for this Presale Round.")
205208 let calculate_total_tokens = fraction(read_user_total_funds_deposited, scale, read_round_token_price)
206209 let user_tokens_claim_amount = fraction(read_user_total_funds_deposited, scale, read_round_token_price)
207210 let read_total_tokens_claimed = match getInteger(this, (toString(Enter_Presale_Round) + "_Tokens_Claimed")) {
208211 case a: Int =>
209212 a
210213 case _ =>
211214 0
212215 }
213216 let total_tokens_claimed = (read_total_tokens_claimed + user_tokens_claim_amount)
214217 let pending_tokens_claimed = (calculate_total_tokens - user_tokens_claim_amount)
215218 if ((read_soft_cap_status == "No"))
216219 then throw("No Tokens Claim,as SoftCap Amount didn't reach numbers for this Round.")
217220 else if (if ((read_soft_cap_status == "Yes"))
218221 then true
219222 else (read_hard_cap_status == "Yes"))
220223 then [IntegerEntry((toString(Enter_Presale_Round) + "_Tokens_Claimed"), total_tokens_claimed), IntegerEntry((toString(Enter_Presale_Round) + "_Pending_Tokens_To_Claim"), pending_tokens_claimed), ScriptTransfer(addressFromStringValue(currentKey), user_tokens_claim_amount, BML_TokenID)]
221224 else throw("Wrong Entry Found.")
222225 }
223226
224227
225228
226229 @Callable(i)
227230 func Mint_BML (TokenName,TokenDescription) = {
228231 let asset = Issue(TokenName, TokenDescription, 1, 8, true)
229232 let assetId = calculateAssetId(asset)
233+ let read_counter = match getInteger(this, "Asset_Issue_Counter") {
234+ case a: Int =>
235+ a
236+ case _ =>
237+ 0
238+ }
239+ let read_total_counter = (read_counter + 1)
230240 if ((i.caller != controller_address))
231241 then throw((("This Address is not Authorized. Only " + toString(controller_address)) + " is Authorized Address to Sign it."))
232- else [asset, StringEntry("BML_TokenID", toBase58String(assetId)), Burn(assetId, 1)]
242+ else if ((read_total_counter > 1))
243+ then throw("BML Token Already Issued.")
244+ else [asset, StringEntry("BML_TokenID", toBase58String(assetId)), IntegerEntry("Asset_Issue_Counter", read_total_counter), StringEntry("message", token_issue_init_msg), Burn(assetId, 1)]
233245 }
234-
235-
236-
237-@Callable(i)
238-func Delete () = [DeleteEntry("BML_TokenID")]
239246
240247
241248 @Verifier(tx)
242249 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
243250

github/deemru/w8io/169f3d6 
49.36 ms