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(pmt1.assetId))
2222 then throw("Incorrect asset attached for Collateral, please attach WAVES only.")
23- else if ((pmt1.amount != 1000000000))
23+ else if ((pmt1.amount != 10000000))
2424 then throw((((("You attached only " + toString(fraction(pmt1.amount, 1, 100000000))) + ".") + toString(fraction(pmt1.amount, 1, 10000000))) + " WAVES for Listing in payment[1], please attach 10 WAVES."))
2525 else if ((pmt2.assetId != assetinfopmt2))
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 USDCAssetID = base58'5bXgvADuVoFdhtF5uKZAEiVdAo7ZCWw151L4yyf1PiES'
55
66 let CollectFeeAddress = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
77
88 @Callable(i)
99 func RegisterPair (EnterAssetID) = {
1010 let pmt1 = value(i.payments[0])
1111 let pmt2 = value(i.payments[1])
1212 let currentKey = toBase58String(i.caller.bytes)
1313 let WAVES = !(isDefined(pmt2.assetId))
1414 let fetchpair = getString(this, ("Pair_UV_" + EnterAssetID))
1515 let assetinfopmt2 = fromBase58String(EnterAssetID)
1616 let info = valueOrErrorMessage(assetInfo(fromBase58String(EnterAssetID)), (("Asset " + EnterAssetID) + " doesn't exist"))
1717 if ((fetchpair == EnterAssetID))
1818 then throw("Pair Already Exist in List.")
1919 else if ((size(i.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(pmt1.assetId))
2222 then throw("Incorrect asset attached for Collateral, please attach WAVES only.")
23- else if ((pmt1.amount != 1000000000))
23+ else if ((pmt1.amount != 10000000))
2424 then throw((((("You attached only " + toString(fraction(pmt1.amount, 1, 100000000))) + ".") + toString(fraction(pmt1.amount, 1, 10000000))) + " WAVES for Listing in payment[1], please attach 10 WAVES."))
2525 else if ((pmt2.assetId != assetinfopmt2))
2626 then throw("Input String & Attached AssetID in payment2 is not matching.")
2727 else if ((WAVES == 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_" + EnterAssetID), EnterAssetID), IntegerEntry(("Listing_Fee_" + EnterAssetID), pmt1.amount), ScriptTransfer(CollectFeeAddress, pmt1.amount, unit), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)), 0), IntegerEntry(((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID), 0), IntegerEntry(("Total_of_Pair_Txns_" + EnterAssetID), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + EnterAssetID), 0)]
3030 }
3131
3232
3333
3434 @Callable(i)
3535 func IssueLPToken (EnterAssetID) = {
3636 let adminrights = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
3737 let calleraddress = toBase58String(i.caller.bytes)
3838 let checkpairisavailableornot = valueOrErrorMessage(getString(this, ("Pair_UV_" + EnterAssetID)), "Asset not Found in Whitelisted Token")
3939 let info = valueOrErrorMessage(assetInfo(fromBase58String(EnterAssetID)), (("Asset " + EnterAssetID) + " doesn't exist"))
4040 let name = info.name
4141 let decimals = info.decimals
4242 let FirstLPQty = (1 * pow(10, 0, fraction((decimals + 6), 1, 2), 0, 0, CEILING))
4343 let LPissue = Issue((("LP-" + take(name, 8)) + "-USDC"), (((("LP-" + name) + "-USDC") + " is a Liquidity Provider Token Issued Against ") + EnterAssetID), FirstLPQty, fraction((decimals + 6), 1, 2), true)
4444 let LPid = calculateAssetId(LPissue)
4545 if ((adminrights != calleraddress))
4646 then throw((("Your are not allowded to Issue LP Token. Only " + adminrights) + " can issue the LP Token."))
4747 else if ((checkpairisavailableornot != EnterAssetID))
4848 then throw("Pair is not available in List.")
4949 else [LPissue, StringEntry(("LP_" + EnterAssetID), toBase58String(LPid)), IntegerEntry(("Total_LP_" + EnterAssetID), FirstLPQty)]
5050 }
5151
5252
5353
5454 @Callable(i)
5555 func SwapAssetToUSDCPairEntry (EnterAssetID) = {
5656 let calleraddress = toBase58String(i.caller.bytes)
5757 let pmt = if ((size(i.payments) == 1))
5858 then i.payments[0]
5959 else throw("Whitelisted Token is required as Attached payment[1].")
6060 let checkpairisavailableornot = getString(this, ("Pair_UV_" + EnterAssetID))
6161 let CheckUSDCBalance = getIntegerValue(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)))
6262 let CheckAssetBalance = getIntegerValue(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID))
6363 let newbalanceofUSDC = fraction(CheckUSDCBalance, CheckAssetBalance, (CheckAssetBalance + pmt.amount))
6464 let quantityofpriceasset = (CheckUSDCBalance - newbalanceofUSDC)
6565 let SwapFee = 3
6666 let SwapFeetoreceive = ((quantityofpriceasset * SwapFee) / 1000)
6767 let userbalancetoreceive = ((quantityofpriceasset - SwapFeetoreceive) - SwapFeetoreceive)
6868 let SumupofAssetToUSDCSwapFee = match getInteger(this, ((("Total_Swap_Fee_Collected_" + EnterAssetID) + "_") + toBase58String(USDCAssetID))) {
6969 case a: Int =>
7070 a
7171 case _ =>
7272 0
7373 }
7474 let NewSumupofAssetToUSDCSwapFee = ((SumupofAssetToUSDCSwapFee + SwapFeetoreceive) + SwapFeetoreceive)
7575 let SumupAssetBalance = match getInteger(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID)) {
7676 case a: Int =>
7777 a
7878 case _ =>
7979 0
8080 }
8181 let NewSumupofAssetBalance = (CheckAssetBalance + pmt.amount)
8282 let SumupUSDCBalance = match getInteger(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID))) {
8383 case a: Int =>
8484 a
8585 case _ =>
8686 0
8787 }
8888 let NewSumupofUSDCBalance = ((CheckUSDCBalance - quantityofpriceasset) + SwapFeetoreceive)
8989 let TOPT = match getIntegerValue(this, ("Total_of_Pair_Txns_" + EnterAssetID)) {
9090 case a: Int =>
9191 a
9292 case _ =>
9393 0
9494 }
9595 let NewTPT = (TOPT + 1)
9696 if ((EnterAssetID == toBase58String(USDCAssetID)))
9797 then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
9898 else if ((checkpairisavailableornot != EnterAssetID))
9999 then throw("Pair is not available in Whitelisted Asset.")
100100 else if ((pmt.assetId == USDCAssetID))
101101 then throw("You can't Attach USDC as an Attached Payment. Only Whitelisted Tokens are accepted.")
102102 else if ((pmt.assetId != fromBase58String(EnterAssetID)))
103103 then throw(("Incorrect asset attached, please attach or send " + EnterAssetID))
104104 else if ((CheckUSDCBalance == 0))
105105 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
106106 else if ((CheckAssetBalance == 0))
107107 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
108108 else if ((100000 > quantityofpriceasset))
109109 then throw((("Your Attached Asset Amount is very low. Attach More " + EnterAssetID) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast."))
110110 else if ((quantityofpriceasset > CheckUSDCBalance))
111111 then throw((("Pool Only has a Liquidity of " + toString((CheckUSDCBalance / pow(10, 0, 6, 0, 0, CEILING)))) + " USDC. Add Liquidity into Pool."))
112112 else [IntegerEntry(((("Total_Swap_Fee_Collected_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)), NewSumupofAssetToUSDCSwapFee), IntegerEntry(("Total_of_Pair_Txns_" + EnterAssetID), NewTPT), IntegerEntry(((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID), NewSumupofAssetBalance), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)), NewSumupofUSDCBalance), ScriptTransfer(i.caller, userbalancetoreceive, USDCAssetID), ScriptTransfer(CollectFeeAddress, SwapFeetoreceive, USDCAssetID)]
113113 }
114114
115115
116116
117117 @Callable(i)
118118 func SwapUSDCToAssetPairEntry (EnterAssetID) = {
119119 let calleraddress = toBase58String(i.caller.bytes)
120120 let pmt = if ((size(i.payments) == 1))
121121 then i.payments[0]
122122 else throw((("Only " + toBase58String(USDCAssetID)) + " USDC Token is required as an Attached payment[1]."))
123123 let CheckUSDCBalance = getIntegerValue(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)))
124124 let CheckAssetBalance = getIntegerValue(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID))
125125 let newbalanceofAsset = fraction(CheckUSDCBalance, CheckAssetBalance, (CheckUSDCBalance + pmt.amount))
126126 let quantityofpriceasset = (CheckAssetBalance - newbalanceofAsset)
127127 let checkpairisavailableornot = getString(this, ("Pair_UV_" + EnterAssetID))
128128 let SwapFee = 3
129129 let SwapFeetoreceive = ((quantityofpriceasset * SwapFee) / 1000)
130130 let userbalancetoreceive = ((quantityofpriceasset - SwapFeetoreceive) - SwapFeetoreceive)
131131 let SumupofUSDCToAssetSwapFee = match getInteger(this, ("Total_Swap_Fee_Collected_" + EnterAssetID)) {
132132 case a: Int =>
133133 a
134134 case _ =>
135135 0
136136 }
137137 let NewSumupofUSDCToAssetSwapFee = ((SumupofUSDCToAssetSwapFee + SwapFeetoreceive) + SwapFeetoreceive)
138138 let SumupAssetBalance = match getInteger(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID)) {
139139 case a: Int =>
140140 a
141141 case _ =>
142142 0
143143 }
144144 let NewSumupofAssetBalance = ((CheckAssetBalance - quantityofpriceasset) + SwapFeetoreceive)
145145 let SumupUSDCBalance = match getInteger(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID))) {
146146 case a: Int =>
147147 a
148148 case _ =>
149149 0
150150 }
151151 let NewSumupofUSDCBalance = (CheckUSDCBalance + pmt.amount)
152152 let TOPT = match getIntegerValue(this, ("Total_of_Pair_Txns_" + EnterAssetID)) {
153153 case a: Int =>
154154 a
155155 case _ =>
156156 0
157157 }
158158 let NewTPT = (TOPT + 1)
159159 if ((checkpairisavailableornot != EnterAssetID))
160160 then throw("Pair is not available in Whitelisted Asset.")
161161 else if ((EnterAssetID == toBase58String(USDCAssetID)))
162162 then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach USDC as an attachment Token in payment[1].")
163163 else if ((pmt.assetId != USDCAssetID))
164164 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.")
165165 else if ((100000 > pmt.amount))
166166 then throw("Your Attached USDC Amount is very low. Attach Atleast 0.1 USDC to Claim the minimum Tokens.")
167167 else if ((CheckUSDCBalance == 0))
168168 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
169169 else if ((CheckAssetBalance == 0))
170170 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
171171 else if ((quantityofpriceasset > CheckAssetBalance))
172172 then throw((("Pool Only has a Liquidity of " + toString(CheckAssetBalance)) + " Tokens. Add Liquidity into Pool."))
173173 else [IntegerEntry(("Total_Swap_Fee_Collected_" + EnterAssetID), NewSumupofUSDCToAssetSwapFee), IntegerEntry(("Total_of_Pair_Txns_" + EnterAssetID), NewTPT), IntegerEntry(((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID), NewSumupofAssetBalance), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)), NewSumupofUSDCBalance), ScriptTransfer(i.caller, userbalancetoreceive, fromBase58String(EnterAssetID)), ScriptTransfer(CollectFeeAddress, SwapFeetoreceive, fromBase58String(EnterAssetID))]
174174 }
175175
176176
177177
178178 @Callable(i)
179179 func AddLiquidity (EnterAssetID) = {
180180 let calleraddress = toBase58String(i.caller.bytes)
181181 let pmt1 = value(i.payments[0])
182182 let pmt2 = value(i.payments[1])
183183 let checkpairisavailableornot = getString(this, ("Pair_UV_" + EnterAssetID))
184184 let ReissueassetId = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + EnterAssetID)), "LP Token is Missing or May be not Generated."))
185185 let CheckUSDCBalance = getIntegerValue(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)))
186186 let CheckAssetBalance = getIntegerValue(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID))
187187 let decimalsinfo = valueOrErrorMessage(assetInfo(fromBase58String(EnterAssetID)), (("Asset " + EnterAssetID) + " doesn't exist"))
188188 let decimals = decimalsinfo.decimals
189189 let arg1 = CheckUSDCBalance
190190 let arg2 = CheckAssetBalance
191191 let args3 = pow((((arg1 * 1000000) / arg2) * pow(10, 0, decimals, 0, 0, CEILING)), 0, 1, 0, 0, CEILING)
192192 let bothassetsdecimals = (6 + decimals)
193193 let sharedecimals = (bothassetsdecimals / 2)
194194 let quantityofEnterAssetID = fraction(args3, pmt1.amount, pow(10, 0, bothassetsdecimals, 0, 0, CEILING))
195195 let quantityofLPToken1 = pow((fraction(pmt1.amount, 1, pow(10, 0, decimals, 0, 0, CEILING)) * fraction(pmt2.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, sharedecimals, DOWN)
196196 let USDCHoldingInPair = match getInteger(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID))) {
197197 case a: Int =>
198198 a
199199 case _ =>
200200 0
201201 }
202202 let NewUSDCHoldingInPair = (USDCHoldingInPair + pmt2.amount)
203203 let AssetHoldingInPair = match getInteger(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID)) {
204204 case a: Int =>
205205 a
206206 case _ =>
207207 0
208208 }
209209 let NewAssetHoldingInPair = (AssetHoldingInPair + pmt1.amount)
210210 let LPTokenIssued = match getIntegerValue(this, ("Total_LP_" + EnterAssetID)) {
211211 case a: Int =>
212212 a
213213 case _ =>
214214 0
215215 }
216216 let NewLPTokenIssued = (LPTokenIssued + quantityofLPToken1)
217217 if ((checkpairisavailableornot != EnterAssetID))
218218 then throw("Pair is not available in Whitelisted Asset.")
219219 else if ((EnterAssetID == toBase58String(USDCAssetID)))
220220 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].")
221221 else if ((size(i.payments) != 2))
222222 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.")
223223 else if ((pmt1.assetId == USDCAssetID))
224224 then throw("You Attached USDC asset in payment[1], please attach only whitelisted Token in payment[1] along with USDC in payment[2].")
225225 else if ((pmt1.assetId != fromBase58String(EnterAssetID)))
226226 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
227227 else if ((pmt1.assetId != fromBase58String(EnterAssetID)))
228228 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
229229 else if ((pmt2.assetId != USDCAssetID))
230230 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDC Token.")
231231 else if ((5000000 > pmt2.amount))
232232 then throw("please attach atleast 5 USDC in payment[2] & Equivalent worth of Token in payment[1]")
233233 else if ((pmt2.amount != quantityofEnterAssetID))
234234 then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(quantityofEnterAssetID)) + "] or ") + toString(fraction(quantityofEnterAssetID, 1, 1000000))) + ".") + takeRight(toString(quantityofEnterAssetID), 6)) + " USDC."))
235235 else if ((1 > quantityofLPToken1))
236236 then throw((("LP Token Outcome is going below " + toString(sharedecimals)) + " Decimals. Please Attach min. 1 LP token or 5 USDC Atleast."))
237237 else [IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)), NewUSDCHoldingInPair), IntegerEntry(((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID), NewAssetHoldingInPair), IntegerEntry(("Total_LP_" + EnterAssetID), NewLPTokenIssued), Reissue(ReissueassetId, quantityofLPToken1, true), ScriptTransfer(i.caller, quantityofLPToken1, ReissueassetId)]
238238 }
239239
240240
241241
242242 @Callable(i)
243243 func RemoveLiquidity (EnterAssetID) = {
244244 let calleraddress = toBase58String(i.caller.bytes)
245245 let pmt = if ((size(i.payments) == 1))
246246 then i.payments[0]
247247 else throw("No payment attached, Please Attach LP Token as payment[1].")
248248 let checkpairisavailableornot = getString(this, ("Pair_UV_" + EnterAssetID))
249249 let ReissueableassetId = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + EnterAssetID)), "LP Token is Missing or not Generated."))
250250 let decimalsinfo = valueOrErrorMessage(assetInfo(fromBase58String(EnterAssetID)), (("Asset " + EnterAssetID) + " doesn't exist"))
251251 let decimals = decimalsinfo.decimals
252252 let bothassetsdecimals = (6 + decimals)
253253 let sharedecimals = (bothassetsdecimals / 2)
254254 let CheckTotalLPAmount = getIntegerValue(this, ("Total_LP_" + EnterAssetID))
255255 let UserLPPercentage = pow(fraction(pmt.amount, pow(10, 0, 8, 0, 0, CEILING), CheckTotalLPAmount), 6, 1, 0, 6, CEILING)
256256 let CheckUSDCBalance = getIntegerValue(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)))
257257 let CheckAssetBalance = getIntegerValue(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID))
258258 let UserLPWorthUSDC = fraction(CheckUSDCBalance, UserLPPercentage, pow(10, 0, 8, 0, 0, CEILING))
259259 let UserLPWorthAsset = fraction(CheckAssetBalance, UserLPPercentage, pow(10, 0, 8, 0, 0, CEILING))
260260 let USDCHoldingInPair = match getInteger(this, ((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID))) {
261261 case a: Int =>
262262 a
263263 case _ =>
264264 0
265265 }
266266 let NewUSDCHoldingInPair = (USDCHoldingInPair - UserLPWorthUSDC)
267267 let AssetHoldingInPair = match getInteger(this, ((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID)) {
268268 case a: Int =>
269269 a
270270 case _ =>
271271 0
272272 }
273273 let NewAssetHoldingInPair = (AssetHoldingInPair - UserLPWorthAsset)
274274 let LPTokenIssued = match getIntegerValue(this, ("Total_LP_" + EnterAssetID)) {
275275 case a: Int =>
276276 a
277277 case _ =>
278278 0
279279 }
280280 let NewLPTokenIssued = (LPTokenIssued - pmt.amount)
281281 if ((checkpairisavailableornot != EnterAssetID))
282282 then throw("Pair is not available in Whitelist.")
283283 else if ((fromBase58String(EnterAssetID) == USDCAssetID))
284284 then throw("Don't choose USDC AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
285285 else if ((pmt.assetId != ReissueableassetId))
286286 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
287287 else if ((1 > UserLPPercentage))
288288 then throw("Your LP Token amount % is very low to convert.")
289289 else if ((1 > UserLPWorthUSDC))
290290 then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 USDC.")
291291 else if ((1 > UserLPWorthAsset))
292292 then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
293293 else [IntegerEntry("Withdraw_LP_Percentage", UserLPPercentage), Burn(ReissueableassetId, pmt.amount), IntegerEntry(("Total_LP_" + EnterAssetID), NewLPTokenIssued), IntegerEntry(((("Balance_of_" + EnterAssetID) + "_") + toBase58String(USDCAssetID)), NewUSDCHoldingInPair), IntegerEntry(((("Balance_of_" + toBase58String(USDCAssetID)) + "_") + EnterAssetID), NewAssetHoldingInPair), ScriptTransfer(i.caller, UserLPWorthUSDC, USDCAssetID), ScriptTransfer(i.caller, UserLPWorthAsset, fromBase58String(EnterAssetID))]
294294 }
295295
296296
297297
298298 @Callable(i)
299299 func Del (Key) = [DeleteEntry(Key)]
300300
301301
302302 @Verifier(tx)
303303 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
304304

github/deemru/w8io/169f3d6 
115.22 ms