tx · 1QNeTeHCe1pdRCVb56tJpoiDN3MKCAakP3JSWn1zBvU 3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5: -0.01600000 Waves 2023.09.19 15:05 [2762247] smart account 3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5 > SELF 0.00000000 Waves
{ "type": 13, "id": "1QNeTeHCe1pdRCVb56tJpoiDN3MKCAakP3JSWn1zBvU", "fee": 1600000, "feeAssetId": null, "timestamp": 1695125144081, "version": 2, "chainId": 84, "sender": "3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5", "senderPublicKey": "2LmNyaN5YAXdg9C5vsXcTLU66hsW2KUNPsN7KcHBYhUo", "proofs": [ "3pe4uqh753opb3Pw5H7iCxB15jQJrXuekd85NkWu73hub7iGCtxEG4LHQCFKuJ2dpxhFQnYwgfDchm1P4AsRbVrt" ], "script": "base64:BgIhCAISBAoCCAESAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIAgALVVNEQ0Fzc2V0SUQBIERHMcoh3/bynCbIVv74Z6l9nvez8AyJBUgJkDUU6U3/ABFDb2xsZWN0RmVlQWRkcmVzcwkApwgBASBSg9mgi9eQkjsz5eBARHIbc7Hg/F4fmB0sxZ6ySMfiIAYBaQEMUmVnaXN0ZXJQYWlyAgxFbnRlckFzc2V0SUQEZGF5cwQEcG10MQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABARwbXQyCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEECmN1cnJlbnRLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQFV0FWRVMJAQEhAQkBCWlzRGVmaW5lZAEIBQRwbXQyB2Fzc2V0SWQECWZldGNocGFpcgkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEDWFzc2V0aW5mb3BtdDIJANkEAQUMRW50ZXJBc3NldElEBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QDCQAAAgUJZmV0Y2hwYWlyBQxFbnRlckFzc2V0SUQJAAIBAhtQYWlyIEFscmVhZHkgRXhpc3QgaW4gTGlzdC4DCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAnJUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkIGFzIHBheW1lbnQuIEtpbmRseSBBdHRhY2ggcGF5bWVudDEgPSBXQVZFUyBUb2tlbiAmIHBheW1lbnQyID0gVG9rZW4geW91IHdhbnQgdG8gTGlzdC4DCQEJaXNEZWZpbmVkAQgFBHBtdDEHYXNzZXRJZAkAAgECQkluY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgQ29sbGF0ZXJhbCwgcGxlYXNlIGF0dGFjaCBXQVZFUyBvbmx5LgMJAQIhPQIIBQRwbXQxBmFtb3VudACAlOvcAwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgISWW91IGF0dGFjaGVkIG9ubHkgCQCkAwEJAGsDCAUEcG10MQZhbW91bnQAAQCAwtcvAgEuCQCkAwEJAGsDCAUEcG10MQZhbW91bnQAAQCAreIEAjkgV0FWRVMgZm9yIExpc3RpbmcgaW4gcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCAxMCBXQVZFUy4DCQECIT0CCAUEcG10Mgdhc3NldElkBQ1hc3NldGluZm9wbXQyCQACAQI8SW5wdXQgU3RyaW5nICYgQXR0YWNoZWQgQXNzZXRJRCBpbiBwYXltZW50MiBpcyBub3QgbWF0Y2hpbmcuAwkAAAIFBVdBVkVTBgkAAgECXVlvdSBBdHRhY2hlZCBXQVZFUyBBc3NldCBJRCBmb3IgTGlzdGluZywgcGxlYXNlIGF0dGFjaCBUb2tlbnMgWW91IHdhbnQgdG8gbGlzdCBpbiBwYXltZW50WzJdLgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQFDEVudGVyQXNzZXRJRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAgxMaXN0aW5nX0ZlZV8FDEVudGVyQXNzZXRJRAgFBHBtdDEGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEUNvbGxlY3RGZWVBZGRyZXNzCAUEcG10MQZhbW91bnQFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICE1RvdGFsX29mX1BhaXJfVHhuc18FDEVudGVyQXNzZXRJRAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQAAAUDbmlsAWkBDElzc3VlTFBUb2tlbgEMRW50ZXJBc3NldElEBAthZG1pbnJpZ2h0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMCD0xQX0FkbWluX1JpZ2h0cwJQTFAgQWRtaW4gUmlnaHRzIGFyZSBOb3QgSW5jbHVkZWQgaW50byBTbWFydCBDb250cmFjdC4gRGVwbG95IEFkbWluIFJpZ2h0cyBGaXJzdC4EDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAIkQXNzZXQgbm90IEZvdW5kIGluIFdoaXRlbGlzdGVkIFRva2VuBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QEBG5hbWUIBQRpbmZvBG5hbWUECGRlY2ltYWxzCAUEaW5mbwhkZWNpbWFscwQKRmlyc3RMUFF0eQkAaAIAAQkAbAYACgAACQBrAwkAZAIFCGRlY2ltYWxzAAYAAQACAAAAAAUHQ0VJTElORwQHTFBpc3N1ZQkAwggFCQCsAgIJAKwCAgIDTFAtCQCvAgIFBG5hbWUACAIFLVVTREMJAKwCAgkArAICCQCsAgIJAKwCAgIDTFAtBQRuYW1lAgUtVVNEQwIuIGlzIGEgTGlxdWlkaXR5IFByb3ZpZGVyIFRva2VuIElzc3VlZCBBZ2FpbnN0IAUMRW50ZXJBc3NldElEBQpGaXJzdExQUXR5CQBrAwkAZAIFCGRlY2ltYWxzAAYAAQACBgQETFBpZAkAuAgBBQdMUGlzc3VlAwkBAiE9AgULYWRtaW5yaWdodHMFDWNhbGxlcmFkZHJlc3MJAAIBCQCsAgIJAKwCAgIuWW91ciBhcmUgbm90IGFsbG93ZGVkIHRvIElzc3VlIExQIFRva2VuLiBPbmx5IAULYWRtaW5yaWdodHMCGCBjYW4gaXNzdWUgdGhlIExQIFRva2VuLgMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECHlBhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBMaXN0LgkAzAgCBQdMUGlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIDTFBfBQxFbnRlckFzc2V0SUQJANgEAQUETFBpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUKRmlyc3RMUFF0eQUDbmlsAWkBGFN3YXBBc3NldFRvVVNEQ1BhaXJFbnRyeQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECNVdoaXRlbGlzdGVkIFRva2VuIGlzIHJlcXVpcmVkIGFzIEF0dGFjaGVkIHBheW1lbnRbMV0uBBljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQQQ2hlY2tVU0RDQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAQRQ2hlY2tBc3NldEJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQEEG5ld2JhbGFuY2VvZlVTREMJAGsDBRBDaGVja1VTRENCYWxhbmNlBRFDaGVja0Fzc2V0QmFsYW5jZQkAZAIFEUNoZWNrQXNzZXRCYWxhbmNlCAUDcG10BmFtb3VudAQUcXVhbnRpdHlvZnByaWNlYXNzZXQJAGUCBRBDaGVja1VTRENCYWxhbmNlBRBuZXdiYWxhbmNlb2ZVU0RDBAdTd2FwRmVlAAMEEFN3YXBGZWV0b3JlY2VpdmUJAGkCCQBoAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFB1N3YXBGZWUA6AcEFHVzZXJiYWxhbmNldG9yZWNlaXZlCQBlAgkAZQIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBlTdW11cG9mQXNzZXRUb1VTRENTd2FwRmVlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQcTmV3U3VtdXBvZkFzc2V0VG9VU0RDU3dhcEZlZQkAZAIJAGQCBRlTdW11cG9mQXNzZXRUb1VTRENTd2FwRmVlBRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBFTdW11cEFzc2V0QmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQBkAgURQ2hlY2tBc3NldEJhbGFuY2UIBQNwbXQGYW1vdW50BBBTdW11cFVTRENCYWxhbmNlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFU5ld1N1bXVwb2ZVU0RDQmFsYW5jZQkAZAIJAGUCBRBDaGVja1VTRENCYWxhbmNlBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQQEVE9QVAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEBk5ld1RQVAkAZAIFBFRPUFQAAQMJAAACBQxFbnRlckFzc2V0SUQJANgEAQULVVNEQ0Fzc2V0SUQJAAIBAoYBSW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEQyBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0ICYgQXR0YWNoIFdoaXRlbGlzdGVkIEFzc2V0IGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsxXS4DCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIIBQNwbXQHYXNzZXRJZAULVVNEQ0Fzc2V0SUQJAAIBAlNZb3UgY2FuJ3QgQXR0YWNoIFVTREMgYXMgYW4gQXR0YWNoZWQgUGF5bWVudC4gT25seSBXaGl0ZWxpc3RlZCBUb2tlbnMgYXJlIGFjY2VwdGVkLgMJAQIhPQIIBQNwbXQHYXNzZXRJZAkA2QQBBQxFbnRlckFzc2V0SUQJAAIBCQCsAgICMEluY29ycmVjdCBhc3NldCBhdHRhY2hlZCwgcGxlYXNlIGF0dGFjaCBvciBzZW5kIAUMRW50ZXJBc3NldElEAwkAAAIFEENoZWNrVVNEQ0JhbGFuY2UAAAkAAgECZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAAAIFEUNoZWNrQXNzZXRCYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAGYCAKCNBgUUcXVhbnRpdHlvZnByaWNlYXNzZXQJAAIBCQCsAgIJAKwCAgI0WW91ciBBdHRhY2hlZCBBc3NldCBBbW91bnQgaXMgdmVyeSBsb3cuIEF0dGFjaCBNb3JlIAUMRW50ZXJBc3NldElEAjogVG9rZW5zIHRvIENsYWltIHRoZSBtaW5pbXVtIEFtb3VudCBvZiAwLjEgZG9sbGFyIGF0bGVhc3QuAwkAZgIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRBDaGVja1VTRENCYWxhbmNlCQACAQkArAICCQCsAgICHVBvb2wgT25seSBoYXMgYSBMaXF1aWRpdHkgb2YgCQCkAwEJAGkCBRBDaGVja1VTRENCYWxhbmNlCQBsBgAKAAAABgAAAAAFB0NFSUxJTkcCHyBVU0RDLiBBZGQgTGlxdWlkaXR5IGludG8gUG9vbC4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUcTmV3U3VtdXBvZkFzc2V0VG9VU0RDU3dhcEZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQFBk5ld1RQVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUVTmV3U3VtdXBvZlVTRENCYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUUdXNlcmJhbGFuY2V0b3JlY2VpdmUFC1VTRENBc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEUNvbGxlY3RGZWVBZGRyZXNzBRBTd2FwRmVldG9yZWNlaXZlBQtVU0RDQXNzZXRJRAUDbmlsAWkBGFN3YXBVU0RDVG9Bc3NldFBhaXJFbnRyeQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgEJAKwCAgkArAICAgVPbmx5IAkA2AQBBQtVU0RDQXNzZXRJRAIyIFVTREMgVG9rZW4gaXMgcmVxdWlyZWQgYXMgYW4gQXR0YWNoZWQgcGF5bWVudFsxXS4EEENoZWNrVVNEQ0JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBBFuZXdiYWxhbmNlb2ZBc3NldAkAawMFEENoZWNrVVNEQ0JhbGFuY2UFEUNoZWNrQXNzZXRCYWxhbmNlCQBkAgUQQ2hlY2tVU0RDQmFsYW5jZQgFA3BtdAZhbW91bnQEFHF1YW50aXR5b2ZwcmljZWFzc2V0CQBlAgURQ2hlY2tBc3NldEJhbGFuY2UFEW5ld2JhbGFuY2VvZkFzc2V0BBljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQCdCAIFBHRoaXMJAKwCAgIIUGFpcl9VVl8FDEVudGVyQXNzZXRJRAQHU3dhcEZlZQADBBBTd2FwRmVldG9yZWNlaXZlCQBpAgkAaAIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BQdTd2FwRmVlAOgHBBR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAZQIJAGUCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQZU3VtdXBvZlVTRENUb0Fzc2V0U3dhcEZlZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQcTmV3U3VtdXBvZlVTRENUb0Fzc2V0U3dhcEZlZQkAZAIJAGQCBRlTdW11cG9mVVNEQ1RvQXNzZXRTd2FwRmVlBRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBFTdW11cEFzc2V0QmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQBkAgkAZQIFEUNoZWNrQXNzZXRCYWxhbmNlBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQQQU3VtdXBVU0RDQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVOZXdTdW11cG9mVVNEQ0JhbGFuY2UJAGQCBRBDaGVja1VTRENCYWxhbmNlCAUDcG10BmFtb3VudAQEVE9QVAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAhNUb3RhbF9vZl9QYWlyX1R4bnNfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEBk5ld1RQVAkAZAIFBFRPUFQAAQMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECK1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3RlZCBBc3NldC4DCQAAAgUMRW50ZXJBc3NldElECQDYBAEFC1VTRENBc3NldElECQACAQJ5SW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEQyBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0ICYgQXR0YWNoIFVTREMgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzFdLgMJAQIhPQIIBQNwbXQHYXNzZXRJZAULVVNEQ0Fzc2V0SUQJAAIBAn5Zb3UgY2FuIEF0dGFjaCBVU0RDIGFzIGFuIEF0dGFjaGVkIFBheW1lbnRbMV0gdG8gU3dhcCBVU0RDIFRvIFJlcXVpcmVkIFRva2VuLiBBbnkgb3RoZXIgYXNzZXQgZWxzZSB0aGFuIFVTREMgd2lsbCBiZSByZWplY3RlZC4DCQBmAgCgjQYIBQNwbXQGYW1vdW50CQACAQJbWW91ciBBdHRhY2hlZCBVU0RDIEFtb3VudCBpcyB2ZXJ5IGxvdy4gQXR0YWNoIEF0bGVhc3QgMC4xIFVTREMgdG8gQ2xhaW0gdGhlIG1pbmltdW0gVG9rZW5zLgMJAAACBRBDaGVja1VTRENCYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAAACBRFDaGVja0Fzc2V0QmFsYW5jZQAACQACAQJlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQBmAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFEUNoZWNrQXNzZXRCYWxhbmNlCQACAQkArAICCQCsAgICHVBvb2wgT25seSBoYXMgYSBMaXF1aWRpdHkgb2YgCQCkAwEFEUNoZWNrQXNzZXRCYWxhbmNlAiEgVG9rZW5zLiBBZGQgTGlxdWlkaXR5IGludG8gUG9vbC4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEBRxOZXdTdW11cG9mVVNEQ1RvQXNzZXRTd2FwRmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICE1RvdGFsX29mX1BhaXJfVHhuc18FDEVudGVyQXNzZXRJRAUGTmV3VFBUCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBRZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEBRVOZXdTdW11cG9mVVNEQ0JhbGFuY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkA2QQBBQxFbnRlckFzc2V0SUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwURQ29sbGVjdEZlZUFkZHJlc3MFEFN3YXBGZWV0b3JlY2VpdmUJANkEAQUMRW50ZXJBc3NldElEBQNuaWwBaQEMQWRkTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQEcG10MQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABARwbXQyCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEEGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBA5SZWlzc3VlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIsTFAgVG9rZW4gaXMgTWlzc2luZyBvciBNYXkgYmUgbm90IEdlbmVyYXRlZC4EEENoZWNrVVNEQ0JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQtVU0RDQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBAxkZWNpbWFsc2luZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFDEVudGVyQXNzZXRJRAkArAICCQCsAgICBkFzc2V0IAUMRW50ZXJBc3NldElEAg4gZG9lc24ndCBleGlzdAQIZGVjaW1hbHMIBQxkZWNpbWFsc2luZm8IZGVjaW1hbHMEBGFyZzEFEENoZWNrVVNEQ0JhbGFuY2UEBGFyZzIFEUNoZWNrQXNzZXRCYWxhbmNlBAVhcmdzMwkAbAYJAGgCCQBpAgkAaAIFBGFyZzEAwIQ9BQRhcmcyCQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUHQ0VJTElORwAAAAEAAAAABQdDRUlMSU5HBBJib3RoYXNzZXRzZGVjaW1hbHMJAGQCAAYFCGRlY2ltYWxzBA1zaGFyZWRlY2ltYWxzCQBpAgUSYm90aGFzc2V0c2RlY2ltYWxzAAIEFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQJAGsDBQVhcmdzMwgFBHBtdDEGYW1vdW50CQBsBgAKAAAFEmJvdGhhc3NldHNkZWNpbWFscwAAAAAFB0NFSUxJTkcEEnF1YW50aXR5b2ZMUFRva2VuMQkAbAYJAGgCCQBrAwgFBHBtdDEGYW1vdW50AAEJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQdDRUlMSU5HCQBrAwgFBHBtdDIGYW1vdW50AAEJAGwGAAoAAAAGAAAAAAUHQ0VJTElORwAAAAUAAQUNc2hhcmVkZWNpbWFscwUERE9XTgQRVVNEQ0hvbGRpbmdJblBhaXIEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQUTmV3VVNEQ0hvbGRpbmdJblBhaXIJAGQCBRFVU0RDSG9sZGluZ0luUGFpcggFBHBtdDIGYW1vdW50BBJBc3NldEhvbGRpbmdJblBhaXIEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQBkAgUSQXNzZXRIb2xkaW5nSW5QYWlyCAUEcG10MQZhbW91bnQEDUxQVG9rZW5Jc3N1ZWQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEE5ld0xQVG9rZW5Jc3N1ZWQJAGQCBQ1MUFRva2VuSXNzdWVkBRJxdWFudGl0eW9mTFBUb2tlbjEDCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIFDEVudGVyQXNzZXRJRAkA2AQBBQtVU0RDQXNzZXRJRAkAAgECkgFJbnB1dCBjYW4gTmV2ZXIgYmUgYSBVU0RDIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgYXMgd2VsbCBhcyBpbiBwYXltZW50WzFdICYgQXR0YWNoIFVTREMgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzJdLgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECngFUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkIGFzIHBheW1lbnQgaW4gNTAlLTUwJS4gS2luZGx5IEF0dGFjaCBwYXltZW50MSA9IFRva2VuIHlvdSB3YW50IHRvIGFkZCBmb3IgTGlxdWlkaXR5ICYgcGF5bWVudDIgPSBFcXVpdmFsZW50IEFtb3VudCBvZiBVU0RDIFRva2VuLgMJAAACCAUEcG10MQdhc3NldElkBQtVU0RDQXNzZXRJRAkAAgECeFlvdSBBdHRhY2hlZCBVU0RDIGFzc2V0IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggb25seSB3aGl0ZWxpc3RlZCBUb2tlbiBpbiBwYXltZW50WzFdIGFsb25nIHdpdGggVVNEQyBpbiBwYXltZW50WzJdLgMJAQIhPQIIBQRwbXQxB2Fzc2V0SWQJANkEAQUMRW50ZXJBc3NldElECQACAQJrSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkIGZvciBMaXF1aWRpdHkgaW4gcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCBTdHJpbmcgQXNzZXQgb3IgV2hpdGVsaXN0ZWQgVG9rZW4gb25seS4DCQECIT0CCAUEcG10MQdhc3NldElkCQDZBAEFDEVudGVyQXNzZXRJRAkAAgECa0luY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgTGlxdWlkaXR5IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggU3RyaW5nIEFzc2V0IG9yIFdoaXRlbGlzdGVkIFRva2VuIG9ubHkuAwkBAiE9AggFBHBtdDIHYXNzZXRJZAULVVNEQ0Fzc2V0SUQJAAIBAmpXcm9uZyBBc3NldCBBdHRhY2hlZCBpbiBwYXltZW50c1syXSwgUGxlYXNlIGF0dGFjaCBwYXltZW50WzFdID0gTGlxdWlkaXR5IFRva2VuICYgcGF5bWVudFsyXSA9IFVTREMgVG9rZW4uAwkAZgIAwJaxAggFBHBtdDIGYW1vdW50CQACAQJUcGxlYXNlIGF0dGFjaCBhdGxlYXN0IDUgVVNEQyBpbiBwYXltZW50WzJdICYgRXF1aXZhbGVudCB3b3J0aCBvZiBUb2tlbiBpbiBwYXltZW50WzFdAwkBAiE9AggFBHBtdDIGYW1vdW50BRZxdWFudGl0eW9mRW50ZXJBc3NldElECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgJeQXR0YWNoZWQgcGF5bWVudFsyXSBxdHkgaXMgbm90IG1hdGNoaW5nIGFzIHBlciBhdHRhY2hlZCBwYXltZW50WzFdLnBheW1lbnRbMl0gbXVzdCBiZSBhcyBpbnQgWwkApAMBBRZxdWFudGl0eW9mRW50ZXJBc3NldElEAgVdIG9yIAkApAMBCQBrAwUWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAABAMCEPQIBLgkAsgICCQCkAwEFFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQABgIGIFVTREMuAwkAZgIAAQUScXVhbnRpdHlvZkxQVG9rZW4xCQACAQkArAICCQCsAgICIExQIFRva2VuIE91dGNvbWUgaXMgZ29pbmcgYmVsb3cgCQCkAwEFDXNoYXJlZGVjaW1hbHMCOyBEZWNpbWFscy4gUGxlYXNlIEF0dGFjaCBtaW4uIDEgTFAgdG9rZW4gb3IgNSBVU0RDIEF0bGVhc3QuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFC1VTRENBc3NldElEBRROZXdVU0RDSG9sZGluZ0luUGFpcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQULVVNEQ0Fzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICCVRvdGFsX0xQXwUMRW50ZXJBc3NldElEBRBOZXdMUFRva2VuSXNzdWVkCQDMCAIJAQdSZWlzc3VlAwUOUmVpc3N1ZWFzc2V0SWQFEnF1YW50aXR5b2ZMUFRva2VuMQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRJxdWFudGl0eW9mTFBUb2tlbjEFDlJlaXNzdWVhc3NldElkBQNuaWwBaQEPUmVtb3ZlTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQI6Tm8gcGF5bWVudCBhdHRhY2hlZCwgUGxlYXNlIEF0dGFjaCBMUCBUb2tlbiBhcyBwYXltZW50WzFdLgQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEElJlaXNzdWVhYmxlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIlTFAgVG9rZW4gaXMgTWlzc2luZyBvciBub3QgR2VuZXJhdGVkLgQMZGVjaW1hbHNpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QECGRlY2ltYWxzCAUMZGVjaW1hbHNpbmZvCGRlY2ltYWxzBBJib3RoYXNzZXRzZGVjaW1hbHMJAGQCAAYFCGRlY2ltYWxzBA1zaGFyZWRlY2ltYWxzCQBpAgUSYm90aGFzc2V0c2RlY2ltYWxzAAIEEkNoZWNrVG90YWxMUEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAQQVXNlckxQUGVyY2VudGFnZQkAbAYJAGsDCAUDcG10BmFtb3VudAkAbAYACgAAAAgAAAAABQdDRUlMSU5HBRJDaGVja1RvdGFsTFBBbW91bnQABgABAAAABgUHQ0VJTElORwQQQ2hlY2tVU0RDQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAQRQ2hlY2tBc3NldEJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQED1VzZXJMUFdvcnRoVVNEQwkAawMFEENoZWNrVVNEQ0JhbGFuY2UFEFVzZXJMUFBlcmNlbnRhZ2UJAGwGAAoAAAAIAAAAAAUHQ0VJTElORwQQVXNlckxQV29ydGhBc3NldAkAawMFEUNoZWNrQXNzZXRCYWxhbmNlBRBVc2VyTFBQZXJjZW50YWdlCQBsBgAKAAAACAAAAAAFB0NFSUxJTkcEEVVTRENIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQULVVNEQ0Fzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFE5ld1VTRENIb2xkaW5nSW5QYWlyCQBlAgURVVNEQ0hvbGRpbmdJblBhaXIFD1VzZXJMUFdvcnRoVVNEQwQSQXNzZXRIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAZQIFEkFzc2V0SG9sZGluZ0luUGFpcgUQVXNlckxQV29ydGhBc3NldAQNTFBUb2tlbklzc3VlZAQHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQQTmV3TFBUb2tlbklzc3VlZAkAZQIFDUxQVG9rZW5Jc3N1ZWQIBQNwbXQGYW1vdW50AwkBAiE9AgUZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUMRW50ZXJBc3NldElECQACAQIjUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdC4DCQAAAgkA2QQBBQxFbnRlckFzc2V0SUQFC1VTRENBc3NldElECQACAQJrRG9uJ3QgY2hvb3NlIFVTREMgQXNzZXRJRCBhcyBJbnB1dCwgT25seSBXaGl0ZWxpc3RlZCBBc3NldCBhcyBJbnB1dCBTdHJpbmcgJiBBdHRhY2ggTFAgVG9rZW5zIGFzIHBheW1lbnRbMV0DCQECIT0CCAUDcG10B2Fzc2V0SWQFElJlaXNzdWVhYmxlYXNzZXRJZAkAAgECR1dyb25nIEFzc2V0IGlzIGF0dGFjaGVkIGluIHBheW1lbnRbMV0gb3IgTFAgVG9rZW4gTm90IEZvdW5kIG9yIE1pc3NpbmcuAwkAZgIAAQUQVXNlckxQUGVyY2VudGFnZQkAAgECLllvdXIgTFAgVG9rZW4gYW1vdW50ICUgaXMgdmVyeSBsb3cgdG8gY29udmVydC4DCQBmAgABBQ9Vc2VyTFBXb3J0aFVTREMJAAIBAlJZb3VyIExQIFRva2VuIGNvbnZlcnNpb24gYW1vdW50IGlzIHZlcnkgbG93IHRvIGNvbnZlcnQgb3IgbGVzcyB0aGFuIDAuMDAwMDAxIFVTREMuAwkAZgIAAQUQVXNlckxQV29ydGhBc3NldAkAAgECXFlvdXIgTFAgVG9rZW4gY29udmVyc2lvbiBhbW91bnQgaXMgdmVyeSBsb3cgdG8gY29udmVydCBvciBsZXNzIHRoYW4gZnJhY3Rpb24gdmFsdWUgb2YgVG9rZW4uCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXaXRoZHJhd19MUF9QZXJjZW50YWdlBRBVc2VyTFBQZXJjZW50YWdlCQDMCAIJAQRCdXJuAgUSUmVpc3N1ZWFibGVhc3NldElkCAUDcG10BmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUQTmV3TFBUb2tlbklzc3VlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQtVU0RDQXNzZXRJRAUUTmV3VVNEQ0hvbGRpbmdJblBhaXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFC1VTRENBc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFD1VzZXJMUFdvcnRoVVNEQwULVVNEQ0Fzc2V0SUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRBVc2VyTFBXb3J0aEFzc2V0CQDZBAEFDEVudGVyQXNzZXRJRAUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tlefpJIqw=", "height": 2762247, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EXpwAcD8Lpzd36xHAmgjbiYmu7xX8S49WyYcpuwH46YS Next: HMuYqsQfg7QGBaBZshNxPRzoR6v4vfmPqKRh3dqWArxB Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = base58'5bXgvADuVoFdhtF5uKZAEiVdAo7ZCWw151L4yyf1PiES' | |
4 | 5 | ||
6 | + | let b = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR') | |
5 | 7 | ||
6 | - | @Callable(a) | |
7 | - | func RegisterPairForVoting (b) = { | |
8 | - | let c = assetInfo(fromBase58String(b)) | |
9 | - | let d = value(a.payments[0]) | |
10 | - | let e = toBase58String(a.caller.bytes) | |
11 | - | let f = getString(this, ("Pair_UV_" + b)) | |
12 | - | let g = fromBase58String(b) | |
13 | - | if ((f == b)) | |
14 | - | then throw("Pair Already Exist in Voting List.") | |
15 | - | else [StringEntry(("Pair_UV_" + b), b)] | |
8 | + | @Callable(c) | |
9 | + | func RegisterPair (d,e) = { | |
10 | + | let f = value(c.payments[0]) | |
11 | + | let g = value(c.payments[1]) | |
12 | + | let h = toBase58String(c.caller.bytes) | |
13 | + | let i = !(isDefined(g.assetId)) | |
14 | + | let j = getString(this, ("Pair_UV_" + d)) | |
15 | + | let k = fromBase58String(d) | |
16 | + | let l = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist")) | |
17 | + | if ((j == d)) | |
18 | + | then throw("Pair Already Exist in List.") | |
19 | + | else if ((size(c.payments) != 2)) | |
20 | + | then throw("Two attached assets expected as payment. Kindly Attach payment1 = WAVES Token & payment2 = Token you want to List.") | |
21 | + | else if (isDefined(f.assetId)) | |
22 | + | then throw("Incorrect asset attached for Collateral, please attach WAVES only.") | |
23 | + | else if ((f.amount != 1000000000)) | |
24 | + | then throw((((("You attached only " + toString(fraction(f.amount, 1, 100000000))) + ".") + toString(fraction(f.amount, 1, 10000000))) + " WAVES for Listing in payment[1], please attach 10 WAVES.")) | |
25 | + | else if ((g.assetId != k)) | |
26 | + | then throw("Input String & Attached AssetID in payment2 is not matching.") | |
27 | + | else if ((i == true)) | |
28 | + | then throw("You Attached WAVES Asset ID for Listing, please attach Tokens You want to list in payment[2].") | |
29 | + | else [StringEntry(("Pair_UV_" + d), d), IntegerEntry(("Listing_Fee_" + d), f.amount), ScriptTransfer(b, f.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)] | |
16 | 30 | } | |
17 | 31 | ||
18 | 32 | ||
19 | - | @Verifier(h) | |
20 | - | func i () = sigVerify(h.bodyBytes, h.proofs[0], h.senderPublicKey) | |
33 | + | ||
34 | + | @Callable(c) | |
35 | + | func IssueLPToken (d) = { | |
36 | + | let m = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.") | |
37 | + | let n = toBase58String(c.caller.bytes) | |
38 | + | let o = valueOrErrorMessage(getString(this, ("Pair_UV_" + d)), "Asset not Found in Whitelisted Token") | |
39 | + | let l = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist")) | |
40 | + | let p = l.name | |
41 | + | let q = l.decimals | |
42 | + | let r = (1 * pow(10, 0, fraction((q + 6), 1, 2), 0, 0, CEILING)) | |
43 | + | let s = Issue((("LP-" + take(p, 8)) + "-USDC"), (((("LP-" + p) + "-USDC") + " is a Liquidity Provider Token Issued Against ") + d), r, fraction((q + 6), 1, 2), true) | |
44 | + | let t = calculateAssetId(s) | |
45 | + | if ((m != n)) | |
46 | + | then throw((("Your are not allowded to Issue LP Token. Only " + m) + " can issue the LP Token.")) | |
47 | + | else if ((o != d)) | |
48 | + | then throw("Pair is not available in List.") | |
49 | + | else [s, StringEntry(("LP_" + d), toBase58String(t)), IntegerEntry(("Total_LP_" + d), r)] | |
50 | + | } | |
51 | + | ||
52 | + | ||
53 | + | ||
54 | + | @Callable(c) | |
55 | + | func SwapAssetToUSDCPairEntry (d) = { | |
56 | + | let n = toBase58String(c.caller.bytes) | |
57 | + | let u = if ((size(c.payments) == 1)) | |
58 | + | then c.payments[0] | |
59 | + | else throw("Whitelisted Token is required as Attached payment[1].") | |
60 | + | let o = getString(this, ("Pair_UV_" + d)) | |
61 | + | let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
62 | + | let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
63 | + | let x = fraction(v, w, (w + u.amount)) | |
64 | + | let y = (v - x) | |
65 | + | let z = 3 | |
66 | + | let A = ((y * z) / 1000) | |
67 | + | let B = ((y - A) - A) | |
68 | + | let C = { | |
69 | + | let D = getInteger(this, ((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a))) | |
70 | + | if ($isInstanceOf(D, "Int")) | |
71 | + | then { | |
72 | + | let E = D | |
73 | + | E | |
74 | + | } | |
75 | + | else 0 | |
76 | + | } | |
77 | + | let F = ((C + A) + A) | |
78 | + | let G = { | |
79 | + | let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
80 | + | if ($isInstanceOf(D, "Int")) | |
81 | + | then { | |
82 | + | let E = D | |
83 | + | E | |
84 | + | } | |
85 | + | else 0 | |
86 | + | } | |
87 | + | let H = (w + u.amount) | |
88 | + | let I = { | |
89 | + | let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
90 | + | if ($isInstanceOf(D, "Int")) | |
91 | + | then { | |
92 | + | let E = D | |
93 | + | E | |
94 | + | } | |
95 | + | else 0 | |
96 | + | } | |
97 | + | let J = ((v - y) + A) | |
98 | + | let K = { | |
99 | + | let D = getIntegerValue(this, ("Total_of_Pair_Txns_" + d)) | |
100 | + | if ($isInstanceOf(D, "Int")) | |
101 | + | then { | |
102 | + | let E = D | |
103 | + | E | |
104 | + | } | |
105 | + | else 0 | |
106 | + | } | |
107 | + | let L = (K + 1) | |
108 | + | if ((d == toBase58String(a))) | |
109 | + | then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].") | |
110 | + | else if ((o != d)) | |
111 | + | then throw("Pair is not available in Whitelisted Asset.") | |
112 | + | else if ((u.assetId == a)) | |
113 | + | then throw("You can't Attach USDC as an Attached Payment. Only Whitelisted Tokens are accepted.") | |
114 | + | else if ((u.assetId != fromBase58String(d))) | |
115 | + | then throw(("Incorrect asset attached, please attach or send " + d)) | |
116 | + | else if ((v == 0)) | |
117 | + | then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.") | |
118 | + | else if ((w == 0)) | |
119 | + | then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.") | |
120 | + | else if ((100000 > y)) | |
121 | + | then throw((("Your Attached Asset Amount is very low. Attach More " + d) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast.")) | |
122 | + | else if ((y > v)) | |
123 | + | then throw((("Pool Only has a Liquidity of " + toString((v / pow(10, 0, 6, 0, 0, CEILING)))) + " USDC. Add Liquidity into Pool.")) | |
124 | + | else [IntegerEntry(((("Total_Swap_Fee_Collected_" + d) + "_") + toBase58String(a)), F), IntegerEntry(("Total_of_Pair_Txns_" + d), L), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), H), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), J), ScriptTransfer(c.caller, B, a), ScriptTransfer(b, A, a)] | |
125 | + | } | |
126 | + | ||
127 | + | ||
128 | + | ||
129 | + | @Callable(c) | |
130 | + | func SwapUSDCToAssetPairEntry (d) = { | |
131 | + | let n = toBase58String(c.caller.bytes) | |
132 | + | let u = if ((size(c.payments) == 1)) | |
133 | + | then c.payments[0] | |
134 | + | else throw((("Only " + toBase58String(a)) + " USDC Token is required as an Attached payment[1].")) | |
135 | + | let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
136 | + | let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
137 | + | let M = fraction(v, w, (v + u.amount)) | |
138 | + | let y = (w - M) | |
139 | + | let o = getString(this, ("Pair_UV_" + d)) | |
140 | + | let z = 3 | |
141 | + | let A = ((y * z) / 1000) | |
142 | + | let B = ((y - A) - A) | |
143 | + | let N = { | |
144 | + | let D = getInteger(this, ("Total_Swap_Fee_Collected_" + d)) | |
145 | + | if ($isInstanceOf(D, "Int")) | |
146 | + | then { | |
147 | + | let E = D | |
148 | + | E | |
149 | + | } | |
150 | + | else 0 | |
151 | + | } | |
152 | + | let O = ((N + A) + A) | |
153 | + | let G = { | |
154 | + | let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
155 | + | if ($isInstanceOf(D, "Int")) | |
156 | + | then { | |
157 | + | let E = D | |
158 | + | E | |
159 | + | } | |
160 | + | else 0 | |
161 | + | } | |
162 | + | let H = ((w - y) + A) | |
163 | + | let I = { | |
164 | + | let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
165 | + | if ($isInstanceOf(D, "Int")) | |
166 | + | then { | |
167 | + | let E = D | |
168 | + | E | |
169 | + | } | |
170 | + | else 0 | |
171 | + | } | |
172 | + | let J = (v + u.amount) | |
173 | + | let K = { | |
174 | + | let D = getIntegerValue(this, ("Total_of_Pair_Txns_" + d)) | |
175 | + | if ($isInstanceOf(D, "Int")) | |
176 | + | then { | |
177 | + | let E = D | |
178 | + | E | |
179 | + | } | |
180 | + | else 0 | |
181 | + | } | |
182 | + | let L = (K + 1) | |
183 | + | if ((o != d)) | |
184 | + | then throw("Pair is not available in Whitelisted Asset.") | |
185 | + | else if ((d == toBase58String(a))) | |
186 | + | then throw("Input can Never be a USDC AssetID. Enter Whitelisted AssetID in input & Attach USDC as an attachment Token in payment[1].") | |
187 | + | else if ((u.assetId != a)) | |
188 | + | 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.") | |
189 | + | else if ((100000 > u.amount)) | |
190 | + | then throw("Your Attached USDC Amount is very low. Attach Atleast 0.1 USDC to Claim the minimum Tokens.") | |
191 | + | else if ((v == 0)) | |
192 | + | then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.") | |
193 | + | else if ((w == 0)) | |
194 | + | then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.") | |
195 | + | else if ((y > w)) | |
196 | + | then throw((("Pool Only has a Liquidity of " + toString(w)) + " Tokens. Add Liquidity into Pool.")) | |
197 | + | else [IntegerEntry(("Total_Swap_Fee_Collected_" + d), O), IntegerEntry(("Total_of_Pair_Txns_" + d), L), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), H), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), J), ScriptTransfer(c.caller, B, fromBase58String(d)), ScriptTransfer(b, A, fromBase58String(d))] | |
198 | + | } | |
199 | + | ||
200 | + | ||
201 | + | ||
202 | + | @Callable(c) | |
203 | + | func AddLiquidity (d) = { | |
204 | + | let n = toBase58String(c.caller.bytes) | |
205 | + | let f = value(c.payments[0]) | |
206 | + | let g = value(c.payments[1]) | |
207 | + | let o = getString(this, ("Pair_UV_" + d)) | |
208 | + | let P = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + d)), "LP Token is Missing or May be not Generated.")) | |
209 | + | let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
210 | + | let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
211 | + | let Q = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist")) | |
212 | + | let q = Q.decimals | |
213 | + | let R = v | |
214 | + | let S = w | |
215 | + | let T = pow((((R * 1000000) / S) * pow(10, 0, q, 0, 0, CEILING)), 0, 1, 0, 0, CEILING) | |
216 | + | let U = (6 + q) | |
217 | + | let V = (U / 2) | |
218 | + | let W = fraction(T, f.amount, pow(10, 0, U, 0, 0, CEILING)) | |
219 | + | let X = pow((fraction(f.amount, 1, pow(10, 0, q, 0, 0, CEILING)) * fraction(g.amount, 1, pow(10, 0, 6, 0, 0, CEILING))), 0, 5, 1, V, DOWN) | |
220 | + | let Y = { | |
221 | + | let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
222 | + | if ($isInstanceOf(D, "Int")) | |
223 | + | then { | |
224 | + | let E = D | |
225 | + | E | |
226 | + | } | |
227 | + | else 0 | |
228 | + | } | |
229 | + | let Z = (Y + g.amount) | |
230 | + | let aa = { | |
231 | + | let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
232 | + | if ($isInstanceOf(D, "Int")) | |
233 | + | then { | |
234 | + | let E = D | |
235 | + | E | |
236 | + | } | |
237 | + | else 0 | |
238 | + | } | |
239 | + | let ab = (aa + f.amount) | |
240 | + | let ac = { | |
241 | + | let D = getIntegerValue(this, ("Total_LP_" + d)) | |
242 | + | if ($isInstanceOf(D, "Int")) | |
243 | + | then { | |
244 | + | let E = D | |
245 | + | E | |
246 | + | } | |
247 | + | else 0 | |
248 | + | } | |
249 | + | let ad = (ac + X) | |
250 | + | if ((o != d)) | |
251 | + | then throw("Pair is not available in Whitelisted Asset.") | |
252 | + | else if ((d == toBase58String(a))) | |
253 | + | 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].") | |
254 | + | else if ((size(c.payments) != 2)) | |
255 | + | 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.") | |
256 | + | else if ((f.assetId == a)) | |
257 | + | then throw("You Attached USDC asset in payment[1], please attach only whitelisted Token in payment[1] along with USDC in payment[2].") | |
258 | + | else if ((f.assetId != fromBase58String(d))) | |
259 | + | then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.") | |
260 | + | else if ((f.assetId != fromBase58String(d))) | |
261 | + | then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.") | |
262 | + | else if ((g.assetId != a)) | |
263 | + | then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDC Token.") | |
264 | + | else if ((5000000 > g.amount)) | |
265 | + | then throw("please attach atleast 5 USDC in payment[2] & Equivalent worth of Token in payment[1]") | |
266 | + | else if ((g.amount != W)) | |
267 | + | then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(W)) + "] or ") + toString(fraction(W, 1, 1000000))) + ".") + takeRight(toString(W), 6)) + " USDC.")) | |
268 | + | else if ((1 > X)) | |
269 | + | then throw((("LP Token Outcome is going below " + toString(V)) + " Decimals. Please Attach min. 1 LP token or 5 USDC Atleast.")) | |
270 | + | else [IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), Z), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), ab), IntegerEntry(("Total_LP_" + d), ad), Reissue(P, X, true), ScriptTransfer(c.caller, X, P)] | |
271 | + | } | |
272 | + | ||
273 | + | ||
274 | + | ||
275 | + | @Callable(c) | |
276 | + | func RemoveLiquidity (d) = { | |
277 | + | let n = toBase58String(c.caller.bytes) | |
278 | + | let u = if ((size(c.payments) == 1)) | |
279 | + | then c.payments[0] | |
280 | + | else throw("No payment attached, Please Attach LP Token as payment[1].") | |
281 | + | let o = getString(this, ("Pair_UV_" + d)) | |
282 | + | let ae = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + d)), "LP Token is Missing or not Generated.")) | |
283 | + | let Q = valueOrErrorMessage(assetInfo(fromBase58String(d)), (("Asset " + d) + " doesn't exist")) | |
284 | + | let q = Q.decimals | |
285 | + | let U = (6 + q) | |
286 | + | let V = (U / 2) | |
287 | + | let af = getIntegerValue(this, ("Total_LP_" + d)) | |
288 | + | let ag = pow(fraction(u.amount, pow(10, 0, 8, 0, 0, CEILING), af), 6, 1, 0, 6, CEILING) | |
289 | + | let v = getIntegerValue(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
290 | + | let w = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
291 | + | let ah = fraction(v, ag, pow(10, 0, 8, 0, 0, CEILING)) | |
292 | + | let ai = fraction(w, ag, pow(10, 0, 8, 0, 0, CEILING)) | |
293 | + | let Y = { | |
294 | + | let D = getInteger(this, ((("Balance_of_" + d) + "_") + toBase58String(a))) | |
295 | + | if ($isInstanceOf(D, "Int")) | |
296 | + | then { | |
297 | + | let E = D | |
298 | + | E | |
299 | + | } | |
300 | + | else 0 | |
301 | + | } | |
302 | + | let Z = (Y - ah) | |
303 | + | let aa = { | |
304 | + | let D = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + d)) | |
305 | + | if ($isInstanceOf(D, "Int")) | |
306 | + | then { | |
307 | + | let E = D | |
308 | + | E | |
309 | + | } | |
310 | + | else 0 | |
311 | + | } | |
312 | + | let ab = (aa - ai) | |
313 | + | let ac = { | |
314 | + | let D = getIntegerValue(this, ("Total_LP_" + d)) | |
315 | + | if ($isInstanceOf(D, "Int")) | |
316 | + | then { | |
317 | + | let E = D | |
318 | + | E | |
319 | + | } | |
320 | + | else 0 | |
321 | + | } | |
322 | + | let ad = (ac - u.amount) | |
323 | + | if ((o != d)) | |
324 | + | then throw("Pair is not available in Whitelist.") | |
325 | + | else if ((fromBase58String(d) == a)) | |
326 | + | then throw("Don't choose USDC AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]") | |
327 | + | else if ((u.assetId != ae)) | |
328 | + | then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.") | |
329 | + | else if ((1 > ag)) | |
330 | + | then throw("Your LP Token amount % is very low to convert.") | |
331 | + | else if ((1 > ah)) | |
332 | + | then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 USDC.") | |
333 | + | else if ((1 > ai)) | |
334 | + | then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.") | |
335 | + | else [IntegerEntry("Withdraw_LP_Percentage", ag), Burn(ae, u.amount), IntegerEntry(("Total_LP_" + d), ad), IntegerEntry(((("Balance_of_" + d) + "_") + toBase58String(a)), Z), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + d), ab), ScriptTransfer(c.caller, ah, a), ScriptTransfer(c.caller, ai, fromBase58String(d))] | |
336 | + | } | |
337 | + | ||
338 | + | ||
339 | + | @Verifier(aj) | |
340 | + | func ak () = sigVerify(aj.bodyBytes, aj.proofs[0], aj.senderPublicKey) | |
21 | 341 |
github/deemru/w8io/169f3d6 41.96 ms ◑