tx · 7VYMKT13BRJpcq6BP89vf5PYQnARAz3xscoX3PCswN4i

3N7nJwbFGppbebBtXy6bWVcQCGu7m3kXFaw:  -0.02200000 Waves

2022.06.30 18:54 [2119372] smart account 3N7nJwbFGppbebBtXy6bWVcQCGu7m3kXFaw > SELF 0.00000000 Waves

{ "type": 13, "id": "7VYMKT13BRJpcq6BP89vf5PYQnARAz3xscoX3PCswN4i", "fee": 2200000, "feeAssetId": null, "timestamp": 1656604477890, "version": 2, "chainId": 84, "sender": "3N7nJwbFGppbebBtXy6bWVcQCGu7m3kXFaw", "senderPublicKey": "GTKqLSK6nuFkRdebB5SmTwTU2DnTeLMvhymCFfT2CxX2", "proofs": [ "43ScfphQzP3GHVVrGpnno1usoVkmeTBFMz4kCEQYwCo7pbiTKArLjZtgKVQCFZ2nei9NFsnwqmcTDBkoaYK1vSWo" ], "script": "base64:BgIlCAISABIAEgASABIDCgEBEgASAwoBARIAEgASAwoBCBIECgIBAQQAC1N0YWtlZFRva2VuASD5rl2FqqDB81weFWSW9S5FyKYquYAb4MpXXcAlqscPUAALR292ZXJuVG9rZW4BIAFshcLXQMYuV8Rzs8ULZ07fOlzF6BxYes7P/1GRlpktABRMaWtlUGFja2FnZUFTSU1JQ29zdAkAaAIAAQCAwtcvABZMaWtlUGFja2FnZVRST0lLQU5Db3N0CQBoAgAFAIDC1y8LAWkBC0RldldpdGhkcmF3AAQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAwkAAAIFCmN1cnJlbnRLZXkCIzNQNzRidUh0OThCbm9qRmNhUkVKWnRiOThLRHlVbVpHZW1KBAxEZXZCb3hBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIGRGV2Qm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwkAZgIAAAUMRGV2Qm94QW1vdW50CQACAQISTm90IGVub3VnaCBiYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgZEZXZCb3gAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDERldkJveEFtb3VudAULR292ZXJuVG9rZW4FA25pbAkAAgECLFlvdSBjYW5ub3Qgd2l0aGRyYXcgYXMgeW91ciBhcmUgbm90IHRoZSBEZXYuAWkBFVdpdGhkcmF3V2Vla2x5RWFybmluZwAEGkNvbnRyYWN0V2FsbGV0U3Rha2VCYWxhbmNlCQDwBwIFBHRoaXMFC1N0YWtlZFRva2VuBAxNYXhEZXBvc2l0ZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCDE1heERlcG9zaXRlcgQSVXNlcldlZWtseUVhcm5pbmdzCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIMX1dlZWtFYXJuaW5nBAxTdGFrZUJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIMU3Rha2VCYWxhbmNlAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZUFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzAgdGdW5kQm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gEByRtYXRjaDAJAJoIAgUEdGhpcwILUHJpemVIZWlnaHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAluZXdBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlcldlZWtseUVhcm5pbmdzAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwkAZgIAAAUJbmV3QW1vdW50CQACAQIeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQkArAICAkFVc2VyIGNhbm5vdCB3aXRoZHJhdyBtb3JlIHRoYW4gZGVwb3NpdGVkIGZ1bmRzLCBZb3VyIGRlcG9zaXQgaXM6IAkApAMBCQBpAgUJbmV3QW1vdW50AIDC1y8JAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJXZWVrbHlFYXJuaW5ncwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKTWF4RGVwb3NpdAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJbmV3QW1vdW50BQtTdGFrZWRUb2tlbgUDbmlsAWkBClB1c2hSZXdhcmQABAxtaW5QdXNoQmxvY2sACgQNbWluU3Rha2VCbG9jawkAaAIABwCgCwQORGVsYXlBZnRlclB1c2gAPAQIV2FpdFRpbWUJAGgCAKALAAEEBm1pbnJlZgADBA5GaXJzdFB1c2hUaW1lcgkAaAIABwCgCwQXdXNlcldhbGxldEdvdmVybkJhbGFuY2UJAPAHAgkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzBQtHb3Zlcm5Ub2tlbgQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQUVXNlckxhc3RQdXNoT2xkVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUIVXNlclB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1VzZXJSZWZzTnVtCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIFX3JlZnMEEFVzZXJSZWZzTnVtVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwULVXNlclJlZnNOdW0DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAADCQBmAgUXdXNlcldhbGxldEdvdmVybkJhbGFuY2UIBQNwbXQGYW1vdW50AwMJAGYCCQBkAggFA3BtdAZhbW91bnQFFFVzZXJMYXN0UHVzaE9sZFZhbHVlBRBIaWdoZXN0UHVzaFZhbHVlCQAAAggFA3BtdAdhc3NldElkBQtHb3Zlcm5Ub2tlbgcEEVVzZXJMYXN0UHVzaEJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwISX1VzZXJMYXN0UHVzaEJsb2NrBBJVc2VyTGFzdFN0YWtlQmxvY2sJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAhNfVXNlckxhc3RTdGFrZUJsb2NrBAlVc2VyU3Rha2UJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAghfU3Rha2luZwQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSSGlnaGVzdFB1c2hBZGRyZXNzBAckbWF0Y2gwCQCaCAIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQWVXNlckxhc3RQdXNoQmxvY2tWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBRFVc2VyTGFzdFB1c2hCbG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckxhc3RTdGFrZUJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABA5Vc2VyU3Rha2VWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQlVc2VyU3Rha2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEDURldkJveEJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIGRGV2Qm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAxEZXZCb3hBbW91bnQJAGQCBQ1EZXZCb3hCYWxhbmNlCQBpAgkAaAIIBQNwbXQGYW1vdW50AAUA6AcEDVVzZXJQdXNodmFsdWUJAGQCCAUDcG10BmFtb3VudAUUVXNlckxhc3RQdXNoT2xkVmFsdWUECE5ld0RlbGF5AwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwUORmlyc3RQdXNoVGltZXIJAGQCBQtBY3R1YWxEZWxheQUORGVsYXlBZnRlclB1c2gEF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlAwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQUITmV3RGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwIABRJIaWdoZXN0UHVzaEFkZHJlc3MEE1ByaXplSGVpZ2h0VmFsdWVOZXcDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQhOZXdEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHBQZoZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUDAwkAZgIFDVVzZXJQdXNodmFsdWUAAAkAZgIJAGUCBQZoZWlnaHQFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBQ1taW5TdGFrZUJsb2NrBwMJAGYCCQBlAgUGaGVpZ2h0BRZVc2VyTGFzdFB1c2hCbG9ja1ZhbHVlBQxtaW5QdXNoQmxvY2sDCQBmAgUOVXNlclN0YWtlVmFsdWUAAAMJAGYCBQ1Vc2VyUHVzaHZhbHVlBRBIaWdoZXN0UHVzaFZhbHVlAwkAZgIFC1ByaXplQW1vdW50AAADAwMDCQBnAgkAZAIFE1ByaXplSGVpZ2h0VmFsdWVOZXcFCE5ld0RlbGF5BQZoZWlnaHQGCQBnAgUGaGVpZ2h0CQBkAgkAZAIFE1ByaXplSGVpZ2h0VmFsdWVOZXcFCE5ld0RlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcGCQAAAgUQSGlnaGVzdFB1c2hWYWx1ZQAAAwkAZwIFEFVzZXJSZWZzTnVtVmFsdWUFBm1pbnJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIVXNlclB1c2gFDVVzZXJQdXNodmFsdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICC0hpZ2hlc3RQdXNoBQ1Vc2VyUHVzaHZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFVc2VyTGFzdFB1c2hCbG9jawUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUTUHJpemVIZWlnaHRWYWx1ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgIFRGVsYXkFCE5ld0RlbGF5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgZEZXZCb3gFDERldkJveEFtb3VudAUDbmlsCQACAQkArAICCQCsAgICEVlvdSBoYXZlIHRvIGhhdmUgCQCkAwEFBm1pbnJlZgI8IHJlZmVycmFscyBhbHJlYWR5IHN0YWtpbmcgZm9yIGEgbWluaW11bSBvZiAxMCBkYXlzLCB0byBwdXNoBAN0eHQDCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAAAk9Zb3UgY2Fubm90IFB1c2ggYWZ0ZXIgcmV3YXJkaW5nIFByaXplIGFuZCBiZWZvcmUgT25lIGRheSBoYXMgcGFzc2VkIGFmdGVyIGF3YXJkAhBVbmV4cGVjdGVkIGVycm9yCQACAQUDdHh0CQACAQJOWW91IGNhbm5vdCBwdXNoIGJlZm9yZSB0aGUgcmV3YXJkIGlzIHVubG9ja2VkLCBubyByZXdhcmQgaGFzIGJlZW4gZGV0ZWN0ZWQgeWV0CQACAQJDWW91ciBwdXNoIGluIHRyb2lrYW4gdG9rZW4sIHNob3VsZCBiZSBIaWdoZXIgdGhhbiBsYXN0IEhpZ2hlc3QgUHVzaAkAAgECWFRvIGJlIGFibGUgdG8gcGFydGljaXBhdGUgaW4gUHVzaGluZyBmb3IgdGhlIHJld2FyZCB5b3UgbmVlZCB0byBTdGFrZSBBU0lNSXMgaW4gdGhlIGRBcHAJAAIBAjVZb3UgaGF2ZSB0byB3YWl0IDEwbWluIGJlZm9yZSB5b3UgY2FuIG1ha2UgYSBuZXcgUHVzaAkAAgEJAKwCAgI6WW91ciBQdXNoIGRvdCBub3QgY29tcGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IAJdMS4gUG9zaXRpdmUgVmFsdWUgZm9yIFB1c2ggaW4gVHJvaWthbiBUb2tlCiAyLiBNdXN0IFN0YWtlZCBBU0lNSSBUb2tlbiBmb3IgYSBtaW5pbXVtIG9mIHdlZWsgCQACAQkArAICCQCsAgICdkNhbiBkZXBvc2l0IG9ubHkgcG9zaXRpdmUgYW1vdW50cyBvZiBUcm9pa2FuIFRva2VuLCBvciBDaGVjayB5b3VyIFdhbGxldCBiYWxhbmNlIGluIFRyb2lrYSwgeW91IHNob3VsZCBoYXZlIG1vcmUgdGhhbiAJAKQDAQUQSGlnaGVzdFB1c2hWYWx1ZQIIIHRvIHB1c2gJAAIBAqQBWW91IGRvIG5vdCBoYXZlIGVub3VnaCBUcm9pa2FuIFRva2VucyBpbiB5b3VyIFdhbGxldCBCYWxhbmNlLCBQbGVhc2UgSGFydmVzdCBpZiB5b3UgaGF2ZSBlYXJuZWQgVHJvaWthbiB3YWxsZXQgb3IgdHJhbnNmZXIgdG8geW91ciB3YWxsZXQgbmVjZXNzYXJ5IFRyb2lrYW4gYW1vdW50ICEBaQEFU3Rha2UABAhXYWl0VGltZQkAaAIAoAsAAQQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAMDCQBmAggFA3BtdAZhbW91bnQAAAkAAAIIBQNwbXQHYXNzZXRJZAULU3Rha2VkVG9rZW4HBB9Hb3Zlcm5Ub2tlblNtYXJ0Q29udHJhY3RCYWxhbmNlCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuBAdVc2VyQVBZCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIEX0FQWQQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQSVXNlclN0YWtlZFRva2VuS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIIX1N0YWtpbmcEElVzZXJHb3Zlcm5Ub2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCV9FYXJuaW5ncwQSVXNlckxhc3RTdGFrZUJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1VzZXJMYXN0U3Rha2VCbG9jawQYVXNlclN0YWtlVHJhbnNhY3Rpb25zS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1N0YWtlZFRyYW5zYWN0aW9ucwQNQWRkcmVzc0hlaWdodAkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCDF9Qcml6ZUhlaWdodAQQVXNlcldlZWtFYXJuaW5ncwkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCDF9XZWVrRWFybmluZwQVVXNlclN0YWtlVHJhbnNhY3Rpb25zBAckbWF0Y2gwCQCaCAIFBHRoaXMFGFVzZXJTdGFrZVRyYW5zYWN0aW9uc0tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQMTWF4RGVwb3NpdGVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAgxNYXhEZXBvc2l0ZXIED01heERlcG9zaXRCbG9jawQHJG1hdGNoMAkAmggCBQR0aGlzAg9NYXhEZXBvc2l0QmxvY2sDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECk1heERlcG9zaXQEByRtYXRjaDAJAJoIAgUEdGhpcwIKTWF4RGVwb3NpdAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQRTWF4RGVwb3NpdGVyVmFsdWUDCQBmAggFA3BtdAZhbW91bnQFCk1heERlcG9zaXQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwUMTWF4RGVwb3NpdGVyBA9NYXhEZXBvc2l0VmFsdWUDCQBmAggFA3BtdAZhbW91bnQFCk1heERlcG9zaXQIBQNwbXQGYW1vdW50BQpNYXhEZXBvc2l0BBRNYXhEZXBvc2l0QmxvY2tWYWx1ZQMJAGYCCAUDcG10BmFtb3VudAUKTWF4RGVwb3NpdAUGaGVpZ2h0BQ9NYXhEZXBvc2l0QmxvY2sEDVVzZXJQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUIVXNlclB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJMYXN0U3Rha2VCbG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQaVXNlckxhc3RTdGFrZUJsb2NrTmV3VmFsdWUDCQAAAgUXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUAAAUGaGVpZ2h0BRdVc2VyTGFzdFN0YWtlQmxvY2tWYWx1ZQQYTmV3VXNlclN0YWtlVHJhbnNhY3Rpb25zCQBkAgUVVXNlclN0YWtlVHJhbnNhY3Rpb25zAAEEGGN1cnJlbnRBbW91bnRTdGFrZWRUb2tlbgQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyU3Rha2VkVG9rZW5LZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFG5ld0Ftb3VudFN0YWtlZFRva2VuCQBkAgUYY3VycmVudEFtb3VudFN0YWtlZFRva2VuCAUDcG10BmFtb3VudAQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEElN0YWtlQmFsYW5jZUFtb3VudAkAZAIFDFN0YWtlQmFsYW5jZQgFA3BtdAZhbW91bnQEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFVVzZXJXZWVrRWFybmluZ3NWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBRBVc2VyV2Vla0Vhcm5pbmdzAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4EByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckdvdmVyblRva2VuS2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gEByRtYXRjaDAJAJoIAgUEdGhpcwILUHJpemVIZWlnaHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQLQWN0dWFsRGVsYXkEByRtYXRjaDAJAJoIAgUEdGhpcwIFRGVsYXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEkhpZ2hlc3RQdXNoQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwISSGlnaGVzdFB1c2hBZGRyZXNzBBdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcCAAUSSGlnaGVzdFB1c2hBZGRyZXNzBBNQcml6ZUhlaWdodFZhbHVlTmV3AwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwUGaGVpZ2h0BRBQcml6ZUhlaWdodFZhbHVlAwkAZgIAgMLXLwUfR292ZXJuVG9rZW5TbWFydENvbnRyYWN0QmFsYW5jZQkAAgECPk5vIGVub3VnaCBHb3Zlcm5Ub2tlbiBJbiBDb250cmFjdCwgUGxlYXNlIGRlcG9zaXQgR292ZXJuVG9rZW5zBAZSZXdhcmQDCQAAAgUMU3Rha2VCYWxhbmNlAAAAkE4DCQBmAgUYTmV3VXNlclN0YWtlVHJhbnNhY3Rpb25zAAoJAGgCCQBoAgCQTgUYTmV3VXNlclN0YWtlVHJhbnNhY3Rpb25zCQBkAgABCQBpAgUUbmV3QW1vdW50U3Rha2VkVG9rZW4FDFN0YWtlQmFsYW5jZQkAaAIAkE4JAGQCAAEJAGkCBRRuZXdBbW91bnRTdGFrZWRUb2tlbgUMU3Rha2VCYWxhbmNlBAxVc2VyQVBZVmFsdWUDCQBmAgUYY3VycmVudEFtb3VudEdvdmVyblRva2VuAAAJAGkCCQBoAgBkBQZSZXdhcmQFGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgAABBRuZXdBbW91bnRHb3Zlcm5Ub2tlbgkAZAIFGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgUGUmV3YXJkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyR292ZXJuVG9rZW5LZXkFFG5ld0Ftb3VudEdvdmVyblRva2VuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyU3Rha2VkVG9rZW5LZXkFFG5ld0Ftb3VudFN0YWtlZFRva2VuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhVc2VyU3Rha2VUcmFuc2FjdGlvbnNLZXkFGE5ld1VzZXJTdGFrZVRyYW5zYWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgIMU3Rha2VCYWxhbmNlBRJTdGFrZUJhbGFuY2VBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRNQcml6ZUhlaWdodFZhbHVlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQdVc2VyQVBZBQxVc2VyQVBZVmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJMYXN0U3Rha2VCbG9jawUaVXNlckxhc3RTdGFrZUJsb2NrTmV3VmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFCFVzZXJQdXNoBQ1Vc2VyUHVzaFZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQICDE1heERlcG9zaXRlcgURTWF4RGVwb3NpdGVyVmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQICCk1heERlcG9zaXQFD01heERlcG9zaXRWYWx1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIPTWF4RGVwb3NpdEJsb2NrBRRNYXhEZXBvc2l0QmxvY2tWYWx1ZQkAzAgCCQELU3RyaW5nRW50cnkCAhJIaWdoZXN0UHVzaEFkZHJlc3MFF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBVc2VyV2Vla0Vhcm5pbmdzBRVVc2VyV2Vla0Vhcm5pbmdzVmFsdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZSZXdhcmQFC0dvdmVyblRva2VuBQNuaWwJAAIBAhtDYW4gZGVwb3NpdCBvbmx5IFN0YWtlVG9rZW4BaQETV2l0aGRyYXdTdGFrZWRGdW5kcwEGYW1vdW50BAhXYWl0VGltZQkAaAIAoAsAAQQSVXNlckxhc3RTdGFrZUJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1VzZXJMYXN0U3Rha2VCbG9jawQSVXNlclN0YWtlZFRva2VuS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIIX1N0YWtpbmcEElVzZXJHb3Zlcm5Ub2tlbktleQkArAICCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIBXwkA2AQBBQtHb3Zlcm5Ub2tlbgQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJMYXN0U3Rha2VCbG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVSGVpZ2h0VHJhbnNhY3RGdW5kQm94BAckbWF0Y2gwCQCaCAIFBHRoaXMCC1ByaXplSGVpZ2h0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQSGlnaGVzdFB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAgtIaWdoZXN0UHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABBJIaWdoZXN0UHVzaEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwQXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHAgAFEkhpZ2hlc3RQdXNoQWRkcmVzcwQTUHJpemVIZWlnaHRWYWx1ZU5ldwMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcFBmhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJTdGFrZWRUb2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50BBJTdGFrZUJhbGFuY2VBbW91bnQJAGUCBQxTdGFrZUJhbGFuY2UFBmFtb3VudAQaVXNlckxhc3RTdGFrZUJsb2NrTmV3VmFsdWUDCQAAAgUSU3Rha2VCYWxhbmNlQW1vdW50AAAAAAUXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUDCQBmAgAABQZhbW91bnQJAAIBAh5DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQDCQBmAgAABQluZXdBbW91bnQJAAIBCQCsAgICQVVzZXIgY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBkZXBvc2l0ZWQgZnVuZHMsIFlvdXIgZGVwb3NpdCBpczogCQCkAwEJAGkCBQ1jdXJyZW50QW1vdW50AIDC1y8DCQBmAgCAwtcvCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuCQACAQkArAICAh9Ob3QgZW5vdWdoIFRyb2lrYSBJbiBDb250cmFjdDogCQCkAwEJAGkCCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuAIDC1y8JAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJHb3Zlcm5Ub2tlbktleQCAwtcvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyU3Rha2VkVG9rZW5LZXkFCW5ld0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgIMU3Rha2VCYWxhbmNlBRJTdGFrZUJhbGFuY2VBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRNQcml6ZUhlaWdodFZhbHVlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyTGFzdFN0YWtlQmxvY2sFGlVzZXJMYXN0U3Rha2VCbG9ja05ld1ZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQICEkhpZ2hlc3RQdXNoQWRkcmVzcwUXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAIDC1y8FC0dvdmVyblRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQtTdGFrZWRUb2tlbgUDbmlsAWkBFldpdGhkcmF3QmlnU3Rha2VSZXdhcmQABAhXYWl0VGltZQkAaAIAoAsAAQQYTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIZX0xhc3RCaWdTdGFrZXJSZXdhcmRCbG9jawQPQmlnU3Rha2VyUmV3YXJkCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIKX0JpZ1N0YWtlcgQSVXNlckdvdmVyblRva2VuS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIJX0Vhcm5pbmdzBBJMaW1pV2l0aGRyYXdSZXdhcmQACgQVVXNlckdvdmVyblRva2VuQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJHb3Zlcm5Ub2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQdTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUYTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBlCaWdTdGFrZXJSZXdhcmRUb3RhbFZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMCFEJpZ1N0YWtlclJld2FyZFRvdGFsAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZUFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzAgdGdW5kQm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gEByRtYXRjaDAJAJoIAgUEdGhpcwILUHJpemVIZWlnaHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQLQWN0dWFsRGVsYXkEByRtYXRjaDAJAJoIAgUEdGhpcwIFRGVsYXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEkhpZ2hlc3RQdXNoQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwISSGlnaGVzdFB1c2hBZGRyZXNzBBdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcCAAUSSGlnaGVzdFB1c2hBZGRyZXNzBBNQcml6ZUhlaWdodFZhbHVlTmV3AwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwUGaGVpZ2h0BRBQcml6ZUhlaWdodFZhbHVlBApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEBmFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzBQ9CaWdTdGFrZXJSZXdhcmQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEElN0YWtlQmFsYW5jZUFtb3VudAkAZQIFGUJpZ1N0YWtlclJld2FyZFRvdGFsVmFsdWUFBmFtb3VudAQSQmlnU3Rha2VyUmV3YXJkVGF4AwkAZgIAAAkAaAIJAGkCBRVVc2VyR292ZXJuVG9rZW5BbW91bnQA6AcJAGUCAOgHCQBpAgkAaAIA6AcJAGUCBQZoZWlnaHQFHUxhc3RCaWdTdGFrZXJSZXdhcmRCbG9ja1ZhbHVlCQBoAgUSTGltaVdpdGhkcmF3UmV3YXJkAKALCQBoAgDoBwCAwtcvCQBoAgkAaQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudADoBwkAZQIA6AcJAGkCCQBoAgDoBwkAZQIFBmhlaWdodAUdTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrVmFsdWUJAGgCBRJMaW1pV2l0aGRyYXdSZXdhcmQAoAsDCQBmAgAABQZhbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAh9DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQgCQCkAwEJAGUCBRVVc2VyR292ZXJuVG9rZW5BbW91bnQJAGgCAOgHAIDC1y8CBSAuLi4gCQCkAwEFBmFtb3VudAMDAwkAZgIJAGgCAOgHAIDC1y8FFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudAYJAGYCAAEFBmFtb3VudAYJAGYCAAAJAGUCBRVVc2VyR292ZXJuVG9rZW5BbW91bnQFEkJpZ1N0YWtlclJld2FyZFRheAkAAgEJAKwCAgJcTm8gQVNJTUkgcmV3YXJkIGF2YWlsYWJsZSwgb3IgTm90IGVub3VnaCBFYXJuZWQgVHJvaWthbiBUb2tlbnMgdG8gZG8gdHJhbnNhY3Rpb24sIHlvdSBoYXZlOiAJAKQDAQkAaQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudACAwtcvAwkAZgIFElN0YWtlQmFsYW5jZUFtb3VudAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9CaWdTdGFrZXJSZXdhcmQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIUQmlnU3Rha2VyUmV3YXJkVG90YWwFElN0YWtlQmFsYW5jZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSVXNlckdvdmVyblRva2VuS2V5CQBlAgUVVXNlckdvdmVyblRva2VuQW1vdW50BRJCaWdTdGFrZXJSZXdhcmRUYXgJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRBQcml6ZUhlaWdodFZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhMYXN0QmlnU3Rha2VyUmV3YXJkQmxvY2sFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCAhJIaWdoZXN0UHVzaEFkZHJlc3MFF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQtTdGFrZWRUb2tlbgUDbmlsCQACAQJSQmFsYW5jZSBFcnJvciwgVG90YWwgQmlnIFN0YWtlcnMgY2Fubm90IGJlIG5lZ2F0aXZlLCBPcGVyYXRpb24gd29uJ3QgYmUgYXV0aG9yaXplZAFpARNIYXJ2ZXN0R292ZXJuVG9pa2VuAQZhbW91bnQEGkNvbnRyYWN0V2FsbGV0U3Rha2VCYWxhbmNlCQDwBwIFBHRoaXMFC1N0YWtlZFRva2VuBBJVc2VyR292ZXJuVG9rZW5LZXkJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAglfRWFybmluZ3MEDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDWN1cnJlbnRBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckdvdmVyblRva2VuS2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAluZXdBbW91bnQJAGUCBQ1jdXJyZW50QW1vdW50BQZhbW91bnQDCQBmAgAABQZhbW91bnQJAAIBAh5DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQDCQBmAgAABQluZXdBbW91bnQJAAIBCQCsAgICQVVzZXIgY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBkZXBvc2l0ZWQgZnVuZHMsIFlvdXIgZGVwb3NpdCBpczogCQCkAwEJAGkCBQ1jdXJyZW50QW1vdW50AIDC1y8JAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJHb3Zlcm5Ub2tlbktleQUJbmV3QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAULR292ZXJuVG9rZW4FA25pbAFpAQpkZWxheXByaXplAAQJRGVsYXlEYXlzCQBoAgCgCwABBAhXYWl0VGltZQkAaAIAoAsAAQQSVXNlckdvdmVyblRva2VuS2V5CQCsAgIJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgFfCQDYBAEFC0dvdmVyblRva2VuBBhVc2VyV2FsbGV0U0dvdmVybkJhbGFuY2UJAPAHAgkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzBQtHb3Zlcm5Ub2tlbgQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLQWN0dWFsRGVsYXkEByRtYXRjaDAJAJoIAgUEdGhpcwIFRGVsYXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQQSGlnaGVzdFB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAgtIaWdoZXN0UHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSSGlnaGVzdFB1c2hBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzAhJIaWdoZXN0UHVzaEFkZHJlc3MEF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlAwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwIABRJIaWdoZXN0UHVzaEFkZHJlc3MEE1ByaXplSGVpZ2h0VmFsdWVOZXcDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHBQZoZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUED0FjdHVhbERlbGF5Q29zdAQHJG1hdGNoMAkAmggCBQR0aGlzAglEZWxheUNvc3QDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAoEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECHEF0dGFjaGVkIHBheW1lbnQgaXMgcmVxdWlyZWQEDURldkJveEJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIGRGV2Qm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwMJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQJAAACCAUDcG10B2Fzc2V0SWQFC0dvdmVyblRva2VuBwMJAGYCBQtQcml6ZUFtb3VudAAABBVVc2VyR292ZXJuVG9rZW5BbW91bnQIBQNwbXQGYW1vdW50BAxEZXZCb3hBbW91bnQJAGQCBQ1EZXZCb3hCYWxhbmNlCQBpAgkAaAIIBQNwbXQGYW1vdW50AAUA6AcEDE5ld0RlbGF5Q29zdAMJAAACBQ9BY3R1YWxEZWxheUNvc3QAAACAlOvcAwkAaAIAAgUPQWN0dWFsRGVsYXlDb3N0AwkAZwIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudAUMTmV3RGVsYXlDb3N0BAhOZXdEZWxheQkAZAIFC0FjdHVhbERlbGF5BQlEZWxheURheXMJAMwIAgkBDEludGVnZXJFbnRyeQICBURlbGF5BQhOZXdEZWxheQkAzAgCCQEMSW50ZWdlckVudHJ5AgIJRGVsYXlDb3N0BQxOZXdEZWxheUNvc3QJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRNQcml6ZUhlaWdodFZhbHVlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgZEZXZCb3gFDERldkJveEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCAhJIaWdoZXN0UHVzaEFkZHJlc3MFF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlBQNuaWwJAAIBCQCsAgIJAKwCAgJJVG8gZGVsYXkgdGhlIHJlbGVhc2Ugb2YgdGhlIHJld2FyZCBPTkUgREFZIGxhdGVyIHRoYW4gZXhwZWN0ZWQsIHlvdSBuZWVkIAkApAMBBQxOZXdEZWxheUNvc3QCB1RST0lLQXMJAAIBAl5Zb3UgY2Fubm90IGRlbGF5IHRoZSByZXdhcmQgYmVmb3JlIHJld2FyZCBpcyByZWNlaXZlZCEgUGxlYXNlIHdhaXQgdW50aWwgYSByZXdhcmQgaXMgYXZhaWxhYmxlCQACAQIpQ2FuIFVzZSBvbmx5IFRyb2lrYSBUb2tlbiB0byBEZWxheSBSZXdhcmQBaQEKQ2xhaW1Qcml6ZQAEElVzZXJTdGFrZWRUb2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCF9TdGFraW5nBAhVc2VyUHVzaAkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCBV9QdXNoBBJVc2VyTGFzdFN0YWtlQmxvY2sJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAhNfVXNlckxhc3RTdGFrZUJsb2NrBA1taW5TdGFrZUJsb2NrCQBoAgCgCwAHBAZtaW5yZWYAAwQXQ29udHJhY3RHb3ZUb2tlbkJhbGFuY2UJAPAHAgUEdGhpcwULR292ZXJuVG9rZW4EGkNvbnRyYWN0V2FsbGV0U3Rha2VCYWxhbmNlCQDwBwIFBHRoaXMFC1N0YWtlZFRva2VuBAxTdGFrZUJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIMU3Rha2VCYWxhbmNlAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZUFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzAgdGdW5kQm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABA1Vc2VyUHVzaFZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMFCFVzZXJQdXNoAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBdVc2VyTGFzdFN0YWtlQmxvY2tWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyTGFzdFN0YWtlQmxvY2sDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFVVzZXJTdGFrZWRUb2tlbkFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyU3Rha2VkVG9rZW5LZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC0FjdHVhbERlbGF5BAckbWF0Y2gwCQCaCAIFBHRoaXMCBURlbGF5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZVdpbm5lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwISSGlnaGVzdFB1c2hBZGRyZXNzBAtQcml6ZUhlaWdodAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQSGlnaGVzdFB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAgtIaWdoZXN0UHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLVXNlclJlZnNOdW0JAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfcmVmcwQQVXNlclJlZnNOdW1WYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQtVc2VyUmVmc051bQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMDCQAAAgULUHJpemVBbW91bnQAAAYJAGYCAIDIr6AlBRdDb250cmFjdEdvdlRva2VuQmFsYW5jZQkAAgECSU5vIHByaXplIHRvIENsYWltIG9yIE5vdCBlbm91Z2ggR292ZXJuIFRva2VuIGVuIENvbnRyYWN0IChNaW4gMTAwIFRyb2lrYSkDCQECIT0CCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFC1ByaXplV2lubmVyCQACAQI2WW91IGFyZSBub3QgdGhlIHdpbm5lciBoZW5jZSBjYW5ub3QgY2xhaW0gdGhlIHJld2FyZCAgAwMJAGYCAIDC1y8FFVVzZXJTdGFrZWRUb2tlbkFtb3VudAkAZgIFDW1pblN0YWtlQmxvY2sFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBwkAAgECLllvdSBoYXZlIHRvIFN0YWtlIEFTSU1JIFRva2VuIHRvIGNsYWltIHJld2FyZCADAwkAZgIFBmhlaWdodAkAZAIFC1ByaXplSGVpZ2h0BQtBY3R1YWxEZWxheQkAZwIFDVVzZXJQdXNoVmFsdWUFEEhpZ2hlc3RQdXNoVmFsdWUHAwkAZwIFEFVzZXJSZWZzTnVtVmFsdWUFBm1pbnJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgULUHJpemVXaW5uZXIFC1ByaXplQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgdGdW5kQm94AAAJAMwIAgkBDEludGVnZXJFbnRyeQICC0hpZ2hlc3RQdXNoAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFCFVzZXJQdXNoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzAgAJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0AAAJAMwIAgkBDEludGVnZXJFbnRyeQICBURlbGF5AAAJAMwIAgkBDEludGVnZXJFbnRyeQICCURlbGF5Q29zdAAACQDMCAIJAQtTdHJpbmdFbnRyeQICCkxhc3RXaW5uZXIFC1ByaXplV2lubmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAglMYXN0UHJpemUFC1ByaXplQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULUHJpemVBbW91bnQFC1N0YWtlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgCAlOvcAwULR292ZXJuVG9rZW4FA25pbAkAAgEJAKwCAgkArAICAhJZb3UgaGF2ZSB0byBoYXZlICAJAKQDAQUGbWlucmVmAkcgIHJlZmVycmFscyBhbHJlYWR5IHN0YWtpbmcgZm9yIGEgbWluaW11bSBvZiAxMCBkYXlzIHRvIENsYWltIHRoZSBwcml6ZQkAAgECYVlvdSBoYXZlIHRvIGJlIHRoZSB1c2VyIHdpdGggdGhlIGhpZ2hlc3QgUHVzaCBhbmQgd2FpdCB0aWxsIGNvdW50b3duIGlzIGZpbmlzaGVkLCB0byBjbGFpbSBSZXdhcmQBaQEJQWRkbWVudG9yAQZNZW50b3IEEVVzZXJNZW50b3JBZGRyZXNzCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIHX01lbnRvcgMJAQIhPQIFBk1lbnRvcgIACQDMCAIJAQtTdHJpbmdFbnRyeQIFEVVzZXJNZW50b3JBZGRyZXNzBQZNZW50b3IFA25pbAkAAgECIE1lbnRvcidzIEFkZHJlc3MgY2Fubm90IGJlIGVtcHR5AWkBD0dldExpa2VzUGFja2FnZQINVHdpdHRlclVzZXJJZAdUd2l0dElkBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAhxBdHRhY2hlZCBwYXltZW50IGlzIHJlcXVpcmVkAwMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFC1N0YWtlZFRva2VuCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBQtHb3Zlcm5Ub2tlbgcDAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRRMaWtlUGFja2FnZUFTSU1JQ29zdAkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRZMaWtlUGFja2FnZVRST0lLQU5Db3N0BwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCkAwEFDVR3aXR0ZXJVc2VySWQCC19Ud2l0dDJMaWtlBQdUd2l0dElkBQNuaWwJAAIBCQCsAgICEkFtb3VudCBzaG91bGQgYmUgOgkApAMBCQBpAggFA3BtdAZhbW91bnQAgMLXLwkAAgECMFBheW1lbnRzIHNob3VsZCBiZSBib3RoIEFTSU1JIGFuZCBUUk9JS0FOIHRva2VucwBsfN6e", "height": 2119372, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ELsgmzFSu45t4LusQxKdd7G6GF4PuCvA1Kus6sXs8cvM Next: 36TRPKwFZJAffd4d7R6NVJuvoJcJZSTjzyWCSrqhLDeQ Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let BUsd = base58'8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1'
4+let StakedToken = base58'Hoej8L1ezqQY4Miex4Z4J7uJ33LCdcubV3DsubGHEqWP'
55
6-let USDT = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
6+let GovernToken = base58'6ZPMzZseuYoMP4ByozJpVxbugXBobwJYF22zVjW5JjN'
77
8-let USDC = base58'6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ'
8+let LikePackageASIMICost = (1 * 100000000)
99
10-let BTC = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
11-
12-let ETH = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu'
13-
14-let BNB = base58'5UYBPpq4WoU5n4MwpFkgJnW3Fq4B1u3ukpK33ik4QerR'
15-
16-let USDN = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
17-
18-let HASH = base58'Hoej8L1ezqQY4Miex4Z4J7uJ33LCdcubV3DsubGHEqWP'
19-
20-let KUSD = base58'FXvNWA5Gfy8yLPHGScm6Gmn4DSZX9brFZ9qmEkPxAhGk'
21-
22-let dAppFees = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
23-
24-let AdmindApp = base58'3PLv5rYMqR4gSiP5ZSjrX2FStLhHTRgFPbb'
10+let LikePackageTROIKANCost = (5 * 100000000)
2511
2612 @Callable(i)
27-func DepositFunds (ScopeDesc,Deliverables,FreelancerAddress) = {
28- let FreeLancerPayment = (toBase58String(i.caller.bytes) + "_Payment")
29- let amount = match getInteger(this, FreeLancerPayment) {
13+func DevWithdraw () = {
14+ let currentKey = toBase58String(i.caller.bytes)
15+ if ((currentKey == "3P74buHt98BnojFcaREJZtb98KDyUmZGemJ"))
16+ then {
17+ let DevBoxAmount = match getInteger(this, "DevBox") {
18+ case a: Int =>
19+ a
20+ case _ =>
21+ 0
22+ }
23+ if ((0 > DevBoxAmount))
24+ then throw("Not enough balance")
25+ else [IntegerEntry("DevBox", 0), ScriptTransfer(i.caller, DevBoxAmount, GovernToken)]
26+ }
27+ else throw("You cannot withdraw as your are not the Dev.")
28+ }
29+
30+
31+
32+@Callable(i)
33+func WithdrawWeeklyEarning () = {
34+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
35+ let MaxDepositer = getStringValue(this, "MaxDepositer")
36+ let UserWeeklyEarnings = (toBase58String(i.caller.bytes) + "_WeekEarning")
37+ let StakeBalance = match getInteger(this, "StakeBalance") {
3038 case a: Int =>
3139 a
3240 case _ =>
3341 0
3442 }
35- if ((amount != 0))
36- then throw("You have already deposited funds, deposits can only be done once")
37- else {
38- let pmt = if ((size(i.payments) == 1))
39- then i.payments[0]
40- else throw("Attached payment is required")
41- if (if (if (if (if (if (if (if (if (if (if ((0 >= pmt.amount))
42- then (pmt.assetId != BUsd)
43+ let PrizeAmount = match getInteger(this, "FundBox") {
44+ case a: Int =>
45+ a
46+ case _ =>
47+ 0
48+ }
49+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
50+ case a: Int =>
51+ a
52+ case _ =>
53+ 0
54+ }
55+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
56+ then (PrizeAmount == 0)
57+ else false)
58+ then 0
59+ else if (if ((HeightTransactFundBox == 0))
60+ then (PrizeAmount != 0)
61+ else false)
62+ then height
63+ else if (if ((HeightTransactFundBox != 0))
64+ then (PrizeAmount != 0)
4365 else false)
44- then (pmt.assetId != USDT)
45- else false)
46- then (pmt.assetId != USDC)
47- else false)
48- then (pmt.assetId != BTC)
49- else false)
50- then (pmt.assetId != ETH)
51- else false)
52- then (pmt.assetId != BNB)
53- else false)
54- then (pmt.assetId != USDN)
55- else false)
56- then (pmt.assetId != HASH)
57- else false)
58- then (pmt.assetId != KUSD)
59- else false)
60- then isDefined(pmt.assetId)
61- else false)
62- then throw("Can only deposit accepted tokens, and amount should be positive")
63- else if (if (if ((ScopeDesc == ""))
64- then true
65- else (Deliverables == ""))
66- then true
67- else (FreelancerAddress == ""))
68- then throw("Job Scope, Deliverables desc and Freelancer Wallet Address cannot be empty")
69- else {
70- let AssetUsed = if (isDefined(pmt.assetId))
71- then toBase58String(value(pmt.assetId))
72- else "Waves"
73-[StringEntry((toBase58String(i.caller.bytes) + "_Scope"), ScopeDesc), StringEntry((toBase58String(i.caller.bytes) + "_Deliv"), Deliverables), StringEntry((toBase58String(i.caller.bytes) + "_Asset"), AssetUsed), StringEntry((toBase58String(i.caller.bytes) + "_Freelancer"), FreelancerAddress), IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), pmt.amount)]
74- }
75- }
66+ then HeightTransactFundBox
67+ else 0
68+ let currentKey = toBase58String(i.caller.bytes)
69+ let newAmount = match getInteger(this, UserWeeklyEarnings) {
70+ case a: Int =>
71+ a
72+ case _ =>
73+ 0
74+ }
75+ if ((0 > newAmount))
76+ then throw("Can't withdraw negative amount")
77+ else if ((0 > newAmount))
78+ then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((newAmount / 100000000))))
79+ else [IntegerEntry(UserWeeklyEarnings, 0), IntegerEntry("PrizeHeight", PrizeHeightValue), IntegerEntry("MaxDeposit", 0), ScriptTransfer(i.caller, newAmount, StakedToken)]
7680 }
7781
7882
7983
8084 @Callable(i)
81-func PayFreelancer (PayFreelancer) = {
82- let FreeLancerPayment = (toBase58String(i.caller.bytes) + "_Payment")
83- let FreelancerAddress = (toBase58String(i.caller.bytes) + "_Freelancer")
84- let PaymentAsset = (toBase58String(i.caller.bytes) + "_Asset")
85- let Paidtrx = (toBase58String(i.caller.bytes) + "_Paidtrx")
86- let amount = match getInteger(this, FreeLancerPayment) {
85+func PushReward () = {
86+ let minPushBlock = 10
87+ let minStakeBlock = (7 * 1440)
88+ let DelayAfterPush = 60
89+ let WaitTime = (1440 * 1)
90+ let minref = 3
91+ let FirstPushTimer = (7 * 1440)
92+ let userWalletGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
93+ let pmt = if ((size(i.payments) == 1))
94+ then i.payments[0]
95+ else throw("Attached payment is required")
96+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
97+ let UserLastPushOldValue = match getInteger(this, UserPush) {
8798 case a: Int =>
8899 a
89100 case _ =>
90101 0
91102 }
92- let PaidtrxLast = match getInteger(this, Paidtrx) {
103+ let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
104+ let UserRefsNumValue = match getInteger(this, UserRefsNum) {
93105 case a: Int =>
94106 a
95107 case _ =>
96108 0
97109 }
98- let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
99- let PaymentAssetId = getStringValue(this, PaymentAsset)
100- let Mydecimal = if (if (if (if ((PaymentAssetId == toBase58String(value(BUsd))))
101- then true
102- else (PaymentAssetId == toBase58String(value(USDT))))
103- then true
104- else (PaymentAssetId == toBase58String(value(USDC))))
105- then true
106- else (PaymentAssetId == toBase58String(value(USDN))))
107- then 1000000
108- else 100000000
109- let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
110- let dAppFrees = Address(dAppFees)
111- let AssetUsed = if ((PaymentAssetId == "Waves"))
112- then unit
113- else fromBase58String(PaymentAssetId)
114- if (if ((0 > (amount - (PayFreelancer * Mydecimal))))
115- then true
116- else (amount == 0))
117- then throw(("You do not have enough funds to make payment, your available funds are: " + toString((amount / Mydecimal))))
118- else if (if ((PaidtrxLast >= 12))
119- then (amount > 0)
110+ let HighestPushValue = match getInteger(this, "HighestPush") {
111+ case a: Int =>
112+ a
113+ case _ =>
114+ 0
115+ }
116+ if ((userWalletGovernBalance > pmt.amount))
117+ then if (if (((pmt.amount + UserLastPushOldValue) > HighestPushValue))
118+ then (pmt.assetId == GovernToken)
120119 else false)
121- then throw("You have already done 12 payments, you cannot make more payments")
122- else {
123- let UserAccount = if ((PaidtrxLast == 11))
120+ then {
121+ let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
122+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
123+ let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
124+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
125+ let StakeBalance = match getInteger(this, "StakeBalance") {
126+ case a: Int =>
127+ a
128+ case _ =>
129+ 0
130+ }
131+ let PrizeAmount = match getInteger(this, "FundBox") {
132+ case a: Int =>
133+ a
134+ case _ =>
135+ 0
136+ }
137+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
138+ case a: Int =>
139+ a
140+ case _ =>
141+ 0
142+ }
143+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
144+ then (PrizeAmount == 0)
145+ else false)
124146 then 0
125- else (amount - (PayFreelancer * Mydecimal))
126- let Payment2Freelance = if ((PaidtrxLast == 11))
127- then ((95 * amount) / 100)
128- else (((95 * PayFreelancer) * Mydecimal) / 100)
129- let FeePaid = if ((PaidtrxLast == 11))
130- then ((5 * amount) / 100)
131- else (((5 * PayFreelancer) * Mydecimal) / 100)
132- let PaidtrxValue = if (if ((PaidtrxLast == 11))
133- then true
134- else (UserAccount == 0))
135- then 0
136- else (PaidtrxLast + 1)
137- $Tuple2([IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), UserAccount), IntegerEntry((toBase58String(i.caller.bytes) + "_Paidtrx"), PaidtrxValue), IntegerEntry((toBase58String(i.caller.bytes) + "_Payment2Freelance"), Payment2Freelance), ScriptTransfer(AddressFreeLancer, Payment2Freelance, AssetUsed), ScriptTransfer(dAppFrees, FeePaid, AssetUsed)], AssetUsed)
147+ else if (if ((HeightTransactFundBox == 0))
148+ then (PrizeAmount != 0)
149+ else false)
150+ then height
151+ else if (if ((HeightTransactFundBox != 0))
152+ then (PrizeAmount != 0)
153+ else false)
154+ then HeightTransactFundBox
155+ else 0
156+ let ActualDelay = match getInteger(this, "Delay") {
157+ case a: Int =>
158+ a
159+ case _ =>
160+ 0
138161 }
162+ let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
163+ case a: Int =>
164+ a
165+ case _ =>
166+ 0
167+ }
168+ let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
169+ case a: Int =>
170+ a
171+ case _ =>
172+ 0
173+ }
174+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
175+ case a: Int =>
176+ a
177+ case _ =>
178+ 0
179+ }
180+ let UserStakeValue = match getInteger(this, UserStake) {
181+ case a: Int =>
182+ a
183+ case _ =>
184+ 0
185+ }
186+ let DevBoxBalance = match getInteger(this, "DevBox") {
187+ case a: Int =>
188+ a
189+ case _ =>
190+ 0
191+ }
192+ let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
193+ let UserPushvalue = (pmt.amount + UserLastPushOldValue)
194+ let NewDelay = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
195+ then (HighestPushValue > 0)
196+ else false)
197+ then FirstPushTimer
198+ else (ActualDelay + DelayAfterPush)
199+ let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + NewDelay) + WaitTime)))
200+ then (HighestPushValue > 0)
201+ else false)
202+ then ""
203+ else HighestPushAddress
204+ let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + NewDelay) + WaitTime)))
205+ then (HighestPushValue > 0)
206+ else false)
207+ then height
208+ else PrizeHeightValue
209+ if (if ((UserPushvalue > 0))
210+ then ((height - UserLastStakeBlockValue) > minStakeBlock)
211+ else false)
212+ then if (((height - UserLastPushBlockValue) > minPushBlock))
213+ then if ((UserStakeValue > 0))
214+ then if ((UserPushvalue > HighestPushValue))
215+ then if ((PrizeAmount > 0))
216+ then if (if (if (if (((PrizeHeightValueNew + NewDelay) >= height))
217+ then true
218+ else (height >= ((PrizeHeightValueNew + NewDelay) + WaitTime)))
219+ then (HighestPushValue > 0)
220+ else false)
221+ then true
222+ else (HighestPushValue == 0))
223+ then if ((UserRefsNumValue >= minref))
224+ then [IntegerEntry(UserPush, UserPushvalue), StringEntry("HighestPushAddress", toBase58String(i.caller.bytes)), IntegerEntry("HighestPush", UserPushvalue), IntegerEntry(UserLastPushBlock, height), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry("Delay", NewDelay), IntegerEntry("DevBox", DevBoxAmount)]
225+ else throw((("You have to have " + toString(minref)) + " referrals already staking for a minimum of 10 days, to push"))
226+ else {
227+ let txt = if ((HighestPushValue > 0))
228+ then "You cannot Push after rewarding Prize and before One day has passed after award"
229+ else "Unexpected error"
230+ throw(txt)
231+ }
232+ else throw("You cannot push before the reward is unlocked, no reward has been detected yet")
233+ else throw("Your push in troikan token, should be Higher than last Highest Push")
234+ else throw("To be able to participate in Pushing for the reward you need to Stake ASIMIs in the dApp")
235+ else throw("You have to wait 10min before you can make a new Push")
236+ else throw(("Your Push dot not comply one of the following conditions: " + "1. Positive Value for Push in Troikan Toke
237+ 2. Must Staked ASIMI Token for a minimum of week "))
238+ }
239+ else throw((("Can deposit only positive amounts of Troikan Token, or Check your Wallet balance in Troika, you should have more than " + toString(HighestPushValue)) + " to push"))
240+ else throw("You do not have enough Troikan Tokens in your Wallet Balance, Please Harvest if you have earned Troikan wallet or transfer to your wallet necessary Troikan amount !")
139241 }
140242
141243
142244
143245 @Callable(i)
144-func AdminTransfer (User,Freelancer,ToFreelancer,ToUser,AdminFee) = if ((i.caller.bytes != AdmindApp))
145- then throw("Only Admin can do this")
146- else if ((((ToUser + ToFreelancer) + AdminFee) != 100))
147- then throw("Total of Percentages cannot be different from 100%")
148- else {
149- let FreeLancerPayment = (User + "_Payment")
150- let FreelancerAddress = (User + "_Freelancer")
151- let PaymentAsset = (User + "_Asset")
152- let amount = match getInteger(this, FreeLancerPayment) {
246+func Stake () = {
247+ let WaitTime = (1440 * 1)
248+ let pmt = if ((size(i.payments) == 1))
249+ then i.payments[0]
250+ else throw("Attached payment is required")
251+ if (if ((pmt.amount > 0))
252+ then (pmt.assetId == StakedToken)
253+ else false)
254+ then {
255+ let GovernTokenSmartContractBalance = assetBalance(this, GovernToken)
256+ let UserAPY = (toBase58String(i.caller.bytes) + "_APY")
257+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
258+ let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
259+ let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
260+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
261+ let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
262+ let AddressHeight = (toBase58String(i.caller.bytes) + "_PrizeHeight")
263+ let UserWeekEarnings = (toBase58String(i.caller.bytes) + "_WeekEarning")
264+ let UserStakeTransactions = match getInteger(this, UserStakeTransactionsKey) {
153265 case a: Int =>
154266 a
155267 case _ =>
156268 0
157269 }
158- let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
159- let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
160- let PaymentAssetId = getStringValue(this, PaymentAsset)
161- let dAppFrees = Address(dAppFees)
162- let AddressUser = addressFromStringValue(User)
163- let AssetUsed = if ((PaymentAssetId == "Waves"))
164- then unit
165- else fromBase58String(PaymentAssetId)
166- if ((amount == 0))
167- then throw("User's balance is 0, cannot realize any payment")
168- else $Tuple2([IntegerEntry((User + "_Payment"), 0), ScriptTransfer(AddressFreeLancer, ((ToFreelancer * amount) / 100), AssetUsed), ScriptTransfer(AddressUser, ((ToUser * amount) / 100), AssetUsed), ScriptTransfer(dAppFrees, ((AdminFee * amount) / 100), AssetUsed)], AssetUsed)
270+ let MaxDepositer = getStringValue(this, "MaxDepositer")
271+ let MaxDepositBlock = match getInteger(this, "MaxDepositBlock") {
272+ case a: Int =>
273+ a
274+ case _ =>
275+ 0
169276 }
277+ let MaxDeposit = match getInteger(this, "MaxDeposit") {
278+ case a: Int =>
279+ a
280+ case _ =>
281+ 0
282+ }
283+ let MaxDepositerValue = if ((pmt.amount > MaxDeposit))
284+ then toBase58String(i.caller.bytes)
285+ else MaxDepositer
286+ let MaxDepositValue = if ((pmt.amount > MaxDeposit))
287+ then pmt.amount
288+ else MaxDeposit
289+ let MaxDepositBlockValue = if ((pmt.amount > MaxDeposit))
290+ then height
291+ else MaxDepositBlock
292+ let UserPushValue = match getInteger(this, UserPush) {
293+ case a: Int =>
294+ a
295+ case _ =>
296+ 0
297+ }
298+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
299+ case a: Int =>
300+ a
301+ case _ =>
302+ 0
303+ }
304+ let UserLastStakeBlockNewValue = if ((UserLastStakeBlockValue == 0))
305+ then height
306+ else UserLastStakeBlockValue
307+ let NewUserStakeTransactions = (UserStakeTransactions + 1)
308+ let currentAmountStakedToken = match getInteger(this, UserStakedTokenKey) {
309+ case a: Int =>
310+ a
311+ case _ =>
312+ 0
313+ }
314+ let newAmountStakedToken = (currentAmountStakedToken + pmt.amount)
315+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
316+ let StakeBalance = match getInteger(this, "StakeBalance") {
317+ case a: Int =>
318+ a
319+ case _ =>
320+ 0
321+ }
322+ let StakeBalanceAmount = (StakeBalance + pmt.amount)
323+ let PrizeAmount = match getInteger(this, "FundBox") {
324+ case a: Int =>
325+ a
326+ case _ =>
327+ 0
328+ }
329+ let UserWeekEarningsValue = match getInteger(this, UserWeekEarnings) {
330+ case a: Int =>
331+ a
332+ case _ =>
333+ 0
334+ }
335+ let currentAmountGovernToken = match getInteger(this, UserGovernTokenKey) {
336+ case a: Int =>
337+ a
338+ case _ =>
339+ 0
340+ }
341+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
342+ case a: Int =>
343+ a
344+ case _ =>
345+ 0
346+ }
347+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
348+ then (PrizeAmount == 0)
349+ else false)
350+ then 0
351+ else if (if ((HeightTransactFundBox == 0))
352+ then (PrizeAmount != 0)
353+ else false)
354+ then height
355+ else if (if ((HeightTransactFundBox != 0))
356+ then (PrizeAmount != 0)
357+ else false)
358+ then HeightTransactFundBox
359+ else 0
360+ let ActualDelay = match getInteger(this, "Delay") {
361+ case a: Int =>
362+ a
363+ case _ =>
364+ 0
365+ }
366+ let HighestPushValue = match getInteger(this, "HighestPush") {
367+ case a: Int =>
368+ a
369+ case _ =>
370+ 0
371+ }
372+ let HighestPushAddress = getStringValue(this, "HighestPushAddress")
373+ let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
374+ then (HighestPushValue > 0)
375+ else false)
376+ then ""
377+ else HighestPushAddress
378+ let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
379+ then (HighestPushValue > 0)
380+ else false)
381+ then height
382+ else PrizeHeightValue
383+ if ((100000000 > GovernTokenSmartContractBalance))
384+ then throw("No enough GovernToken In Contract, Please deposit GovernTokens")
385+ else {
386+ let Reward = if ((StakeBalance == 0))
387+ then 10000
388+ else if ((NewUserStakeTransactions > 10))
389+ then ((10000 * NewUserStakeTransactions) * (1 + (newAmountStakedToken / StakeBalance)))
390+ else (10000 * (1 + (newAmountStakedToken / StakeBalance)))
391+ let UserAPYValue = if ((currentAmountGovernToken > 0))
392+ then ((100 * Reward) / currentAmountGovernToken)
393+ else 0
394+ let newAmountGovernToken = (currentAmountGovernToken + Reward)
395+[IntegerEntry(UserGovernTokenKey, newAmountGovernToken), IntegerEntry(UserStakedTokenKey, newAmountStakedToken), IntegerEntry(UserStakeTransactionsKey, NewUserStakeTransactions), IntegerEntry("StakeBalance", StakeBalanceAmount), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry(UserAPY, UserAPYValue), IntegerEntry(UserLastStakeBlock, UserLastStakeBlockNewValue), IntegerEntry(UserPush, UserPushValue), StringEntry("MaxDepositer", MaxDepositerValue), IntegerEntry("MaxDeposit", MaxDepositValue), IntegerEntry("MaxDepositBlock", MaxDepositBlockValue), StringEntry("HighestPushAddress", HighestPushAddressValue), IntegerEntry(UserWeekEarnings, UserWeekEarningsValue), ScriptTransfer(i.caller, Reward, GovernToken)]
396+ }
397+ }
398+ else throw("Can deposit only StakeToken")
399+ }
170400
171401
172402
173403 @Callable(i)
174-func Transfer2Alias (AddressAlias) = {
175- let alias = Alias(AddressAlias)
176- throw(toString(addressFromRecipient(alias)))
404+func WithdrawStakedFunds (amount) = {
405+ let WaitTime = (1440 * 1)
406+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
407+ let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
408+ let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
409+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
410+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
411+ case a: Int =>
412+ a
413+ case _ =>
414+ 0
415+ }
416+ let StakeBalance = match getInteger(this, "StakeBalance") {
417+ case a: Int =>
418+ a
419+ case _ =>
420+ 0
421+ }
422+ let PrizeAmount = match getInteger(this, "FundBox") {
423+ case a: Int =>
424+ a
425+ case _ =>
426+ 0
427+ }
428+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
429+ case a: Int =>
430+ a
431+ case _ =>
432+ 0
433+ }
434+ let ActualDelay = match getInteger(this, "Delay") {
435+ case a: Int =>
436+ a
437+ case _ =>
438+ 0
439+ }
440+ let HighestPushValue = match getInteger(this, "HighestPush") {
441+ case a: Int =>
442+ a
443+ case _ =>
444+ 0
445+ }
446+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
447+ then (PrizeAmount == 0)
448+ else false)
449+ then 0
450+ else if (if ((HeightTransactFundBox == 0))
451+ then (PrizeAmount != 0)
452+ else false)
453+ then height
454+ else if (if ((HeightTransactFundBox != 0))
455+ then (PrizeAmount != 0)
456+ else false)
457+ then HeightTransactFundBox
458+ else 0
459+ let HighestPushAddress = getStringValue(this, "HighestPushAddress")
460+ let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
461+ then (HighestPushValue > 0)
462+ else false)
463+ then ""
464+ else HighestPushAddress
465+ let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
466+ then (HighestPushValue > 0)
467+ else false)
468+ then height
469+ else PrizeHeightValue
470+ let currentKey = toBase58String(i.caller.bytes)
471+ let currentAmount = match getInteger(this, UserStakedTokenKey) {
472+ case a: Int =>
473+ a
474+ case _ =>
475+ 0
476+ }
477+ let newAmount = (currentAmount - amount)
478+ let StakeBalanceAmount = (StakeBalance - amount)
479+ let UserLastStakeBlockNewValue = if ((StakeBalanceAmount == 0))
480+ then 0
481+ else UserLastStakeBlockValue
482+ if ((0 > amount))
483+ then throw("Can't withdraw negative amount")
484+ else if ((0 > newAmount))
485+ then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
486+ else if ((100000000 > assetBalance(this, GovernToken)))
487+ then throw(("Not enough Troika In Contract: " + toString((assetBalance(this, GovernToken) / 100000000))))
488+ else [IntegerEntry(UserGovernTokenKey, 100000000), IntegerEntry(UserStakedTokenKey, newAmount), IntegerEntry("StakeBalance", StakeBalanceAmount), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry(UserLastStakeBlock, UserLastStakeBlockNewValue), StringEntry("HighestPushAddress", HighestPushAddressValue), ScriptTransfer(i.caller, 100000000, GovernToken), ScriptTransfer(i.caller, amount, StakedToken)]
489+ }
490+
491+
492+
493+@Callable(i)
494+func WithdrawBigStakeReward () = {
495+ let WaitTime = (1440 * 1)
496+ let LastBigStakerRewardBlock = (toBase58String(i.caller.bytes) + "_LastBigStakerRewardBlock")
497+ let BigStakerReward = (toBase58String(i.caller.bytes) + "_BigStaker")
498+ let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
499+ let LimiWithdrawReward = 10
500+ let UserGovernTokenAmount = match getInteger(this, UserGovernTokenKey) {
501+ case a: Int =>
502+ a
503+ case _ =>
504+ 0
505+ }
506+ let LastBigStakerRewardBlockValue = match getInteger(this, LastBigStakerRewardBlock) {
507+ case a: Int =>
508+ a
509+ case _ =>
510+ 0
511+ }
512+ let BigStakerRewardTotalValue = match getInteger(this, "BigStakerRewardTotal") {
513+ case a: Int =>
514+ a
515+ case _ =>
516+ 0
517+ }
518+ let PrizeAmount = match getInteger(this, "FundBox") {
519+ case a: Int =>
520+ a
521+ case _ =>
522+ 0
523+ }
524+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
525+ case a: Int =>
526+ a
527+ case _ =>
528+ 0
529+ }
530+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
531+ then (PrizeAmount == 0)
532+ else false)
533+ then 0
534+ else if (if ((HeightTransactFundBox == 0))
535+ then (PrizeAmount != 0)
536+ else false)
537+ then height
538+ else if (if ((HeightTransactFundBox != 0))
539+ then (PrizeAmount != 0)
540+ else false)
541+ then HeightTransactFundBox
542+ else 0
543+ let ActualDelay = match getInteger(this, "Delay") {
544+ case a: Int =>
545+ a
546+ case _ =>
547+ 0
548+ }
549+ let HighestPushValue = match getInteger(this, "HighestPush") {
550+ case a: Int =>
551+ a
552+ case _ =>
553+ 0
554+ }
555+ let HighestPushAddress = getStringValue(this, "HighestPushAddress")
556+ let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
557+ then (HighestPushValue > 0)
558+ else false)
559+ then ""
560+ else HighestPushAddress
561+ let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
562+ then (HighestPushValue > 0)
563+ else false)
564+ then height
565+ else PrizeHeightValue
566+ let currentKey = toBase58String(i.caller.bytes)
567+ let amount = match getInteger(this, BigStakerReward) {
568+ case a: Int =>
569+ a
570+ case _ =>
571+ 0
572+ }
573+ let StakeBalanceAmount = (BigStakerRewardTotalValue - amount)
574+ let BigStakerRewardTax = if ((0 > ((UserGovernTokenAmount / 1000) * (1000 - ((1000 * (height - LastBigStakerRewardBlockValue)) / (LimiWithdrawReward * 1440))))))
575+ then (1000 * 100000000)
576+ else ((UserGovernTokenAmount / 1000) * (1000 - ((1000 * (height - LastBigStakerRewardBlockValue)) / (LimiWithdrawReward * 1440))))
577+ if ((0 > amount))
578+ then throw(((("Can't withdraw negative amount " + toString((UserGovernTokenAmount - (1000 * 100000000)))) + " ... ") + toString(amount)))
579+ else if (if (if (((1000 * 100000000) > UserGovernTokenAmount))
580+ then true
581+ else (1 > amount))
582+ then true
583+ else (0 > (UserGovernTokenAmount - BigStakerRewardTax)))
584+ then throw(("No ASIMI reward available, or Not enough Earned Troikan Tokens to do transaction, you have: " + toString((UserGovernTokenAmount / 100000000))))
585+ else if ((StakeBalanceAmount > 0))
586+ then [IntegerEntry(BigStakerReward, 0), IntegerEntry("BigStakerRewardTotal", StakeBalanceAmount), IntegerEntry(UserGovernTokenKey, (UserGovernTokenAmount - BigStakerRewardTax)), IntegerEntry("PrizeHeight", PrizeHeightValue), IntegerEntry(LastBigStakerRewardBlock, height), StringEntry("HighestPushAddress", HighestPushAddressValue), ScriptTransfer(i.caller, amount, StakedToken)]
587+ else throw("Balance Error, Total Big Stakers cannot be negative, Operation won't be authorized")
588+ }
589+
590+
591+
592+@Callable(i)
593+func HarvestGovernToiken (amount) = {
594+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
595+ let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
596+ let StakeBalance = match getInteger(this, "StakeBalance") {
597+ case a: Int =>
598+ a
599+ case _ =>
600+ 0
601+ }
602+ let PrizeAmount = match getInteger(this, "FundBox") {
603+ case a: Int =>
604+ a
605+ case _ =>
606+ 0
607+ }
608+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
609+ case a: Int =>
610+ a
611+ case _ =>
612+ 0
613+ }
614+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
615+ then (PrizeAmount == 0)
616+ else false)
617+ then 0
618+ else if (if ((HeightTransactFundBox == 0))
619+ then (PrizeAmount != 0)
620+ else false)
621+ then height
622+ else if (if ((HeightTransactFundBox != 0))
623+ then (PrizeAmount != 0)
624+ else false)
625+ then HeightTransactFundBox
626+ else 0
627+ let currentKey = toBase58String(i.caller.bytes)
628+ let currentAmount = match getInteger(this, UserGovernTokenKey) {
629+ case a: Int =>
630+ a
631+ case _ =>
632+ 0
633+ }
634+ let newAmount = (currentAmount - amount)
635+ if ((0 > amount))
636+ then throw("Can't withdraw negative amount")
637+ else if ((0 > newAmount))
638+ then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
639+ else [IntegerEntry(UserGovernTokenKey, newAmount), IntegerEntry("PrizeHeight", PrizeHeightValue), ScriptTransfer(i.caller, amount, GovernToken)]
640+ }
641+
642+
643+
644+@Callable(i)
645+func delayprize () = {
646+ let DelayDays = (1440 * 1)
647+ let WaitTime = (1440 * 1)
648+ let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
649+ let UserWalletSGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
650+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
651+ let StakeBalance = match getInteger(this, "StakeBalance") {
652+ case a: Int =>
653+ a
654+ case _ =>
655+ 0
656+ }
657+ let PrizeAmount = match getInteger(this, "FundBox") {
658+ case a: Int =>
659+ a
660+ case _ =>
661+ 0
662+ }
663+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
664+ case a: Int =>
665+ a
666+ case _ =>
667+ 0
668+ }
669+ let ActualDelay = match getInteger(this, "Delay") {
670+ case a: Int =>
671+ a
672+ case _ =>
673+ 0
674+ }
675+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
676+ then (PrizeAmount == 0)
677+ else false)
678+ then 0
679+ else if (if ((HeightTransactFundBox == 0))
680+ then (PrizeAmount != 0)
681+ else false)
682+ then height
683+ else if (if ((HeightTransactFundBox != 0))
684+ then (PrizeAmount != 0)
685+ else false)
686+ then HeightTransactFundBox
687+ else 0
688+ let HighestPushValue = match getInteger(this, "HighestPush") {
689+ case a: Int =>
690+ a
691+ case _ =>
692+ 0
693+ }
694+ let HighestPushAddress = getStringValue(this, "HighestPushAddress")
695+ let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
696+ then (HighestPushValue > 0)
697+ else false)
698+ then ""
699+ else HighestPushAddress
700+ let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
701+ then (HighestPushValue > 0)
702+ else false)
703+ then height
704+ else PrizeHeightValue
705+ let ActualDelayCost = match getInteger(this, "DelayCost") {
706+ case a: Int =>
707+ a
708+ case _ =>
709+ 10
710+ }
711+ let pmt = if ((size(i.payments) == 1))
712+ then i.payments[0]
713+ else throw("Attached payment is required")
714+ let DevBoxBalance = match getInteger(this, "DevBox") {
715+ case a: Int =>
716+ a
717+ case _ =>
718+ 0
719+ }
720+ if (if (isDefined(pmt.assetId))
721+ then (pmt.assetId == GovernToken)
722+ else false)
723+ then if ((PrizeAmount > 0))
724+ then {
725+ let UserGovernTokenAmount = pmt.amount
726+ let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
727+ let NewDelayCost = if ((ActualDelayCost == 0))
728+ then 1000000000
729+ else (2 * ActualDelayCost)
730+ if ((UserGovernTokenAmount >= NewDelayCost))
731+ then {
732+ let NewDelay = (ActualDelay + DelayDays)
733+[IntegerEntry("Delay", NewDelay), IntegerEntry("DelayCost", NewDelayCost), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry("DevBox", DevBoxAmount), StringEntry("HighestPushAddress", HighestPushAddressValue)]
734+ }
735+ else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
736+ }
737+ else throw("You cannot delay the reward before reward is received! Please wait until a reward is available")
738+ else throw("Can Use only Troika Token to Delay Reward")
739+ }
740+
741+
742+
743+@Callable(i)
744+func ClaimPrize () = {
745+ let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
746+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
747+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
748+ let minStakeBlock = (1440 * 7)
749+ let minref = 3
750+ let ContractGovTokenBalance = assetBalance(this, GovernToken)
751+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
752+ let StakeBalance = match getInteger(this, "StakeBalance") {
753+ case a: Int =>
754+ a
755+ case _ =>
756+ 0
757+ }
758+ let PrizeAmount = match getInteger(this, "FundBox") {
759+ case a: Int =>
760+ a
761+ case _ =>
762+ 0
763+ }
764+ let UserPushValue = match getInteger(this, UserPush) {
765+ case a: Int =>
766+ a
767+ case _ =>
768+ 0
769+ }
770+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
771+ case a: Int =>
772+ a
773+ case _ =>
774+ 0
775+ }
776+ let UserStakedTokenAmount = match getInteger(this, UserStakedTokenKey) {
777+ case a: Int =>
778+ a
779+ case _ =>
780+ 0
781+ }
782+ let ActualDelay = match getInteger(this, "Delay") {
783+ case a: Int =>
784+ a
785+ case _ =>
786+ 0
787+ }
788+ let PrizeWinner = getStringValue(this, "HighestPushAddress")
789+ let PrizeHeight = match getInteger(this, "PrizeHeight") {
790+ case a: Int =>
791+ a
792+ case _ =>
793+ 0
794+ }
795+ let HighestPushValue = match getInteger(this, "HighestPush") {
796+ case a: Int =>
797+ a
798+ case _ =>
799+ 0
800+ }
801+ let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
802+ let UserRefsNumValue = match getInteger(this, UserRefsNum) {
803+ case a: Int =>
804+ a
805+ case _ =>
806+ 0
807+ }
808+ if (if ((PrizeAmount == 0))
809+ then true
810+ else (10000000000 > ContractGovTokenBalance))
811+ then throw("No prize to Claim or Not enough Govern Token en Contract (Min 100 Troika)")
812+ else if ((toBase58String(i.caller.bytes) != PrizeWinner))
813+ then throw("You are not the winner hence cannot claim the reward ")
814+ else if (if ((100000000 > UserStakedTokenAmount))
815+ then (minStakeBlock > UserLastStakeBlockValue)
816+ else false)
817+ then throw("You have to Stake ASIMI Token to claim reward ")
818+ else if (if ((height > (PrizeHeight + ActualDelay)))
819+ then (UserPushValue >= HighestPushValue)
820+ else false)
821+ then if ((UserRefsNumValue >= minref))
822+ then [IntegerEntry(PrizeWinner, PrizeAmount), IntegerEntry("FundBox", 0), IntegerEntry("HighestPush", 0), IntegerEntry(UserPush, 0), StringEntry("HighestPushAddress", ""), IntegerEntry("PrizeHeight", 0), IntegerEntry("Delay", 0), IntegerEntry("DelayCost", 0), StringEntry("LastWinner", PrizeWinner), IntegerEntry("LastPrize", PrizeAmount), ScriptTransfer(i.caller, PrizeAmount, StakedToken), ScriptTransfer(i.caller, 1000000000, GovernToken)]
823+ else throw((("You have to have " + toString(minref)) + " referrals already staking for a minimum of 10 days to Claim the prize"))
824+ else throw("You have to be the user with the highest Push and wait till countown is finished, to claim Reward")
825+ }
826+
827+
828+
829+@Callable(i)
830+func Addmentor (Mentor) = {
831+ let UserMentorAddress = (toBase58String(i.caller.bytes) + "_Mentor")
832+ if ((Mentor != ""))
833+ then [StringEntry(UserMentorAddress, Mentor)]
834+ else throw("Mentor's Address cannot be empty")
835+ }
836+
837+
838+
839+@Callable(i)
840+func GetLikesPackage (TwitterUserId,TwittId) = {
841+ let pmt = if ((size(i.payments) == 2))
842+ then i.payments[0]
843+ else throw("Attached payment is required")
844+ if (if ((i.payments[0].assetId == StakedToken))
845+ then (i.payments[1].assetId == GovernToken)
846+ else false)
847+ then if (if ((i.payments[0].amount > LikePackageASIMICost))
848+ then (i.payments[0].amount > LikePackageTROIKANCost)
849+ else false)
850+ then [IntegerEntry((toString(TwitterUserId) + "_Twitt2Like"), TwittId)]
851+ else throw(("Amount should be :" + toString((pmt.amount / 100000000))))
852+ else throw("Payments should be both ASIMI and TROIKAN tokens")
177853 }
178854
179855

github/deemru/w8io/026f985 
85.12 ms