tx · 8JCndWBj4rs1yMVnsbam3sRaao2YGbFUvDJYtDEvenGK

3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5:  -0.01600000 Waves

2023.09.19 15:11 [2762250] smart account 3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5 > SELF 0.00000000 Waves

{ "type": 13, "id": "8JCndWBj4rs1yMVnsbam3sRaao2YGbFUvDJYtDEvenGK", "fee": 1600000, "feeAssetId": null, "timestamp": 1695125499572, "version": 2, "chainId": 84, "sender": "3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5", "senderPublicKey": "2LmNyaN5YAXdg9C5vsXcTLU66hsW2KUNPsN7KcHBYhUo", "proofs": [ "2M76TZ6p7MhdraPm5qTSeMWbVALVWtNvajPtstneunax3HXgqRrEQWQ8G4fkEpWArNxhTGCo43VG6JSDFXyM7QmW" ], "script": "base64:BgIlCAISAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCAIAC1VTRENBc3NldElEASBERzHKId/28pwmyFb++GepfZ73s/AMiQVICZA1FOlN/wARQ29sbGVjdEZlZUFkZHJlc3MJAKcIAQEgUoPZoIvXkJI7M+XgQERyG3Ox4PxeH5gdLMWeskjH4iAHAWkBDFJlZ2lzdGVyUGFpcgEMRW50ZXJBc3NldElEBARwbXQxCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBHBtdDIJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAVXQVZFUwkBASEBCQEJaXNEZWZpbmVkAQgFBHBtdDIHYXNzZXRJZAQJZmV0Y2hwYWlyCQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQNYXNzZXRpbmZvcG10MgkA2QQBBQxFbnRlckFzc2V0SUQEBGluZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFDEVudGVyQXNzZXRJRAkArAICCQCsAgICBkFzc2V0IAUMRW50ZXJBc3NldElEAg4gZG9lc24ndCBleGlzdAMJAAACBQlmZXRjaHBhaXIFDEVudGVyQXNzZXRJRAkAAgECG1BhaXIgQWxyZWFkeSBFeGlzdCBpbiBMaXN0LgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECclR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQgYXMgcGF5bWVudC4gS2luZGx5IEF0dGFjaCBwYXltZW50MSA9IFdBVkVTIFRva2VuICYgcGF5bWVudDIgPSBUb2tlbiB5b3Ugd2FudCB0byBMaXN0LgMJAQlpc0RlZmluZWQBCAUEcG10MQdhc3NldElkCQACAQJCSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkIGZvciBDb2xsYXRlcmFsLCBwbGVhc2UgYXR0YWNoIFdBVkVTIG9ubHkuAwkBAiE9AggFBHBtdDEGYW1vdW50AICt4gQJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEllvdSBhdHRhY2hlZCBvbmx5IAkApAMBCQBrAwgFBHBtdDEGYW1vdW50AAEAgMLXLwIBLgkApAMBCQBrAwgFBHBtdDEGYW1vdW50AAEAgK3iBAI5IFdBVkVTIGZvciBMaXN0aW5nIGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggMTAgV0FWRVMuAwkBAiE9AggFBHBtdDIHYXNzZXRJZAUNYXNzZXRpbmZvcG10MgkAAgECPElucHV0IFN0cmluZyAmIEF0dGFjaGVkIEFzc2V0SUQgaW4gcGF5bWVudDIgaXMgbm90IG1hdGNoaW5nLgMJAAACBQVXQVZFUwYJAAIBAl1Zb3UgQXR0YWNoZWQgV0FWRVMgQXNzZXQgSUQgZm9yIExpc3RpbmcsIHBsZWFzZSBhdHRhY2ggVG9rZW5zIFlvdSB3YW50IHRvIGxpc3QgaW4gcGF5bWVudFsyXS4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBQxFbnRlckFzc2V0SUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIMTGlzdGluZ19GZWVfBQxFbnRlckFzc2V0SUQIBQRwbXQxBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRFDb2xsZWN0RmVlQWRkcmVzcwgFBHBtdDEGYW1vdW50BQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEAAAFA25pbAFpAQxJc3N1ZUxQVG9rZW4BDEVudGVyQXNzZXRJRAQLYWRtaW5yaWdodHMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzAg9MUF9BZG1pbl9SaWdodHMCUExQIEFkbWluIFJpZ2h0cyBhcmUgTm90IEluY2x1ZGVkIGludG8gU21hcnQgQ29udHJhY3QuIERlcGxveSBBZG1pbiBSaWdodHMgRmlyc3QuBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQCJEFzc2V0IG5vdCBGb3VuZCBpbiBXaGl0ZWxpc3RlZCBUb2tlbgQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUMRW50ZXJBc3NldElECQCsAgIJAKwCAgIGQXNzZXQgBQxFbnRlckFzc2V0SUQCDiBkb2Vzbid0IGV4aXN0BARuYW1lCAUEaW5mbwRuYW1lBAhkZWNpbWFscwgFBGluZm8IZGVjaW1hbHMECkZpcnN0TFBRdHkJAGgCAAEJAGwGAAoAAAkAawMJAGQCBQhkZWNpbWFscwAGAAEAAgAAAAAFB0NFSUxJTkcEB0xQaXNzdWUJAMIIBQkArAICCQCsAgICA0xQLQkArwICBQRuYW1lAAgCBS1VU0RDCQCsAgIJAKwCAgkArAICCQCsAgICA0xQLQUEbmFtZQIFLVVTREMCLiBpcyBhIExpcXVpZGl0eSBQcm92aWRlciBUb2tlbiBJc3N1ZWQgQWdhaW5zdCAFDEVudGVyQXNzZXRJRAUKRmlyc3RMUFF0eQkAawMJAGQCBQhkZWNpbWFscwAGAAEAAgYEBExQaWQJALgIAQUHTFBpc3N1ZQMJAQIhPQIFC2FkbWlucmlnaHRzBQ1jYWxsZXJhZGRyZXNzCQACAQkArAICCQCsAgICLllvdXIgYXJlIG5vdCBhbGxvd2RlZCB0byBJc3N1ZSBMUCBUb2tlbi4gT25seSAFC2FkbWlucmlnaHRzAhggY2FuIGlzc3VlIHRoZSBMUCBUb2tlbi4DCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAh5QYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gTGlzdC4JAMwIAgUHTFBpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICA0xQXwUMRW50ZXJBc3NldElECQDYBAEFBExQaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQFCkZpcnN0TFBRdHkFA25pbAFpARhTd2FwQXNzZXRUb1VTRENQYWlyRW50cnkBDEVudGVyQXNzZXRJRAQNY2FsbGVyYWRkcmVzcwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAjVXaGl0ZWxpc3RlZCBUb2tlbiBpcyByZXF1aXJlZCBhcyBBdHRhY2hlZCBwYXltZW50WzFdLgQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEEENoZWNrVVNEQ0JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBBBuZXdiYWxhbmNlb2ZVU0RDCQBrAwUQQ2hlY2tVU0RDQmFsYW5jZQURQ2hlY2tBc3NldEJhbGFuY2UJAGQCBRFDaGVja0Fzc2V0QmFsYW5jZQgFA3BtdAZhbW91bnQEFHF1YW50aXR5b2ZwcmljZWFzc2V0CQBlAgUQQ2hlY2tVU0RDQmFsYW5jZQUQbmV3YmFsYW5jZW9mVVNEQwQHU3dhcEZlZQADBBBTd2FwRmVldG9yZWNlaXZlCQBpAgkAaAIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BQdTd2FwRmVlAOgHBBR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAZQIJAGUCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQZU3VtdXBvZkFzc2V0VG9VU0RDU3dhcEZlZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEHE5ld1N1bXVwb2ZBc3NldFRvVVNEQ1N3YXBGZWUJAGQCCQBkAgUZU3VtdXBvZkFzc2V0VG9VU0RDU3dhcEZlZQUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQRU3VtdXBBc3NldEJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAZAIFEUNoZWNrQXNzZXRCYWxhbmNlCAUDcG10BmFtb3VudAQQU3VtdXBVU0RDQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVOZXdTdW11cG9mVVNEQ0JhbGFuY2UJAGQCCQBlAgUQQ2hlY2tVU0RDQmFsYW5jZQUUcXVhbnRpdHlvZnByaWNlYXNzZXQFEFN3YXBGZWV0b3JlY2VpdmUEBFRPUFQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAZOZXdUUFQJAGQCBQRUT1BUAAEDCQAAAgUMRW50ZXJBc3NldElECQDYBAEFC1VTRENBc3NldElECQACAQKGAUlucHV0IGNhbiBOZXZlciBiZSBhIFVTREMgQXNzZXRJRC4gRW50ZXIgV2hpdGVsaXN0ZWQgQXNzZXRJRCBpbiBpbnB1dCAmIEF0dGFjaCBXaGl0ZWxpc3RlZCBBc3NldCBhcyBhbiBhdHRhY2htZW50IFRva2VuIGluIHBheW1lbnRbMV0uAwkBAiE9AgUZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUMRW50ZXJBc3NldElECQACAQIrUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdGVkIEFzc2V0LgMJAAACCAUDcG10B2Fzc2V0SWQFC1VTRENBc3NldElECQACAQJTWW91IGNhbid0IEF0dGFjaCBVU0RDIGFzIGFuIEF0dGFjaGVkIFBheW1lbnQuIE9ubHkgV2hpdGVsaXN0ZWQgVG9rZW5zIGFyZSBhY2NlcHRlZC4DCQECIT0CCAUDcG10B2Fzc2V0SWQJANkEAQUMRW50ZXJBc3NldElECQACAQkArAICAjBJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQsIHBsZWFzZSBhdHRhY2ggb3Igc2VuZCAFDEVudGVyQXNzZXRJRAMJAAACBRBDaGVja1VTRENCYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAAACBRFDaGVja0Fzc2V0QmFsYW5jZQAACQACAQJlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQBmAgCgjQYFFHF1YW50aXR5b2ZwcmljZWFzc2V0CQACAQkArAICCQCsAgICNFlvdXIgQXR0YWNoZWQgQXNzZXQgQW1vdW50IGlzIHZlcnkgbG93LiBBdHRhY2ggTW9yZSAFDEVudGVyQXNzZXRJRAI6IFRva2VucyB0byBDbGFpbSB0aGUgbWluaW11bSBBbW91bnQgb2YgMC4xIGRvbGxhciBhdGxlYXN0LgMJAGYCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQQ2hlY2tVU0RDQmFsYW5jZQkAAgEJAKwCAgkArAICAh1Qb29sIE9ubHkgaGFzIGEgTGlxdWlkaXR5IG9mIAkApAMBCQBpAgUQQ2hlY2tVU0RDQmFsYW5jZQkAbAYACgAAAAYAAAAABQdDRUlMSU5HAh8gVVNEQy4gQWRkIExpcXVpZGl0eSBpbnRvIFBvb2wuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQFHE5ld1N1bXVwb2ZBc3NldFRvVVNEQ1N3YXBGZWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEBQZOZXdUUFQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFk5ld1N1bXVwb2ZBc3NldEJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQFFU5ld1N1bXVwb2ZVU0RDQmFsYW5jZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFFHVzZXJiYWxhbmNldG9yZWNlaXZlBQtVU0RDQXNzZXRJRAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRFDb2xsZWN0RmVlQWRkcmVzcwUQU3dhcEZlZXRvcmVjZWl2ZQULVVNEQ0Fzc2V0SUQFA25pbAFpARhTd2FwVVNEQ1RvQXNzZXRQYWlyRW50cnkBDEVudGVyQXNzZXRJRAQNY2FsbGVyYWRkcmVzcwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBCQCsAgIJAKwCAgIFT25seSAJANgEAQULVVNEQ0Fzc2V0SUQCMiBVU0RDIFRva2VuIGlzIHJlcXVpcmVkIGFzIGFuIEF0dGFjaGVkIHBheW1lbnRbMV0uBBBDaGVja1VTRENCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEBBFDaGVja0Fzc2V0QmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAQRbmV3YmFsYW5jZW9mQXNzZXQJAGsDBRBDaGVja1VTRENCYWxhbmNlBRFDaGVja0Fzc2V0QmFsYW5jZQkAZAIFEENoZWNrVVNEQ0JhbGFuY2UIBQNwbXQGYW1vdW50BBRxdWFudGl0eW9mcHJpY2Vhc3NldAkAZQIFEUNoZWNrQXNzZXRCYWxhbmNlBRFuZXdiYWxhbmNlb2ZBc3NldAQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEB1N3YXBGZWUAAwQQU3dhcEZlZXRvcmVjZWl2ZQkAaQIJAGgCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUHU3dhcEZlZQDoBwQUdXNlcmJhbGFuY2V0b3JlY2VpdmUJAGUCCQBlAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFEFN3YXBGZWV0b3JlY2VpdmUFEFN3YXBGZWV0b3JlY2VpdmUEGVN1bXVwb2ZVU0RDVG9Bc3NldFN3YXBGZWUEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEHE5ld1N1bXVwb2ZVU0RDVG9Bc3NldFN3YXBGZWUJAGQCCQBkAgUZU3VtdXBvZlVTRENUb0Fzc2V0U3dhcEZlZQUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQRU3VtdXBBc3NldEJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAZAIJAGUCBRFDaGVja0Fzc2V0QmFsYW5jZQUUcXVhbnRpdHlvZnByaWNlYXNzZXQFEFN3YXBGZWV0b3JlY2VpdmUEEFN1bXVwVVNEQ0JhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVTmV3U3VtdXBvZlVTRENCYWxhbmNlCQBkAgUQQ2hlY2tVU0RDQmFsYW5jZQgFA3BtdAZhbW91bnQEBFRPUFQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAZOZXdUUFQJAGQCBQRUT1BUAAEDCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIFDEVudGVyQXNzZXRJRAkA2AQBBQtVU0RDQXNzZXRJRAkAAgECeUlucHV0IGNhbiBOZXZlciBiZSBhIFVTREMgQXNzZXRJRC4gRW50ZXIgV2hpdGVsaXN0ZWQgQXNzZXRJRCBpbiBpbnB1dCAmIEF0dGFjaCBVU0RDIGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsxXS4DCQECIT0CCAUDcG10B2Fzc2V0SWQFC1VTRENBc3NldElECQACAQJ+WW91IGNhbiBBdHRhY2ggVVNEQyBhcyBhbiBBdHRhY2hlZCBQYXltZW50WzFdIHRvIFN3YXAgVVNEQyBUbyBSZXF1aXJlZCBUb2tlbi4gQW55IG90aGVyIGFzc2V0IGVsc2UgdGhhbiBVU0RDIHdpbGwgYmUgcmVqZWN0ZWQuAwkAZgIAoI0GCAUDcG10BmFtb3VudAkAAgECW1lvdXIgQXR0YWNoZWQgVVNEQyBBbW91bnQgaXMgdmVyeSBsb3cuIEF0dGFjaCBBdGxlYXN0IDAuMSBVU0RDIHRvIENsYWltIHRoZSBtaW5pbXVtIFRva2Vucy4DCQAAAgUQQ2hlY2tVU0RDQmFsYW5jZQAACQACAQJlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQAAAgURQ2hlY2tBc3NldEJhbGFuY2UAAAkAAgECZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAZgIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRFDaGVja0Fzc2V0QmFsYW5jZQkAAgEJAKwCAgkArAICAh1Qb29sIE9ubHkgaGFzIGEgTGlxdWlkaXR5IG9mIAkApAMBBRFDaGVja0Fzc2V0QmFsYW5jZQIhIFRva2Vucy4gQWRkIExpcXVpZGl0eSBpbnRvIFBvb2wuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAUcTmV3U3VtdXBvZlVTRENUb0Fzc2V0U3dhcEZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQFBk5ld1RQVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUVTmV3U3VtdXBvZlVTRENCYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUUdXNlcmJhbGFuY2V0b3JlY2VpdmUJANkEAQUMRW50ZXJBc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEUNvbGxlY3RGZWVBZGRyZXNzBRBTd2FwRmVldG9yZWNlaXZlCQDZBAEFDEVudGVyQXNzZXRJRAUDbmlsAWkBDEFkZExpcXVpZGl0eQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEBHBtdDEJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQEcG10MgkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBBljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQOUmVpc3N1ZWFzc2V0SWQJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgIDTFBfBQxFbnRlckFzc2V0SUQCLExQIFRva2VuIGlzIE1pc3Npbmcgb3IgTWF5IGJlIG5vdCBHZW5lcmF0ZWQuBBBDaGVja1VTRENCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEBBFDaGVja0Fzc2V0QmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAQMZGVjaW1hbHNpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QECGRlY2ltYWxzCAUMZGVjaW1hbHNpbmZvCGRlY2ltYWxzBARhcmcxBRBDaGVja1VTRENCYWxhbmNlBARhcmcyBRFDaGVja0Fzc2V0QmFsYW5jZQQFYXJnczMJAGwGCQBoAgkAaQIJAGgCBQRhcmcxAMCEPQUEYXJnMgkAbAYACgAABQhkZWNpbWFscwAAAAAFB0NFSUxJTkcAAAABAAAAAAUHQ0VJTElORwQSYm90aGFzc2V0c2RlY2ltYWxzCQBkAgAGBQhkZWNpbWFscwQNc2hhcmVkZWNpbWFscwkAaQIFEmJvdGhhc3NldHNkZWNpbWFscwACBBZxdWFudGl0eW9mRW50ZXJBc3NldElECQBrAwUFYXJnczMIBQRwbXQxBmFtb3VudAkAbAYACgAABRJib3RoYXNzZXRzZGVjaW1hbHMAAAAABQdDRUlMSU5HBBJxdWFudGl0eW9mTFBUb2tlbjEJAGwGCQBoAgkAawMIBQRwbXQxBmFtb3VudAABCQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUHQ0VJTElORwkAawMIBQRwbXQyBmFtb3VudAABCQBsBgAKAAAABgAAAAAFB0NFSUxJTkcAAAAFAAEFDXNoYXJlZGVjaW1hbHMFBERPV04EEVVTRENIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFE5ld1VTRENIb2xkaW5nSW5QYWlyCQBkAgURVVNEQ0hvbGRpbmdJblBhaXIIBQRwbXQyBmFtb3VudAQSQXNzZXRIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAZAIFEkFzc2V0SG9sZGluZ0luUGFpcggFBHBtdDEGYW1vdW50BA1MUFRva2VuSXNzdWVkBAckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgICCVRvdGFsX0xQXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBBOZXdMUFRva2VuSXNzdWVkCQBkAgUNTFBUb2tlbklzc3VlZAUScXVhbnRpdHlvZkxQVG9rZW4xAwkBAiE9AgUZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUMRW50ZXJBc3NldElECQACAQIrUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdGVkIEFzc2V0LgMJAAACBQxFbnRlckFzc2V0SUQJANgEAQULVVNEQ0Fzc2V0SUQJAAIBApIBSW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEQyBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0IGFzIHdlbGwgYXMgaW4gcGF5bWVudFsxXSAmIEF0dGFjaCBVU0RDIGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsyXS4DCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAp4BVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZCBhcyBwYXltZW50IGluIDUwJS01MCUuIEtpbmRseSBBdHRhY2ggcGF5bWVudDEgPSBUb2tlbiB5b3Ugd2FudCB0byBhZGQgZm9yIExpcXVpZGl0eSAmIHBheW1lbnQyID0gRXF1aXZhbGVudCBBbW91bnQgb2YgVVNEQyBUb2tlbi4DCQAAAggFBHBtdDEHYXNzZXRJZAULVVNEQ0Fzc2V0SUQJAAIBAnhZb3UgQXR0YWNoZWQgVVNEQyBhc3NldCBpbiBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIG9ubHkgd2hpdGVsaXN0ZWQgVG9rZW4gaW4gcGF5bWVudFsxXSBhbG9uZyB3aXRoIFVTREMgaW4gcGF5bWVudFsyXS4DCQECIT0CCAUEcG10MQdhc3NldElkCQDZBAEFDEVudGVyQXNzZXRJRAkAAgECa0luY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgTGlxdWlkaXR5IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggU3RyaW5nIEFzc2V0IG9yIFdoaXRlbGlzdGVkIFRva2VuIG9ubHkuAwkBAiE9AggFBHBtdDEHYXNzZXRJZAkA2QQBBQxFbnRlckFzc2V0SUQJAAIBAmtJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQgZm9yIExpcXVpZGl0eSBpbiBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIFN0cmluZyBBc3NldCBvciBXaGl0ZWxpc3RlZCBUb2tlbiBvbmx5LgMJAQIhPQIIBQRwbXQyB2Fzc2V0SWQFC1VTRENBc3NldElECQACAQJqV3JvbmcgQXNzZXQgQXR0YWNoZWQgaW4gcGF5bWVudHNbMl0sIFBsZWFzZSBhdHRhY2ggcGF5bWVudFsxXSA9IExpcXVpZGl0eSBUb2tlbiAmIHBheW1lbnRbMl0gPSBVU0RDIFRva2VuLgMJAGYCAMCWsQIIBQRwbXQyBmFtb3VudAkAAgECVHBsZWFzZSBhdHRhY2ggYXRsZWFzdCA1IFVTREMgaW4gcGF5bWVudFsyXSAmIEVxdWl2YWxlbnQgd29ydGggb2YgVG9rZW4gaW4gcGF5bWVudFsxXQMJAQIhPQIIBQRwbXQyBmFtb3VudAUWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICXkF0dGFjaGVkIHBheW1lbnRbMl0gcXR5IGlzIG5vdCBtYXRjaGluZyBhcyBwZXIgYXR0YWNoZWQgcGF5bWVudFsxXS5wYXltZW50WzJdIG11c3QgYmUgYXMgaW50IFsJAKQDAQUWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAIFXSBvciAJAKQDAQkAawMFFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQAAQDAhD0CAS4JALICAgkApAMBBRZxdWFudGl0eW9mRW50ZXJBc3NldElEAAYCBiBVU0RDLgMJAGYCAAEFEnF1YW50aXR5b2ZMUFRva2VuMQkAAgEJAKwCAgkArAICAiBMUCBUb2tlbiBPdXRjb21lIGlzIGdvaW5nIGJlbG93IAkApAMBBQ1zaGFyZWRlY2ltYWxzAjsgRGVjaW1hbHMuIFBsZWFzZSBBdHRhY2ggbWluLiAxIExQIHRva2VuIG9yIDUgVVNEQyBBdGxlYXN0LgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUUTmV3VVNEQ0hvbGRpbmdJblBhaXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUQTmV3TFBUb2tlbklzc3VlZAkAzAgCCQEHUmVpc3N1ZQMFDlJlaXNzdWVhc3NldElkBRJxdWFudGl0eW9mTFBUb2tlbjEGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUScXVhbnRpdHlvZkxQVG9rZW4xBQ5SZWlzc3VlYXNzZXRJZAUDbmlsAWkBD1JlbW92ZUxpcXVpZGl0eQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECOk5vIHBheW1lbnQgYXR0YWNoZWQsIFBsZWFzZSBBdHRhY2ggTFAgVG9rZW4gYXMgcGF5bWVudFsxXS4EGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBBJSZWlzc3VlYWJsZWFzc2V0SWQJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgIDTFBfBQxFbnRlckFzc2V0SUQCJUxQIFRva2VuIGlzIE1pc3Npbmcgb3Igbm90IEdlbmVyYXRlZC4EDGRlY2ltYWxzaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUMRW50ZXJBc3NldElECQCsAgIJAKwCAgIGQXNzZXQgBQxFbnRlckFzc2V0SUQCDiBkb2Vzbid0IGV4aXN0BAhkZWNpbWFscwgFDGRlY2ltYWxzaW5mbwhkZWNpbWFscwQSYm90aGFzc2V0c2RlY2ltYWxzCQBkAgAGBQhkZWNpbWFscwQNc2hhcmVkZWNpbWFscwkAaQIFEmJvdGhhc3NldHNkZWNpbWFscwACBBJDaGVja1RvdGFsTFBBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQEEFVzZXJMUFBlcmNlbnRhZ2UJAGwGCQBrAwgFA3BtdAZhbW91bnQJAGwGAAoAAAAIAAAAAAUHQ0VJTElORwUSQ2hlY2tUb3RhbExQQW1vdW50AAYAAQAAAAYFB0NFSUxJTkcEEENoZWNrVVNEQ0JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBA9Vc2VyTFBXb3J0aFVTREMJAGsDBRBDaGVja1VTRENCYWxhbmNlBRBVc2VyTFBQZXJjZW50YWdlCQBsBgAKAAAACAAAAAAFB0NFSUxJTkcEEFVzZXJMUFdvcnRoQXNzZXQJAGsDBRFDaGVja0Fzc2V0QmFsYW5jZQUQVXNlckxQUGVyY2VudGFnZQkAbAYACgAAAAgAAAAABQdDRUlMSU5HBBFVU0RDSG9sZGluZ0luUGFpcgQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBROZXdVU0RDSG9sZGluZ0luUGFpcgkAZQIFEVVTRENIb2xkaW5nSW5QYWlyBQ9Vc2VyTFBXb3J0aFVTREMEEkFzc2V0SG9sZGluZ0luUGFpcgQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVOZXdBc3NldEhvbGRpbmdJblBhaXIJAGUCBRJBc3NldEhvbGRpbmdJblBhaXIFEFVzZXJMUFdvcnRoQXNzZXQEDUxQVG9rZW5Jc3N1ZWQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEE5ld0xQVG9rZW5Jc3N1ZWQJAGUCBQ1MUFRva2VuSXNzdWVkCAUDcG10BmFtb3VudAMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECI1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3QuAwkAAAIJANkEAQUMRW50ZXJBc3NldElEBQtVU0RDQXNzZXRJRAkAAgECa0Rvbid0IGNob29zZSBVU0RDIEFzc2V0SUQgYXMgSW5wdXQsIE9ubHkgV2hpdGVsaXN0ZWQgQXNzZXQgYXMgSW5wdXQgU3RyaW5nICYgQXR0YWNoIExQIFRva2VucyBhcyBwYXltZW50WzFdAwkBAiE9AggFA3BtdAdhc3NldElkBRJSZWlzc3VlYWJsZWFzc2V0SWQJAAIBAkdXcm9uZyBBc3NldCBpcyBhdHRhY2hlZCBpbiBwYXltZW50WzFdIG9yIExQIFRva2VuIE5vdCBGb3VuZCBvciBNaXNzaW5nLgMJAGYCAAEFEFVzZXJMUFBlcmNlbnRhZ2UJAAIBAi5Zb3VyIExQIFRva2VuIGFtb3VudCAlIGlzIHZlcnkgbG93IHRvIGNvbnZlcnQuAwkAZgIAAQUPVXNlckxQV29ydGhVU0RDCQACAQJSWW91ciBMUCBUb2tlbiBjb252ZXJzaW9uIGFtb3VudCBpcyB2ZXJ5IGxvdyB0byBjb252ZXJ0IG9yIGxlc3MgdGhhbiAwLjAwMDAwMSBVU0RDLgMJAGYCAAEFEFVzZXJMUFdvcnRoQXNzZXQJAAIBAlxZb3VyIExQIFRva2VuIGNvbnZlcnNpb24gYW1vdW50IGlzIHZlcnkgbG93IHRvIGNvbnZlcnQgb3IgbGVzcyB0aGFuIGZyYWN0aW9uIHZhbHVlIG9mIFRva2VuLgkAzAgCCQEMSW50ZWdlckVudHJ5AgIWV2l0aGRyYXdfTFBfUGVyY2VudGFnZQUQVXNlckxQUGVyY2VudGFnZQkAzAgCCQEEQnVybgIFElJlaXNzdWVhYmxlYXNzZXRJZAgFA3BtdAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQFEE5ld0xQVG9rZW5Jc3N1ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQFFE5ld1VTRENIb2xkaW5nSW5QYWlyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBRVOZXdBc3NldEhvbGRpbmdJblBhaXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ9Vc2VyTFBXb3J0aFVTREMFC1VTRENBc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUQVXNlckxQV29ydGhBc3NldAkA2QQBBQxFbnRlckFzc2V0SUQFA25pbAFpAQNEZWwBA0tleQkAzAgCCQELRGVsZXRlRW50cnkBBQNLZXkFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXl05/z6", "height": 2762250, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5xKFwVAXaRgJkfbXbkJn7hJiiEWUVF1AixzdUAZwGJyk Next: 9yHg7mVrAhuHGePxNYczqCJqC2z3fRGSQs7tcm28s6w3 Diff:
OldNewDifferences
2020 then throw("Two attached assets expected as payment. Kindly Attach payment1 = WAVES Token & payment2 = Token you want to List.")
2121 else if (isDefined(e.assetId))
2222 then throw("Incorrect asset attached for Collateral, please attach WAVES only.")
23- else if ((e.amount != 1000000000))
23+ else if ((e.amount != 10000000))
2424 then throw((((("You attached only " + toString(fraction(e.amount, 1, 100000000))) + ".") + toString(fraction(e.amount, 1, 10000000))) + " WAVES for Listing in payment[1], please attach 10 WAVES."))
2525 else if ((f.assetId != j))
2626 then throw("Input String & Attached AssetID in payment2 is not matching.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'5bXgvADuVoFdhtF5uKZAEiVdAo7ZCWw151L4yyf1PiES'
55
66 let b = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
77
88 @Callable(c)
99 func RegisterPair (d) = {
1010 let e = value(c.payments[0])
1111 let f = value(c.payments[1])
1212 let g = toBase58String(c.caller.bytes)
1313 let h = !(isDefined(f.assetId))
1414 let i = getString(this, ("Pair_UV_" + d))
1515 let j = fromBase58String(d)
1616 let k = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
1717 if ((i == d))
1818 then throw("Pair Already Exist in List.")
1919 else if ((size(c.payments) != 2))
2020 then throw("Two attached assets expected as payment. Kindly Attach payment1 = WAVES Token & payment2 = Token you want to List.")
2121 else if (isDefined(e.assetId))
2222 then throw("Incorrect asset attached for Collateral, please attach WAVES only.")
23- else if ((e.amount != 1000000000))
23+ else if ((e.amount != 10000000))
2424 then throw((((("You attached only " + toString(fraction(e.amount, 1, 100000000))) + ".") + toString(fraction(e.amount, 1, 10000000))) + " WAVES for Listing in payment[1], please attach 10 WAVES."))
2525 else if ((f.assetId != j))
2626 then throw("Input String & Attached AssetID in payment2 is not matching.")
2727 else if ((h == true))
2828 then throw("You Attached WAVES Asset ID for Listing, please attach Tokens You want to list in payment[2].")
2929 else [StringEntry(("Pair_UV_" + d), d), IntegerEntry(("Listing_Fee_" + d), e.amount), ScriptTransfer(b, e.amount, unit), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), 0), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), 0), IntegerEntry(("Total_of_Pair_Txns_" + d), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + d), 0)]
3030 }
3131
3232
3333
3434 @Callable(c)
3535 func IssueLPToken (d) = {
3636 let l = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
3737 let m = toBase58String(c.caller.bytes)
3838 let n = valueOrErrorMessage(getString(this, ("Pair_UV_" + d)), "Asset not Found in Whitelisted Token")
3939 let k = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
4040 let o = k.name
4141 let p = k.decimals
4242 let q = (1 * pow(10, 0, fraction((p + 6), 1, 2), 0, 0, CEILING))
4343 let r = Issue((("LP-" + take(o, 8)) + "-USDC"), (((("LP-" + o) + "-USDC") + " is a Liquidity Provider Token Issued Against ") + d), q, fraction((p + 6), 1, 2), true)
4444 let s = calculateAssetId(r)
4545 if ((l != m))
4646 then throw((("Your are not allowded to Issue LP Token. Only " + l) + " can issue the LP Token."))
4747 else if ((n != d))
4848 then throw("Pair is not available in List.")
4949 else [r, StringEntry(("LP_" + d), toBase58String(s)), IntegerEntry(("Total_LP_" + d), q)]
5050 }
5151
5252
5353
5454 @Callable(c)
5555 func SwapAssetToUSDCPairEntry (d) = {
5656 let m = toBase58String(c.caller.bytes)
5757 let t = if ((size(c.payments) == 1))
5858 then c.payments[0]
5959 else throw("Whitelisted Token is required as Attached payment[1].")
6060 let n = getString(this, ("Pair_UV_" + d))
6161 let u = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
6262 let v = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
6363 let w = fraction(u, v, (v + t.amount))
6464 let x = (u - w)
6565 let y = 3
6666 let z = ((x * y) / 1000)
6767 let A = ((x - z) - z)
6868 let B = {
6969 let C = getInteger(this, ((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a)))
7070 if ($isInstanceOf(C, "Int"))
7171 then {
7272 let D = C
7373 D
7474 }
7575 else 0
7676 }
7777 let E = ((B + z) + z)
7878 let F = {
7979 let C = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
8080 if ($isInstanceOf(C, "Int"))
8181 then {
8282 let D = C
8383 D
8484 }
8585 else 0
8686 }
8787 let G = (v + t.amount)
8888 let H = {
8989 let C = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
9090 if ($isInstanceOf(C, "Int"))
9191 then {
9292 let D = C
9393 D
9494 }
9595 else 0
9696 }
9797 let I = ((u - x) + z)
9898 let J = {
9999 let C = getIntegerValue(this, ("Total_of_Pair_Txns_" + d))
100100 if ($isInstanceOf(C, "Int"))
101101 then {
102102 let D = C
103103 D
104104 }
105105 else 0
106106 }
107107 let K = (J + 1)
108108 if ((d == toBase58String(a)))
109109 then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
110110 else if ((n != d))
111111 then throw("Pair is not available in Whitelisted Asset.")
112112 else if ((t.assetId == a))
113113 then throw("You can't Attach USDC as an Attached Payment. Only Whitelisted Tokens are accepted.")
114114 else if ((t.assetId != fromBase58String(d)))
115115 then throw(("Incorrect asset attached, please attach or send " + d))
116116 else if ((u == 0))
117117 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
118118 else if ((v == 0))
119119 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
120120 else if ((100000 > x))
121121 then throw((("Your Attached Asset Amount is very low. Attach More " + d) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast."))
122122 else if ((x > u))
123123 then throw((("Pool Only has a Liquidity of " + toString((u / pow(10, 0, 6, 0, 0, CEILING)))) + " USDC. Add Liquidity into Pool."))
124124 else [IntegerEntry(((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a)), E), IntegerEntry(("Total_of_Pair_Txns_" + d), K), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), G), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), I), ScriptTransfer(c.caller, A, a), ScriptTransfer(b, z, a)]
125125 }
126126
127127
128128
129129 @Callable(c)
130130 func SwapUSDCToAssetPairEntry (d) = {
131131 let m = toBase58String(c.caller.bytes)
132132 let t = if ((size(c.payments) == 1))
133133 then c.payments[0]
134134 else throw((("Only " + toBase58String(a)) + " USDC Token is required as an Attached payment[1]."))
135135 let u = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
136136 let v = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
137137 let L = fraction(u, v, (u + t.amount))
138138 let x = (v - L)
139139 let n = getString(this, ("Pair_UV_" + d))
140140 let y = 3
141141 let z = ((x * y) / 1000)
142142 let A = ((x - z) - z)
143143 let M = {
144144 let C = getInteger(this, ("Total_Swap_Fee_Collected_" + d))
145145 if ($isInstanceOf(C, "Int"))
146146 then {
147147 let D = C
148148 D
149149 }
150150 else 0
151151 }
152152 let N = ((M + z) + z)
153153 let F = {
154154 let C = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
155155 if ($isInstanceOf(C, "Int"))
156156 then {
157157 let D = C
158158 D
159159 }
160160 else 0
161161 }
162162 let G = ((v - x) + z)
163163 let H = {
164164 let C = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
165165 if ($isInstanceOf(C, "Int"))
166166 then {
167167 let D = C
168168 D
169169 }
170170 else 0
171171 }
172172 let I = (u + t.amount)
173173 let J = {
174174 let C = getIntegerValue(this, ("Total_of_Pair_Txns_" + d))
175175 if ($isInstanceOf(C, "Int"))
176176 then {
177177 let D = C
178178 D
179179 }
180180 else 0
181181 }
182182 let K = (J + 1)
183183 if ((n != d))
184184 then throw("Pair is not available in Whitelisted Asset.")
185185 else if ((d == toBase58String(a)))
186186 then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach USDC as an attachment Token in payment[1].")
187187 else if ((t.assetId != a))
188188 then throw("You can Attach USDC as an Attached Payment[1] to Swap USDC To Required Token. Any other asset else than USDC will be rejected.")
189189 else if ((100000 > t.amount))
190190 then throw("Your Attached USDC Amount is very low. Attach Atleast 0.1 USDC to Claim the minimum Tokens.")
191191 else if ((u == 0))
192192 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
193193 else if ((v == 0))
194194 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
195195 else if ((x > v))
196196 then throw((("Pool Only has a Liquidity of " + toString(v)) + " Tokens. Add Liquidity into Pool."))
197197 else [IntegerEntry(("Total_Swap_Fee_Collected_" + d), N), IntegerEntry(("Total_of_Pair_Txns_" + d), K), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), G), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), I), ScriptTransfer(c.caller, A, fromBase58String(d)), ScriptTransfer(b, z, fromBase58String(d))]
198198 }
199199
200200
201201
202202 @Callable(c)
203203 func AddLiquidity (d) = {
204204 let m = toBase58String(c.caller.bytes)
205205 let e = value(c.payments[0])
206206 let f = value(c.payments[1])
207207 let n = getString(this, ("Pair_UV_" + d))
208208 let O = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + d)), "LP Token is Missing or May be not Generated."))
209209 let u = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
210210 let v = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
211211 let P = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
212212 let p = P.decimals
213213 let Q = u
214214 let R = v
215215 let S = pow((((Q * 1000000) / R) * pow(10, 0, p, 0, 0, CEILING)), 0, 1, 0, 0, CEILING)
216216 let T = (6 + p)
217217 let U = (T / 2)
218218 let V = fraction(S, e.amount, pow(10, 0, T, 0, 0, CEILING))
219219 let W = pow((fraction(e.amount, 1, pow(10, 0, p, 0, 0, CEILING)) * fraction(f.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, U, DOWN)
220220 let X = {
221221 let C = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
222222 if ($isInstanceOf(C, "Int"))
223223 then {
224224 let D = C
225225 D
226226 }
227227 else 0
228228 }
229229 let Y = (X + f.amount)
230230 let Z = {
231231 let C = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
232232 if ($isInstanceOf(C, "Int"))
233233 then {
234234 let D = C
235235 D
236236 }
237237 else 0
238238 }
239239 let aa = (Z + e.amount)
240240 let ab = {
241241 let C = getIntegerValue(this, ("Total_LP_" + d))
242242 if ($isInstanceOf(C, "Int"))
243243 then {
244244 let D = C
245245 D
246246 }
247247 else 0
248248 }
249249 let ac = (ab + W)
250250 if ((n != d))
251251 then throw("Pair is not available in Whitelisted Asset.")
252252 else if ((d == toBase58String(a)))
253253 then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach USDC as an attachment Token in payment[2].")
254254 else if ((size(c.payments) != 2))
255255 then throw("Two attached assets expected as payment in 50%-50%. Kindly Attach payment1 = Token you want to add for Liquidity & payment2 = Equivalent Amount of USDC Token.")
256256 else if ((e.assetId == a))
257257 then throw("You Attached USDC asset in payment[1], please attach only whitelisted Token in payment[1] along with USDC in payment[2].")
258258 else if ((e.assetId != fromBase58String(d)))
259259 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
260260 else if ((e.assetId != fromBase58String(d)))
261261 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
262262 else if ((f.assetId != a))
263263 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDC Token.")
264264 else if ((5000000 > f.amount))
265265 then throw("please attach atleast 5 USDC in payment[2] & Equivalent worth of Token in payment[1]")
266266 else if ((f.amount != V))
267267 then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(V)) + "] or ") + toString(fraction(V, 1, 1000000))) + ".") + takeRight(toString(V), 6)) + " USDC."))
268268 else if ((1 > W))
269269 then throw((("LP Token Outcome is going below " + toString(U)) + " Decimals. Please Attach min. 1 LP token or 5 USDC Atleast."))
270270 else [IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), Y), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), aa), IntegerEntry(("Total_LP_" + d), ac), Reissue(O, W, true), ScriptTransfer(c.caller, W, O)]
271271 }
272272
273273
274274
275275 @Callable(c)
276276 func RemoveLiquidity (d) = {
277277 let m = toBase58String(c.caller.bytes)
278278 let t = if ((size(c.payments) == 1))
279279 then c.payments[0]
280280 else throw("No payment attached, Please Attach LP Token as payment[1].")
281281 let n = getString(this, ("Pair_UV_" + d))
282282 let ad = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + d)), "LP Token is Missing or not Generated."))
283283 let P = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist"))
284284 let p = P.decimals
285285 let T = (6 + p)
286286 let U = (T / 2)
287287 let ae = getIntegerValue(this, ("Total_LP_" + d))
288288 let af = pow(fraction(t.amount, pow(10, 0, 8, 0, 0, CEILING), ae), 6, 1, 0, 6, CEILING)
289289 let u = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
290290 let v = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
291291 let ag = fraction(u, af, pow(10, 0, 8, 0, 0, CEILING))
292292 let ah = fraction(v, af, pow(10, 0, 8, 0, 0, CEILING))
293293 let X = {
294294 let C = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a)))
295295 if ($isInstanceOf(C, "Int"))
296296 then {
297297 let D = C
298298 D
299299 }
300300 else 0
301301 }
302302 let Y = (X - ag)
303303 let Z = {
304304 let C = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d))
305305 if ($isInstanceOf(C, "Int"))
306306 then {
307307 let D = C
308308 D
309309 }
310310 else 0
311311 }
312312 let aa = (Z - ah)
313313 let ab = {
314314 let C = getIntegerValue(this, ("Total_LP_" + d))
315315 if ($isInstanceOf(C, "Int"))
316316 then {
317317 let D = C
318318 D
319319 }
320320 else 0
321321 }
322322 let ac = (ab - t.amount)
323323 if ((n != d))
324324 then throw("Pair is not available in Whitelist.")
325325 else if ((fromBase58String(d) == a))
326326 then throw("Don't choose USDC AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
327327 else if ((t.assetId != ad))
328328 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
329329 else if ((1 > af))
330330 then throw("Your LP Token amount % is very low to convert.")
331331 else if ((1 > ag))
332332 then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 USDC.")
333333 else if ((1 > ah))
334334 then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
335335 else [IntegerEntry("Withdraw_LP_Percentage", af), Burn(ad, t.amount), IntegerEntry(("Total_LP_" + d), ac), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), Y), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), aa), ScriptTransfer(c.caller, ag, a), ScriptTransfer(c.caller, ah, fromBase58String(d))]
336336 }
337337
338338
339339
340340 @Callable(c)
341341 func Del (ai) = [DeleteEntry(ai)]
342342
343343
344344 @Verifier(aj)
345345 func ak () = sigVerify(aj.bodyBytes, aj.proofs[0], aj.senderPublicKey)
346346

github/deemru/w8io/169f3d6 
50.84 ms