tx · 8qMb324TTFRDxGjKhTaLRjBvT17cGtC58UYK6UuLmC4c

3MqzpRGNBq3GSxMonFoenAhNRDHJ2a8omm1:  -0.05000000 Waves

2023.08.23 14:10 [2723204] smart account 3MqzpRGNBq3GSxMonFoenAhNRDHJ2a8omm1 > SELF 0.00000000 Waves

{ "type": 13, "id": "8qMb324TTFRDxGjKhTaLRjBvT17cGtC58UYK6UuLmC4c", "fee": 5000000, "feeAssetId": null, "timestamp": 1692789031257, "version": 2, "chainId": 84, "sender": "3MqzpRGNBq3GSxMonFoenAhNRDHJ2a8omm1", "senderPublicKey": "Cm1uVVKocYw3S4eL9bYUMNZe5vpBPipgiiTx37eL6E8F", "proofs": [ "pRcY3pdX8Jd4fLsPDuYFsMooTXpr5g4sCYKb14xeb9GzUK9H49Fp312XjueCpyA4xxri6ZB8xL6v9rzq34dWD3w", "31fYEgt988z89GCaSZbvPovwJnS7uVpXCnGq6Mmi4rCrE8Wa8ZKWgxA4zB6igFGWAt9z9iThxoH1Fm8Mo1Lgttex" ], "script": "base64:BgJQCAISBAoCAQgSAwoBCBIUChIIAQEIAQEBAQEBAQEYBAEBBBgSBAoCAQgSBAoCAQgSBAoCAQgSBQoDAQEIEgMKAQESAwoBARIECgIBARIAEgBOAAlrZXlBY3RpdmUCBmFjdGl2ZQALa0FjdGl2ZUdsb2ICFGFjdGl2ZV9hbGxfY29udHJhY3RzAA9rZXlBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA9rZXlBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA9rZXlBZG1pblB1YktleTMCC2FkbWluX3B1Yl8zACFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMCIWxhdW5jaHBhZF9kYXRhX3RyYW5zYWN0aW9uX3N0YXR1cwASa2V5TGF1bmNocGFkTmV4dElkAhFsYXVuY2hwYWRfbmV4dF9pZAAUa2V5TGF1bmNocGFkQWN0aXZlSWQCE2xhdW5jaHBhZF9hY3RpdmVfaWQADWtleUluaXRDYWxsZXICC2luaXRfY2FsbGVyAAprZXlBZGRyZXNzAghfYWRkcmVzcwANa2V5SW5pdEhlaWdodAIMX2luaXRfaGVpZ2h0AA5rZXlTdGFydEhlaWdodAINX3N0YXJ0X2hlaWdodAARa2V5RmluYWxpc2VIZWlnaHQCEF9maW5hbGlzZV9oZWlnaHQADGtleUNvbWlzc2lvbgIKX2NvbWlzc2lvbgAKa2V5QXNzZXRJZAIJX2Fzc2V0X2lkABNrZXlUb3RhbFRva2VuQW1vdW50AhNfdG90YWxfdG9rZW5fYW1vdW50ABprZXlUb3RhbEFtb3VudEJ1eUFzc2V0U29sZAIVX3RvdGFsX2J1eV9hc3NldF9zb2xkABJrZXlUb2tlbnNQZXJUaWNrZXQCEl90b2tlbnNfcGVyX3RpY2tldAAQa2V5UHJpY2VQZXJUb2tlbgIQX3ByaWNlX3Blcl90b2tlbgAQa2V5U3dvcFBlclRpY2tldAIQX3N3b3BfcGVyX3RpY2tldAAWa2V5U3dvcGZpVGlja2V0c0Ftb3VudAIXX3RpY2tldHNfc3dvcGZpX21lbWJlcnMAF2tleUNhbXBhaWduVG9rZW5zQW1vdW50AhNfdG9rZW5zX2FjY2Vzc19saXN0ABZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uAhZfdG9rZW5zX3Blcl9hbGxvY2F0aW9uABNrZXlUaWNrZXRMYXN0TnVtYmVyAhNfdGlja2V0X2xhc3RfbnVtYmVyABNrZXlHb3Zlcm5hbmNlU3Rha2VkAg1fR1N3b3BfYW1vdW50AAxrZXlVc2VyUmVmSWQCB19yZWZfaWQADWtleVZlcmlmeUhhc2gCDF92ZXJpZnlfaGFzaAALa2V5RHVyYXRpb24CCV9kdXJhdGlvbgAca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwInX3RvdGFsX3B1cmNoYXNlZF9idXlfYXNzZXRfaW5fbWFya2V0aW5nACVrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nRmluYWxpemVkAjFfdG90YWxfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmdfZmluYWxpemVkABNrZXlUcmFuc2ZlckJ1eUFzc2V0AhNfdHJhbnNmZXJfYnV5X2Fzc2V0ABRrZXlGcmVlelN3b3BEdXJhdGlvbgIVX2ZyZWV6ZV9zd29wX2R1cmF0aW9uABhrZXlGcmVlemVBZGRpdGlvbmFsVG9rZW4CGF9mcmVlemVfYWRkaXRpb25hbF90b2tlbgAQa2V5RnJlZXplVG9rZW5JZAIQX2ZyZWV6ZV90b2tlbl9pZAAWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgIWX2ZyZWV6ZV90b2tlbl9kdXJhdGlvbgAXa2V5RnJlZXplVG9rZW5QZXJUaWNrZXQCGF9mcmVlemVfdG9rZW5fcGVyX3RpY2tldAALa2V5QnV5VG9rZW4CCl9idXlfdG9rZW4ADmtleUNsYWltUGFyYW1zAg1fY2xhaW1fcGFyYW1zABtrZXlIaWdoQ29tcGV0aXRpb25Db21pc3Npb24CG19oaWdoX2NvbXBldGl0aW9uX2NvbWlzc2lvbgAWa2V5SGlnaENvbXBldGl0aW9uU2FsZQIWX2hpZ2hfY29tcGV0aXRpb25fc2FsZQAVa2V5SENUaWNrZXRMYXN0TnVtYmVyAiRfaGlnaF9jb21wZXRpdGlvbl90aWNrZXRfbGFzdF9udW1iZXIAGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudAIZX3RpY2tldHNfaGlnaF9jb21wZXRpdGlvbgAca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQwImX3RvdGFsX2J1eV9hc3NldF9zb2xkX2hpZ2hfY29tcGV0aXRpb24AFGtleVVzZXJDbGFpbWVkVG9rZW5zAg9fY2xhaW1lZF90b2tlbnMAF2tleVVzZXJDbGFpbWVkQnV5VG9rZW5zAhNfY2xhaW1lZF9idXlfdG9rZW5zABprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAIPX2JvdWdodF90aWNrZXRzAA5rZXlVc2VyVGlja2V0cwIPX3RpY2tldHNfbnVtYmVyABBrZXlVc2VySENUaWNrZXRzAiBfdGlja2V0c19udW1iZXJfaGlnaF9jb21wZXRpdGlvbgAca2V5VXNlckhDQm91Z2h0VGlja2V0c0Ftb3VudAIgX2JvdWdodF90aWNrZXRzX2hpZ2hfY29tcGV0aXRpb24AG2tleVVzZXJBdmFpbGFibGVBbGxvY2F0aW9ucwIdX2F2YWlsYWJsZV9wdXJjaGFzZV9tYXJrZXRpbmcAIGtleVVzZXJBbW91bnRCdXlBc3NldEluTWFya2V0aW5nAiFfcHVyY2hhc2VkX2J1eV9hc3NldF9pbl9tYXJrZXRpbmcAGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwITX2JvdWdodF9hbGxvY2F0aW9ucwASa2V5VXNlckNsYWltU3RhdHVzAg1fY2xhaW1fc3RhdHVzABprZXlVc2VyV2lubmVkVGlja2V0c0Ftb3VudAIPX3RpY2tldHNfcmVzdWx0AClrZXlVc2VyV2lubmVkSGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudAIgX3RpY2tldHNfcmVzdWx0X2hpZ2hfY29tcGV0aXRpb24AEmtleVVzZXJGcmVlemVUb2tlbgIUX2ZyZWV6ZV90b2tlbl9hbW91bnQABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAKZ292ZXJuYW5jZQkBB0FkZHJlc3MBARoBVMjcuWCotbWVPLfydaKVHLjfUPyH4RW0IgAQY29tbWlzc2lvbldhbGxldAkBB0FkZHJlc3MBARoBVIu67/x0Qcp5qolR7D86Zc0NPlB1AJuHDgASc3Rha2luZ1VTRE5BZGRyZXNzCQEHQWRkcmVzcwEBGgFUyzDUI2tI0RnhEQqOmg6HEPqnSokkZ5v9AARVU0ROASA0ARNWjmBG4n5bqbgBR4LnsQAmEpt25E5LoqB8nG3ugQASYWRtaW5QdWJLZXlTdGFraW5nASAEz3XlZNDBD05nuR8TZMQaDeqEJEIxfTOQXUBYCp2TSgAMV0FWRVNfWFROX0VYCQEHQWRkcmVzcwEBGgFUE+06HqYmRCC3D4wq0lzrbsHxoPvs0AmgABRtYXhBbGxvY2F0aW9uc0Ftb3VudAACABFhY3RpdmVMYXVuY2hwYWRJZAkBC3ZhbHVlT3JFbHNlAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUUa2V5TGF1bmNocGFkQWN0aXZlSWQA////////////AQELZ2V0QWRtaW5QdWIBC2tleUFkbWluUHViBAckbWF0Y2gwCQCdCAIFBm9yYWNsZQULa2V5QWRtaW5QdWIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQIZQWRtaW4gcHVibGljIGtleSBpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQELZ2V0QWRtaW5QdWIBBQ9rZXlBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBC2dldEFkbWluUHViAQUPa2V5QWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJAQtnZXRBZG1pblB1YgEFD2tleUFkbWluUHViS2V5MwEMZ2V0QXNzZXRJbmZvAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwBAhzdHJpbmdJZAkA2AQBBQJpZAQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmlkCQCsAgIJAKwCAgIGQXNzZXQgBQhzdHJpbmdJZAIOIGRvZXNuJ3QgZXhpc3QJAJUKAwUIc3RyaW5nSWQIBQRpbmZvBG5hbWUIBQRpbmZvCGRlY2ltYWxzAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCQCVCgMCBVdBVkVTAgVXQVZFUwAICQACAQILTWF0Y2ggZXJyb3IBEmdldExhdW5jaHBhZE5leHRJZAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUSa2V5TGF1bmNocGFkTmV4dElkAAEBEHN0YWtlZFVzZG5BbW91bnQACQELdmFsdWVPckVsc2UCCQCaCAIFEnN0YWtpbmdVU0ROQWRkcmVzcwkArAICCQCsAgIJAKwCAgIMcnBkX2JhbGFuY2VfCQDYBAEFBFVTRE4CAV8JAKUIAQUEdGhpcwAAAAZhY3RpdmUJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUJa2V5QWN0aXZlBgAKYWN0aXZlR2xvYgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFC2tBY3RpdmVHbG9iBgEIaXNBY3RpdmUAAwMFBmFjdGl2ZQUKYWN0aXZlR2xvYgcFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEIYXNzZXRTdHIDCQAAAgUIYXNzZXRTdHICBVdBVkVTCQCWCgQFBHVuaXQCBVdBVkVTAgVXQVZFUwAIBAhzdHJpbmdJZAUIYXNzZXRTdHIEAmlkCQDZBAEFCGFzc2V0U3RyBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCaWQJAKwCAgkArAICAgZBc3NldCAFCHN0cmluZ0lkAg4gZG9lc24ndCBleGlzdAkAlgoEBQJpZAUIc3RyaW5nSWQIBQRpbmZvBG5hbWUIBQRpbmZvCGRlY2ltYWxzAQpidXlJbldhdmVzAwtsYXVuY2hwYWRJZA10aWNrZXRzQW1vdW50BHR5cGUECyR0MDUxNTk1MzA5CQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFCyR0MDUxNTk1MzA5Al8xBA1idXlBc3NldFN0cklkCAULJHQwNTE1OTUzMDkCXzIEDGJ1eUFzc2V0TmFtZQgFCyR0MDUxNTk1MzA5Al8zBBBidXlBc3NldERlY2ltYWxzCAULJHQwNTE1OTUzMDkCXzQECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQLJHQwNTQ5MTU2MzUJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQprZXlBc3NldElkBAd0b2tlbklkCAULJHQwNTQ5MTU2MzUCXzEED3Rva2VuU3RyQXNzZXRJZAgFCyR0MDU0OTE1NjM1Al8yBA50b2tlbkFzc2V0TmFtZQgFCyR0MDU0OTE1NjM1Al8zBA10b2tlbkRlY2ltYWxzCAULJHQwNTQ5MTU2MzUCXzQEC3RpY2tldFByaWNlCQBrAwUPdG9rZW5zUGVyVGlja2V0BQp0b2tlblByaWNlCQBsBgAKAAAFDXRva2VuRGVjaW1hbHMAAAAABQRET1dOBBNjb21taXNzaW9uUGVyVGlja2V0AwkAAAIFBHR5cGUAAQkAawMFC3RpY2tldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDGtleUNvbWlzc2lvbgBkCQBrAwULdGlja2V0UHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uAGQEEGFtbnRUb0dldFRpY2tldHMJAGgCBQ10aWNrZXRzQW1vdW50CQBkAgULdGlja2V0UHJpY2UFE2NvbW1pc3Npb25QZXJUaWNrZXQECWFtbnRUb1BheQoAAUAJAJEDAgoAAUAJAPwHBAUMV0FWRVNfWFROX0VYAgxjYWxsRnVuY3Rpb24JAMwIAgIVaG93TWFueVlvdVBheVJFQURPTkxZCQDMCAIJAMwIAgkApAMBBRBhbW50VG9HZXRUaWNrZXRzCQDMCAIFCmJ1eUFzc2V0SWQFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFCWFtbnRUb1BheQUJYW1udFRvUGF5CQBrAwUJYW1udFRvUGF5AGUAZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgwBaQENaGFzaGluZ1JhbmRvbQILbGF1bmNocGFkSWQEaGFzaAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDWtleVZlcmlmeUhhc2gFBGhhc2gFA25pbAFpAQppbml0Q2FsbGVyAQdhZGRyZXNzCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtleUluaXRDYWxsZXIFB2FkZHJlc3MFA25pbAFpAQRpbml0Eg5wcm9qZWN0QWRkcmVzcwtzdGFydEhlaWdodAhkdXJhdGlvbghidXlUb2tlbgpjb21taXNzaW9uD3Rva2Vuc1BlclRpY2tldA1wcmljZVBlclRva2VuE3N3b3BmaVRpY2tldHNBbW91bnQUY2FtcGFpZ25Ub2tlbnNBbW91bnQTdG9rZW5zUGVyQWxsb2NhdGlvbg1zd29wUGVyVGlja2V0EnN3b3BGcmVlemVEdXJhdGlvbgtjbGFpbVBhcmFtcxNIaWdoQ29tcGV0aXRpb25TYWxlGGhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbhxoaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50FWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgxmcmVlemVQYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rZXlJbml0Q2FsbGVyAgAJAAIBAilPbmx5IHByb2plY3QgYWRtaW4gY2FuIGNhbGwgaW5pdCBmdW5jdGlvbgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkAZgIFBmhlaWdodAULc3RhcnRIZWlnaHQJAAIBAjNTdGFydCBoZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gYmxvY2tjaGFpbiBoZWlnaHQDAwUVZnJlZXplQWRkaXRpb25hbFRva2VuCQECIT0CCQCQAwEFDGZyZWV6ZVBhcmFtcwADBwkAAgECJEZyZWV6ZSBwYXJhbXMgbGlzdCBtdXN0IGhhdmUgMyBpdGVtcwQLbGF1bmNocGFkSWQJARJnZXRMYXVuY2hwYWROZXh0SWQABA5sYXVuY2hwYWRJZFN0cgkApAMBBQtsYXVuY2hwYWRJZAQLJHQwNzc4OTc4NjQJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAULJHQwNzc4OTc4NjQCXzEECnBtdEFzc2V0SWQIBQskdDA3Nzg5Nzg2NAJfMgQLJHQwNzg3Mzc5NDYJAQxnZXRBc3NldEluZm8BBQpwbXRBc3NldElkBA1wbXRTdHJBc3NldElkCAULJHQwNzg3Mzc5NDYCXzEEDHBtdEFzc2V0TmFtZQgFCyR0MDc4NzM3OTQ2Al8yBAtwbXREZWNpbWFscwgFCyR0MDc4NzM3OTQ2Al8zBBVmcmVlemVBZGRpdGlvbmFsRW50cnkDBRVmcmVlemVBZGRpdGlvbmFsVG9rZW4JAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbgYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUQa2V5RnJlZXplVG9rZW5JZAkAkQMCBQxmcmVlemVQYXJhbXMAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5RnJlZXplVG9rZW5EdXJhdGlvbgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGZyZWV6ZVBhcmFtcwABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBRdrZXlGcmVlemVUb2tlblBlclRpY2tldAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGZyZWV6ZVBhcmFtcwACBQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDXBtdFN0ckFzc2V0SWQCCl9sYXVuY2hwYWQFC2xhdW5jaHBhZElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlMYXVuY2hwYWROZXh0SWQJAGQCBQtsYXVuY2hwYWRJZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFCmtleUFkZHJlc3MFDnByb2plY3RBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBQ1rZXlJbml0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFDmtleVN0YXJ0SGVpZ2h0BQtzdGFydEhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgULa2V5RHVyYXRpb24FCGR1cmF0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFC2tleUJ1eVRva2VuBQhidXlUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUUa2V5RnJlZXpTd29wRHVyYXRpb24FEnN3b3BGcmVlemVEdXJhdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUTa2V5VG90YWxUb2tlbkFtb3VudAUJcG10QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFCmtleUFzc2V0SWQFDXBtdFN0ckFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFDGtleUNvbWlzc2lvbgUKY29tbWlzc2lvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUTa2V5VGlja2V0TGFzdE51bWJlcgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBRVrZXlIQ1RpY2tldExhc3ROdW1iZXIAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUSa2V5VG9rZW5zUGVyVGlja2V0BQ90b2tlbnNQZXJUaWNrZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFEGtleVByaWNlUGVyVG9rZW4FDXByaWNlUGVyVG9rZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFEGtleVN3b3BQZXJUaWNrZXQFDXN3b3BQZXJUaWNrZXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFFmtleVN3b3BmaVRpY2tldHNBbW91bnQFE3N3b3BmaVRpY2tldHNBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFF2tleUNhbXBhaWduVG9rZW5zQW1vdW50BRRjYW1wYWlnblRva2Vuc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgUTdG9rZW5zUGVyQWxsb2NhdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFDmxhdW5jaHBhZElkU3RyBQ5rZXlDbGFpbVBhcmFtcwkAuQkCBQtjbGFpbVBhcmFtcwIBLAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUWa2V5SGlnaENvbXBldGl0aW9uU2FsZQUTSGlnaENvbXBldGl0aW9uU2FsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQ5sYXVuY2hwYWRJZFN0cgUba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uBRhoaWdoQ29tcGV0aXRpb25Db21pc3Npb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUObGF1bmNocGFkSWRTdHIFGGtleUhpZ2hDb21wZXRpdGlvbkFtb3VudAUcaGlnaENvbXBldGl0aW9uVGlja2V0c0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5TGF1bmNocGFkQWN0aXZlSWQFC2xhdW5jaHBhZElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtleUluaXRDYWxsZXICAAUDbmlsBRVmcmVlemVBZGRpdGlvbmFsRW50cnkBaQEQY29tbWl0U3dvcGZpU2FsZQILbGF1bmNocGFkSWQFcmVmSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQNJHQwMTA3MjkxMDg3MwkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAxMDcyOTEwODczAl8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAxMDcyOTEwODczAl8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDEwNzI5MTA4NzMCXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAxMDcyOTEwODczAl80BAt0aWNrZXRQcmljZQkAawMFD3Rva2Vuc1BlclRpY2tldAUKdG9rZW5QcmljZQkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgQTY29tbWlzc2lvblBlclRpY2tldAkAawMFC3RpY2tldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDGtleUNvbWlzc2lvbgBkBA0kdDAxMTA5MDExMjQwCQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFDSR0MDExMDkwMTEyNDACXzEEDWJ1eUFzc2V0U3RySWQIBQ0kdDAxMTA5MDExMjQwAl8yBAxidXlBc3NldE5hbWUIBQ0kdDAxMTA5MDExMjQwAl8zBBBidXlBc3NldERlY2ltYWxzCAUNJHQwMTEwOTAxMTI0MAJfNAQLc3Rha2VkU3dvcHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292ZXJuYW5jZQkArAICCQClCAEIBQFpBmNhbGxlcgUTa2V5R292ZXJuYW5jZVN0YWtlZAAABBdhbGxvd2VkVGlja2V0c0Ftb3VudEFsbAkAaQIFC3N0YWtlZFN3b3BzCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleVN3b3BQZXJUaWNrZXQEE2JvdWdodFRpY2tldHNBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGmtleVVzZXJCb3VnaHRUaWNrZXRzQW1vdW50AAAEFGFsbG93ZWRUaWNrZXRzQW1vdW50CQBlAgUXYWxsb3dlZFRpY2tldHNBbW91bnRBbGwFE2JvdWdodFRpY2tldHNBbW91bnQEC3N0YXJ0SGVpZ2h0CQEFdmFsdWUBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUOa2V5U3RhcnRIZWlnaHQECGR1cmF0aW9uCQEFdmFsdWUBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAULa2V5RHVyYXRpb24EFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbgcEDSR0MDExOTY1MTMwOTgDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0BAlhbW50VG9HZXQKAAFACQCRAwIKAAFACQD8BwQFDFdBVkVTX1hUTl9FWAIMY2FsbEZ1bmN0aW9uCQDMCAICFWhvd01hbnlZb3VHZXRSRUFET05MWQkAzAgCCQDMCAIJAKQDAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgEABQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQlhbW50VG9HZXQFCWFtbnRUb0dldAQNdGlja2V0c0Ftb3VudAkAaQIFCWFtbnRUb0dldAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0AwkAAAIFDXRpY2tldHNBbW91bnQAAAkAAgECIE5vdCBlbm91Z2h0IFdBVkVTIHRvIGJ1eSB0aWNrZXRzBBBhbW50VG9HZXRUaWNrZXRzCQBoAgUNdGlja2V0c0Ftb3VudAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0BAlhbW50VG9QYXkKAAFACQCRAwIKAAFACQD8BwQFDFdBVkVTX1hUTl9FWAIMY2FsbEZ1bmN0aW9uCQDMCAICFWhvd01hbnlZb3VQYXlSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUQYW1udFRvR2V0VGlja2V0cwkAzAgCBQpidXlBc3NldElkBQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQlhbW50VG9QYXkFCWFtbnRUb1BheQQCZXgJAPwHBAUMV0FWRVNfWFROX0VYAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCCQCkAwEFEGFtbnRUb0dldFRpY2tldHMFA25pbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQlhbW50VG9QYXkFA25pbAMJAAACBQJleAUCZXgEBmNoYW5nZQkAZQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQlhbW50VG9QYXkEBmNFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNuaWwFA25pbAkAlQoDBRBhbW50VG9HZXRUaWNrZXRzBQpidXlBc3NldElkBQZjRW50cnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJUKAwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDbmlsBAlwbXRBbW91bnQIBQ0kdDAxMTk2NTEzMDk4Al8xBApwbXRBc3NldElkCAUNJHQwMTE5NjUxMzA5OAJfMgQLY2hhbmdlRW50cnkIBQ0kdDAxMTk2NTEzMDk4Al8zAwkBAiE9AgURYWN0aXZlTGF1bmNocGFkSWQFC2xhdW5jaHBhZElkCQACAQI3VGhlcmUgaXMgbm8gYWN0aXZlIGxhdW5jaHBhZCBvciB0aGlzIGxhdW5jaHBhZCBpcyBlbmRlZAMJAGYCBQtzdGFydEhlaWdodAUGaGVpZ2h0CQACAQIeTGF1bmNocGFkIHNhbGUgbm90IHN0YXJ0ZWQgeWV0AwkAZgIFBmhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQhkdXJhdGlvbgkAAgECFExhdW5jaHBhZCBzYWxlIGVuZGVkAwMJAQEhAQUVZnJlZXplQWRkaXRpb25hbFRva2VuAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBAiE9AgUKcG10QXNzZXRJZAUKYnV5QXNzZXRJZAcJAAIBCQCsAgIJAKwCAgIYT25lIGF0dGFjaGVkIHBheW1lbnQgaW4gBQxidXlBc3NldE5hbWUCCSBleHBlY3RlZAMDBRVmcmVlemVBZGRpdGlvbmFsVG9rZW4DCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIGCQECIT0CBQpwbXRBc3NldElkBQpidXlBc3NldElkBwQNZnJlZXplVG9rZW5JZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlGcmVlemVUb2tlbklkCQACAQkArAICCQCsAgIJAKwCAgIpVHdvIGF0dGFjaGVkIHBheW1lbnRzIGV4cGVjdGVkOiBGaXJzdCBpbiAFDGJ1eUFzc2V0TmFtZQIMLCBzZWNvbmQgaW4gBQ1mcmVlemVUb2tlbklkAwMJAGcCAAAFF2FsbG93ZWRUaWNrZXRzQW1vdW50QWxsBgkAZwIAAAUUYWxsb3dlZFRpY2tldHNBbW91bnQJAAIBAipOb3QgZW5vdWdodCBTV09QIGluIHN0YWtpbmcgdG8gYnV5IHRpY2tldHMED2J1eVRpY2tldEFtb3VudAkAaQIFCXBtdEFtb3VudAkAZAIFC3RpY2tldFByaWNlBRNjb21taXNzaW9uUGVyVGlja2V0BBZhbGxvd2VkQnV5VGlja2V0QW1vdW50CQCXAwEJAMwIAgUPYnV5VGlja2V0QW1vdW50CQDMCAIFFGFsbG93ZWRUaWNrZXRzQW1vdW50BQNuaWwEHGFsbG93ZWRCdXlQcmljZVdpdGhDb21pc3Npb24JAGgCBRZhbGxvd2VkQnV5VGlja2V0QW1vdW50CQBkAgULdGlja2V0UHJpY2UFE2NvbW1pc3Npb25QZXJUaWNrZXQEBmNoYW5nZQkAZQIFCXBtdEFtb3VudAUcYWxsb3dlZEJ1eVByaWNlV2l0aENvbWlzc2lvbgMJAAACBQ9idXlUaWNrZXRBbW91bnQAAAkAAgEJAKwCAgkArAICAgxOb3QgZW5vdWdodCAFDGJ1eUFzc2V0TmFtZQIPIHRvIGJ1eSB0aWNrZXRzAwkBAiE9AgUGY2hhbmdlAAAJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICFldyb25nIHBheW1lbnQuIFRvIGJ1eSAJAKQDAQUWYWxsb3dlZEJ1eVRpY2tldEFtb3VudAIYdGlja2V0cyB5b3UgbmVlZCB0byBwYXkgCQCkAwEFHGFsbG93ZWRCdXlQcmljZVdpdGhDb21pc3Npb24FDGJ1eUFzc2V0TmFtZQQVZnJlZXplQWRkaXRpb25hbEVudHJ5AwUVZnJlZXplQWRkaXRpb25hbFRva2VuBA1mcmVlemVUb2tlbklkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleUZyZWV6ZVRva2VuSWQEFGZyZWV6ZVRva2VuUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFF2tleUZyZWV6ZVRva2VuUGVyVGlja2V0BA0kdDAxNDk0MTE1MDI4CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQED3BtdEFtb3VudEZyZWV6ZQgFDSR0MDE0OTQxMTUwMjgCXzEEEHBtdEFzc2V0SWRGcmVlemUIBQ0kdDAxNDk0MTE1MDI4Al8yBA0kdDAxNTA0NTE1MTM2CQEMZ2V0QXNzZXRJbmZvAQUKcG10QXNzZXRJZAQTcG10RnJlZXplU3RyQXNzZXRJZAgFDSR0MDE1MDQ1MTUxMzYCXzEEEnBtdEZyZWV6ZUFzc2V0TmFtZQgFDSR0MDE1MDQ1MTUxMzYCXzIEEXBtdEZyZWV6ZURlY2ltYWxzCAUNJHQwMTUwNDUxNTEzNgJfMwQQbmVlZEZyZWV6ZVRva2VucwkAaAIFFGZyZWV6ZVRva2VuUGVyVGlja2V0BQ9idXlUaWNrZXRBbW91bnQDAwkBAiE9AgUTcG10RnJlZXplU3RyQXNzZXRJZAUNZnJlZXplVG9rZW5JZAYJAQIhPQIFEG5lZWRGcmVlemVUb2tlbnMFD3BtdEFtb3VudEZyZWV6ZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIQWW91IG5lZWQgdG8gYWRkIAkApAMBBRBuZWVkRnJlZXplVG9rZW5zAgEgBRJwbXRGcmVlemVBc3NldE5hbWUCFCBhcyBhIHNlY29uZCBwYXltZW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckZyZWV6ZVRva2VuBQ9wbXRBbW91bnRGcmVlemUFA25pbAUDbmlsBBh1c2VyQm91Z2h0VGlja2V0c051bWJlcnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFDmtleVVzZXJUaWNrZXRzAgAEFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUTa2V5VGlja2V0TGFzdE51bWJlcgQLYm91Z2h0UmFuZ2UJAKwCAgkArAICCQCkAwEJAGQCBRZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyAAECAS0JAKQDAQkAZAIFFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIFFmFsbG93ZWRCdXlUaWNrZXRBbW91bnQEG25ld1VzZXJCb3VnaHRUaWNrZXRzTnVtYmVycwkArAICBRh1c2VyQm91Z2h0VGlja2V0c051bWJlcnMDCQECIT0CBRh1c2VyQm91Z2h0VGlja2V0c051bWJlcnMCAAkArAICAgEsBQtib3VnaHRSYW5nZQkArAICAgAFC2JvdWdodFJhbmdlBANpbnYDCQAAAgUKYnV5QXNzZXRJZAUEVVNETgkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDGxvY2tOZXV0cmlubwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQlwbXRBbW91bnQFA25pbAAAAwkAAAIFA2ludgUDaW52BAliYXNlRW50cnkJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQJAGQCBRNib3VnaHRUaWNrZXRzQW1vdW50BRZhbGxvd2VkQnV5VGlja2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFE2tleVRpY2tldExhc3ROdW1iZXIJAGQCBRZsYXN0Qm91Z2h0VGlja2V0TnVtYmVyBRZhbGxvd2VkQnV5VGlja2V0QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlVc2VyVGlja2V0cwUbbmV3VXNlckJvdWdodFRpY2tldHNOdW1iZXJzBQNuaWwFFWZyZWV6ZUFkZGl0aW9uYWxFbnRyeQULY2hhbmdlRW50cnkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQFBXJlZklkBQNuaWwFCWJhc2VFbnRyeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARRjb21taXRBY2Nlc3NMaXN0U2FsZQILbGF1bmNocGFkSWQFcmVmSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDSR0MDE3MjIyMTcyOTcJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQJcG10QW1vdW50CAUNJHQwMTcyMjIxNzI5NwJfMQQKcG10QXNzZXRJZAgFDSR0MDE3MjIyMTcyOTcCXzIEDSR0MDE3MzAyMTc0NTIJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUJ1eVRva2VuBApidXlBc3NldElkCAUNJHQwMTczMDIxNzQ1MgJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDE3MzAyMTc0NTICXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDE3MzAyMTc0NTICXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAxNzMwMjE3NDUyAl80BBN1c2VyVXNkbkluTWFya2V0aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBSBrZXlVc2VyQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwAABA91c2RuSW5NYXJrZXRpbmcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRxrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nAAAEEWJvdWdodEFsbG9jYXRpb25zCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRhrZXlVc2VyQm91Z2h0QWxsb2NhdGlvbnMAAAQKY29tbWlzc2lvbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlDb21pc3Npb24ECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQTdG9rZW5zUGVyQWxsb2NhdGlvbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRZrZXlUb2tlbnNQZXJBbGxvY2F0aW9uBA0kdDAxODEyMTE4MjY1CQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUKa2V5QXNzZXRJZAQHdG9rZW5JZAgFDSR0MDE4MTIxMTgyNjUCXzEED3Rva2VuU3RyQXNzZXRJZAgFDSR0MDE4MTIxMTgyNjUCXzIEDnRva2VuQXNzZXROYW1lCAUNJHQwMTgxMjExODI2NQJfMwQNdG9rZW5EZWNpbWFscwgFDSR0MDE4MTIxMTgyNjUCXzQEHGFsbG9jYXRpb25QcmljZVdpdGhDb21pc3Npb24JAGsDCQBrAwUKdG9rZW5QcmljZQUTdG9rZW5zUGVyQWxsb2NhdGlvbgkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgkAZAIAZAUKY29tbWlzc2lvbgBkBAtzdGFydEhlaWdodAkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFDmtleVN0YXJ0SGVpZ2h0BAhkdXJhdGlvbgkBBXZhbHVlAQkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUR1cmF0aW9uAwkBAiE9AgURYWN0aXZlTGF1bmNocGFkSWQFC2xhdW5jaHBhZElkCQACAQI3VGhlcmUgaXMgbm8gYWN0aXZlIGxhdW5jaHBhZCBvciB0aGlzIGxhdW5jaHBhZCBpcyBlbmRlZAMJAGYCBQtzdGFydEhlaWdodAUGaGVpZ2h0CQACAQIeTGF1bmNocGFkIHNhbGUgbm90IHN0YXJ0ZWQgeWV0AwkAZgIFBmhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQhkdXJhdGlvbgkAAgECFExhdW5jaHBhZCBzYWxlIGVuZGVkAwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQIhPQIFCnBtdEFzc2V0SWQFCmJ1eUFzc2V0SWQJAAIBCQCsAgIJAKwCAgIYT25lIGF0dGFjaGVkIHBheW1lbnQgaW4gBQxidXlBc3NldE5hbWUCCSBleHBlY3RlZAMJAGcCBRFib3VnaHRBbGxvY2F0aW9ucwUUbWF4QWxsb2NhdGlvbnNBbW91bnQJAAIBCQCsAgIJAKwCAgIRWW91IGNhbiBidXkgb25seSAJAKQDAQUUbWF4QWxsb2NhdGlvbnNBbW91bnQCC2FsbG9jYXRpb25zAwMJAQIhPQIFHGFsbG9jYXRpb25QcmljZVdpdGhDb21pc3Npb24FCXBtdEFtb3VudAkBAiE9AgkAaAIFHGFsbG9jYXRpb25QcmljZVdpdGhDb21pc3Npb24AAgUJcG10QW1vdW50BwkAAgEJAKwCAgkArAICCQCsAgICMldyb25nIHBheW1lbnQuIFlvdSBjYW4gYnV5IDEgb3IgMiBhbGxvY2F0aW9ucyBmb3IgCQCkAwEFHGFsbG9jYXRpb25QcmljZVdpdGhDb21pc3Npb24FDGJ1eUFzc2V0TmFtZQIPIHBlciBhbGxvY2F0aW9uBBRidXlBbGxvY2F0aW9uc0Ftb3VudAkAaQIFCXBtdEFtb3VudAUcYWxsb2NhdGlvblByaWNlV2l0aENvbWlzc2lvbgQDaW52AwkAAAIFCmJ1eUFzc2V0SWQFBFVTRE4JAPwHBAUSc3Rha2luZ1VTRE5BZGRyZXNzAgxsb2NrTmV1dHJpbm8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUJcG10QW1vdW50BQNuaWwAAAMJAAACBQNpbnYFA2ludgQJYmFzZUVudHJ5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUYa2V5VXNlckJvdWdodEFsbG9jYXRpb25zCQBkAgURYm91Z2h0QWxsb2NhdGlvbnMFFGJ1eUFsbG9jYXRpb25zQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUga2V5VXNlckFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcJAGQCBRN1c2VyVXNkbkluTWFya2V0aW5nBQlwbXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUca2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwkAZAIFD3VzZG5Jbk1hcmtldGluZwUJcG10QW1vdW50BQNuaWwDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQFBXJlZklkBQNuaWwFCWJhc2VFbnRyeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARljb21taXRIaWdoQ29tcGV0aXRpb25TYWxlAgtsYXVuY2hwYWRJZAVyZWZJZAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQNJHQwMjA1MjMyMDY3MwkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQEFdmFsdWUBCQCdCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAULa2V5QnV5VG9rZW4ECmJ1eUFzc2V0SWQIBQ0kdDAyMDUyMzIwNjczAl8xBA1idXlBc3NldFN0cklkCAUNJHQwMjA1MjMyMDY3MwJfMgQMYnV5QXNzZXROYW1lCAUNJHQwMjA1MjMyMDY3MwJfMwQQYnV5QXNzZXREZWNpbWFscwgFDSR0MDIwNTIzMjA2NzMCXzQEC3N0YXJ0SGVpZ2h0CQEFdmFsdWUBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUOa2V5U3RhcnRIZWlnaHQECGR1cmF0aW9uCQEFdmFsdWUBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAULa2V5RHVyYXRpb24EFWJvdWdodEhDVGlja2V0c0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUca2V5VXNlckhDQm91Z2h0VGlja2V0c0Ftb3VudAAABBNoaWdoQ29tcGV0aXRpb25TYWxlCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUWa2V5SGlnaENvbXBldGl0aW9uU2FsZQcECnRva2VuUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUQa2V5UHJpY2VQZXJUb2tlbgQPdG9rZW5zUGVyVGlja2V0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEmtleVRva2Vuc1BlclRpY2tldAQNJHQwMjEyODMyMTQyNwkBFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFzc2V0SWQEB3Rva2VuSWQIBQ0kdDAyMTI4MzIxNDI3Al8xBA90b2tlblN0ckFzc2V0SWQIBQ0kdDAyMTI4MzIxNDI3Al8yBA50b2tlbkFzc2V0TmFtZQgFDSR0MDIxMjgzMjE0MjcCXzMEDXRva2VuRGVjaW1hbHMIBQ0kdDAyMTI4MzIxNDI3Al80BAt0aWNrZXRQcmljZQkAawMFD3Rva2Vuc1BlclRpY2tldAUKdG9rZW5QcmljZQkAbAYACgAABQ10b2tlbkRlY2ltYWxzAAAAAAUERE9XTgQTY29tbWlzc2lvblBlclRpY2tldAkAawMFC3RpY2tldFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFG2tleUhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbgBkBA0kdDAyMTY2MDIyNzkzAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAQJYW1udFRvR2V0CgABQAkAkQMCCgABQAkA/AcEBQxXQVZFU19YVE5fRVgCDGNhbGxGdW5jdGlvbgkAzAgCAhVob3dNYW55WW91R2V0UkVBRE9OTFkJAMwIAgkAzAgCCQCkAwEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQDMCAIBAAUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0AAAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUJYW1udFRvR2V0BQlhbW50VG9HZXQEDXRpY2tldHNBbW91bnQJAGkCBQlhbW50VG9HZXQJAGQCBQt0aWNrZXRQcmljZQUTY29tbWlzc2lvblBlclRpY2tldAMJAAACBQ10aWNrZXRzQW1vdW50AAAJAAIBAiBOb3QgZW5vdWdodCBXQVZFUyB0byBidXkgdGlja2V0cwQQYW1udFRvR2V0VGlja2V0cwkAaAIFDXRpY2tldHNBbW91bnQJAGQCBQt0aWNrZXRQcmljZQUTY29tbWlzc2lvblBlclRpY2tldAQJYW1udFRvUGF5CgABQAkAkQMCCgABQAkA/AcEBQxXQVZFU19YVE5fRVgCDGNhbGxGdW5jdGlvbgkAzAgCAhVob3dNYW55WW91UGF5UkVBRE9OTFkJAMwIAgkAzAgCCQCkAwEFEGFtbnRUb0dldFRpY2tldHMJAMwIAgUKYnV5QXNzZXRJZAUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0AAAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgUJYW1udFRvUGF5BQlhbW50VG9QYXkEAmV4CQD8BwQFDFdBVkVTX1hUTl9FWAIMY2FsbEZ1bmN0aW9uCQDMCAICCGV4Y2hhbmdlCQDMCAIJAMwIAgkApAMBBRBhbW50VG9HZXRUaWNrZXRzBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUJYW1udFRvUGF5BQNuaWwDCQAAAgUCZXgFAmV4BAZjaGFuZ2UJAGUCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUJYW1udFRvUGF5BAZjRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZjaGFuZ2UICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDbmlsBQNuaWwJAJUKAwUQYW1udFRvR2V0VGlja2V0cwUKYnV5QXNzZXRJZAUGY0VudHJ5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCVCgMICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAQJcG10QW1vdW50CAUNJHQwMjE2NjAyMjc5MwJfMQQKcG10QXNzZXRJZAgFDSR0MDIxNjYwMjI3OTMCXzIEC2NoYW5nZUVudHJ5CAUNJHQwMjE2NjAyMjc5MwJfMwMJAQIhPQIFEWFjdGl2ZUxhdW5jaHBhZElkBQtsYXVuY2hwYWRJZAkAAgECN1RoZXJlIGlzIG5vIGFjdGl2ZSBsYXVuY2hwYWQgb3IgdGhpcyBsYXVuY2hwYWQgaXMgZW5kZWQDCQEBIQEFE2hpZ2hDb21wZXRpdGlvblNhbGUJAAIBAjRUaGVyZSBpcyBubyBoaWdoIGNvbXBldGl0aW9uIHNhbGUgZm9yIHRoaXMgbGF1bmNocGFkAwkAZgIFC3N0YXJ0SGVpZ2h0BQZoZWlnaHQJAAIBAh5MYXVuY2hwYWQgc2FsZSBub3Qgc3RhcnRlZCB5ZXQDCQBmAgUGaGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQFCGR1cmF0aW9uCQACAQIUTGF1bmNocGFkIHNhbGUgZW5kZWQDAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBAiE9AgUKcG10QXNzZXRJZAUKYnV5QXNzZXRJZAkAAgEJAKwCAgkArAICAhhPbmUgYXR0YWNoZWQgcGF5bWVudCBpbiAFDGJ1eUFzc2V0TmFtZQIJIGV4cGVjdGVkBA9idXlUaWNrZXRBbW91bnQJAGkCBQlwbXRBbW91bnQJAGQCBQt0aWNrZXRQcmljZQUTY29tbWlzc2lvblBlclRpY2tldAQVYnV5UHJpY2VXaXRoQ29taXNzaW9uCQBoAgUPYnV5VGlja2V0QW1vdW50CQBkAgULdGlja2V0UHJpY2UFE2NvbW1pc3Npb25QZXJUaWNrZXQEBmNoYW5nZQkAZQIFCXBtdEFtb3VudAUVYnV5UHJpY2VXaXRoQ29taXNzaW9uAwkAAAIFD2J1eVRpY2tldEFtb3VudAAACQACAQkArAICCQCsAgICDE5vdCBlbm91Z2h0IAUMYnV5QXNzZXROYW1lAg8gdG8gYnV5IHRpY2tldHMDCQECIT0CBQZjaGFuZ2UAAAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIWV3JvbmcgcGF5bWVudC4gVG8gYnV5IAkApAMBBQ9idXlUaWNrZXRBbW91bnQCGHRpY2tldHMgeW91IG5lZWQgdG8gcGF5IAkApAMBBRVidXlQcmljZVdpdGhDb21pc3Npb24FDGJ1eUFzc2V0TmFtZQQYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlVc2VySENUaWNrZXRzAgAEFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUVa2V5SENUaWNrZXRMYXN0TnVtYmVyBAtib3VnaHRSYW5nZQkArAICCQCsAgIJAKQDAQkAZAIFFmxhc3RCb3VnaHRUaWNrZXROdW1iZXIAAQIBLQkApAMBCQBkAgUWbGFzdEJvdWdodFRpY2tldE51bWJlcgUPYnV5VGlja2V0QW1vdW50BBtuZXdVc2VyQm91Z2h0VGlja2V0c051bWJlcnMJAKwCAgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAwkBAiE9AgUYdXNlckJvdWdodFRpY2tldHNOdW1iZXJzAgAJAKwCAgIBLAULYm91Z2h0UmFuZ2UJAKwCAgIABQtib3VnaHRSYW5nZQQDaW52AwkAAAIFCmJ1eUFzc2V0SWQFBFVTRE4JAPwHBAUSc3Rha2luZ1VTRE5BZGRyZXNzAgxsb2NrTmV1dHJpbm8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUJcG10QW1vdW50BQNuaWwAAAMJAAACBQNpbnYFA2ludgQJYmFzZUVudHJ5CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRxrZXlVc2VySENCb3VnaHRUaWNrZXRzQW1vdW50CQBkAgUVYm91Z2h0SENUaWNrZXRzQW1vdW50BQ9idXlUaWNrZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUVa2V5SENUaWNrZXRMYXN0TnVtYmVyCQBkAgUWbGFzdEJvdWdodFRpY2tldE51bWJlcgUPYnV5VGlja2V0QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlVc2VySENUaWNrZXRzBRtuZXdVc2VyQm91Z2h0VGlja2V0c051bWJlcnMFA25pbAULY2hhbmdlRW50cnkDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlVc2VyUmVmSWQFBXJlZklkBQNuaWwFCWJhc2VFbnRyeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGlzZQMLbGF1bmNocGFkSWQJdnJmSGVpZ2h0CnNlY3JldFdvcmQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkECXNhdmVkSGFzaAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQ1rZXlWZXJpZnlIYXNoBAhjYWxjSGFzaAkA2AQBCQD3AwEJAMsBAgkAmgMBBQl2cmZIZWlnaHQJAJsDAQUKc2VjcmV0V29yZAMJAQIhPQIFCGNhbGNIYXNoBQlzYXZlZEhhc2gJAAIBAhx2cmYgSGVpZ2h0IGhhc2ggbm90IG1hdGNoaW5nBA0kdDAyNTc0NjI1ODk2CQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgQKYnV5QXNzZXRJZAgFDSR0MDI1NzQ2MjU4OTYCXzEEDWJ1eUFzc2V0U3RySWQIBQ0kdDAyNTc0NjI1ODk2Al8yBAxidXlBc3NldE5hbWUIBQ0kdDAyNTc0NjI1ODk2Al8zBBBidXlBc3NldERlY2ltYWxzCAUNJHQwMjU3NDYyNTg5NgJfNAQOcHJvamVjdEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUKa2V5QWRkcmVzcwQKY29tbWlzc2lvbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlDb21pc3Npb24EDGNvbW1pc3Npb25IQwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRtrZXlIaWdoQ29tcGV0aXRpb25Db21pc3Npb24EEnRyYW5zZmVyZWRCdXlBc3NldAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFE2tleVRyYW5zZmVyQnV5QXNzZXQAAAQbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFGmtleVRvdGFsQW1vdW50QnV5QXNzZXRTb2xkBBZzd29wZmlIQ0J1eUFzc2V0QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUca2V5VG90YWxBbW91bnRCdXlBc3NldFNvbGRIQwAABBZzd29wZmlNZW1iZXJzQ29taXNzaW9uCQBrAwUbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50BQpjb21taXNzaW9uAGQEEXN3b3BmaUhDQ29taXNzaW9uCQBrAwUWc3dvcGZpSENCdXlBc3NldEFtb3VudAUMY29tbWlzc2lvbkhDAGQEHnRvdGFsQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBSVrZXlBbW91bnRCdXlBc3NldEluTWFya2V0aW5nRmluYWxpemVkBBJtYXJrZXRpbmdDb21pc3Npb24JAGsDBR50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcFCmNvbW1pc3Npb24AZAQNdW5zdGFrZUFtb3VudAkAZQIJAGQCCQBkAgkAZAIJAGQCCQBkAgUbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50BR50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcFFnN3b3BmaU1lbWJlcnNDb21pc3Npb24FEm1hcmtldGluZ0NvbWlzc2lvbgUWc3dvcGZpSENCdXlBc3NldEFtb3VudAURc3dvcGZpSENDb21pc3Npb24FEnRyYW5zZmVyZWRCdXlBc3NldAMJAGYCBRJ0cmFuc2ZlcmVkQnV5QXNzZXQJAGQCCQBkAgUbc3dvcGZpTWVtYmVyc0J1eUFzc2V0QW1vdW50BR50b3RhbEFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcFFnN3b3BmaUhDQnV5QXNzZXRBbW91bnQJAAIBAihDYW4ndCB0cmFuc2ZlciBuZWdhdGl2ZSB2YWx1ZSB0byBwcm9qZWN0BANpbnYDCQAAAgUKYnV5QXNzZXRJZAUEVVNETgkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDnVubG9ja05ldXRyaW5vCQDMCAIFDXVuc3Rha2VBbW91bnQJAMwIAgkA2AQBBQRVU0ROBQNuaWwFA25pbAAAAwkAAAIFA2ludgUDaW52CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEWtleUZpbmFsaXNlSGVpZ2h0BQZoZWlnaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOcHJvamVjdEFkZHJlc3MJAGUCCQBkAgkAZAIFG3N3b3BmaU1lbWJlcnNCdXlBc3NldEFtb3VudAUWc3dvcGZpSENCdXlBc3NldEFtb3VudAUedG90YWxBbW91bnRCdXlBc3NldEluTWFya2V0aW5nBRJ0cmFuc2ZlcmVkQnV5QXNzZXQFCmJ1eUFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUQY29tbWlzc2lvbldhbGxldAkAZAIJAGQCBRZzd29wZmlNZW1iZXJzQ29taXNzaW9uBRJtYXJrZXRpbmdDb21pc3Npb24FEXN3b3BmaUhDQ29taXNzaW9uBQpidXlBc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFY2xhaW0BC2xhdW5jaHBhZElkCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA1ib3VnaHRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRprZXlVc2VyQm91Z2h0VGlja2V0c0Ftb3VudAAABA9ib3VnaHRIQ1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQAAAQRYm91Z2h0QWxsb2NhdGlvbnMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFGGtleVVzZXJCb3VnaHRBbGxvY2F0aW9ucwAABA91c2VyQ2xhaW1TdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEmtleVVzZXJDbGFpbVN0YXR1cwcEDmZpbmFsaXplSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAURa2V5RmluYWxpc2VIZWlnaHQAAAMJAAACBQ5maW5hbGl6ZUhlaWdodAAACQACAQIxWW91IGNhbid0IGNsYWltIGJlY2F1c2UgcmVzdWx0cyBhcmUgbm90IGZpbmFsaXplZAMFD3VzZXJDbGFpbVN0YXR1cwkAAgECF1lvdSBhcmUgYWxyZWFkeSBjbGFpbWVkAwMDCQAAAgUNYm91Z2h0VGlja2V0cwAACQAAAgURYm91Z2h0QWxsb2NhdGlvbnMAAAcJAAACBQ9ib3VnaHRIQ1RpY2tldHMAAAcJAAIBAi5Zb3UgY2FuJ3QgY2xhaW0gYmVjYXVzZSB5b3UgZG9uJ3QgYnV5IGFueXRoaW5nBA0kdDAyODk4MDI5MTU3CQEWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlCdXlUb2tlbgkA2AQBBQRVU0ROBApidXlBc3NldElkCAUNJHQwMjg5ODAyOTE1NwJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDI4OTgwMjkxNTcCXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDI4OTgwMjkxNTcCXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAyODk4MDI5MTU3Al80BA13b25uZWRUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRprZXlVc2VyV2lubmVkVGlja2V0c0Ftb3VudAAABA93b25uZWRIQ1RpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFKWtleVVzZXJXaW5uZWRIaWdoQ29tcGV0aXRpb25UaWNrZXRzQW1vdW50AAAEFGF3YWlsYWJsZUFsbG9jYXRpb25zCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRtrZXlVc2VyQXZhaWxhYmxlQWxsb2NhdGlvbnMAAAQKY29tbWlzc2lvbgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQxrZXlDb21pc3Npb24EDGNvbW1pc3Npb25IQwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFG2tleUhpZ2hDb21wZXRpdGlvbkNvbWlzc2lvbgAABBJhbGxvd2VkQWxsb2NhdGlvbnMJAJcDAQkAzAgCBRFib3VnaHRBbGxvY2F0aW9ucwkAzAgCBRRhd2FpbGFibGVBbGxvY2F0aW9ucwUDbmlsBAp0b2tlblByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFEGtleVByaWNlUGVyVG9rZW4ED3Rva2Vuc1BlclRpY2tldAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRJrZXlUb2tlbnNQZXJUaWNrZXQEDSR0MDMwMDczMzAyMTcJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQprZXlBc3NldElkBAd0b2tlbklkCAUNJHQwMzAwNzMzMDIxNwJfMQQPdG9rZW5TdHJBc3NldElkCAUNJHQwMzAwNzMzMDIxNwJfMgQOdG9rZW5Bc3NldE5hbWUIBQ0kdDAzMDA3MzMwMjE3Al8zBA10b2tlbkRlY2ltYWxzCAUNJHQwMzAwNzMzMDIxNwJfNAQLdGlja2V0UHJpY2UJAGsDBQ90b2tlbnNQZXJUaWNrZXQFCnRva2VuUHJpY2UJAGwGAAoAAAUNdG9rZW5EZWNpbWFscwAAAAAFBERPV04EE3Rva2Vuc1BlckFsbG9jYXRpb24JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgQUdHJhbnNmZXJUb2tlbnNBbW91bnQJAGQCCQBkAgkAaAIFDXdvbm5lZFRpY2tldHMFD3Rva2Vuc1BlclRpY2tldAkAaAIFEmFsbG93ZWRBbGxvY2F0aW9ucwUTdG9rZW5zUGVyQWxsb2NhdGlvbgkAaAIFD3dvbm5lZEhDVGlja2V0cwUPdG9rZW5zUGVyVGlja2V0BBtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMJAGgCCQBlAgURYm91Z2h0QWxsb2NhdGlvbnMFEmFsbG93ZWRBbGxvY2F0aW9ucwUTdG9rZW5zUGVyQWxsb2NhdGlvbgQWYnV5QXNzZXRGb3JBbGxvY2F0aW9ucwkAawMJAGsDBRtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMFCnRva2VuUHJpY2UJAGwGAAoAAAUNdG9rZW5EZWNpbWFscwAAAAAFBERPV04JAGQCAGQFCmNvbW1pc3Npb24AZAQaYnV5QXNzZXRGb3JVbndvbm5lZFRpY2tldHMJAGsDCQBoAgkAZQIFDWJvdWdodFRpY2tldHMFDXdvbm5lZFRpY2tldHMFC3RpY2tldFByaWNlCQBkAgBkBQpjb21taXNzaW9uAGQEHGJ1eUFzc2V0Rm9ySENVbndvbm5lZFRpY2tldHMJAGsDCQBoAgkAZQIFD2JvdWdodEhDVGlja2V0cwUPd29ubmVkSENUaWNrZXRzBQt0aWNrZXRQcmljZQkAZAIAZAUMY29tbWlzc2lvbkhDAGQED2NsYWltZWRCdXlUb2tlbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUXa2V5VXNlckNsYWltZWRCdXlUb2tlbnMAAAMDAwkAZgIAAAUWYnV5QXNzZXRGb3JBbGxvY2F0aW9ucwYJAGYCAAAFGmJ1eUFzc2V0Rm9yVW53b25uZWRUaWNrZXRzBgkAZgIAAAUcYnV5QXNzZXRGb3JIQ1Vud29ubmVkVGlja2V0cwkAAgECUkVycm9yIHdpdGggYWxsb3dlZCBhbGxvY2F0aW9uIHBhcmFtIG9yIHdvbm5lZCB0aWNrZXRzIHBhcmFtIHBsZWFzZSBjb250YWN0IHN1cHBvcnQEFnJldHVybmVkQnV5QXNzZXRBbW91bnQJAGUCCQBkAgkAZAIFGmJ1eUFzc2V0Rm9yVW53b25uZWRUaWNrZXRzBRxidXlBc3NldEZvckhDVW53b25uZWRUaWNrZXRzBRZidXlBc3NldEZvckFsbG9jYXRpb25zBQ9jbGFpbWVkQnV5VG9rZW4EEHRyYW5zZmVyQnV5QXNzZXQDCQBmAgUWcmV0dXJuZWRCdXlBc3NldEFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUWcmV0dXJuZWRCdXlBc3NldEFtb3VudAUKYnV5QXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFF2tleVVzZXJDbGFpbWVkQnV5VG9rZW5zBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50BQNuaWwFA25pbAQDaW52AwMJAGYCBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50AAAJAAACBQpidXlBc3NldElkBQRVU0ROBwkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDnVubG9ja05ldXRyaW5vCQDMCAIFFnJldHVybmVkQnV5QXNzZXRBbW91bnQJAMwIAgkA2AQBBQRVU0ROBQNuaWwFA25pbAAAAwkAAAIFA2ludgUDaW52BA1jbGFpbWVkUGFyYW1zCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQ5rZXlDbGFpbVBhcmFtcwIIY2xhaW1BbGwCASwDCQAAAgkAkQMCBQ1jbGFpbWVkUGFyYW1zAAACCGNsYWltQWxsBA50cmFuc2ZlclRva2VucwMJAGYCBRR0cmFuc2ZlclRva2Vuc0Ftb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUUdHJhbnNmZXJUb2tlbnNBbW91bnQFB3Rva2VuSWQFA25pbAUDbmlsCQDOCAIJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFEmtleVVzZXJDbGFpbVN0YXR1cwYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRRrZXlVc2VyQ2xhaW1lZFRva2VucwUUdHJhbnNmZXJUb2tlbnNBbW91bnQFA25pbAUOdHJhbnNmZXJUb2tlbnMFEHRyYW5zZmVyQnV5QXNzZXQDCQAAAgkAkQMCBQ1jbGFpbWVkUGFyYW1zAAACC2NsYWltUGVyaW9kBA1jbGFpbWVkVG9rZW5zCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFC2xhdW5jaHBhZElkBRRrZXlVc2VyQ2xhaW1lZFRva2VucwAABAx1bmxvY2tQZXJpb2QJAQV2YWx1ZQEJALYJAQkAkQMCBQ1jbGFpbWVkUGFyYW1zAAIEC2Jsb2NrSGVpZ2h0CQBkAgkBBXZhbHVlAQkAtgkBCQCRAwIFDWNsYWltZWRQYXJhbXMAAwUOZmluYWxpemVIZWlnaHQEDHVubG9ja0hlaWdodAkAZAIFDHVubG9ja1BlcmlvZAULYmxvY2tIZWlnaHQEEmFsbG93ZWRTdGFydEFtb3VudAkAawMFFHRyYW5zZmVyVG9rZW5zQW1vdW50CQEFdmFsdWUBCQC2CQEJAJEDAgUNY2xhaW1lZFBhcmFtcwABAGQEE2FsbG93ZWRUb2tlbnNBbW91bnQJAGQCBRJhbGxvd2VkU3RhcnRBbW91bnQDCQBmAgUGaGVpZ2h0BQtibG9ja0hlaWdodAkAZQIJAGsDCQBlAgUUdHJhbnNmZXJUb2tlbnNBbW91bnQFEmFsbG93ZWRTdGFydEFtb3VudAkAZQIJAJcDAQkAzAgCBQZoZWlnaHQJAMwIAgUMdW5sb2NrSGVpZ2h0BQNuaWwFC2Jsb2NrSGVpZ2h0BQx1bmxvY2tQZXJpb2QFDWNsYWltZWRUb2tlbnMJAGUCAAAFDWNsYWltZWRUb2tlbnMEEGNsYWltU3RhdHVzRW50cnkDCQBnAgUUdHJhbnNmZXJUb2tlbnNBbW91bnQJAGQCBQ1jbGFpbWVkVG9rZW5zBRNhbGxvd2VkVG9rZW5zQW1vdW50CQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckNsYWltU3RhdHVzBgUDbmlsBQNuaWwDAwkAZgIFE2FsbG93ZWRUb2tlbnNBbW91bnQAAAYJAGYCBRZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50AAAEDnRyYW5zZmVyVG9rZW5zAwkAZgIFE2FsbG93ZWRUb2tlbnNBbW91bnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQULbGF1bmNocGFkSWQFFGtleVVzZXJDbGFpbWVkVG9rZW5zCQBkAgUNY2xhaW1lZFRva2VucwUTYWxsb3dlZFRva2Vuc0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFE2FsbG93ZWRUb2tlbnNBbW91bnQFB3Rva2VuSWQFA25pbAUDbmlsCQDOCAIFEHRyYW5zZmVyQnV5QXNzZXQFDnRyYW5zZmVyVG9rZW5zCQACAQIQTm90aGluZyB0byBjbGFpbQkAAgECFlVua25vd24gY2xhaW0gZnVuY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQY2xhaW1GcmVlemVUb2tlbgELbGF1bmNocGFkSWQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEFWZyZWV6ZUFkZGl0aW9uYWxUb2tlbgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFGGtleUZyZWV6ZUFkZGl0aW9uYWxUb2tlbgcDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAURa2V5RmluYWxpc2VIZWlnaHQJAAIBAjFZb3UgY2FuJ3QgY2xhaW0gYmVjYXVzZSByZXN1bHRzIGFyZSBub3QgZmluYWxpemVkAwkBASEBBRVmcmVlemVBZGRpdGlvbmFsVG9rZW4JAAIBAjlUaGVyZSBhcmUgbm8gYWRkaXRpb25hbCB0b2tlbiBmcmVlemluZyBmb3IgdGhpcyBsYXVuY2hwYWQEB3Rva2VuSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRBrZXlGcmVlemVUb2tlbklkBBF1c2VyVG9rZW5zRnJlZXplZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckZyZWV6ZVRva2VuAAAEC3N0YXJ0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUOa2V5U3RhcnRIZWlnaHQAAAQIZHVyYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBQtrZXlEdXJhdGlvbgAABBNmcmVlemVUb2tlbkR1cmF0aW9uCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFFmtleUZyZWV6ZVRva2VuRHVyYXRpb24EDmJsb2NrRW5kSGVpZ2h0CQBkAgkAZAIFC3N0YXJ0SGVpZ2h0BQhkdXJhdGlvbgUTZnJlZXplVG9rZW5EdXJhdGlvbgMJAAACBRF1c2VyVG9rZW5zRnJlZXplZAAACQACAQI4WW91IGFyZSBhbHJlYWR5IGNsYWltZWQgeW91ciB0b2tlbnMgb3Igbm90IHBhaWQgYW55dGhpbmcDCQBmAgUOYmxvY2tFbmRIZWlnaHQFBmhlaWdodAkAAgEJAKwCAgIZWW91ciB0b2tlbnMgZnJlZXplZCB0ZWVsIAkApAMBBQ5ibG9ja0VuZEhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEXVzZXJUb2tlbnNGcmVlemVkBQd0b2tlbklkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQtsYXVuY2hwYWRJZAUSa2V5VXNlckZyZWV6ZVRva2VuAAAFA25pbAFpARB0cmFuc2ZlckJ1eUFzc2V0AgtsYXVuY2hwYWRJZAZhbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkEDnByb2plY3RBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFCmtleUFkZHJlc3MEDSR0MDM2MzgyMzY1MzIJARZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAQkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIJAKQDAQULbGF1bmNocGFkSWQFC2tleUJ1eVRva2VuBApidXlBc3NldElkCAUNJHQwMzYzODIzNjUzMgJfMQQNYnV5QXNzZXRTdHJJZAgFDSR0MDM2MzgyMzY1MzICXzIEDGJ1eUFzc2V0TmFtZQgFDSR0MDM2MzgyMzY1MzICXzMEEGJ1eUFzc2V0RGVjaW1hbHMIBQ0kdDAzNjM4MjM2NTMyAl80BBJ0cmFuc2ZlcmVkQnV5QXNzZXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCkAwEFC2xhdW5jaHBhZElkBRNrZXlUcmFuc2ZlckJ1eUFzc2V0AAAEA2ludgMDCQBmAgUGYW1vdW50AAAJAAACBQpidXlBc3NldElkBQRVU0ROBwkA/AcEBRJzdGFraW5nVVNETkFkZHJlc3MCDnVubG9ja05ldXRyaW5vCQDMCAIFBmFtb3VudAkAzAgCCQDYBAEFBFVTRE4FA25pbAUDbmlsAAADCQAAAgUDaW52BQNpbnYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkApAMBBQtsYXVuY2hwYWRJZAUTa2V5VHJhbnNmZXJCdXlBc3NldAkAZAIFEnRyYW5zZmVyZWRCdXlBc3NldAUGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnByb2plY3RBZGRyZXNzBQZhbW91bnQFCmJ1eUFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEFBmFjdGl2ZQkAAgECFURBcHAgYWxyZWFkeSBpbmFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUJa2V5QWN0aXZlBwUDbmlsAWkBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMFBmFjdGl2ZQkAAgECE0RBcHAgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCWtleUFjdGl2ZQYFA25pbAECdHgBBnZlcmlmeQAEE211bHRpU2lnbmVkQnlBZG1pbnMEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgQNc2lnbmVkQnlBZG1pbgMDAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkyBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkzBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUSYWRtaW5QdWJLZXlTdGFraW5nBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAg9EYXRhVHJhbnNhY3Rpb24EA2R0eAUHJG1hdGNoMAMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlBSFrZXlMYXVuY2hwYWREYXRhVHJhbnNhY3Rpb25TdGF0dXMHBQ1zaWduZWRCeUFkbWluBwUTbXVsdGlTaWduZWRCeUFkbWlucyn+Oew=", "height": 2723204, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6fXQU633NvXpTrp9JYc1tekuydQtKwEk2fu57G21dN1x Next: none Diff:
OldNewDifferences
334334 let bQ = invoke(ak, "callFunction", ["exchange", [toString(bc)]], [AttachedPayment(unit, bd)])
335335 if ((bQ == bQ))
336336 then {
337- let bR = (aH.payments[0].amount - bc)
337+ let bR = (aH.payments[0].amount - bd)
338338 let bS = if ((bR > 0))
339339 then [ScriptTransfer(aH.caller, bR, aH.payments[0].assetId)]
340340 else nil
542542 let bQ = invoke(ak, "callFunction", ["exchange", [toString(bc)]], [AttachedPayment(unit, bd)])
543543 if ((bQ == bQ))
544544 then {
545- let bR = (aH.payments[0].amount - bc)
545+ let bR = (aH.payments[0].amount - bd)
546546 let bS = if ((bR > 0))
547547 then [ScriptTransfer(aH.caller, bR, aH.payments[0].assetId)]
548548 else nil
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "admin_pub_1"
99
1010 let d = "admin_pub_2"
1111
1212 let e = "admin_pub_3"
1313
1414 let f = "launchpad_data_transaction_status"
1515
1616 let g = "launchpad_next_id"
1717
1818 let h = "launchpad_active_id"
1919
2020 let i = "init_caller"
2121
2222 let j = "_address"
2323
2424 let k = "_init_height"
2525
2626 let l = "_start_height"
2727
2828 let m = "_finalise_height"
2929
3030 let n = "_comission"
3131
3232 let o = "_asset_id"
3333
3434 let p = "_total_token_amount"
3535
3636 let q = "_total_buy_asset_sold"
3737
3838 let r = "_tokens_per_ticket"
3939
4040 let s = "_price_per_token"
4141
4242 let t = "_swop_per_ticket"
4343
4444 let u = "_tickets_swopfi_members"
4545
4646 let v = "_tokens_access_list"
4747
4848 let w = "_tokens_per_allocation"
4949
5050 let x = "_ticket_last_number"
5151
5252 let y = "_GSwop_amount"
5353
5454 let z = "_ref_id"
5555
5656 let A = "_verify_hash"
5757
5858 let B = "_duration"
5959
6060 let C = "_total_purchased_buy_asset_in_marketing"
6161
6262 let D = "_total_purchased_buy_asset_in_marketing_finalized"
6363
6464 let E = "_transfer_buy_asset"
6565
6666 let F = "_freeze_swop_duration"
6767
6868 let G = "_freeze_additional_token"
6969
7070 let H = "_freeze_token_id"
7171
7272 let I = "_freeze_token_duration"
7373
7474 let J = "_freeze_token_per_ticket"
7575
7676 let K = "_buy_token"
7777
7878 let L = "_claim_params"
7979
8080 let M = "_high_competition_comission"
8181
8282 let N = "_high_competition_sale"
8383
8484 let O = "_high_competition_ticket_last_number"
8585
8686 let P = "_tickets_high_competition"
8787
8888 let Q = "_total_buy_asset_sold_high_competition"
8989
9090 let R = "_claimed_tokens"
9191
9292 let S = "_claimed_buy_tokens"
9393
9494 let T = "_bought_tickets"
9595
9696 let U = "_tickets_number"
9797
9898 let V = "_tickets_number_high_competition"
9999
100100 let W = "_bought_tickets_high_competition"
101101
102102 let X = "_available_purchase_marketing"
103103
104104 let Y = "_purchased_buy_asset_in_marketing"
105105
106106 let Z = "_bought_allocations"
107107
108108 let aa = "_claim_status"
109109
110110 let ab = "_tickets_result"
111111
112112 let ac = "_tickets_result_high_competition"
113113
114114 let ad = "_freeze_token_amount"
115115
116116 let ae = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
117117
118118 let af = Address(base58'3N8E9LU71MDkdP8FWtbP4TBXCNhoc15hWfs')
119119
120120 let ag = Address(base58'3N2eueE5vLLKe8jXuBDbdbKcPaH36yG1Had')
121121
122122 let ah = Address(base58'3N8STSY7dWpBYLiCimEQMkRizyWePSX3qQx')
123123
124124 let ai = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
125125
126126 let aj = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
127127
128128 let ak = Address(base58'3MqjSoPUdGHaan9uhxwTnFw1uH7uZ8dgt8f')
129129
130130 let al = 2
131131
132132 let am = valueOrElse(getIntegerValue(this, h), -1)
133133
134134 func an (ao) = {
135135 let ap = getString(ae, ao)
136136 if ($isInstanceOf(ap, "String"))
137137 then {
138138 let aq = ap
139139 fromBase58String(aq)
140140 }
141141 else {
142142 let ar = ap
143143 throw("Admin public key is empty")
144144 }
145145 }
146146
147147
148148 let as = an(c)
149149
150150 let at = an(d)
151151
152152 let au = an(e)
153153
154154 func av (aw) = {
155155 let ap = aw
156156 if ($isInstanceOf(ap, "ByteVector"))
157157 then {
158158 let ax = ap
159159 let ay = toBase58String(ax)
160160 let az = valueOrErrorMessage(assetInfo(ax), (("Asset " + ay) + " doesn't exist"))
161161 $Tuple3(ay, az.name, az.decimals)
162162 }
163163 else if ($isInstanceOf(ap, "Unit"))
164164 then {
165165 let aA = ap
166166 $Tuple3("WAVES", "WAVES", 8)
167167 }
168168 else throw("Match error")
169169 }
170170
171171
172172 func aB () = valueOrElse(getInteger(this, g), 1)
173173
174174
175175 func aC () = valueOrElse(getInteger(ah, ((("rpd_balance_" + toBase58String(ai)) + "_") + toString(this))), 0)
176176
177177
178178 let aD = valueOrElse(getBoolean(this, a), true)
179179
180180 let aE = valueOrElse(getBoolean(ae, b), true)
181181
182182 func aF () = if (if (aD)
183183 then aE
184184 else false)
185185 then unit
186186 else throw("DApp is inactive at this moment")
187187
188188
189189 func aG (aH) = if (containsElement([as, at, au], aH.callerPublicKey))
190190 then unit
191191 else throw("Only admin can call this function")
192192
193193
194194 func aI (aJ) = if ((aJ == "WAVES"))
195195 then $Tuple4(unit, "WAVES", "WAVES", 8)
196196 else {
197197 let ay = aJ
198198 let ax = fromBase58String(aJ)
199199 let az = valueOrErrorMessage(assetInfo(ax), (("Asset " + ay) + " doesn't exist"))
200200 $Tuple4(ax, ay, az.name, az.decimals)
201201 }
202202
203203
204204 func aK (aL,aM,aN) = {
205205 let aO = aI(value(getString(this, (toString(aL) + K))))
206206 let aP = aO._1
207207 let aQ = aO._2
208208 let aR = aO._3
209209 let aS = aO._4
210210 let aT = getIntegerValue(this, (toString(aL) + s))
211211 let aU = getIntegerValue(this, (toString(aL) + r))
212212 let aV = aI(getStringValue(this, (toString(aL) + o)))
213213 let aW = aV._1
214214 let aX = aV._2
215215 let aY = aV._3
216216 let aZ = aV._4
217217 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
218218 let bb = if ((aN == 1))
219219 then fraction(ba, getIntegerValue(this, (toString(aL) + n)), 100)
220220 else fraction(ba, getIntegerValue(this, (toString(aL) + M)), 100)
221221 let bc = (aM * (ba + bb))
222222 let bd = {
223223 let be = ({
224224 let be = invoke(ak, "callFunction", ["howManyYouPayREADONLY", [toString(bc), aP]], nil)
225225 if ($isInstanceOf(be, "List[Any]"))
226226 then be
227227 else throw(($getType(be) + " couldn't be cast to List[Any]"))
228228 })[0]
229229 if ($isInstanceOf(be, "Int"))
230230 then be
231231 else throw(($getType(be) + " couldn't be cast to Int"))
232232 }
233233 if ((bd == bd))
234234 then fraction(bd, 101, 100)
235235 else throw("Strict value is not equal to itself.")
236236 }
237237
238238
239239 @Callable(aH)
240240 func hashingRandom (aL,bf) = valueOrElse(aF(), valueOrElse(aG(aH), [StringEntry((toString(aL) + A), bf)]))
241241
242242
243243
244244 @Callable(aH)
245245 func initCaller (bg) = valueOrElse(aF(), valueOrElse(aG(aH), [StringEntry(i, bg)]))
246246
247247
248248
249249 @Callable(aH)
250250 func init (bh,bi,bj,bk,bl,aU,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx) = valueOrElse(aF(), if ((toString(aH.caller) != valueOrElse(getString(this, i), "")))
251251 then throw("Only project admin can call init function")
252252 else if ((size(aH.payments) != 1))
253253 then throw("One attached payment expected")
254254 else if ((height > bi))
255255 then throw("Start height must be greater than blockchain height")
256256 else if (if (bw)
257257 then (size(bx) != 3)
258258 else false)
259259 then throw("Freeze params list must have 3 items")
260260 else {
261261 let aL = aB()
262262 let by = toString(aL)
263263 let bz = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
264264 let bA = bz._1
265265 let bB = bz._2
266266 let bC = av(bB)
267267 let bD = bC._1
268268 let bE = bC._2
269269 let bF = bC._3
270270 let bG = if (bw)
271271 then [BooleanEntry((by + G), true), StringEntry((by + H), bx[0]), IntegerEntry((by + I), parseIntValue(bx[1])), IntegerEntry((by + J), parseIntValue(bx[2]))]
272272 else nil
273273 ([IntegerEntry((bD + "_launchpad"), aL), IntegerEntry(g, (aL + 1)), StringEntry((by + j), bh), IntegerEntry((by + k), height), IntegerEntry((by + l), bi), IntegerEntry((by + B), bj), StringEntry((by + K), bk), IntegerEntry((by + F), br), IntegerEntry((by + p), bA), StringEntry((by + o), bD), IntegerEntry((by + n), bl), IntegerEntry((by + x), 0), IntegerEntry((by + O), 0), IntegerEntry((by + r), aU), IntegerEntry((by + s), bm), IntegerEntry((by + t), bq), IntegerEntry((by + u), bn), IntegerEntry((by + v), bo), IntegerEntry((by + w), bp), StringEntry((by + L), makeString(bs, ",")), BooleanEntry((by + N), bt), IntegerEntry((by + M), bu), IntegerEntry((by + P), bv), IntegerEntry(h, aL), StringEntry(i, "")] ++ bG)
274274 })
275275
276276
277277
278278 @Callable(aH)
279279 func commitSwopfiSale (aL,bH) = valueOrElse(aF(), {
280280 let aT = getIntegerValue(this, (toString(aL) + s))
281281 let aU = getIntegerValue(this, (toString(aL) + r))
282282 let bI = aI(getStringValue(this, (toString(aL) + o)))
283283 let aW = bI._1
284284 let aX = bI._2
285285 let aY = bI._3
286286 let aZ = bI._4
287287 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
288288 let bb = fraction(ba, getIntegerValue(this, (toString(aL) + n)), 100)
289289 let bJ = aI(value(getString(this, (toString(aL) + K))))
290290 let aP = bJ._1
291291 let aQ = bJ._2
292292 let aR = bJ._3
293293 let aS = bJ._4
294294 let bK = valueOrElse(getInteger(af, (toString(aH.caller) + y)), 0)
295295 let bL = (bK / getIntegerValue(this, (toString(aL) + t)))
296296 let bM = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + T)), 0)
297297 let bN = (bL - bM)
298298 let bi = value(getInteger(this, (toString(aL) + l)))
299299 let bj = value(getInteger(this, (toString(aL) + B)))
300300 let bw = valueOrElse(getBoolean(this, (toString(aL) + G)), false)
301301 let bO = if ((aH.payments[0].assetId == unit))
302302 then {
303303 let bP = {
304304 let be = ({
305305 let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), base58'']], nil)
306306 if ($isInstanceOf(be, "List[Any]"))
307307 then be
308308 else throw(($getType(be) + " couldn't be cast to List[Any]"))
309309 })[0]
310310 if ($isInstanceOf(be, "Int"))
311311 then be
312312 else throw(($getType(be) + " couldn't be cast to Int"))
313313 }
314314 if ((bP == bP))
315315 then {
316316 let aM = (bP / (ba + bb))
317317 if ((aM == 0))
318318 then throw("Not enought WAVES to buy tickets")
319319 else {
320320 let bc = (aM * (ba + bb))
321321 let bd = {
322322 let be = ({
323323 let be = invoke(ak, "callFunction", ["howManyYouPayREADONLY", [toString(bc), aP]], nil)
324324 if ($isInstanceOf(be, "List[Any]"))
325325 then be
326326 else throw(($getType(be) + " couldn't be cast to List[Any]"))
327327 })[0]
328328 if ($isInstanceOf(be, "Int"))
329329 then be
330330 else throw(($getType(be) + " couldn't be cast to Int"))
331331 }
332332 if ((bd == bd))
333333 then {
334334 let bQ = invoke(ak, "callFunction", ["exchange", [toString(bc)]], [AttachedPayment(unit, bd)])
335335 if ((bQ == bQ))
336336 then {
337- let bR = (aH.payments[0].amount - bc)
337+ let bR = (aH.payments[0].amount - bd)
338338 let bS = if ((bR > 0))
339339 then [ScriptTransfer(aH.caller, bR, aH.payments[0].assetId)]
340340 else nil
341341 $Tuple3(bc, aP, bS)
342342 }
343343 else throw("Strict value is not equal to itself.")
344344 }
345345 else throw("Strict value is not equal to itself.")
346346 }
347347 }
348348 else throw("Strict value is not equal to itself.")
349349 }
350350 else $Tuple3(aH.payments[0].amount, aH.payments[0].assetId, nil)
351351 let bA = bO._1
352352 let bB = bO._2
353353 let bT = bO._3
354354 if ((am != aL))
355355 then throw("There is no active launchpad or this launchpad is ended")
356356 else if ((bi > height))
357357 then throw("Launchpad sale not started yet")
358358 else if ((height > (bi + bj)))
359359 then throw("Launchpad sale ended")
360360 else if (if (!(bw))
361361 then if ((size(aH.payments) != 1))
362362 then true
363363 else (bB != aP)
364364 else false)
365365 then throw((("One attached payment in " + aR) + " expected"))
366366 else if (if (bw)
367367 then if ((size(aH.payments) != 2))
368368 then true
369369 else (bB != aP)
370370 else false)
371371 then {
372372 let bU = getStringValue(this, (toString(aL) + H))
373373 throw(((("Two attached payments expected: First in " + aR) + ", second in ") + bU))
374374 }
375375 else if (if ((0 >= bL))
376376 then true
377377 else (0 >= bN))
378378 then throw("Not enought SWOP in staking to buy tickets")
379379 else {
380380 let bV = (bA / (ba + bb))
381381 let bW = min([bV, bN])
382382 let bX = (bW * (ba + bb))
383383 let bR = (bA - bX)
384384 if ((bV == 0))
385385 then throw((("Not enought " + aR) + " to buy tickets"))
386386 else if ((bR != 0))
387387 then throw((((("Wrong payment. To buy " + toString(bW)) + "tickets you need to pay ") + toString(bX)) + aR))
388388 else {
389389 let bG = if (bw)
390390 then {
391391 let bU = getStringValue(this, (toString(aL) + H))
392392 let bY = getIntegerValue(this, (toString(aL) + J))
393393 let bZ = $Tuple2(aH.payments[1].amount, aH.payments[1].assetId)
394394 let ca = bZ._1
395395 let cb = bZ._2
396396 let cc = av(bB)
397397 let cd = cc._1
398398 let ce = cc._2
399399 let cf = cc._3
400400 let cg = (bY * bV)
401401 if (if ((cd != bU))
402402 then true
403403 else (cg != ca))
404404 then throw((((("You need to add " + toString(cg)) + " ") + ce) + " as a second payment"))
405405 else [IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + ad), ca)]
406406 }
407407 else nil
408408 let ch = valueOrElse(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + U)), "")
409409 let ci = getIntegerValue(this, (toString(aL) + x))
410410 let cj = ((toString((ci + 1)) + "-") + toString((ci + bW)))
411411 let ck = (ch + (if ((ch != ""))
412412 then ("," + cj)
413413 else ("" + cj)))
414414 let cl = if ((aP == ai))
415415 then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bB, bA)])
416416 else 0
417417 if ((cl == cl))
418418 then {
419419 let cm = (([IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + T), (bM + bW)), IntegerEntry((toString(aL) + x), (ci + bW)), StringEntry((((toString(aH.caller) + "_") + toString(aL)) + U), ck)] ++ bG) ++ bT)
420420 if (!(isDefined(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + z)))))
421421 then (cm ++ [StringEntry((((toString(aH.caller) + "_") + toString(aL)) + z), bH)])
422422 else cm
423423 }
424424 else throw("Strict value is not equal to itself.")
425425 }
426426 }
427427 })
428428
429429
430430
431431 @Callable(aH)
432432 func commitAccessListSale (aL,bH) = valueOrElse(aF(), {
433433 let cn = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
434434 let bA = cn._1
435435 let bB = cn._2
436436 let co = aI(value(getString(this, (toString(aL) + K))))
437437 let aP = co._1
438438 let aQ = co._2
439439 let aR = co._3
440440 let aS = co._4
441441 let cp = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + Y)), 0)
442442 let cq = valueOrElse(getInteger(this, (toString(aL) + C)), 0)
443443 let cr = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + Z)), 0)
444444 let bl = getIntegerValue(this, (toString(aL) + n))
445445 let aT = getIntegerValue(this, (toString(aL) + s))
446446 let bp = getIntegerValue(this, (toString(aL) + w))
447447 let cs = aI(getStringValue(this, (toString(aL) + o)))
448448 let aW = cs._1
449449 let aX = cs._2
450450 let aY = cs._3
451451 let aZ = cs._4
452452 let ct = fraction(fraction(aT, bp, pow(10, 0, aZ, 0, 0, DOWN)), (100 + bl), 100)
453453 let bi = value(getInteger(this, (toString(aL) + l)))
454454 let bj = value(getInteger(this, (toString(aL) + B)))
455455 if ((am != aL))
456456 then throw("There is no active launchpad or this launchpad is ended")
457457 else if ((bi > height))
458458 then throw("Launchpad sale not started yet")
459459 else if ((height > (bi + bj)))
460460 then throw("Launchpad sale ended")
461461 else if (if ((size(aH.payments) != 1))
462462 then true
463463 else (bB != aP))
464464 then throw((("One attached payment in " + aR) + " expected"))
465465 else if ((cr >= al))
466466 then throw((("You can buy only " + toString(al)) + "allocations"))
467467 else if (if ((ct != bA))
468468 then ((ct * 2) != bA)
469469 else false)
470470 then throw(((("Wrong payment. You can buy 1 or 2 allocations for " + toString(ct)) + aR) + " per allocation"))
471471 else {
472472 let cu = (bA / ct)
473473 let cl = if ((aP == ai))
474474 then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bB, bA)])
475475 else 0
476476 if ((cl == cl))
477477 then {
478478 let cm = [IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + Z), (cr + cu)), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + Y), (cp + bA)), IntegerEntry((toString(aL) + C), (cq + bA))]
479479 if (!(isDefined(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + z)))))
480480 then (cm ++ [StringEntry((((toString(aH.caller) + "_") + toString(aL)) + z), bH)])
481481 else cm
482482 }
483483 else throw("Strict value is not equal to itself.")
484484 }
485485 })
486486
487487
488488
489489 @Callable(aH)
490490 func commitHighCompetitionSale (aL,bH) = valueOrElse(aF(), {
491491 let cv = aI(value(getString(this, (toString(aL) + K))))
492492 let aP = cv._1
493493 let aQ = cv._2
494494 let aR = cv._3
495495 let aS = cv._4
496496 let bi = value(getInteger(this, (toString(aL) + l)))
497497 let bj = value(getInteger(this, (toString(aL) + B)))
498498 let cw = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + W)), 0)
499499 let cx = valueOrElse(getBoolean(this, (toString(aL) + N)), false)
500500 let aT = getIntegerValue(this, (toString(aL) + s))
501501 let aU = getIntegerValue(this, (toString(aL) + r))
502502 let cy = aI(getStringValue(this, (toString(aL) + o)))
503503 let aW = cy._1
504504 let aX = cy._2
505505 let aY = cy._3
506506 let aZ = cy._4
507507 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
508508 let bb = fraction(ba, getIntegerValue(this, (toString(aL) + M)), 100)
509509 let cz = if ((aH.payments[0].assetId == unit))
510510 then {
511511 let bP = {
512512 let be = ({
513513 let be = invoke(ak, "callFunction", ["howManyYouGetREADONLY", [toString(aH.payments[0].amount), base58'']], nil)
514514 if ($isInstanceOf(be, "List[Any]"))
515515 then be
516516 else throw(($getType(be) + " couldn't be cast to List[Any]"))
517517 })[0]
518518 if ($isInstanceOf(be, "Int"))
519519 then be
520520 else throw(($getType(be) + " couldn't be cast to Int"))
521521 }
522522 if ((bP == bP))
523523 then {
524524 let aM = (bP / (ba + bb))
525525 if ((aM == 0))
526526 then throw("Not enought WAVES to buy tickets")
527527 else {
528528 let bc = (aM * (ba + bb))
529529 let bd = {
530530 let be = ({
531531 let be = invoke(ak, "callFunction", ["howManyYouPayREADONLY", [toString(bc), aP]], nil)
532532 if ($isInstanceOf(be, "List[Any]"))
533533 then be
534534 else throw(($getType(be) + " couldn't be cast to List[Any]"))
535535 })[0]
536536 if ($isInstanceOf(be, "Int"))
537537 then be
538538 else throw(($getType(be) + " couldn't be cast to Int"))
539539 }
540540 if ((bd == bd))
541541 then {
542542 let bQ = invoke(ak, "callFunction", ["exchange", [toString(bc)]], [AttachedPayment(unit, bd)])
543543 if ((bQ == bQ))
544544 then {
545- let bR = (aH.payments[0].amount - bc)
545+ let bR = (aH.payments[0].amount - bd)
546546 let bS = if ((bR > 0))
547547 then [ScriptTransfer(aH.caller, bR, aH.payments[0].assetId)]
548548 else nil
549549 $Tuple3(bc, aP, bS)
550550 }
551551 else throw("Strict value is not equal to itself.")
552552 }
553553 else throw("Strict value is not equal to itself.")
554554 }
555555 }
556556 else throw("Strict value is not equal to itself.")
557557 }
558558 else $Tuple3(aH.payments[0].amount, aH.payments[0].assetId, nil)
559559 let bA = cz._1
560560 let bB = cz._2
561561 let bT = cz._3
562562 if ((am != aL))
563563 then throw("There is no active launchpad or this launchpad is ended")
564564 else if (!(cx))
565565 then throw("There is no high competition sale for this launchpad")
566566 else if ((bi > height))
567567 then throw("Launchpad sale not started yet")
568568 else if ((height > (bi + bj)))
569569 then throw("Launchpad sale ended")
570570 else if (if ((size(aH.payments) != 1))
571571 then true
572572 else (bB != aP))
573573 then throw((("One attached payment in " + aR) + " expected"))
574574 else {
575575 let bV = (bA / (ba + bb))
576576 let cA = (bV * (ba + bb))
577577 let bR = (bA - cA)
578578 if ((bV == 0))
579579 then throw((("Not enought " + aR) + " to buy tickets"))
580580 else if ((bR != 0))
581581 then throw((((("Wrong payment. To buy " + toString(bV)) + "tickets you need to pay ") + toString(cA)) + aR))
582582 else {
583583 let ch = valueOrElse(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + V)), "")
584584 let ci = getIntegerValue(this, (toString(aL) + O))
585585 let cj = ((toString((ci + 1)) + "-") + toString((ci + bV)))
586586 let ck = (ch + (if ((ch != ""))
587587 then ("," + cj)
588588 else ("" + cj)))
589589 let cl = if ((aP == ai))
590590 then invoke(ah, "lockNeutrino", nil, [AttachedPayment(bB, bA)])
591591 else 0
592592 if ((cl == cl))
593593 then {
594594 let cm = ([IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + W), (cw + bV)), IntegerEntry((toString(aL) + O), (ci + bV)), StringEntry((((toString(aH.caller) + "_") + toString(aL)) + V), ck)] ++ bT)
595595 if (!(isDefined(getString(this, (((toString(aH.caller) + "_") + toString(aL)) + z)))))
596596 then (cm ++ [StringEntry((((toString(aH.caller) + "_") + toString(aL)) + z), bH)])
597597 else cm
598598 }
599599 else throw("Strict value is not equal to itself.")
600600 }
601601 }
602602 })
603603
604604
605605
606606 @Callable(aH)
607607 func finalise (aL,cB,cC) = valueOrElse(aF(), valueOrElse(aG(aH), {
608608 let cD = getStringValue(this, (toString(aL) + A))
609609 let cE = toBase58String(sha256((toBytes(cB) + toBytes(cC))))
610610 if ((cE != cD))
611611 then throw("vrf Height hash not matching")
612612 else {
613613 let cF = aI(value(getString(this, (toString(aL) + K))))
614614 let aP = cF._1
615615 let aQ = cF._2
616616 let aR = cF._3
617617 let aS = cF._4
618618 let bh = addressFromStringValue(getStringValue(this, (toString(aL) + j)))
619619 let bl = getIntegerValue(this, (toString(aL) + n))
620620 let cG = getIntegerValue(this, (toString(aL) + M))
621621 let cH = valueOrElse(getInteger(this, (toString(aL) + E)), 0)
622622 let cI = getIntegerValue(this, (toString(aL) + q))
623623 let cJ = valueOrElse(getInteger(this, (toString(aL) + Q)), 0)
624624 let cK = fraction(cI, bl, 100)
625625 let cL = fraction(cJ, cG, 100)
626626 let cM = getIntegerValue(this, (toString(aL) + D))
627627 let cN = fraction(cM, bl, 100)
628628 let cO = ((((((cI + cM) + cK) + cN) + cJ) + cL) - cH)
629629 if ((cH > ((cI + cM) + cJ)))
630630 then throw("Can't transfer negative value to project")
631631 else {
632632 let cl = if ((aP == ai))
633633 then invoke(ah, "unlockNeutrino", [cO, toBase58String(ai)], nil)
634634 else 0
635635 if ((cl == cl))
636636 then [IntegerEntry((toString(aL) + m), height), ScriptTransfer(bh, (((cI + cJ) + cM) - cH), aP), ScriptTransfer(ag, ((cK + cN) + cL), aP)]
637637 else throw("Strict value is not equal to itself.")
638638 }
639639 }
640640 }))
641641
642642
643643
644644 @Callable(aH)
645645 func claim (aL) = valueOrElse(aF(), {
646646 let cP = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + T)), 0)
647647 let cQ = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + W)), 0)
648648 let cr = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + Z)), 0)
649649 let cR = valueOrElse(getBoolean(this, (((toString(aH.caller) + "_") + toString(aL)) + aa)), false)
650650 let cS = valueOrElse(getInteger(this, (toString(aL) + m)), 0)
651651 if ((cS == 0))
652652 then throw("You can't claim because results are not finalized")
653653 else if (cR)
654654 then throw("You are already claimed")
655655 else if (if (if ((cP == 0))
656656 then (cr == 0)
657657 else false)
658658 then (cQ == 0)
659659 else false)
660660 then throw("You can't claim because you don't buy anything")
661661 else {
662662 let cT = aI(valueOrElse(getString(this, (toString(aL) + K)), toBase58String(ai)))
663663 let aP = cT._1
664664 let aQ = cT._2
665665 let aR = cT._3
666666 let aS = cT._4
667667 let cU = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + ab)), 0)
668668 let cV = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + ac)), 0)
669669 let cW = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + X)), 0)
670670 let bl = getIntegerValue(this, (toString(aL) + n))
671671 let cG = valueOrElse(getInteger(this, (toString(aL) + M)), 0)
672672 let cX = min([cr, cW])
673673 let aT = getIntegerValue(this, (toString(aL) + s))
674674 let aU = getIntegerValue(this, (toString(aL) + r))
675675 let cY = aI(getStringValue(this, (toString(aL) + o)))
676676 let aW = cY._1
677677 let aX = cY._2
678678 let aY = cY._3
679679 let aZ = cY._4
680680 let ba = fraction(aU, aT, pow(10, 0, aZ, 0, 0, DOWN))
681681 let bp = getIntegerValue(this, (toString(aL) + w))
682682 let cZ = (((cU * aU) + (cX * bp)) + (cV * aU))
683683 let da = ((cr - cX) * bp)
684684 let db = fraction(fraction(da, aT, pow(10, 0, aZ, 0, 0, DOWN)), (100 + bl), 100)
685685 let dc = fraction(((cP - cU) * ba), (100 + bl), 100)
686686 let dd = fraction(((cQ - cV) * ba), (100 + cG), 100)
687687 let de = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + S)), 0)
688688 if (if (if ((0 > db))
689689 then true
690690 else (0 > dc))
691691 then true
692692 else (0 > dd))
693693 then throw("Error with allowed allocation param or wonned tickets param please contact support")
694694 else {
695695 let df = (((dc + dd) + db) - de)
696696 let dg = if ((df > 0))
697697 then [ScriptTransfer(aH.caller, df, aP), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + S), df)]
698698 else nil
699699 let cl = if (if ((df > 0))
700700 then (aP == ai)
701701 else false)
702702 then invoke(ah, "unlockNeutrino", [df, toBase58String(ai)], nil)
703703 else 0
704704 if ((cl == cl))
705705 then {
706706 let dh = split(valueOrElse(getString(this, (toString(aL) + L)), "claimAll"), ",")
707707 if ((dh[0] == "claimAll"))
708708 then {
709709 let di = if ((cZ > 0))
710710 then [ScriptTransfer(aH.caller, cZ, aW)]
711711 else nil
712712 (([BooleanEntry((((toString(aH.caller) + "_") + toString(aL)) + aa), true), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + R), cZ)] ++ di) ++ dg)
713713 }
714714 else if ((dh[0] == "claimPeriod"))
715715 then {
716716 let dj = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + R)), 0)
717717 let dk = value(parseInt(dh[2]))
718718 let dl = (value(parseInt(dh[3])) + cS)
719719 let dm = (dk + dl)
720720 let dn = fraction(cZ, value(parseInt(dh[1])), 100)
721721 let do = (dn + (if ((height > dl))
722722 then (fraction((cZ - dn), (min([height, dm]) - dl), dk) - dj)
723723 else (0 - dj)))
724724 let dp = if ((cZ >= (dj + do)))
725725 then [BooleanEntry((((toString(aH.caller) + "_") + toString(aL)) + aa), true)]
726726 else nil
727727 if (if ((do > 0))
728728 then true
729729 else (df > 0))
730730 then {
731731 let di = if ((do > 0))
732732 then [IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + R), (dj + do)), ScriptTransfer(aH.caller, do, aW)]
733733 else nil
734734 (dg ++ di)
735735 }
736736 else throw("Nothing to claim")
737737 }
738738 else throw("Unknown claim function")
739739 }
740740 else throw("Strict value is not equal to itself.")
741741 }
742742 }
743743 })
744744
745745
746746
747747 @Callable(aH)
748748 func claimFreezeToken (aL) = valueOrElse(aF(), {
749749 let bw = valueOrElse(getBoolean(this, (toString(aL) + G)), false)
750750 if (!(isDefined(getInteger(this, (toString(aL) + m)))))
751751 then throw("You can't claim because results are not finalized")
752752 else if (!(bw))
753753 then throw("There are no additional token freezing for this launchpad")
754754 else {
755755 let aW = fromBase58String(getStringValue(this, (toString(aL) + H)))
756756 let dq = valueOrElse(getInteger(this, (((toString(aH.caller) + "_") + toString(aL)) + ad)), 0)
757757 let bi = valueOrElse(getInteger(this, (toString(aL) + l)), 0)
758758 let bj = valueOrElse(getInteger(this, (toString(aL) + B)), 0)
759759 let dr = getIntegerValue(this, (toString(aL) + I))
760760 let ds = ((bi + bj) + dr)
761761 if ((dq == 0))
762762 then throw("You are already claimed your tokens or not paid anything")
763763 else if ((ds > height))
764764 then throw(("Your tokens freezed teel " + toString(ds)))
765765 else [ScriptTransfer(aH.caller, dq, aW), IntegerEntry((((toString(aH.caller) + "_") + toString(aL)) + ad), 0)]
766766 }
767767 })
768768
769769
770770
771771 @Callable(aH)
772772 func transferBuyAsset (aL,dt) = valueOrElse(aF(), valueOrElse(aG(aH), {
773773 let bh = addressFromStringValue(getStringValue(this, (toString(aL) + j)))
774774 let du = aI(value(getString(this, (toString(aL) + K))))
775775 let aP = du._1
776776 let aQ = du._2
777777 let aR = du._3
778778 let aS = du._4
779779 let cH = valueOrElse(getInteger(this, (toString(aL) + E)), 0)
780780 let cl = if (if ((dt > 0))
781781 then (aP == ai)
782782 else false)
783783 then invoke(ah, "unlockNeutrino", [dt, toBase58String(ai)], nil)
784784 else 0
785785 if ((cl == cl))
786786 then [IntegerEntry((toString(aL) + E), (cH + dt)), ScriptTransfer(bh, dt, aP)]
787787 else throw("Strict value is not equal to itself.")
788788 }))
789789
790790
791791
792792 @Callable(aH)
793793 func shutdown () = valueOrElse(aG(aH), if (!(aD))
794794 then throw("DApp already inactive")
795795 else [BooleanEntry(a, false)])
796796
797797
798798
799799 @Callable(aH)
800800 func activate () = valueOrElse(aG(aH), if (aD)
801801 then throw("DApp already active")
802802 else [BooleanEntry(a, true)])
803803
804804
805805 @Verifier(dv)
806806 func dw () = {
807807 let dx = {
808808 let dy = if (sigVerify(dv.bodyBytes, dv.proofs[0], as))
809809 then 1
810810 else 0
811811 let dz = if (sigVerify(dv.bodyBytes, dv.proofs[1], at))
812812 then 1
813813 else 0
814814 let dA = if (sigVerify(dv.bodyBytes, dv.proofs[2], au))
815815 then 1
816816 else 0
817817 (((dy + dz) + dA) >= 2)
818818 }
819819 let dB = if (if (if (sigVerify(dv.bodyBytes, dv.proofs[0], as))
820820 then true
821821 else sigVerify(dv.bodyBytes, dv.proofs[0], at))
822822 then true
823823 else sigVerify(dv.bodyBytes, dv.proofs[0], au))
824824 then true
825825 else sigVerify(dv.bodyBytes, dv.proofs[0], aj)
826826 let ap = dv
827827 if ($isInstanceOf(ap, "DataTransaction"))
828828 then {
829829 let dC = ap
830830 if (valueOrElse(getBoolean(ae, f), false))
831831 then dB
832832 else false
833833 }
834834 else dx
835835 }
836836

github/deemru/w8io/026f985 
86.79 ms