tx · GWBzu7anXvdwPSDwGmCTgugKK3DccgTfCMB8bcYAMmRA

3N9evuqxGecMq9hBmpdJu2VkMzdR5VNVrvK:  -0.02400000 Waves

2022.07.17 15:41 [2143763] smart account 3N9evuqxGecMq9hBmpdJu2VkMzdR5VNVrvK > SELF 0.00000000 Waves

{ "type": 13, "id": "GWBzu7anXvdwPSDwGmCTgugKK3DccgTfCMB8bcYAMmRA", "fee": 2400000, "feeAssetId": null, "timestamp": 1658061725549, "version": 2, "chainId": 84, "sender": "3N9evuqxGecMq9hBmpdJu2VkMzdR5VNVrvK", "senderPublicKey": "AHY8zupoYc6HPJ5fh1gQiGE9bNZSeifFbcQQ89okxVug", "proofs": [ "2gKtxW8Mh5tYej38ncTH1AEstbwwPqnbWyymAYwfu2TMch1oH1LAtEqNzBKJESKuxLSp4U8kZ3YP7d4fMHSb6fmv" ], "script": "base64:BgIvCAISABIAEgASABIDCgEBEgASAwoBARIAEgASAwoBCBIECgIBARIDCgEBEgMKAQgEAAtTdGFrZWRUb2tlbgEg+a5dhaqgwfNcHhVklvUuRcimKrmAG+DKV13AJarHD1AAC0dvdmVyblRva2VuASABbIXC10DGLlfEc7PFC2dO3zpcxegcWHrOz/9RkZaZLQAUTGlrZVBhY2thZ2VBU0lNSUNvc3QJAGgCAAEAgMLXLwAWTGlrZVBhY2thZ2VUUk9JS0FOQ29zdAkAaAIABQCAwtcvDQFpAQtEZXZXaXRoZHJhdwAECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwMJAAACBQpjdXJyZW50S2V5AiMzUDc0YnVIdDk4Qm5vakZjYVJFSlp0Yjk4S0R5VW1aR2VtSgQMRGV2Qm94QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCBkRldkJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMJAGYCAAAFDERldkJveEFtb3VudAkAAgECEk5vdCBlbm91Z2ggYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIGRGV2Qm94AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxEZXZCb3hBbW91bnQFC0dvdmVyblRva2VuBQNuaWwJAAIBAixZb3UgY2Fubm90IHdpdGhkcmF3IGFzIHlvdXIgYXJlIG5vdCB0aGUgRGV2LgFpARVXaXRoZHJhd1dlZWtseUVhcm5pbmcABBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMTWF4RGVwb3NpdGVyBAckbWF0Y2gwCQCdCAIFBHRoaXMCDE1heERlcG9zaXRlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQSVXNlcldlZWtseUVhcm5pbmdzCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIMX1dlZWtFYXJuaW5nBAxTdGFrZUJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIMU3Rha2VCYWxhbmNlAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZUFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzAgdGdW5kQm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gEByRtYXRjaDAJAJoIAgUEdGhpcwILUHJpemVIZWlnaHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAluZXdBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlcldlZWtseUVhcm5pbmdzAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwkAZgIAAAUJbmV3QW1vdW50CQACAQIeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAZgIAAAUJbmV3QW1vdW50CQACAQkArAICAkFVc2VyIGNhbm5vdCB3aXRoZHJhdyBtb3JlIHRoYW4gZGVwb3NpdGVkIGZ1bmRzLCBZb3VyIGRlcG9zaXQgaXM6IAkApAMBCQBpAgUJbmV3QW1vdW50AIDC1y8JAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJXZWVrbHlFYXJuaW5ncwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIKTWF4RGVwb3NpdAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJbmV3QW1vdW50BQtTdGFrZWRUb2tlbgUDbmlsAWkBClB1c2hSZXdhcmQABAxtaW5QdXNoQmxvY2sACgQNbWluU3Rha2VCbG9jawkAaAIABwCgCwQORGVsYXlBZnRlclB1c2gAPAQIV2FpdFRpbWUJAGgCAKALAAEEBm1pbnJlZgADBA5GaXJzdFB1c2hUaW1lcgkAaAIABwCgCwQXdXNlcldhbGxldEdvdmVybkJhbGFuY2UJAPAHAgkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzBQtHb3Zlcm5Ub2tlbgQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQUVXNlckxhc3RQdXNoT2xkVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUIVXNlclB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1VzZXJSZWZzTnVtCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIFX3JlZnMEEFVzZXJSZWZzTnVtVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwULVXNlclJlZnNOdW0DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAADCQBmAgUXdXNlcldhbGxldEdvdmVybkJhbGFuY2UIBQNwbXQGYW1vdW50AwMJAGYCCQBkAggFA3BtdAZhbW91bnQFFFVzZXJMYXN0UHVzaE9sZFZhbHVlBRBIaWdoZXN0UHVzaFZhbHVlCQAAAggFA3BtdAdhc3NldElkBQtHb3Zlcm5Ub2tlbgcEEVVzZXJMYXN0UHVzaEJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwISX1VzZXJMYXN0UHVzaEJsb2NrBBJVc2VyTGFzdFN0YWtlQmxvY2sJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAhNfVXNlckxhc3RTdGFrZUJsb2NrBAlVc2VyU3Rha2UJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAghfU3Rha2luZwQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSSGlnaGVzdFB1c2hBZGRyZXNzBAckbWF0Y2gwCQCaCAIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQWVXNlckxhc3RQdXNoQmxvY2tWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBRFVc2VyTGFzdFB1c2hCbG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckxhc3RTdGFrZUJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABA5Vc2VyU3Rha2VWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQlVc2VyU3Rha2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEDURldkJveEJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwIGRGV2Qm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAxEZXZCb3hBbW91bnQJAGQCBQ1EZXZCb3hCYWxhbmNlCQBpAgkAaAIIBQNwbXQGYW1vdW50AAUA6AcEDVVzZXJQdXNodmFsdWUJAGQCCAUDcG10BmFtb3VudAUUVXNlckxhc3RQdXNoT2xkVmFsdWUECE5ld0RlbGF5AwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwUORmlyc3RQdXNoVGltZXIJAGQCBQtBY3R1YWxEZWxheQUORGVsYXlBZnRlclB1c2gEF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlAwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQUITmV3RGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwIABRJIaWdoZXN0UHVzaEFkZHJlc3MEE1ByaXplSGVpZ2h0VmFsdWVOZXcDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQhOZXdEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHBQZoZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUDAwkAZgIFDVVzZXJQdXNodmFsdWUAAAkAZgIJAGUCBQZoZWlnaHQFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBQ1taW5TdGFrZUJsb2NrBwMJAGYCCQBlAgUGaGVpZ2h0BRZVc2VyTGFzdFB1c2hCbG9ja1ZhbHVlBQxtaW5QdXNoQmxvY2sDCQBmAgUOVXNlclN0YWtlVmFsdWUAAAMJAGYCBQ1Vc2VyUHVzaHZhbHVlBRBIaWdoZXN0UHVzaFZhbHVlAwkAZgIFC1ByaXplQW1vdW50AAADAwMDCQBnAgkAZAIFE1ByaXplSGVpZ2h0VmFsdWVOZXcFCE5ld0RlbGF5BQZoZWlnaHQGCQBnAgUGaGVpZ2h0CQBkAgkAZAIFE1ByaXplSGVpZ2h0VmFsdWVOZXcFCE5ld0RlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcGCQAAAgUQSGlnaGVzdFB1c2hWYWx1ZQAAAwkAZwIFEFVzZXJSZWZzTnVtVmFsdWUFBm1pbnJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgUIVXNlclB1c2gFDVVzZXJQdXNodmFsdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBDEludGVnZXJFbnRyeQICC0hpZ2hlc3RQdXNoBQ1Vc2VyUHVzaHZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFVc2VyTGFzdFB1c2hCbG9jawUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUTUHJpemVIZWlnaHRWYWx1ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgIFRGVsYXkFCE5ld0RlbGF5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgZEZXZCb3gFDERldkJveEFtb3VudAUDbmlsCQACAQkArAICCQCsAgICEVlvdSBoYXZlIHRvIGhhdmUgCQCkAwEFBm1pbnJlZgI8IHJlZmVycmFscyBhbHJlYWR5IHN0YWtpbmcgZm9yIGEgbWluaW11bSBvZiAxMCBkYXlzLCB0byBwdXNoBAN0eHQDCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAAAk9Zb3UgY2Fubm90IFB1c2ggYWZ0ZXIgcmV3YXJkaW5nIFByaXplIGFuZCBiZWZvcmUgT25lIGRheSBoYXMgcGFzc2VkIGFmdGVyIGF3YXJkAhBVbmV4cGVjdGVkIGVycm9yCQACAQUDdHh0CQACAQJOWW91IGNhbm5vdCBwdXNoIGJlZm9yZSB0aGUgcmV3YXJkIGlzIHVubG9ja2VkLCBubyByZXdhcmQgaGFzIGJlZW4gZGV0ZWN0ZWQgeWV0CQACAQJDWW91ciBwdXNoIGluIHRyb2lrYW4gdG9rZW4sIHNob3VsZCBiZSBIaWdoZXIgdGhhbiBsYXN0IEhpZ2hlc3QgUHVzaAkAAgECWFRvIGJlIGFibGUgdG8gcGFydGljaXBhdGUgaW4gUHVzaGluZyBmb3IgdGhlIHJld2FyZCB5b3UgbmVlZCB0byBTdGFrZSBBU0lNSXMgaW4gdGhlIGRBcHAJAAIBAjVZb3UgaGF2ZSB0byB3YWl0IDEwbWluIGJlZm9yZSB5b3UgY2FuIG1ha2UgYSBuZXcgUHVzaAkAAgEJAKwCAgI6WW91ciBQdXNoIGRvdCBub3QgY29tcGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6IAJdMS4gUG9zaXRpdmUgVmFsdWUgZm9yIFB1c2ggaW4gVHJvaWthbiBUb2tlCiAyLiBNdXN0IFN0YWtlZCBBU0lNSSBUb2tlbiBmb3IgYSBtaW5pbXVtIG9mIHdlZWsgCQACAQkArAICCQCsAgICdkNhbiBkZXBvc2l0IG9ubHkgcG9zaXRpdmUgYW1vdW50cyBvZiBUcm9pa2FuIFRva2VuLCBvciBDaGVjayB5b3VyIFdhbGxldCBiYWxhbmNlIGluIFRyb2lrYSwgeW91IHNob3VsZCBoYXZlIG1vcmUgdGhhbiAJAKQDAQUQSGlnaGVzdFB1c2hWYWx1ZQIIIHRvIHB1c2gJAAIBAqQBWW91IGRvIG5vdCBoYXZlIGVub3VnaCBUcm9pa2FuIFRva2VucyBpbiB5b3VyIFdhbGxldCBCYWxhbmNlLCBQbGVhc2UgSGFydmVzdCBpZiB5b3UgaGF2ZSBlYXJuZWQgVHJvaWthbiB3YWxsZXQgb3IgdHJhbnNmZXIgdG8geW91ciB3YWxsZXQgbmVjZXNzYXJ5IFRyb2lrYW4gYW1vdW50ICEBaQEFU3Rha2UABAhXYWl0VGltZQkAaAIAoAsAAQQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAMDCQBmAggFA3BtdAZhbW91bnQAAAkAAAIIBQNwbXQHYXNzZXRJZAULU3Rha2VkVG9rZW4HBB9Hb3Zlcm5Ub2tlblNtYXJ0Q29udHJhY3RCYWxhbmNlCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuBAdVc2VyQVBZCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIEX0FQWQQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQSVXNlclN0YWtlZFRva2VuS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIIX1N0YWtpbmcEElVzZXJHb3Zlcm5Ub2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCV9FYXJuaW5ncwQSVXNlckxhc3RTdGFrZUJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1VzZXJMYXN0U3Rha2VCbG9jawQYVXNlclN0YWtlVHJhbnNhY3Rpb25zS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1N0YWtlZFRyYW5zYWN0aW9ucwQNQWRkcmVzc0hlaWdodAkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCDF9Qcml6ZUhlaWdodAQQVXNlcldlZWtFYXJuaW5ncwkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCDF9XZWVrRWFybmluZwQVVXNlclN0YWtlVHJhbnNhY3Rpb25zBAckbWF0Y2gwCQCaCAIFBHRoaXMFGFVzZXJTdGFrZVRyYW5zYWN0aW9uc0tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQMTWF4RGVwb3NpdGVyBAckbWF0Y2gwCQCdCAIFBHRoaXMCDE1heERlcG9zaXRlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQPTWF4RGVwb3NpdEJsb2NrBAckbWF0Y2gwCQCaCAIFBHRoaXMCD01heERlcG9zaXRCbG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQKTWF4RGVwb3NpdAQHJG1hdGNoMAkAmggCBQR0aGlzAgpNYXhEZXBvc2l0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBFNYXhEZXBvc2l0ZXJWYWx1ZQMJAGYCCAUDcG10BmFtb3VudAUKTWF4RGVwb3NpdAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBQxNYXhEZXBvc2l0ZXIED01heERlcG9zaXRWYWx1ZQMJAGYCCAUDcG10BmFtb3VudAUKTWF4RGVwb3NpdAgFA3BtdAZhbW91bnQFCk1heERlcG9zaXQEFE1heERlcG9zaXRCbG9ja1ZhbHVlAwkAZgIIBQNwbXQGYW1vdW50BQpNYXhEZXBvc2l0BQZoZWlnaHQFD01heERlcG9zaXRCbG9jawQNVXNlclB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQhVc2VyUHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckxhc3RTdGFrZUJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBpVc2VyTGFzdFN0YWtlQmxvY2tOZXdWYWx1ZQMJAAACBRdVc2VyTGFzdFN0YWtlQmxvY2tWYWx1ZQAABQZoZWlnaHQFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBBhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAGQCBRVVc2VyU3Rha2VUcmFuc2FjdGlvbnMAAQQYY3VycmVudEFtb3VudFN0YWtlZFRva2VuBAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJTdGFrZWRUb2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQUbmV3QW1vdW50U3Rha2VkVG9rZW4JAGQCBRhjdXJyZW50QW1vdW50U3Rha2VkVG9rZW4IBQNwbXQGYW1vdW50BBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSU3Rha2VCYWxhbmNlQW1vdW50CQBkAgUMU3Rha2VCYWxhbmNlCAUDcG10BmFtb3VudAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVVXNlcldlZWtFYXJuaW5nc1ZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMFEFVzZXJXZWVrRWFybmluZ3MDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyR292ZXJuVG9rZW5LZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQSGlnaGVzdFB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAgtIaWdoZXN0UHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSSGlnaGVzdFB1c2hBZGRyZXNzBAckbWF0Y2gwCQCdCAIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHAgAFEkhpZ2hlc3RQdXNoQWRkcmVzcwQTUHJpemVIZWlnaHRWYWx1ZU5ldwMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcFBmhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQMJAGYCAIDC1y8FH0dvdmVyblRva2VuU21hcnRDb250cmFjdEJhbGFuY2UJAAIBAj5ObyBlbm91Z2ggR292ZXJuVG9rZW4gSW4gQ29udHJhY3QsIFBsZWFzZSBkZXBvc2l0IEdvdmVyblRva2VucwQGUmV3YXJkAwkAAAIFDFN0YWtlQmFsYW5jZQAAAJBOAwkAZgIFGE5ld1VzZXJTdGFrZVRyYW5zYWN0aW9ucwAKCQBoAgkAaAIAkE4FGE5ld1VzZXJTdGFrZVRyYW5zYWN0aW9ucwkAZAIAAQkAaQIFFG5ld0Ftb3VudFN0YWtlZFRva2VuBQxTdGFrZUJhbGFuY2UJAGgCAJBOCQBkAgABCQBpAgUUbmV3QW1vdW50U3Rha2VkVG9rZW4FDFN0YWtlQmFsYW5jZQQMVXNlckFQWVZhbHVlAwkAZgIFGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgAACQBpAgkAaAIAZAUGUmV3YXJkBRhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4AAAQUbmV3QW1vdW50R292ZXJuVG9rZW4JAGQCBRhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4FBlJld2FyZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSVXNlckdvdmVyblRva2VuS2V5BRRuZXdBbW91bnRHb3Zlcm5Ub2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSVXNlclN0YWtlZFRva2VuS2V5BRRuZXdBbW91bnRTdGFrZWRUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUYVXNlclN0YWtlVHJhbnNhY3Rpb25zS2V5BRhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAMwIAgkBDEludGVnZXJFbnRyeQICDFN0YWtlQmFsYW5jZQUSU3Rha2VCYWxhbmNlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUTUHJpemVIZWlnaHRWYWx1ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUHVXNlckFQWQUMVXNlckFQWVZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyTGFzdFN0YWtlQmxvY2sFGlVzZXJMYXN0U3Rha2VCbG9ja05ld1ZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhVc2VyUHVzaAUNVXNlclB1c2hWYWx1ZQkAzAgCCQELU3RyaW5nRW50cnkCAgxNYXhEZXBvc2l0ZXIFEU1heERlcG9zaXRlclZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgpNYXhEZXBvc2l0BQ9NYXhEZXBvc2l0VmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQICD01heERlcG9zaXRCbG9jawUUTWF4RGVwb3NpdEJsb2NrVmFsdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzBRdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUQVXNlcldlZWtFYXJuaW5ncwUVVXNlcldlZWtFYXJuaW5nc1ZhbHVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGUmV3YXJkBQtHb3Zlcm5Ub2tlbgUDbmlsCQACAQIbQ2FuIGRlcG9zaXQgb25seSBTdGFrZVRva2VuAWkBE1dpdGhkcmF3U3Rha2VkRnVuZHMBBmFtb3VudAQIV2FpdFRpbWUJAGgCAKALAAEEElVzZXJMYXN0U3Rha2VCbG9jawkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCE19Vc2VyTGFzdFN0YWtlQmxvY2sEElVzZXJTdGFrZWRUb2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCF9TdGFraW5nBBJVc2VyR292ZXJuVG9rZW5LZXkJAKwCAgkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCAV8JANgEAQULR292ZXJuVG9rZW4EGkNvbnRyYWN0V2FsbGV0U3Rha2VCYWxhbmNlCQDwBwIFBHRoaXMFC1N0YWtlZFRva2VuBBdVc2VyTGFzdFN0YWtlQmxvY2tWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyTGFzdFN0YWtlQmxvY2sDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEDFN0YWtlQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzAgxTdGFrZUJhbGFuY2UDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEC1ByaXplQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMCB0Z1bmRCb3gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFUhlaWdodFRyYW5zYWN0RnVuZEJveAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLQWN0dWFsRGVsYXkEByRtYXRjaDAJAJoIAgUEdGhpcwIFRGVsYXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQSSGlnaGVzdFB1c2hBZGRyZXNzBAckbWF0Y2gwCQCdCAIFBHRoaXMCEkhpZ2hlc3RQdXNoQWRkcmVzcwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAQXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHAgAFEkhpZ2hlc3RQdXNoQWRkcmVzcwQTUHJpemVIZWlnaHRWYWx1ZU5ldwMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcFBmhlaWdodAUQUHJpemVIZWlnaHRWYWx1ZQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJTdGFrZWRUb2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQJbmV3QW1vdW50CQBlAgUNY3VycmVudEFtb3VudAUGYW1vdW50BBJTdGFrZUJhbGFuY2VBbW91bnQJAGUCBQxTdGFrZUJhbGFuY2UFBmFtb3VudAQaVXNlckxhc3RTdGFrZUJsb2NrTmV3VmFsdWUDCQAAAgUSU3Rha2VCYWxhbmNlQW1vdW50AAAAAAUXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUDCQBmAgAABQZhbW91bnQJAAIBAh5DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQDCQBmAgAABQluZXdBbW91bnQJAAIBCQCsAgICQVVzZXIgY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBkZXBvc2l0ZWQgZnVuZHMsIFlvdXIgZGVwb3NpdCBpczogCQCkAwEJAGkCBQ1jdXJyZW50QW1vdW50AIDC1y8DCQBmAgCAwtcvCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuCQACAQkArAICAh9Ob3QgZW5vdWdoIFRyb2lrYSBJbiBDb250cmFjdDogCQCkAwEJAGkCCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuAIDC1y8JAMwIAgkBDEludGVnZXJFbnRyeQIFElVzZXJHb3Zlcm5Ub2tlbktleQCAwtcvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyU3Rha2VkVG9rZW5LZXkFCW5ld0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgIMU3Rha2VCYWxhbmNlBRJTdGFrZUJhbGFuY2VBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRNQcml6ZUhlaWdodFZhbHVlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyTGFzdFN0YWtlQmxvY2sFGlVzZXJMYXN0U3Rha2VCbG9ja05ld1ZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQICEkhpZ2hlc3RQdXNoQWRkcmVzcwUXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAIDC1y8FC0dvdmVyblRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQtTdGFrZWRUb2tlbgUDbmlsAWkBFldpdGhkcmF3QmlnU3Rha2VSZXdhcmQABAhXYWl0VGltZQkAaAIAoAsAAQQYTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIZX0xhc3RCaWdTdGFrZXJSZXdhcmRCbG9jawQPQmlnU3Rha2VyUmV3YXJkCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIKX0JpZ1N0YWtlcgQSVXNlckdvdmVyblRva2VuS2V5CQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIJX0Vhcm5pbmdzBBJMaW1pV2l0aGRyYXdSZXdhcmQACgQVVXNlckdvdmVyblRva2VuQW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFElVzZXJHb3Zlcm5Ub2tlbktleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQdTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUYTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBlCaWdTdGFrZXJSZXdhcmRUb3RhbFZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMCFEJpZ1N0YWtlclJld2FyZFRvdGFsAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtQcml6ZUFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzAgdGdW5kQm94AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gEByRtYXRjaDAJAJoIAgUEdGhpcwILUHJpemVIZWlnaHQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEFByaXplSGVpZ2h0VmFsdWUDAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQAAAgULUHJpemVBbW91bnQAAAcAAAMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBQZoZWlnaHQDAwkBAiE9AgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAQIhPQIFC1ByaXplQW1vdW50AAAHBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAQLQWN0dWFsRGVsYXkEByRtYXRjaDAJAJoIAgUEdGhpcwIFRGVsYXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEEhpZ2hlc3RQdXNoVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwILSGlnaGVzdFB1c2gDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEkhpZ2hlc3RQdXNoQWRkcmVzcwQHJG1hdGNoMAkAnQgCBQR0aGlzAhJIaWdoZXN0UHVzaEFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgAEF0hpZ2hlc3RQdXNoQWRkcmVzc1ZhbHVlAwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwIABRJIaWdoZXN0UHVzaEFkZHJlc3MEE1ByaXplSGVpZ2h0VmFsdWVOZXcDAwkAZgIFBmhlaWdodAkAZAIJAGQCBRBQcml6ZUhlaWdodFZhbHVlBQtBY3R1YWxEZWxheQUIV2FpdFRpbWUJAGYCBRBIaWdoZXN0UHVzaFZhbHVlAAAHBQZoZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQGYW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFD0JpZ1N0YWtlclJld2FyZAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSU3Rha2VCYWxhbmNlQW1vdW50CQBlAgUZQmlnU3Rha2VyUmV3YXJkVG90YWxWYWx1ZQUGYW1vdW50BBJCaWdTdGFrZXJSZXdhcmRUYXgDCQBmAgAACQBoAgkAaQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudADoBwkAZQIA6AcJAGkCCQBoAgDoBwkAZQIFBmhlaWdodAUdTGFzdEJpZ1N0YWtlclJld2FyZEJsb2NrVmFsdWUJAGgCBRJMaW1pV2l0aGRyYXdSZXdhcmQAoAsJAGgCAOgHAIDC1y8JAGgCCQBpAgUVVXNlckdvdmVyblRva2VuQW1vdW50AOgHCQBlAgDoBwkAaQIJAGgCAOgHCQBlAgUGaGVpZ2h0BR1MYXN0QmlnU3Rha2VyUmV3YXJkQmxvY2tWYWx1ZQkAaAIFEkxpbWlXaXRoZHJhd1Jld2FyZACgCwMJAGYCAAAFBmFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICH0Nhbid0IHdpdGhkcmF3IG5lZ2F0aXZlIGFtb3VudCAJAKQDAQkAZQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudAkAaAIA6AcAgMLXLwIFIC4uLiAJAKQDAQUGYW1vdW50AwMDCQBmAgkAaAIA6AcAgMLXLwUVVXNlckdvdmVyblRva2VuQW1vdW50BgkAZgIAAQUGYW1vdW50BgkAZgIAAAkAZQIFFVVzZXJHb3Zlcm5Ub2tlbkFtb3VudAUSQmlnU3Rha2VyUmV3YXJkVGF4CQACAQkArAICAlxObyBBU0lNSSByZXdhcmQgYXZhaWxhYmxlLCBvciBOb3QgZW5vdWdoIEVhcm5lZCBUcm9pa2FuIFRva2VucyB0byBkbyB0cmFuc2FjdGlvbiwgeW91IGhhdmU6IAkApAMBCQBpAgUVVXNlckdvdmVyblRva2VuQW1vdW50AIDC1y8DCQBmAgUSU3Rha2VCYWxhbmNlQW1vdW50AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFD0JpZ1N0YWtlclJld2FyZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRCaWdTdGFrZXJSZXdhcmRUb3RhbAUSU3Rha2VCYWxhbmNlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJVc2VyR292ZXJuVG9rZW5LZXkJAGUCBRVVc2VyR292ZXJuVG9rZW5BbW91bnQFEkJpZ1N0YWtlclJld2FyZFRheAkAzAgCCQEMSW50ZWdlckVudHJ5AgILUHJpemVIZWlnaHQFEFByaXplSGVpZ2h0VmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFGExhc3RCaWdTdGFrZXJSZXdhcmRCbG9jawUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQICEkhpZ2hlc3RQdXNoQWRkcmVzcwUXSGlnaGVzdFB1c2hBZGRyZXNzVmFsdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQFC1N0YWtlZFRva2VuBQNuaWwJAAIBAlJCYWxhbmNlIEVycm9yLCBUb3RhbCBCaWcgU3Rha2VycyBjYW5ub3QgYmUgbmVnYXRpdmUsIE9wZXJhdGlvbiB3b24ndCBiZSBhdXRob3JpemVkAWkBE0hhcnZlc3RHb3Zlcm5Ub2lrZW4BBmFtb3VudAQaQ29udHJhY3RXYWxsZXRTdGFrZUJhbGFuY2UJAPAHAgUEdGhpcwULU3Rha2VkVG9rZW4EElVzZXJHb3Zlcm5Ub2tlbktleQkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCCV9FYXJuaW5ncwQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVSGVpZ2h0VHJhbnNhY3RGdW5kQm94BAckbWF0Y2gwCQCaCAIFBHRoaXMCC1ByaXplSGVpZ2h0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBBQcml6ZUhlaWdodFZhbHVlAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkAAAIFC1ByaXplQW1vdW50AAAHAAADAwkAAAIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQECIT0CBQtQcml6ZUFtb3VudAAABwUGaGVpZ2h0AwMJAQIhPQIFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAACQECIT0CBQtQcml6ZUFtb3VudAAABwUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQNY3VycmVudEFtb3VudAQHJG1hdGNoMAkAmggCBQR0aGlzBRJVc2VyR292ZXJuVG9rZW5LZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECW5ld0Ftb3VudAkAZQIFDWN1cnJlbnRBbW91bnQFBmFtb3VudAMJAGYCAAAFBmFtb3VudAkAAgECHkNhbid0IHdpdGhkcmF3IG5lZ2F0aXZlIGFtb3VudAMJAGYCAAAFCW5ld0Ftb3VudAkAAgEJAKwCAgJBVXNlciBjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGRlcG9zaXRlZCBmdW5kcywgWW91ciBkZXBvc2l0IGlzOiAJAKQDAQkAaQIFDWN1cnJlbnRBbW91bnQAgMLXLwkAzAgCCQEMSW50ZWdlckVudHJ5AgUSVXNlckdvdmVyblRva2VuS2V5BQluZXdBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0BRBQcml6ZUhlaWdodFZhbHVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQtHb3Zlcm5Ub2tlbgUDbmlsAWkBCmRlbGF5cHJpemUABAlEZWxheURheXMJAGgCAKALAAEECFdhaXRUaW1lCQBoAgCgCwABBBJVc2VyR292ZXJuVG9rZW5LZXkJAKwCAgkArAICCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMCAV8JANgEAQULR292ZXJuVG9rZW4EGFVzZXJXYWxsZXRTR292ZXJuQmFsYW5jZQkA8AcCCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMFC0dvdmVyblRva2VuBBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVSGVpZ2h0VHJhbnNhY3RGdW5kQm94BAckbWF0Y2gwCQCaCAIFBHRoaXMCC1ByaXplSGVpZ2h0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQUHJpemVIZWlnaHRWYWx1ZQMDCQAAAgUVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAJAAACBQtQcml6ZUFtb3VudAAABwAAAwMJAAACBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFBmhlaWdodAMDCQECIT0CBRVIZWlnaHRUcmFuc2FjdEZ1bmRCb3gAAAkBAiE9AgULUHJpemVBbW91bnQAAAcFFUhlaWdodFRyYW5zYWN0RnVuZEJveAAABBBIaWdoZXN0UHVzaFZhbHVlBAckbWF0Y2gwCQCaCAIFBHRoaXMCC0hpZ2hlc3RQdXNoAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBJIaWdoZXN0UHVzaEFkZHJlc3MEByRtYXRjaDAJAJ0IAgUEdGhpcwISSGlnaGVzdFB1c2hBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIABBdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQMDCQBmAgUGaGVpZ2h0CQBkAgkAZAIFEFByaXplSGVpZ2h0VmFsdWUFC0FjdHVhbERlbGF5BQhXYWl0VGltZQkAZgIFEEhpZ2hlc3RQdXNoVmFsdWUAAAcCAAUSSGlnaGVzdFB1c2hBZGRyZXNzBBNQcml6ZUhlaWdodFZhbHVlTmV3AwMJAGYCBQZoZWlnaHQJAGQCCQBkAgUQUHJpemVIZWlnaHRWYWx1ZQULQWN0dWFsRGVsYXkFCFdhaXRUaW1lCQBmAgUQSGlnaGVzdFB1c2hWYWx1ZQAABwUGaGVpZ2h0BRBQcml6ZUhlaWdodFZhbHVlBA9BY3R1YWxEZWxheUNvc3QEByRtYXRjaDAJAJoIAgUEdGhpcwIJRGVsYXlDb3N0AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAKBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAhxBdHRhY2hlZCBwYXltZW50IGlzIHJlcXVpcmVkBA1EZXZCb3hCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCBkRldkJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMDCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQAAAggFA3BtdAdhc3NldElkBQtHb3Zlcm5Ub2tlbgcDCQBmAgULUHJpemVBbW91bnQAAAQVVXNlckdvdmVyblRva2VuQW1vdW50CAUDcG10BmFtb3VudAQMRGV2Qm94QW1vdW50CQBkAgUNRGV2Qm94QmFsYW5jZQkAaQIJAGgCCAUDcG10BmFtb3VudAAFAOgHBAxOZXdEZWxheUNvc3QDCQAAAgUPQWN0dWFsRGVsYXlDb3N0AAAAgJTr3AMJAGgCAAIFD0FjdHVhbERlbGF5Q29zdAMJAGcCBRVVc2VyR292ZXJuVG9rZW5BbW91bnQFDE5ld0RlbGF5Q29zdAQITmV3RGVsYXkJAGQCBQtBY3R1YWxEZWxheQUJRGVsYXlEYXlzCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVEZWxheQUITmV3RGVsYXkJAMwIAgkBDEludGVnZXJFbnRyeQICCURlbGF5Q29zdAUMTmV3RGVsYXlDb3N0CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgtQcml6ZUhlaWdodAUTUHJpemVIZWlnaHRWYWx1ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgIGRGV2Qm94BQxEZXZCb3hBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzBRdIaWdoZXN0UHVzaEFkZHJlc3NWYWx1ZQUDbmlsCQACAQkArAICCQCsAgICSVRvIGRlbGF5IHRoZSByZWxlYXNlIG9mIHRoZSByZXdhcmQgT05FIERBWSBsYXRlciB0aGFuIGV4cGVjdGVkLCB5b3UgbmVlZCAJAKQDAQUMTmV3RGVsYXlDb3N0AgdUUk9JS0FzCQACAQJeWW91IGNhbm5vdCBkZWxheSB0aGUgcmV3YXJkIGJlZm9yZSByZXdhcmQgaXMgcmVjZWl2ZWQhIFBsZWFzZSB3YWl0IHVudGlsIGEgcmV3YXJkIGlzIGF2YWlsYWJsZQkAAgECKUNhbiBVc2Ugb25seSBUcm9pa2EgVG9rZW4gdG8gRGVsYXkgUmV3YXJkAWkBCkNsYWltUHJpemUABBJVc2VyU3Rha2VkVG9rZW5LZXkJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAghfU3Rha2luZwQIVXNlclB1c2gJAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfUHVzaAQSVXNlckxhc3RTdGFrZUJsb2NrCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwITX1VzZXJMYXN0U3Rha2VCbG9jawQNbWluU3Rha2VCbG9jawkAaAIAoAsABwQGbWlucmVmAAMEF0NvbnRyYWN0R292VG9rZW5CYWxhbmNlCQDwBwIFBHRoaXMFC0dvdmVyblRva2VuBBpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQkA8AcCBQR0aGlzBQtTdGFrZWRUb2tlbgQMU3Rha2VCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMCDFN0YWtlQmFsYW5jZQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVBbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwIHRnVuZEJveAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQNVXNlclB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQhVc2VyUHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQXVXNlckxhc3RTdGFrZUJsb2NrVmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlckxhc3RTdGFrZUJsb2NrAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVVc2VyU3Rha2VkVG9rZW5BbW91bnQEByRtYXRjaDAJAJoIAgUEdGhpcwUSVXNlclN0YWtlZFRva2VuS2V5AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAtBY3R1YWxEZWxheQQHJG1hdGNoMAkAmggCBQR0aGlzAgVEZWxheQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLUHJpemVXaW5uZXIEByRtYXRjaDAJAJ0IAgUEdGhpcwISSGlnaGVzdFB1c2hBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIABAtQcml6ZUhlaWdodAQHJG1hdGNoMAkAmggCBQR0aGlzAgtQcml6ZUhlaWdodAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQSGlnaGVzdFB1c2hWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAgtIaWdoZXN0UHVzaAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQLVXNlclJlZnNOdW0JAKwCAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAgVfcmVmcwQQVXNlclJlZnNOdW1WYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzBQtVc2VyUmVmc051bQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMDCQAAAgULUHJpemVBbW91bnQAAAYJAGYCAIDIr6AlBRdDb250cmFjdEdvdlRva2VuQmFsYW5jZQkAAgECSU5vIHByaXplIHRvIENsYWltIG9yIE5vdCBlbm91Z2ggR292ZXJuIFRva2VuIGVuIENvbnRyYWN0IChNaW4gMTAwIFRyb2lrYSkDCQECIT0CCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFC1ByaXplV2lubmVyCQACAQI2WW91IGFyZSBub3QgdGhlIHdpbm5lciBoZW5jZSBjYW5ub3QgY2xhaW0gdGhlIHJld2FyZCAgAwMJAGYCAIDC1y8FFVVzZXJTdGFrZWRUb2tlbkFtb3VudAkAZgIFDW1pblN0YWtlQmxvY2sFF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBwkAAgECLllvdSBoYXZlIHRvIFN0YWtlIEFTSU1JIFRva2VuIHRvIGNsYWltIHJld2FyZCADAwkAZgIFBmhlaWdodAkAZAIFC1ByaXplSGVpZ2h0BQtBY3R1YWxEZWxheQkAZwIFDVVzZXJQdXNoVmFsdWUFEEhpZ2hlc3RQdXNoVmFsdWUHAwkAZwIFEFVzZXJSZWZzTnVtVmFsdWUFBm1pbnJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgULUHJpemVXaW5uZXIFC1ByaXplQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAgdGdW5kQm94AAAJAMwIAgkBDEludGVnZXJFbnRyeQICC0hpZ2hlc3RQdXNoAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFCFVzZXJQdXNoAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgISSGlnaGVzdFB1c2hBZGRyZXNzAgAJAMwIAgkBDEludGVnZXJFbnRyeQICC1ByaXplSGVpZ2h0AAAJAMwIAgkBDEludGVnZXJFbnRyeQICBURlbGF5AAAJAMwIAgkBDEludGVnZXJFbnRyeQICCURlbGF5Q29zdAAACQDMCAIJAQtTdHJpbmdFbnRyeQICCkxhc3RXaW5uZXIFC1ByaXplV2lubmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAglMYXN0UHJpemUFC1ByaXplQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULUHJpemVBbW91bnQFC1N0YWtlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgCAlOvcAwULR292ZXJuVG9rZW4FA25pbAkAAgEJAKwCAgkArAICAhJZb3UgaGF2ZSB0byBoYXZlICAJAKQDAQUGbWlucmVmAkcgIHJlZmVycmFscyBhbHJlYWR5IHN0YWtpbmcgZm9yIGEgbWluaW11bSBvZiAxMCBkYXlzIHRvIENsYWltIHRoZSBwcml6ZQkAAgECYVlvdSBoYXZlIHRvIGJlIHRoZSB1c2VyIHdpdGggdGhlIGhpZ2hlc3QgUHVzaCBhbmQgd2FpdCB0aWxsIGNvdW50b3duIGlzIGZpbmlzaGVkLCB0byBjbGFpbSBSZXdhcmQBaQEJQWRkbWVudG9yAQZNZW50b3IEEVVzZXJNZW50b3JBZGRyZXNzCQCsAgIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwIHX01lbnRvcgMJAQIhPQIFBk1lbnRvcgIACQDMCAIJAQtTdHJpbmdFbnRyeQIFEVVzZXJNZW50b3JBZGRyZXNzBQZNZW50b3IFA25pbAkAAgECIE1lbnRvcidzIEFkZHJlc3MgY2Fubm90IGJlIGVtcHR5AWkBD0dldExpa2VzUGFja2FnZQINVHdpdHRlclVzZXJJZAdUd2l0dElkBBtMaWtlUGFja2FnZVRST0lLQU5Db3N0VmFsdWUEByRtYXRjaDAJAJoIAgUEdGhpcwIWTGlrZVBhY2thZ2VUUk9JS0FOQ29zdAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQZTGlrZVBhY2thZ2VBU0lNSUNvc3RWYWx1ZQQHJG1hdGNoMAkAmggCBQR0aGlzAhRMaWtlUGFja2FnZUFTSU1JQ29zdAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAgkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAMDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQtTdGFrZWRUb2tlbgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAULR292ZXJuVG9rZW4HAwkAZwIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRlMaWtlUGFja2FnZUFTSU1JQ29zdFZhbHVlAwkAZwIICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BRtMaWtlUGFja2FnZVRST0lLQU5Db3N0VmFsdWUECkluZmx1ZW5jZXIJAKwCAgkArAICCQCkAwEFDVR3aXR0ZXJVc2VySWQCDF9Ud2l0dDJMaWtlXwkApAMBBQdUd2l0dElkBBFJbmZsdWVuY2VyQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzBQpJbmZsdWVuY2VyAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAwkAAAIFEUluZmx1ZW5jZXJCYWxhbmNlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCkAwEFDVR3aXR0ZXJVc2VySWQCDF9Ud2l0dDJMaWtlXwkApAMBBQdUd2l0dElkCQBpAgkAaAIAXwUUTGlrZVBhY2thZ2VBU0lNSUNvc3QAZAkAzAgCCQEMSW50ZWdlckVudHJ5AgIQTGlrZVR3aXR0c0RldkJveAkAaQIJAGgCAAUFFExpa2VQYWNrYWdlQVNJTUlDb3N0AGQFA25pbAkAAgECZkNhbm5vdCBhY3F1aXJlIGEgbmV3IHBhY2thZ2UsIHRoZSBwcmlvciBsaWtlIHBhY2thZ2UgaGFzIHRvIGJlIGRyYWluZWQgdG8gYmUgYWJsZSB0byBhY3F1aXJlIGEgbmV3IG9uZQkAAgEJAKwCAgIaVFJPSUtBTiBBbW91bnQgc2hvdWxkIGJlIDoJAKQDAQkAaQIFFExpa2VQYWNrYWdlQVNJTUlDb3N0AIDC1y8JAAIBCQCsAgICGEFTSU1JIEFtb3VudCBzaG91bGQgYmUgOgkApAMBCQBpAgUWTGlrZVBhY2thZ2VUUk9JS0FOQ29zdACAwtcvCQACAQIwUGF5bWVudHMgc2hvdWxkIGJlIGJvdGggQVNJTUkgYW5kIFRST0lLQU4gdG9rZW5zAWkBF0dldE15TGlrZWRUd2l0dHNSZXdhcmRzAQZVc2VySWQEGFVzZXJFYXJuZWRMaWtlVHdpdHRBU0lNSQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKQDAQUGVXNlcklkAgxfTGlrZV9BbW91bnQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEHFVzZXJFYXJuZWRkQXBwUlRUd2l0dFRST0lLQU4EByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCkAwEFBlVzZXJJZAIWX1Ryb2lrYW5kQXBwX1JUX0Ftb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAMDCQBnAgUYVXNlckVhcm5lZExpa2VUd2l0dEFTSU1JCQBoAgABAIDC1y8JAGcCBRxVc2VyRWFybmVkZEFwcFJUVHdpdHRUUk9JS0FOCQBoAgABAIDC1y8HCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQUGVXNlcklkAhZfVHJvaWthbmRBcHBfUlRfQW1vdW50AAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQZVc2VySWQCDF9MaWtlX0Ftb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUYVXNlckVhcm5lZExpa2VUd2l0dEFTSU1JBQtTdGFrZWRUb2tlbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFHFVzZXJFYXJuZWRkQXBwUlRUd2l0dFRST0lLQU4FC0dvdmVyblRva2VuBQNuaWwJAAIBAjtNaW5pbXVtIGVhcm5pbmdzIHRvIHdpdGhkcmF3IGFyZTogMTAwIEFTSU1JIGFuZCA1MCBUcm9pa2FucwFpARVMaW5rVHdpdHRlckFjYzJXYWxsZXQBDVR3aXR0ZXJVc2VySWQEE1R3aXR0ZXJMaW5rZWRXYWxsZXQEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICBQ1Ud2l0dGVyVXNlcklkAgdfV2FsbGV0AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQIETm9uZQMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFE1R3aXR0ZXJMaW5rZWRXYWxsZXQJAAIBAjpZb3UgYWxyZWFkeSBoYXZlIHlvdXIgd2FsbGV0IGxpbmtlZCB0byB0aGUgVHdpdHRlciBhY2NvdW50AwMJAQIhPQIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwUTVHdpdHRlckxpbmtlZFdhbGxldAkBAiE9AgUTVHdpdHRlckxpbmtlZFdhbGxldAIETm9uZQcJAAIBAklUaGUgd2FsbGV0IHlvdSBhcmUgdXNpbmcgaXMgbm90IHRoZSBsaW5rZWQgV2FsbGV0IHRvIHRoaXMgVHdpdHRlciBhY2NvdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUNVHdpdHRlclVzZXJJZAIHX1dhbGxldAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwAK7gZhA==", "height": 2143763, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9MgEXhPo6fg71yoQqR3YgQWBiM3ZUGpUCbQAmRgd7rZe Next: 7db296TdSDtxQ1aGsiUKGe6d1ajzxETUwyGbtqQDs644 Diff:
OldNewDifferences
3232 @Callable(i)
3333 func WithdrawWeeklyEarning () = {
3434 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
35- let MaxDepositer = getStringValue(this, "MaxDepositer")
35+ let MaxDepositer = match getString(this, "MaxDepositer") {
36+ case a: String =>
37+ a
38+ case _ =>
39+ ""
40+ }
3641 let UserWeeklyEarnings = (toBase58String(i.caller.bytes) + "_WeekEarning")
3742 let StakeBalance = match getInteger(this, "StakeBalance") {
3843 case a: Int =>
267272 case _ =>
268273 0
269274 }
270- let MaxDepositer = getStringValue(this, "MaxDepositer")
275+ let MaxDepositer = match getString(this, "MaxDepositer") {
276+ case a: String =>
277+ a
278+ case _ =>
279+ ""
280+ }
271281 let MaxDepositBlock = match getInteger(this, "MaxDepositBlock") {
272282 case a: Int =>
273283 a
369379 case _ =>
370380 0
371381 }
372- let HighestPushAddress = getStringValue(this, "HighestPushAddress")
382+ let HighestPushAddress = match getString(this, "HighestPushAddress") {
383+ case a: String =>
384+ a
385+ case _ =>
386+ ""
387+ }
373388 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
374389 then (HighestPushValue > 0)
375390 else false)
557572 case _ =>
558573 0
559574 }
560- let HighestPushAddress = getStringValue(this, "HighestPushAddress")
575+ let HighestPushAddress = match getString(this, "HighestPushAddress") {
576+ case a: String =>
577+ a
578+ case _ =>
579+ ""
580+ }
561581 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
562582 then (HighestPushValue > 0)
563583 else false)
696716 case _ =>
697717 0
698718 }
699- let HighestPushAddress = getStringValue(this, "HighestPushAddress")
719+ let HighestPushAddress = match getString(this, "HighestPushAddress") {
720+ case a: String =>
721+ a
722+ case _ =>
723+ ""
724+ }
700725 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
701726 then (HighestPushValue > 0)
702727 else false)
790815 case _ =>
791816 0
792817 }
793- let PrizeWinner = getStringValue(this, "HighestPushAddress")
818+ let PrizeWinner = match getString(this, "HighestPushAddress") {
819+ case a: String =>
820+ a
821+ case _ =>
822+ ""
823+ }
794824 let PrizeHeight = match getInteger(this, "PrizeHeight") {
795825 case a: Int =>
796826 a
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let StakedToken = base58'Hoej8L1ezqQY4Miex4Z4J7uJ33LCdcubV3DsubGHEqWP'
55
66 let GovernToken = base58'6ZPMzZseuYoMP4ByozJpVxbugXBobwJYF22zVjW5JjN'
77
88 let LikePackageASIMICost = (1 * 100000000)
99
1010 let LikePackageTROIKANCost = (5 * 100000000)
1111
1212 @Callable(i)
1313 func DevWithdraw () = {
1414 let currentKey = toBase58String(i.caller.bytes)
1515 if ((currentKey == "3P74buHt98BnojFcaREJZtb98KDyUmZGemJ"))
1616 then {
1717 let DevBoxAmount = match getInteger(this, "DevBox") {
1818 case a: Int =>
1919 a
2020 case _ =>
2121 0
2222 }
2323 if ((0 > DevBoxAmount))
2424 then throw("Not enough balance")
2525 else [IntegerEntry("DevBox", 0), ScriptTransfer(i.caller, DevBoxAmount, GovernToken)]
2626 }
2727 else throw("You cannot withdraw as your are not the Dev.")
2828 }
2929
3030
3131
3232 @Callable(i)
3333 func WithdrawWeeklyEarning () = {
3434 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
35- let MaxDepositer = getStringValue(this, "MaxDepositer")
35+ let MaxDepositer = match getString(this, "MaxDepositer") {
36+ case a: String =>
37+ a
38+ case _ =>
39+ ""
40+ }
3641 let UserWeeklyEarnings = (toBase58String(i.caller.bytes) + "_WeekEarning")
3742 let StakeBalance = match getInteger(this, "StakeBalance") {
3843 case a: Int =>
3944 a
4045 case _ =>
4146 0
4247 }
4348 let PrizeAmount = match getInteger(this, "FundBox") {
4449 case a: Int =>
4550 a
4651 case _ =>
4752 0
4853 }
4954 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
5055 case a: Int =>
5156 a
5257 case _ =>
5358 0
5459 }
5560 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
5661 then (PrizeAmount == 0)
5762 else false)
5863 then 0
5964 else if (if ((HeightTransactFundBox == 0))
6065 then (PrizeAmount != 0)
6166 else false)
6267 then height
6368 else if (if ((HeightTransactFundBox != 0))
6469 then (PrizeAmount != 0)
6570 else false)
6671 then HeightTransactFundBox
6772 else 0
6873 let currentKey = toBase58String(i.caller.bytes)
6974 let newAmount = match getInteger(this, UserWeeklyEarnings) {
7075 case a: Int =>
7176 a
7277 case _ =>
7378 0
7479 }
7580 if ((0 > newAmount))
7681 then throw("Can't withdraw negative amount")
7782 else if ((0 > newAmount))
7883 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((newAmount / 100000000))))
7984 else [IntegerEntry(UserWeeklyEarnings, 0), IntegerEntry("PrizeHeight", PrizeHeightValue), IntegerEntry("MaxDeposit", 0), ScriptTransfer(i.caller, newAmount, StakedToken)]
8085 }
8186
8287
8388
8489 @Callable(i)
8590 func PushReward () = {
8691 let minPushBlock = 10
8792 let minStakeBlock = (7 * 1440)
8893 let DelayAfterPush = 60
8994 let WaitTime = (1440 * 1)
9095 let minref = 3
9196 let FirstPushTimer = (7 * 1440)
9297 let userWalletGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
9398 let pmt = if ((size(i.payments) == 1))
9499 then i.payments[0]
95100 else throw("Attached payment is required")
96101 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
97102 let UserLastPushOldValue = match getInteger(this, UserPush) {
98103 case a: Int =>
99104 a
100105 case _ =>
101106 0
102107 }
103108 let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
104109 let UserRefsNumValue = match getInteger(this, UserRefsNum) {
105110 case a: Int =>
106111 a
107112 case _ =>
108113 0
109114 }
110115 let HighestPushValue = match getInteger(this, "HighestPush") {
111116 case a: Int =>
112117 a
113118 case _ =>
114119 0
115120 }
116121 if ((userWalletGovernBalance > pmt.amount))
117122 then if (if (((pmt.amount + UserLastPushOldValue) > HighestPushValue))
118123 then (pmt.assetId == GovernToken)
119124 else false)
120125 then {
121126 let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
122127 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
123128 let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
124129 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
125130 let StakeBalance = match getInteger(this, "StakeBalance") {
126131 case a: Int =>
127132 a
128133 case _ =>
129134 0
130135 }
131136 let PrizeAmount = match getInteger(this, "FundBox") {
132137 case a: Int =>
133138 a
134139 case _ =>
135140 0
136141 }
137142 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
138143 case a: Int =>
139144 a
140145 case _ =>
141146 0
142147 }
143148 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
144149 then (PrizeAmount == 0)
145150 else false)
146151 then 0
147152 else if (if ((HeightTransactFundBox == 0))
148153 then (PrizeAmount != 0)
149154 else false)
150155 then height
151156 else if (if ((HeightTransactFundBox != 0))
152157 then (PrizeAmount != 0)
153158 else false)
154159 then HeightTransactFundBox
155160 else 0
156161 let ActualDelay = match getInteger(this, "Delay") {
157162 case a: Int =>
158163 a
159164 case _ =>
160165 0
161166 }
162167 let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
163168 case a: Int =>
164169 a
165170 case _ =>
166171 0
167172 }
168173 let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
169174 case a: Int =>
170175 a
171176 case _ =>
172177 0
173178 }
174179 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
175180 case a: Int =>
176181 a
177182 case _ =>
178183 0
179184 }
180185 let UserStakeValue = match getInteger(this, UserStake) {
181186 case a: Int =>
182187 a
183188 case _ =>
184189 0
185190 }
186191 let DevBoxBalance = match getInteger(this, "DevBox") {
187192 case a: Int =>
188193 a
189194 case _ =>
190195 0
191196 }
192197 let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
193198 let UserPushvalue = (pmt.amount + UserLastPushOldValue)
194199 let NewDelay = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
195200 then (HighestPushValue > 0)
196201 else false)
197202 then FirstPushTimer
198203 else (ActualDelay + DelayAfterPush)
199204 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + NewDelay) + WaitTime)))
200205 then (HighestPushValue > 0)
201206 else false)
202207 then ""
203208 else HighestPushAddress
204209 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + NewDelay) + WaitTime)))
205210 then (HighestPushValue > 0)
206211 else false)
207212 then height
208213 else PrizeHeightValue
209214 if (if ((UserPushvalue > 0))
210215 then ((height - UserLastStakeBlockValue) > minStakeBlock)
211216 else false)
212217 then if (((height - UserLastPushBlockValue) > minPushBlock))
213218 then if ((UserStakeValue > 0))
214219 then if ((UserPushvalue > HighestPushValue))
215220 then if ((PrizeAmount > 0))
216221 then if (if (if (if (((PrizeHeightValueNew + NewDelay) >= height))
217222 then true
218223 else (height >= ((PrizeHeightValueNew + NewDelay) + WaitTime)))
219224 then (HighestPushValue > 0)
220225 else false)
221226 then true
222227 else (HighestPushValue == 0))
223228 then if ((UserRefsNumValue >= minref))
224229 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)]
225230 else throw((("You have to have " + toString(minref)) + " referrals already staking for a minimum of 10 days, to push"))
226231 else {
227232 let txt = if ((HighestPushValue > 0))
228233 then "You cannot Push after rewarding Prize and before One day has passed after award"
229234 else "Unexpected error"
230235 throw(txt)
231236 }
232237 else throw("You cannot push before the reward is unlocked, no reward has been detected yet")
233238 else throw("Your push in troikan token, should be Higher than last Highest Push")
234239 else throw("To be able to participate in Pushing for the reward you need to Stake ASIMIs in the dApp")
235240 else throw("You have to wait 10min before you can make a new Push")
236241 else throw(("Your Push dot not comply one of the following conditions: " + "1. Positive Value for Push in Troikan Toke
237242 2. Must Staked ASIMI Token for a minimum of week "))
238243 }
239244 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"))
240245 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 !")
241246 }
242247
243248
244249
245250 @Callable(i)
246251 func Stake () = {
247252 let WaitTime = (1440 * 1)
248253 let pmt = if ((size(i.payments) == 1))
249254 then i.payments[0]
250255 else throw("Attached payment is required")
251256 if (if ((pmt.amount > 0))
252257 then (pmt.assetId == StakedToken)
253258 else false)
254259 then {
255260 let GovernTokenSmartContractBalance = assetBalance(this, GovernToken)
256261 let UserAPY = (toBase58String(i.caller.bytes) + "_APY")
257262 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
258263 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
259264 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
260265 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
261266 let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
262267 let AddressHeight = (toBase58String(i.caller.bytes) + "_PrizeHeight")
263268 let UserWeekEarnings = (toBase58String(i.caller.bytes) + "_WeekEarning")
264269 let UserStakeTransactions = match getInteger(this, UserStakeTransactionsKey) {
265270 case a: Int =>
266271 a
267272 case _ =>
268273 0
269274 }
270- let MaxDepositer = getStringValue(this, "MaxDepositer")
275+ let MaxDepositer = match getString(this, "MaxDepositer") {
276+ case a: String =>
277+ a
278+ case _ =>
279+ ""
280+ }
271281 let MaxDepositBlock = match getInteger(this, "MaxDepositBlock") {
272282 case a: Int =>
273283 a
274284 case _ =>
275285 0
276286 }
277287 let MaxDeposit = match getInteger(this, "MaxDeposit") {
278288 case a: Int =>
279289 a
280290 case _ =>
281291 0
282292 }
283293 let MaxDepositerValue = if ((pmt.amount > MaxDeposit))
284294 then toBase58String(i.caller.bytes)
285295 else MaxDepositer
286296 let MaxDepositValue = if ((pmt.amount > MaxDeposit))
287297 then pmt.amount
288298 else MaxDeposit
289299 let MaxDepositBlockValue = if ((pmt.amount > MaxDeposit))
290300 then height
291301 else MaxDepositBlock
292302 let UserPushValue = match getInteger(this, UserPush) {
293303 case a: Int =>
294304 a
295305 case _ =>
296306 0
297307 }
298308 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
299309 case a: Int =>
300310 a
301311 case _ =>
302312 0
303313 }
304314 let UserLastStakeBlockNewValue = if ((UserLastStakeBlockValue == 0))
305315 then height
306316 else UserLastStakeBlockValue
307317 let NewUserStakeTransactions = (UserStakeTransactions + 1)
308318 let currentAmountStakedToken = match getInteger(this, UserStakedTokenKey) {
309319 case a: Int =>
310320 a
311321 case _ =>
312322 0
313323 }
314324 let newAmountStakedToken = (currentAmountStakedToken + pmt.amount)
315325 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
316326 let StakeBalance = match getInteger(this, "StakeBalance") {
317327 case a: Int =>
318328 a
319329 case _ =>
320330 0
321331 }
322332 let StakeBalanceAmount = (StakeBalance + pmt.amount)
323333 let PrizeAmount = match getInteger(this, "FundBox") {
324334 case a: Int =>
325335 a
326336 case _ =>
327337 0
328338 }
329339 let UserWeekEarningsValue = match getInteger(this, UserWeekEarnings) {
330340 case a: Int =>
331341 a
332342 case _ =>
333343 0
334344 }
335345 let currentAmountGovernToken = match getInteger(this, UserGovernTokenKey) {
336346 case a: Int =>
337347 a
338348 case _ =>
339349 0
340350 }
341351 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
342352 case a: Int =>
343353 a
344354 case _ =>
345355 0
346356 }
347357 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
348358 then (PrizeAmount == 0)
349359 else false)
350360 then 0
351361 else if (if ((HeightTransactFundBox == 0))
352362 then (PrizeAmount != 0)
353363 else false)
354364 then height
355365 else if (if ((HeightTransactFundBox != 0))
356366 then (PrizeAmount != 0)
357367 else false)
358368 then HeightTransactFundBox
359369 else 0
360370 let ActualDelay = match getInteger(this, "Delay") {
361371 case a: Int =>
362372 a
363373 case _ =>
364374 0
365375 }
366376 let HighestPushValue = match getInteger(this, "HighestPush") {
367377 case a: Int =>
368378 a
369379 case _ =>
370380 0
371381 }
372- let HighestPushAddress = getStringValue(this, "HighestPushAddress")
382+ let HighestPushAddress = match getString(this, "HighestPushAddress") {
383+ case a: String =>
384+ a
385+ case _ =>
386+ ""
387+ }
373388 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
374389 then (HighestPushValue > 0)
375390 else false)
376391 then ""
377392 else HighestPushAddress
378393 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
379394 then (HighestPushValue > 0)
380395 else false)
381396 then height
382397 else PrizeHeightValue
383398 if ((100000000 > GovernTokenSmartContractBalance))
384399 then throw("No enough GovernToken In Contract, Please deposit GovernTokens")
385400 else {
386401 let Reward = if ((StakeBalance == 0))
387402 then 10000
388403 else if ((NewUserStakeTransactions > 10))
389404 then ((10000 * NewUserStakeTransactions) * (1 + (newAmountStakedToken / StakeBalance)))
390405 else (10000 * (1 + (newAmountStakedToken / StakeBalance)))
391406 let UserAPYValue = if ((currentAmountGovernToken > 0))
392407 then ((100 * Reward) / currentAmountGovernToken)
393408 else 0
394409 let newAmountGovernToken = (currentAmountGovernToken + Reward)
395410 [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)]
396411 }
397412 }
398413 else throw("Can deposit only StakeToken")
399414 }
400415
401416
402417
403418 @Callable(i)
404419 func WithdrawStakedFunds (amount) = {
405420 let WaitTime = (1440 * 1)
406421 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
407422 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
408423 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
409424 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
410425 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
411426 case a: Int =>
412427 a
413428 case _ =>
414429 0
415430 }
416431 let StakeBalance = match getInteger(this, "StakeBalance") {
417432 case a: Int =>
418433 a
419434 case _ =>
420435 0
421436 }
422437 let PrizeAmount = match getInteger(this, "FundBox") {
423438 case a: Int =>
424439 a
425440 case _ =>
426441 0
427442 }
428443 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
429444 case a: Int =>
430445 a
431446 case _ =>
432447 0
433448 }
434449 let ActualDelay = match getInteger(this, "Delay") {
435450 case a: Int =>
436451 a
437452 case _ =>
438453 0
439454 }
440455 let HighestPushValue = match getInteger(this, "HighestPush") {
441456 case a: Int =>
442457 a
443458 case _ =>
444459 0
445460 }
446461 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
447462 then (PrizeAmount == 0)
448463 else false)
449464 then 0
450465 else if (if ((HeightTransactFundBox == 0))
451466 then (PrizeAmount != 0)
452467 else false)
453468 then height
454469 else if (if ((HeightTransactFundBox != 0))
455470 then (PrizeAmount != 0)
456471 else false)
457472 then HeightTransactFundBox
458473 else 0
459474 let HighestPushAddress = match getString(this, "HighestPushAddress") {
460475 case a: String =>
461476 a
462477 case _ =>
463478 ""
464479 }
465480 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
466481 then (HighestPushValue > 0)
467482 else false)
468483 then ""
469484 else HighestPushAddress
470485 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
471486 then (HighestPushValue > 0)
472487 else false)
473488 then height
474489 else PrizeHeightValue
475490 let currentKey = toBase58String(i.caller.bytes)
476491 let currentAmount = match getInteger(this, UserStakedTokenKey) {
477492 case a: Int =>
478493 a
479494 case _ =>
480495 0
481496 }
482497 let newAmount = (currentAmount - amount)
483498 let StakeBalanceAmount = (StakeBalance - amount)
484499 let UserLastStakeBlockNewValue = if ((StakeBalanceAmount == 0))
485500 then 0
486501 else UserLastStakeBlockValue
487502 if ((0 > amount))
488503 then throw("Can't withdraw negative amount")
489504 else if ((0 > newAmount))
490505 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
491506 else if ((100000000 > assetBalance(this, GovernToken)))
492507 then throw(("Not enough Troika In Contract: " + toString((assetBalance(this, GovernToken) / 100000000))))
493508 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)]
494509 }
495510
496511
497512
498513 @Callable(i)
499514 func WithdrawBigStakeReward () = {
500515 let WaitTime = (1440 * 1)
501516 let LastBigStakerRewardBlock = (toBase58String(i.caller.bytes) + "_LastBigStakerRewardBlock")
502517 let BigStakerReward = (toBase58String(i.caller.bytes) + "_BigStaker")
503518 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
504519 let LimiWithdrawReward = 10
505520 let UserGovernTokenAmount = match getInteger(this, UserGovernTokenKey) {
506521 case a: Int =>
507522 a
508523 case _ =>
509524 0
510525 }
511526 let LastBigStakerRewardBlockValue = match getInteger(this, LastBigStakerRewardBlock) {
512527 case a: Int =>
513528 a
514529 case _ =>
515530 0
516531 }
517532 let BigStakerRewardTotalValue = match getInteger(this, "BigStakerRewardTotal") {
518533 case a: Int =>
519534 a
520535 case _ =>
521536 0
522537 }
523538 let PrizeAmount = match getInteger(this, "FundBox") {
524539 case a: Int =>
525540 a
526541 case _ =>
527542 0
528543 }
529544 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
530545 case a: Int =>
531546 a
532547 case _ =>
533548 0
534549 }
535550 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
536551 then (PrizeAmount == 0)
537552 else false)
538553 then 0
539554 else if (if ((HeightTransactFundBox == 0))
540555 then (PrizeAmount != 0)
541556 else false)
542557 then height
543558 else if (if ((HeightTransactFundBox != 0))
544559 then (PrizeAmount != 0)
545560 else false)
546561 then HeightTransactFundBox
547562 else 0
548563 let ActualDelay = match getInteger(this, "Delay") {
549564 case a: Int =>
550565 a
551566 case _ =>
552567 0
553568 }
554569 let HighestPushValue = match getInteger(this, "HighestPush") {
555570 case a: Int =>
556571 a
557572 case _ =>
558573 0
559574 }
560- let HighestPushAddress = getStringValue(this, "HighestPushAddress")
575+ let HighestPushAddress = match getString(this, "HighestPushAddress") {
576+ case a: String =>
577+ a
578+ case _ =>
579+ ""
580+ }
561581 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
562582 then (HighestPushValue > 0)
563583 else false)
564584 then ""
565585 else HighestPushAddress
566586 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
567587 then (HighestPushValue > 0)
568588 else false)
569589 then height
570590 else PrizeHeightValue
571591 let currentKey = toBase58String(i.caller.bytes)
572592 let amount = match getInteger(this, BigStakerReward) {
573593 case a: Int =>
574594 a
575595 case _ =>
576596 0
577597 }
578598 let StakeBalanceAmount = (BigStakerRewardTotalValue - amount)
579599 let BigStakerRewardTax = if ((0 > ((UserGovernTokenAmount / 1000) * (1000 - ((1000 * (height - LastBigStakerRewardBlockValue)) / (LimiWithdrawReward * 1440))))))
580600 then (1000 * 100000000)
581601 else ((UserGovernTokenAmount / 1000) * (1000 - ((1000 * (height - LastBigStakerRewardBlockValue)) / (LimiWithdrawReward * 1440))))
582602 if ((0 > amount))
583603 then throw(((("Can't withdraw negative amount " + toString((UserGovernTokenAmount - (1000 * 100000000)))) + " ... ") + toString(amount)))
584604 else if (if (if (((1000 * 100000000) > UserGovernTokenAmount))
585605 then true
586606 else (1 > amount))
587607 then true
588608 else (0 > (UserGovernTokenAmount - BigStakerRewardTax)))
589609 then throw(("No ASIMI reward available, or Not enough Earned Troikan Tokens to do transaction, you have: " + toString((UserGovernTokenAmount / 100000000))))
590610 else if ((StakeBalanceAmount > 0))
591611 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)]
592612 else throw("Balance Error, Total Big Stakers cannot be negative, Operation won't be authorized")
593613 }
594614
595615
596616
597617 @Callable(i)
598618 func HarvestGovernToiken (amount) = {
599619 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
600620 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
601621 let StakeBalance = match getInteger(this, "StakeBalance") {
602622 case a: Int =>
603623 a
604624 case _ =>
605625 0
606626 }
607627 let PrizeAmount = match getInteger(this, "FundBox") {
608628 case a: Int =>
609629 a
610630 case _ =>
611631 0
612632 }
613633 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
614634 case a: Int =>
615635 a
616636 case _ =>
617637 0
618638 }
619639 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
620640 then (PrizeAmount == 0)
621641 else false)
622642 then 0
623643 else if (if ((HeightTransactFundBox == 0))
624644 then (PrizeAmount != 0)
625645 else false)
626646 then height
627647 else if (if ((HeightTransactFundBox != 0))
628648 then (PrizeAmount != 0)
629649 else false)
630650 then HeightTransactFundBox
631651 else 0
632652 let currentKey = toBase58String(i.caller.bytes)
633653 let currentAmount = match getInteger(this, UserGovernTokenKey) {
634654 case a: Int =>
635655 a
636656 case _ =>
637657 0
638658 }
639659 let newAmount = (currentAmount - amount)
640660 if ((0 > amount))
641661 then throw("Can't withdraw negative amount")
642662 else if ((0 > newAmount))
643663 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
644664 else [IntegerEntry(UserGovernTokenKey, newAmount), IntegerEntry("PrizeHeight", PrizeHeightValue), ScriptTransfer(i.caller, amount, GovernToken)]
645665 }
646666
647667
648668
649669 @Callable(i)
650670 func delayprize () = {
651671 let DelayDays = (1440 * 1)
652672 let WaitTime = (1440 * 1)
653673 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
654674 let UserWalletSGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
655675 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
656676 let StakeBalance = match getInteger(this, "StakeBalance") {
657677 case a: Int =>
658678 a
659679 case _ =>
660680 0
661681 }
662682 let PrizeAmount = match getInteger(this, "FundBox") {
663683 case a: Int =>
664684 a
665685 case _ =>
666686 0
667687 }
668688 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
669689 case a: Int =>
670690 a
671691 case _ =>
672692 0
673693 }
674694 let ActualDelay = match getInteger(this, "Delay") {
675695 case a: Int =>
676696 a
677697 case _ =>
678698 0
679699 }
680700 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
681701 then (PrizeAmount == 0)
682702 else false)
683703 then 0
684704 else if (if ((HeightTransactFundBox == 0))
685705 then (PrizeAmount != 0)
686706 else false)
687707 then height
688708 else if (if ((HeightTransactFundBox != 0))
689709 then (PrizeAmount != 0)
690710 else false)
691711 then HeightTransactFundBox
692712 else 0
693713 let HighestPushValue = match getInteger(this, "HighestPush") {
694714 case a: Int =>
695715 a
696716 case _ =>
697717 0
698718 }
699- let HighestPushAddress = getStringValue(this, "HighestPushAddress")
719+ let HighestPushAddress = match getString(this, "HighestPushAddress") {
720+ case a: String =>
721+ a
722+ case _ =>
723+ ""
724+ }
700725 let HighestPushAddressValue = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
701726 then (HighestPushValue > 0)
702727 else false)
703728 then ""
704729 else HighestPushAddress
705730 let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + ActualDelay) + WaitTime)))
706731 then (HighestPushValue > 0)
707732 else false)
708733 then height
709734 else PrizeHeightValue
710735 let ActualDelayCost = match getInteger(this, "DelayCost") {
711736 case a: Int =>
712737 a
713738 case _ =>
714739 10
715740 }
716741 let pmt = if ((size(i.payments) == 1))
717742 then i.payments[0]
718743 else throw("Attached payment is required")
719744 let DevBoxBalance = match getInteger(this, "DevBox") {
720745 case a: Int =>
721746 a
722747 case _ =>
723748 0
724749 }
725750 if (if (isDefined(pmt.assetId))
726751 then (pmt.assetId == GovernToken)
727752 else false)
728753 then if ((PrizeAmount > 0))
729754 then {
730755 let UserGovernTokenAmount = pmt.amount
731756 let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
732757 let NewDelayCost = if ((ActualDelayCost == 0))
733758 then 1000000000
734759 else (2 * ActualDelayCost)
735760 if ((UserGovernTokenAmount >= NewDelayCost))
736761 then {
737762 let NewDelay = (ActualDelay + DelayDays)
738763 [IntegerEntry("Delay", NewDelay), IntegerEntry("DelayCost", NewDelayCost), IntegerEntry("PrizeHeight", PrizeHeightValueNew), IntegerEntry("DevBox", DevBoxAmount), StringEntry("HighestPushAddress", HighestPushAddressValue)]
739764 }
740765 else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
741766 }
742767 else throw("You cannot delay the reward before reward is received! Please wait until a reward is available")
743768 else throw("Can Use only Troika Token to Delay Reward")
744769 }
745770
746771
747772
748773 @Callable(i)
749774 func ClaimPrize () = {
750775 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
751776 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
752777 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
753778 let minStakeBlock = (1440 * 7)
754779 let minref = 3
755780 let ContractGovTokenBalance = assetBalance(this, GovernToken)
756781 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
757782 let StakeBalance = match getInteger(this, "StakeBalance") {
758783 case a: Int =>
759784 a
760785 case _ =>
761786 0
762787 }
763788 let PrizeAmount = match getInteger(this, "FundBox") {
764789 case a: Int =>
765790 a
766791 case _ =>
767792 0
768793 }
769794 let UserPushValue = match getInteger(this, UserPush) {
770795 case a: Int =>
771796 a
772797 case _ =>
773798 0
774799 }
775800 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
776801 case a: Int =>
777802 a
778803 case _ =>
779804 0
780805 }
781806 let UserStakedTokenAmount = match getInteger(this, UserStakedTokenKey) {
782807 case a: Int =>
783808 a
784809 case _ =>
785810 0
786811 }
787812 let ActualDelay = match getInteger(this, "Delay") {
788813 case a: Int =>
789814 a
790815 case _ =>
791816 0
792817 }
793- let PrizeWinner = getStringValue(this, "HighestPushAddress")
818+ let PrizeWinner = match getString(this, "HighestPushAddress") {
819+ case a: String =>
820+ a
821+ case _ =>
822+ ""
823+ }
794824 let PrizeHeight = match getInteger(this, "PrizeHeight") {
795825 case a: Int =>
796826 a
797827 case _ =>
798828 0
799829 }
800830 let HighestPushValue = match getInteger(this, "HighestPush") {
801831 case a: Int =>
802832 a
803833 case _ =>
804834 0
805835 }
806836 let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
807837 let UserRefsNumValue = match getInteger(this, UserRefsNum) {
808838 case a: Int =>
809839 a
810840 case _ =>
811841 0
812842 }
813843 if (if ((PrizeAmount == 0))
814844 then true
815845 else (10000000000 > ContractGovTokenBalance))
816846 then throw("No prize to Claim or Not enough Govern Token en Contract (Min 100 Troika)")
817847 else if ((toBase58String(i.caller.bytes) != PrizeWinner))
818848 then throw("You are not the winner hence cannot claim the reward ")
819849 else if (if ((100000000 > UserStakedTokenAmount))
820850 then (minStakeBlock > UserLastStakeBlockValue)
821851 else false)
822852 then throw("You have to Stake ASIMI Token to claim reward ")
823853 else if (if ((height > (PrizeHeight + ActualDelay)))
824854 then (UserPushValue >= HighestPushValue)
825855 else false)
826856 then if ((UserRefsNumValue >= minref))
827857 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)]
828858 else throw((("You have to have " + toString(minref)) + " referrals already staking for a minimum of 10 days to Claim the prize"))
829859 else throw("You have to be the user with the highest Push and wait till countown is finished, to claim Reward")
830860 }
831861
832862
833863
834864 @Callable(i)
835865 func Addmentor (Mentor) = {
836866 let UserMentorAddress = (toBase58String(i.caller.bytes) + "_Mentor")
837867 if ((Mentor != ""))
838868 then [StringEntry(UserMentorAddress, Mentor)]
839869 else throw("Mentor's Address cannot be empty")
840870 }
841871
842872
843873
844874 @Callable(i)
845875 func GetLikesPackage (TwitterUserId,TwittId) = {
846876 let LikePackageTROIKANCostValue = match getInteger(this, "LikePackageTROIKANCost") {
847877 case a: Int =>
848878 a
849879 case _ =>
850880 0
851881 }
852882 let LikePackageASIMICostValue = match getInteger(this, "LikePackageASIMICost") {
853883 case a: Int =>
854884 a
855885 case _ =>
856886 0
857887 }
858888 let pmt = if ((size(i.payments) == 2))
859889 then i.payments[0]
860890 else throw("Attached payment is required")
861891 if (if ((i.payments[0].assetId == StakedToken))
862892 then (i.payments[1].assetId == GovernToken)
863893 else false)
864894 then if ((i.payments[0].amount >= LikePackageASIMICostValue))
865895 then if ((i.payments[1].amount >= LikePackageTROIKANCostValue))
866896 then {
867897 let Influencer = ((toString(TwitterUserId) + "_Twitt2Like_") + toString(TwittId))
868898 let InfluencerBalance = match getInteger(this, Influencer) {
869899 case a: Int =>
870900 a
871901 case _ =>
872902 0
873903 }
874904 if ((InfluencerBalance == 0))
875905 then [IntegerEntry(((toString(TwitterUserId) + "_Twitt2Like_") + toString(TwittId)), ((95 * LikePackageASIMICost) / 100)), IntegerEntry("LikeTwittsDevBox", ((5 * LikePackageASIMICost) / 100))]
876906 else throw("Cannot acquire a new package, the prior like package has to be drained to be able to acquire a new one")
877907 }
878908 else throw(("TROIKAN Amount should be :" + toString((LikePackageASIMICost / 100000000))))
879909 else throw(("ASIMI Amount should be :" + toString((LikePackageTROIKANCost / 100000000))))
880910 else throw("Payments should be both ASIMI and TROIKAN tokens")
881911 }
882912
883913
884914
885915 @Callable(i)
886916 func GetMyLikedTwittsRewards (UserId) = {
887917 let UserEarnedLikeTwittASIMI = match getInteger(this, (toString(UserId) + "_Like_Amount")) {
888918 case a: Int =>
889919 a
890920 case _ =>
891921 0
892922 }
893923 let UserEarneddAppRTTwittTROIKAN = match getInteger(this, (toString(UserId) + "_TroikandApp_RT_Amount")) {
894924 case a: Int =>
895925 a
896926 case _ =>
897927 0
898928 }
899929 if (if ((UserEarnedLikeTwittASIMI >= (1 * 100000000)))
900930 then (UserEarneddAppRTTwittTROIKAN >= (1 * 100000000))
901931 else false)
902932 then [IntegerEntry((toString(UserId) + "_TroikandApp_RT_Amount"), 0), IntegerEntry((toString(UserId) + "_Like_Amount"), 0), ScriptTransfer(i.caller, UserEarnedLikeTwittASIMI, StakedToken), ScriptTransfer(i.caller, UserEarneddAppRTTwittTROIKAN, GovernToken)]
903933 else throw("Minimum earnings to withdraw are: 100 ASIMI and 50 Troikans")
904934 }
905935
906936
907937
908938 @Callable(i)
909939 func LinkTwitterAcc2Wallet (TwitterUserId) = {
910940 let TwitterLinkedWallet = match getString(this, (TwitterUserId + "_Wallet")) {
911941 case a: String =>
912942 a
913943 case _ =>
914944 "None"
915945 }
916946 if ((toBase58String(i.caller.bytes) == TwitterLinkedWallet))
917947 then throw("You already have your wallet linked to the Twitter account")
918948 else if (if ((toBase58String(i.caller.bytes) != TwitterLinkedWallet))
919949 then (TwitterLinkedWallet != "None")
920950 else false)
921951 then throw("The wallet you are using is not the linked Wallet to this Twitter account")
922952 else [StringEntry((TwitterUserId + "_Wallet"), toBase58String(i.caller.bytes))]
923953 }
924954
925955

github/deemru/w8io/6500d08 
185.46 ms