tx · D2EC1q1U4b5uMdGfd66njBYoSP1LyxwdKsbQvehAw7AA

3N7ZkW149f9jViqccWXfkW9JxSbW3ZQD3DU:  -0.02100000 Waves

2024.11.29 09:46 [3392378] smart account 3N7ZkW149f9jViqccWXfkW9JxSbW3ZQD3DU > SELF 0.00000000 Waves

{ "type": 13, "id": "D2EC1q1U4b5uMdGfd66njBYoSP1LyxwdKsbQvehAw7AA", "fee": 2100000, "feeAssetId": null, "timestamp": 1732862792512, "version": 2, "chainId": 84, "sender": "3N7ZkW149f9jViqccWXfkW9JxSbW3ZQD3DU", "senderPublicKey": "72moo5xPiTpcN7cgUkRpVc2jvavGKFNVjU91u71msbi4", "proofs": [ "4Hj9bkCn5fNjz3CEx98PCHAjmaVuVcEzASC5cSKjbYHMG1fUTg3XU7ADHJKtidQnyKWxvE7ukTiJdzzcZrPe3yRS" ], "script": "base64:BgItCAISBwoFCAgICAESBwoFCAgICAESABIDCgEIEgQKAggBEgUKAwgIARIDCgEIRwAHVkVSU0lPTgINUE0tMC44LjEtUFJPRAAJY29uZmlnU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMCDWNvbmZpZ0FkZHJlc3MCIzNQUEVCUmc0czJhZjJyUTJaYkx2ZHUxSGZkNFZvNlFWRFRvAA5DT05GSUdfQUREUkVTUwMJAAACBQljb25maWdTdHICAAUEdGhpcwkBB0FkZHJlc3MBCQDZBAEFCWNvbmZpZ1N0cgAVQXNzZXRzV2VpZ2h0c0RlY2ltYWxzAAQABVNjYWxlAJBOAAZTY2FsZTgAgMLXLwAHU2NhbGUxNgCAgIT+pt7hEQAIRmVlU2NhbGUAkE4AEVBvb2xUb2tlbkRlY2ltYWxzAAgADlBvb2xUb2tlblNjYWxlCQBsBgAKAAAFEVBvb2xUb2tlbkRlY2ltYWxzAAAAAAUGSEFMRlVQABBNSU5fU1RFUFNfQU1PVU5UCQELdmFsdWVPckVsc2UCCQCaCAIFDkNPTkZJR19BRERSRVNTAhBtaW5fc3RlcHNfYW1vdW50AAEAEE1BWF9TVEVQU19BTU9VTlQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOQ09ORklHX0FERFJFU1MCEG1heF9zdGVwc19hbW91bnQA9AMAEk1JTl9TVEVQU19JTlRFUlZBTAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5DT05GSUdfQUREUkVTUwISbWluX3N0ZXBzX2ludGVydmFsAAEAEk1BWF9TVEVQU19JTlRFUlZBTAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5DT05GSUdfQUREUkVTUwISbWF4X3N0ZXBzX2ludGVydmFsAJBOAApNSU5fV0VJR0hUCQELdmFsdWVPckVsc2UCCQCaCAIFDkNPTkZJR19BRERSRVNTAgptaW5fd2VpZ2h0AGQACk1BWF9XRUlHSFQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOQ09ORklHX0FERFJFU1MCCm1heF93ZWlnaHQArE0BDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldEJpbmFyeQEDa2V5BAckbWF0Y2gwCQCcCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwBQFiAQABDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAETdHJ5R2V0U3RyaW5nT3JUaHJvdwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWIJAAIBCQCsAgICHW5vIHN1Y2gga2V5IGluIGRhdGEgc3RvcmFnZTogBQNrZXkBDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBDWdldEFzc2V0Qnl0ZXMBCmFzc2V0SWRTdHIDCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQUKYXNzZXRJZFN0cgEPZ2V0VG9rZW5CYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAXQFByRtYXRjaDAJAPAHAgUEdGhpcwUBdAgJAO8HAQUEdGhpcwlhdmFpbGFibGUBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBWFjY3VtBGl0ZW0JAM4IAgUFYWNjdW0JAMwIAgkBDWdldEFzc2V0Qnl0ZXMBBQRpdGVtBQNuaWwBFGFkZEFzc2V0V2VpZ2h0VG9MaXN0AgVhY2N1bQRpdGVtCQDOCAIFBWFjY3VtCQDMCAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB3N0YXRpY18JAQ5nZXRBc3NldFN0cmluZwEFBGl0ZW0CB193ZWlnaHQFA25pbAEXYWRkQXNzZXRXZWlnaHRUb1N0ckxpc3QCBWFjY3VtBGl0ZW0JAM4IAgUFYWNjdW0JAMwIAgkApAMBCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfBQRpdGVtAgdfd2VpZ2h0BQNuaWwBFmFkZEFzc2V0RGVjaW1hbHNUb0xpc3QCBWFjY3VtBGl0ZW0JAM4IAgUFYWNjdW0JAMwIAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHc3RhdGljXwkBDmdldEFzc2V0U3RyaW5nAQUEaXRlbQIJX2RlY2ltYWxzBQNuaWwBE2FkZEFzc2V0U2NhbGVUb0xpc3QCBWFjY3VtBGl0ZW0JAM4IAgUFYWNjdW0JAMwIAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHc3RhdGljXwkBDmdldEFzc2V0U3RyaW5nAQUEaXRlbQIGX3NjYWxlBQNuaWwBDGFkZEludFRvTGlzdAIFYWNjdW0EaXRlbQkAzggCBQVhY2N1bQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FA25pbAAOdXNkbkFzc2V0SWRTdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOQ09ORklHX0FERFJFU1MCDnVzZG5Bc3NldElkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAAQcHV6emxlQXNzZXRJZFN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwIQcHV6emxlQXNzZXRJZFN0cgIsSEVCOFFhdzl4cldwV3M4dEhzaUFUWUdCV0RCdFAyUzdrY1BBTHJNdTQzQVMADnVzZHRBc3NldElkU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAg51c2R0QXNzZXRJZFN0cgIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoAEXVzZHRQcHRBc3NldElkU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAhF1c2R0UHB0QXNzZXRJZFN0cgIsOXdjM0xYTkE0VEVCc1h5S3RvTEU5bXJiREQ3V01IWHZYckNqWnZhYkxBc2kADnJvbWVBc3NldElkU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAg5yb21lQXNzZXRJZFN0cgIsQVA0Q2I1eExZR0g2WmlnSHJlQ1pIb1hwUVRXRGtQc0cyQkhxZkRVeDZ0YUoAD3dhdmVzQXNzZXRJZFN0cgIFV0FWRVMAC3VzZG5Bc3NldElkCQDZBAEFDnVzZG5Bc3NldElkU3RyAA1wdXp6bGVBc3NldElkCQDZBAEFEHB1enpsZUFzc2V0SWRTdHIAC3VzZHRBc3NldElkCQDZBAEFDnVzZHRBc3NldElkU3RyAA51c2R0UHB0QXNzZXRJZAkA2QQBBRF1c2R0UHB0QXNzZXRJZFN0cgALcm9tZUFzc2V0SWQJANkEAQUOcm9tZUFzc2V0SWRTdHIADHdhdmVzQXNzZXRJZAUEdW5pdAAVc3VwcG9ydGVkRmVlQXNzZXRzU3RyCQDMCAIFDnVzZG5Bc3NldElkU3RyCQDMCAIFEHB1enpsZUFzc2V0SWRTdHIJAMwIAgUOdXNkdEFzc2V0SWRTdHIJAMwIAgURdXNkdFBwdEFzc2V0SWRTdHIJAMwIAgUPd2F2ZXNBc3NldElkU3RyCQDMCAIFDnJvbWVBc3NldElkU3RyBQNuaWwADW9yYWNsZUFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAg1vcmFjbGVBZGRyZXNzAiMzTjkxZTd3SGlWN1FhZERzeDNSVUpReHgxZXRxY0FLcmZIagALZmVlc0FkZHJlc3MJAQdBZGRyZXNzAQkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAgtmZWVzQWRkcmVzcwIjM045MWU3d0hpVjdRYWREc3gzUlVKUXh4MWV0cWNBS3JmSGoAEnNodXRkb3duQWRkcmVzc1N0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwIPc2h1dGRvd25BZGRyZXNzAiMzTjkxZTd3SGlWN1FhZERzeDNSVUpReHgxZXRxY0FLcmZIagAPbGF5ZXIyQWRkcmVzc2VzCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAg9sYXllcjJBZGRyZXNzZXMCIzNOOTFlN3dIaVY3UWFkRHN4M1JVSlF4eDFldHFjQUtyZkhqABFjb2xkTWFzdGVyQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOQ09ORklHX0FERFJFU1MCEWNvbGRNYXN0ZXJBZGRyZXNzAiMzTjkxZTd3SGlWN1FhZERzeDNSVUpReHgxZXRxY0FLcmZIagARY2FsY3VsYXRvckFjY291bnQJAQdBZGRyZXNzAQkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFDkNPTkZJR19BRERSRVNTAg5mYWN0b3J5QWRkcmVzcwIjM04xeXRBVXlodGlnOVg2RjJoSEhzMWpiell4cjQ3WXA4RnIADmZhY3RvcnlBY2NvdW50CQEHQWRkcmVzcwEJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwIOZmFjdG9yeUFkZHJlc3MCIzNNc2d6YnRSZzhORWtiVGNIQnl3dHdUZENlOUJSeE1RbzVUAAxtYXN0ZXJQdWJLZXkJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ5DT05GSUdfQUREUkVTUwIMbWFzdGVyUHViS2V5Aiw0ejhDS1NZUUJLa3p4N1BCYjV1QlAxWVBhNllBSFJOVEFwVzFzUVZIVDVlVQABVAkBDXRyeUdldEludGVnZXIBAhNzdGF0aWNfdG9rZW5zQW1vdW50AAhhc3NldElkcwoAAiRsCQC1CQIJAQx0cnlHZXRTdHJpbmcBAg9zdGF0aWNfdG9rZW5JZHMCASwKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0Qnl0ZXNUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoADUFzc2V0c1dlaWdodHMKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFGFkZEFzc2V0V2VpZ2h0VG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAhEZWNpbWFscwoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEWYWRkQXNzZXREZWNpbWFsc1RvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjJfMgIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIJAQUkZjJfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgAGU2NhbGVzCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYzXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNhZGRBc3NldFNjYWxlVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYzXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmM18yAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgkBBSRmM18xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAANGZWUJAQ10cnlHZXRJbnRlZ2VyAQIKc3RhdGljX2ZlZQAMZWFybmVkQXNzZXRzBQhhc3NldElkcwENZ2V0UG9vbFN0YXR1cwAEBnBvb2xJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWNjb3VudAkArAICAgZwb29sX18JAKUIAQUEdGhpcwAABAZzdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOZmFjdG9yeUFjY291bnQJAKwCAgIOcG9vbF9fc3RhdHVzX18JAKQDAQUGcG9vbElkAAIFBnN0YXR1cwEKZ2V0U2V0dGluZwEDa2V5CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5mYWN0b3J5QWNjb3VudAkArAICAgdzZXR1cF9fBQNrZXkAFEluaXRhbFdhdmVzTGlxdWlkaXR5CQEKZ2V0U2V0dGluZwECEHZpcnR1YWxMaXF1aWRpdHkAC0NyZWF0aW9uRmVlCQEKZ2V0U2V0dGluZwECC2NyZWF0aW9uRmVlAAtDdXJ2ZVRhcmdldAkBCmdldFNldHRpbmcBAgtjdXJ2ZVRhcmdldAEKaXNTaHV0ZG93bgAED3NodXRkb3duQWRkcmVzcwkApggBBRJzaHV0ZG93bkFkZHJlc3NTdHIDCQAAAgUPc2h1dGRvd25BZGRyZXNzBQR1bml0BwQHJG1hdGNoMAkAmwgCCQEFdmFsdWUBBQ9zaHV0ZG93bkFkZHJlc3MCC2lzX3NodXRkb3duAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHARJnZXRQcmljZUZyb21PcmFjbGUBCmFzc2V0SWRTdHIEByRtYXRjaDAJAJoIAgUNb3JhY2xlQWRkcmVzcwkArAICBQphc3NldElkU3RyAgdfdHdhcDVCAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeADAhD0BEWNhbGN1bGF0ZVVzZFZhbHVlAwdhc3NldElkBmFtb3VudAhhQmFsYW5jZQQLYXNzZXRXZWlnaHQJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB3N0YXRpY18JAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQCB193ZWlnaHQEC2ZlZUFzc2V0U3RyCQEMdHJ5R2V0U3RyaW5nAQIPc3RhdGljX2ZlZVRva2VuBA1mZWVBc3NldFNjYWxlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgIHc3RhdGljXwULZmVlQXNzZXRTdHICBl9zY2FsZQQLZmVlQXNzZXROdW0JAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMJAQ1nZXRBc3NldEJ5dGVzAQULZmVlQXNzZXRTdHIEDmZlZUFzc2V0V2VpZ2h0CQCRAwIFDUFzc2V0c1dlaWdodHMFC2ZlZUFzc2V0TnVtBA9mZWVBc3NldEJhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8FC2ZlZUFzc2V0U3RyAghfYmFsYW5jZQQNdmFsSW5GZWVBc3NldAkAawMFBmFtb3VudAkAaQIFD2ZlZUFzc2V0QmFsYW5jZQUOZmVlQXNzZXRXZWlnaHQJAGkCBQhhQmFsYW5jZQULYXNzZXRXZWlnaHQEDWZlZUFzc2V0UHJpY2UJARJnZXRQcmljZUZyb21PcmFjbGUBBQtmZWVBc3NldFN0cgkAawMFDXZhbEluRmVlQXNzZXQFDWZlZUFzc2V0UHJpY2UFDWZlZUFzc2V0U2NhbGUBEmNhbGN1bGF0ZU91dEFtb3VudAUIQW1vdW50SW4HYXNzZXRJbghhc3NldE91dAlCYWxhbmNlSW4KQmFsYW5jZU91dAQHSW5kZXhJbgkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwUHYXNzZXRJbgQISW5kZXhPdXQJAQV2YWx1ZQEJAM8IAgUIYXNzZXRJZHMFCGFzc2V0T3V0AwkAAAIFB0luZGV4SW4FCEluZGV4T3V0BQhBbW91bnRJbgkAbgQFCkJhbGFuY2VPdXQJAGUCCQBoAgUGU2NhbGU4BQZTY2FsZTgJAKADAQkAdgYJAL0CBAkAuQICCQC2AgEFCUJhbGFuY2VJbgkAtgIBAJBOCQC2AgEJAGgCBQZTY2FsZTgFBlNjYWxlOAkAuQICCQC2AgEJAGQCBQlCYWxhbmNlSW4FCEFtb3VudEluCQC2AgEAkE4FBkhBTEZVUAAQCQC2AgEJAGsDCQCRAwIFDUFzc2V0c1dlaWdodHMFB0luZGV4SW4AgKCUpY0dCQCRAwIFDUFzc2V0c1dlaWdodHMFCEluZGV4T3V0AAwAEAUHQ0VJTElORwkAaAIFBlNjYWxlOAUGU2NhbGU4BQhIQUxGRVZFTgEdY2FsY3VsYXRlQ3VycmVudEFzc2V0SW50ZXJlc3QEB2Fzc2V0SWQKYXNzZXRJZFN0cghhQmFsYW5jZRZ0b2tlbkVhcm5pbmdzTGFzdENoZWNrBAt0b3RhbFN0YWtlZAkBDXRyeUdldEludGVnZXIBAhJnbG9iYWxfaW5kZXhTdGFrZWQEFXRva2VuQmFsYW5jZUxhc3RDaGVjawUWdG9rZW5FYXJuaW5nc0xhc3RDaGVjawQTY3VycmVudEJhbGFuY2VEZWx0YQkAZQIJAQ9nZXRUb2tlbkJhbGFuY2UBBQdhc3NldElkBQhhQmFsYW5jZQQUY3VycmVudFRva2VuRWFybmluZ3MDCQBmAgUTY3VycmVudEJhbGFuY2VEZWx0YQUVdG9rZW5CYWxhbmNlTGFzdENoZWNrBRNjdXJyZW50QmFsYW5jZURlbHRhBRV0b2tlbkJhbGFuY2VMYXN0Q2hlY2sEC25ld0Vhcm5pbmdzCQBlAgUUY3VycmVudFRva2VuRWFybmluZ3MFFXRva2VuQmFsYW5jZUxhc3RDaGVjawQLbmV3SW50ZXJlc3QDCQAAAgULdG90YWxTdGFrZWQAAAAACQBrAwULbmV3RWFybmluZ3MFBlNjYWxlOAULdG90YWxTdGFrZWQEEWxhc3RDaGVja0ludGVyZXN0CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAhFnbG9iYWxfbGFzdENoZWNrXwUKYXNzZXRJZFN0cgIJX2ludGVyZXN0CQBkAgURbGFzdENoZWNrSW50ZXJlc3QFC25ld0ludGVyZXN0AQtjbGFpbVJlc3VsdAEHYWRkcmVzcwQKYWRkcmVzc1N0cgkApQgBBQdhZGRyZXNzBAxwdXp6bGVBbW91bnQJAQ10cnlHZXRJbnRlZ2VyAQkArAICBQphZGRyZXNzU3RyAgxfaW5kZXhTdGFrZWQKAQdoYW5kbGVyAgVhY2N1bQdhc3NldElkBAphc3NldElkU3RyCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldElkBAhhQmFsYW5jZQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwkBDmdldEFzc2V0U3RyaW5nAQUHYXNzZXRJZAIIX2JhbGFuY2UEFnRva2VuRWFybmluZ3NMYXN0Q2hlY2sJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICEWdsb2JhbF9sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfZWFybmluZ3MEFGN1cnJlbnRUb2tlbkludGVyZXN0CQEdY2FsY3VsYXRlQ3VycmVudEFzc2V0SW50ZXJlc3QEBQdhc3NldElkBQphc3NldElkU3RyBQhhQmFsYW5jZQUWdG9rZW5FYXJuaW5nc0xhc3RDaGVjawQUY3VycmVudFRva2VuRWFybmluZ3MJAJYDAQkAzAgCBRZ0b2tlbkVhcm5pbmdzTGFzdENoZWNrCQDMCAIJAGUCCQEPZ2V0VG9rZW5CYWxhbmNlAQUHYXNzZXRJZAUIYUJhbGFuY2UFA25pbAQMcmV3YXJkQW1vdW50CQBrAwUMcHV6emxlQW1vdW50CQBlAgUUY3VycmVudFRva2VuSW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgUKYWRkcmVzc1N0cgILX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAUGU2NhbGU4BAh0cmFuc2ZlcgMJAAACBQxyZXdhcmRBbW91bnQAAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFB2FkZHJlc3MFDHJld2FyZEFtb3VudAUHYXNzZXRJZAUDbmlsCQCUCgIJAM4IAgkAzggCCAUFYWNjdW0CXzEFCHRyYW5zZmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9lYXJuaW5ncwkAZQIFFGN1cnJlbnRUb2tlbkVhcm5pbmdzBQxyZXdhcmRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAhFnbG9iYWxfbGFzdENoZWNrXwUKYXNzZXRJZFN0cgIJX2ludGVyZXN0BRRjdXJyZW50VG9rZW5JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUKYWRkcmVzc1N0cgILX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAUUY3VycmVudFRva2VuSW50ZXJlc3QFA25pbAkAZAIIBQVhY2N1bQJfMgkBEWNhbGN1bGF0ZVVzZFZhbHVlAwUHYXNzZXRJZAUMcmV3YXJkQW1vdW50BQhhQmFsYW5jZQQFYWNjdW0KAAIkbAUMZWFybmVkQXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmNF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHaGFuZGxlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmNF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjRfMgIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlAoCCQDOCAIIBQVhY2N1bQJfMQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphZGRyZXNzU3RyAhFfY2xhaW1lZFJld2FyZFVTRAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkArAICBQphZGRyZXNzU3RyAhFfY2xhaW1lZFJld2FyZFVTRAgFBWFjY3VtAl8yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFkZHJlc3NTdHICCl9sYXN0Q2xhaW0IBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwIBQVhY2N1bQJfMgEDc3VtAgVhY2N1bQFuCQBkAgUFYWNjdW0JAQ1wYXJzZUludFZhbHVlAQUBbgENY2hlY2tGZWVBc3NldAIFYWNjdW0EbmV4dAMDCQECIT0CCQDPCAIFFXN1cHBvcnRlZEZlZUFzc2V0c1N0cgUEbmV4dAUEdW5pdAkAAAIFBWFjY3VtAgAHBQRuZXh0BQVhY2N1bQEMc3dhcEludGVybmFsBQdhc3NldEluCGFzc2V0T3V0CGFtb3VudEluB21pbmltdW0UcmVjZWlwaWVudEFkZHJlc3NTdHIECEFtb3VudEluBQhhbW91bnRJbgQHQXNzZXRJbgkBDWdldEFzc2V0Qnl0ZXMBBQdhc3NldEluBAhBc3NldE91dAkBDWdldEFzc2V0Qnl0ZXMBBQhhc3NldE91dAQHc2NhbGVJbgkAaQIFBlNjYWxlOAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHc3RhdGljXwUHYXNzZXRJbgIGX3NjYWxlBAhzY2FsZU91dAkAaQIFBlNjYWxlOAkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHc3RhdGljXwUIYXNzZXRPdXQCBl9zY2FsZQQOZmVlQXNzZXRPdXRTdHIJAQx0cnlHZXRTdHJpbmcBAg9zdGF0aWNfZmVlVG9rZW4EC2ZlZUFzc2V0T3V0AwkAAAIFDmZlZUFzc2V0T3V0U3RyAgAFDHdhdmVzQXNzZXRJZAkBDWdldEFzc2V0Qnl0ZXMBBQ5mZWVBc3NldE91dFN0cgQOQXNzZXRJbkJhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFB0Fzc2V0SW4CCF9iYWxhbmNlBA9Bc3NldE91dEJhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8FCGFzc2V0T3V0AghfYmFsYW5jZQQUQXNzZXRJbkJhbGFuY2VTY2FsZWQJAGgCBQ5Bc3NldEluQmFsYW5jZQUHc2NhbGVJbgQVQXNzZXRPdXRCYWxhbmNlU2NhbGVkCQBoAgUPQXNzZXRPdXRCYWxhbmNlBQhzY2FsZU91dAQLZmVlQW1vdW50SW4JAGsDBQhBbW91bnRJbgUDRmVlBQhGZWVTY2FsZQQNY2xlYW5BbW91bnRJbgkAZQIFCEFtb3VudEluBQtmZWVBbW91bnRJbgQTY2xlYW5BbW91bnRJblNjYWxlZAkAaAIFDWNsZWFuQW1vdW50SW4FB3NjYWxlSW4ECkFtb3VudE91dDEJARJjYWxjdWxhdGVPdXRBbW91bnQFBRNjbGVhbkFtb3VudEluU2NhbGVkBQdBc3NldEluBQhBc3NldE91dAUUQXNzZXRJbkJhbGFuY2VTY2FsZWQFFUFzc2V0T3V0QmFsYW5jZVNjYWxlZAQJQW1vdW50T3V0CQBrAwUKQW1vdW50T3V0MQABBQhzY2FsZU91dAQQQXNzZXRPdXRCYWxhbmNlMgkAZQIFD0Fzc2V0T3V0QmFsYW5jZQUJQW1vdW50T3V0BA9Bc3NldEluQmFsYW5jZTIJAGQCBQ5Bc3NldEluQmFsYW5jZQUNY2xlYW5BbW91bnRJbgQSZmVlQXNzZXRPdXRCYWxhbmNlAwkAAAIFC2ZlZUFzc2V0T3V0BQdBc3NldEluBQ9Bc3NldEluQmFsYW5jZTIDCQAAAgULZmVlQXNzZXRPdXQFCEFzc2V0T3V0BRBBc3NldE91dEJhbGFuY2UyCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQtmZWVBc3NldE91dAIIX2JhbGFuY2UEDGZlZUFtb3VudE91dAkBEmNhbGN1bGF0ZU91dEFtb3VudAUFC2ZlZUFtb3VudEluBQdBc3NldEluBQtmZWVBc3NldE91dAUOQXNzZXRJbkJhbGFuY2UFEmZlZUFzc2V0T3V0QmFsYW5jZQMJAGYCBQdtaW5pbXVtBQlBbW91bnRPdXQJAAIBAilhbW91bnQgdG8gcmVjaWV2ZSBpcyBsb3dlciB0aGFuIGdpdmVuIG9uZQMJAAACBQhBc3NldE91dAUHQXNzZXRJbgkAAgECGHRoaXMgc3dhcCBpcyBub3QgYWxsb3dlZAMJAGYCAAAJAGUCBQ9Bc3NldE91dEJhbGFuY2UFCUFtb3VudE91dAkAAgECG2NvbnRyYWN0IGlzIG91dCBvZiByZXNlcnZlcwMJAQppc1NodXRkb3duAAkAAgECE2NvbnRyYWN0IGlzIG9uIHN0b3AECmNyZWF0b3JGZWUJAGsDBQxmZWVBbW91bnRPdXQAAQAKBAtwcm90b2NvbEZlZQkAawMFDGZlZUFtb3VudE91dAAEAAoEDG5ld0JhbGFuY2VJbgUPQXNzZXRJbkJhbGFuY2UyBA1uZXdCYWxhbmNlT3V0CQBlAgUQQXNzZXRPdXRCYWxhbmNlMgMJAAACBQhBc3NldE91dAULZmVlQXNzZXRPdXQFDGZlZUFtb3VudE91dAAABBJuZXdCYWxhbmNlRmVlQXNzZXQDAwkBAiE9AgULZmVlQXNzZXRPdXQFB0Fzc2V0SW4JAQIhPQIFC2ZlZUFzc2V0T3V0BQhBc3NldE91dAcJAGUCBRJmZWVBc3NldE91dEJhbGFuY2UFDGZlZUFtb3VudE91dAUEdW5pdAQNYXNzZXRJbkNoYW5nZQkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQdBc3NldEluAghfYmFsYW5jZQUMbmV3QmFsYW5jZUluBA5hc3NldE91dENoYW5nZQkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfBQhhc3NldE91dAIIX2JhbGFuY2UFDW5ld0JhbGFuY2VPdXQEEWZlZUFzc2V0T3V0Q2hhbmdlAwkBAiE9AgUSbmV3QmFsYW5jZUZlZUFzc2V0BQR1bml0CQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFC2ZlZUFzc2V0T3V0AghfYmFsYW5jZQkBBXZhbHVlAQUSbmV3QmFsYW5jZUZlZUFzc2V0CQELU3RyaW5nRW50cnkCAgVoZWxsbwIFd29ybGQED3ZvbHVtZVVzZFVwZGF0ZQkBEWNhbGN1bGF0ZVVzZFZhbHVlAwUHQXNzZXRJbgUIQW1vdW50SW4FDkFzc2V0SW5CYWxhbmNlCQCUCgIJAMwIAgUOYXNzZXRPdXRDaGFuZ2UJAMwIAgUNYXNzZXRJbkNoYW5nZQkAzAgCBRFmZWVBc3NldE91dENoYW5nZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBRRyZWNlaXBpZW50QWRkcmVzc1N0cgUJQW1vdW50T3V0BQhBc3NldE91dAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEMdHJ5R2V0U3RyaW5nAQIQc3RhdGljX3Bvb2xPd25lcgUKY3JlYXRvckZlZQULZmVlQXNzZXRPdXQJAMwIAgkBDEludGVnZXJFbnRyeQICFGdsb2JhbF9lYXJuZWRCeU93bmVyCQBkAgkBDXRyeUdldEludGVnZXIBAhRnbG9iYWxfZWFybmVkQnlPd25lcgUKY3JlYXRvckZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIRZ2xvYmFsX3ZvbHVtZV91c2QJAGQCCQENdHJ5R2V0SW50ZWdlcgECEWdsb2JhbF92b2x1bWVfdXNkBQ92b2x1bWVVc2RVcGRhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUL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ZXROdW0DCQBnAgUIYXNzZXROdW0JAJADAQUKYXNzZXRJZHNMaQUFYWNjdW0EDWFzc2V0RGVjaW1hbHMACAkAzggCBQVhY2N1bQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB3N0YXRpY18JAJEDAgUNYXNzZXRJZHNTdHJMaQUIYXNzZXROdW0CBl9zY2FsZQkAbAYACgAABQ1hc3NldERlY2ltYWxzAAAAAAUERE9XTgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB3N0YXRpY18JAJEDAgUNYXNzZXRJZHNTdHJMaQUIYXNzZXROdW0CCV9kZWNpbWFscwUNYXNzZXREZWNpbWFscwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB3N0YXRpY18JAJEDAgUNYXNzZXRJZHNTdHJMaQUIYXNzZXROdW0CB193ZWlnaHQJAQV2YWx1ZQEJALYJAQkAkQMCBRFhc3NldFdlaWdodHNTdHJMaQUIYXNzZXROdW0FA25pbAQRaW5pdGlhbFBvb2xUb2tlbnMJARljYWxjdWxhdGVQb29sVG9rZW5zQW1vdW50AQgFAWkIcGF5bWVudHMDCQECIT0CBQ9hc3NldFdlaWdodHNTdW0AkE4JAAIBAitzdW0gb2YgdG9rZW4gd2VpZ2h0cyBtdXN0IGJlIGVxdWFsIHRvIDEwMDAwAwkAAAIFEWluaXRpYWxQb29sVG9rZW5zAAAJAAIBAjJ5b3UgbmVlZCBhIGJpZ2dlciB0b2tlbnMgYW1vdW50IHRvIGxhdW5jaCB0aGUgcG9vbAQOcG9vbFRva2VuSXNzdWUJAMMIBwkArAICAgNQWiAFCnBvb2xEb21haW4CHVB1enpsZSBTd2FwOiBwb29sIGluZGV4IHRva2VuBRFpbml0aWFsUG9vbFRva2VucwURUG9vbFRva2VuRGVjaW1hbHMGBQR1bml0AAAEC3Bvb2xUb2tlbklkCQC4CAEFDnBvb2xUb2tlbklzc3VlCQCUCgIJAM4IAgkAzggCCQDOCAIKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmN18xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkVG9rZW5EYXRhRW50cmllcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmN18yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjdfMgIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIJAQUkZjdfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAzAgCBQRtZW1lCQDMCAIJAQtTdHJpbmdFbnRyeQICD3N0YXRpY190b2tlbklkcwULYXNzZXRJZHNTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgIPc3RhdGljX2ZlZVRva2VuBQtmZWVBc3NldFN0cgkAzAgCCQELU3RyaW5nRW50cnkCAhNzdGF0aWNfdG9rZW5XZWlnaHRzBQ9hc3NldFdlaWdodHNTdHIJAMwIAgkBDEludGVnZXJFbnRyeQICE3N0YXRpY190b2tlbnNBbW91bnQJAJADAQUKYXNzZXRJZHNMaQkAzAgCCQELU3RyaW5nRW50cnkCAhFzdGF0aWNfcG9vbERvbWFpbgUKcG9vbERvbWFpbgkAzAgCCQELU3RyaW5nRW50cnkCAhJzdGF0aWNfYmFzZVRva2VuSWQFDmJhc2VUb2tlbklkU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQICEHN0YXRpY19wb29sT3duZXIFCXBvb2xPd25lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgIKc3RhdGljX2ZlZQUDZmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgxzdGF0aWNfS011bHQFB1NjYWxlMTYJAMwIAgkBDEludGVnZXJFbnRyeQICE2dsb2JhbF93YXNQcmVJbml0ZWQAAQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRnbG9iYWxfV0FWRVNfYmFsYW5jZQUUSW5pdGFsV2F2ZXNMaXF1aWRpdHkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfBQltZW1lSWRTdHICCF9iYWxhbmNlBQ10b2tlblF1YW50aXR5BQNuaWwJAMwIAgUOcG9vbFRva2VuSXNzdWUJAMwIAgkBDEludGVnZXJFbnRyeQICF2dsb2JhbF9wb29sVG9rZW5fYW1vdW50BRFpbml0aWFsUG9vbFRva2VucwkAzAgCCQEMSW50ZWdlckVudHJ5AgIQZ2xvYmFsX3dhc0luaXRlZAABCQDMCAIJAQtCaW5hcnlFbnRyeQICE2dsb2JhbF9wb29sVG9rZW5faWQFC3Bvb2xUb2tlbklkCQDMCAIJAQtTdHJpbmdFbnRyeQICFnN0YXRpY19wb29sVG9rZW5faWRTdHIJAQ5nZXRBc3NldFN0cmluZwEFC3Bvb2xUb2tlbklkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgxfaW5kZXhTdGFrZWQFEWluaXRpYWxQb29sVG9rZW5zCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhJnbG9iYWxfaW5kZXhTdGFrZWQFEWluaXRpYWxQb29sVG9rZW5zBQNuaWwFCW1lbWVJZFN0cgFpAQRpbml0BQpwb29sRG9tYWluCXBvb2xPd25lcgl0b2tlbk5hbWUJdG9rZW5EZXNjDXRva2VuUXVhbnRpdHkDCQECIT0CCAUBaQZjYWxsZXIFDmZhY3RvcnlBY2NvdW50CQACAQIKYWRtaW4gb25seQQEaW52MQkA/AcEBQR0aGlzAghpbml0UG9vbAkAzAgCBQpwb29sRG9tYWluCQDMCAIFCXBvb2xPd25lcgkAzAgCBQl0b2tlbk5hbWUJAMwIAgUJdG9rZW5EZXNjCQDMCAIFDXRva2VuUXVhbnRpdHkFA25pbAUDbmlsAwkAAAIFBGludjEFBGludjEECW1lbWVJZFN0cgoAAUAFBGludjEDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCAkBDHN3YXBJbnRlcm5hbAUCBVdBVkVTBQltZW1lSWRTdHIJAGUCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAULQ3JlYXRpb25GZWUAAAkApQgBCAUBaQxvcmlnaW5DYWxsZXICXzEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERY2xhaW1JbmRleFJld2FyZHMAAwkBCmlzU2h1dGRvd24ACQACAQITY29udHJhY3QgaXMgb24gc3RvcAkBC2NsYWltUmVzdWx0AQgFAWkGY2FsbGVyAWkBDWV2YWx1YXRlQ2xhaW0BBHVzZXIJAJQKAgUDbmlsCAkBC2NsYWltUmVzdWx0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEdXNlcgJfMgFpAQRzd2FwAghhc3NldE91dAdtaW5pbXVtBAZzdGF0dXMJAQ1nZXRQb29sU3RhdHVzAAMJAGYCAAIFBnN0YXR1cwQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIhcGxlYXNlIGF0dGFjaCBleGFjdGx5IG9uZSBwYXltZW50BAhBbW91bnRJbgkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB0Fzc2V0SW4ICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQDcmVzCQEMc3dhcEludGVybmFsBQkBDmdldEFzc2V0U3RyaW5nAQUHQXNzZXRJbgUIYXNzZXRPdXQFCEFtb3VudEluBQdtaW5pbXVtCQClCAEIBQFpBmNhbGxlcgMJAGYCCQERQGV4dHJOYXRpdmUoMTA1NSkBAhRnbG9iYWxfV0FWRVNfYmFsYW5jZQULQ3VydmVUYXJnZXQECW5vdGlmeUludgkA/AcEBQ5mYWN0b3J5QWNjb3VudAISbm90aWZ5U3RhdHVzVXBkYXRlCQDMCAIAAgUDbmlsBQNuaWwDCQAAAgUJbm90aWZ5SW52BQlub3RpZnlJbnYFA3JlcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDcmVzCQACAQI+cG9vbCBpcyBzdG9wcGVkOiBtb3N0IHByb2JhYmx5IGl0IHJlYWNoZWQgdGhlIHRhcmdldCBsaXF1aWRpdHkBaQEMc3dhcFJlYWRPbmx5Awdhc3NldEluCGFzc2V0T3V0CEFtb3VudEluBAdBc3NldEluCQENZ2V0QXNzZXRCeXRlcwEFB2Fzc2V0SW4ECEFzc2V0T3V0CQENZ2V0QXNzZXRCeXRlcwEFCGFzc2V0T3V0BAdzY2FsZUluCQBpAgUGU2NhbGU4CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfBQdhc3NldEluAgZfc2NhbGUECHNjYWxlT3V0CQBpAgUGU2NhbGU4CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfBQhhc3NldE91dAIGX3NjYWxlBA5mZWVBc3NldE91dFN0cgkBDHRyeUdldFN0cmluZwECD3N0YXRpY19mZWVUb2tlbgQLZmVlQXNzZXRPdXQDCQAAAgUOZmVlQXNzZXRPdXRTdHICAAULdXNkbkFzc2V0SWQJAQ1nZXRBc3NldEJ5dGVzAQUOZmVlQXNzZXRPdXRTdHIEDkFzc2V0SW5CYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQdBc3NldEluAghfYmFsYW5jZQQPQXNzZXRPdXRCYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfBQhhc3NldE91dAIIX2JhbGFuY2UEFEFzc2V0SW5CYWxhbmNlU2NhbGVkCQBoAgUOQXNzZXRJbkJhbGFuY2UFB3NjYWxlSW4EFUFzc2V0T3V0QmFsYW5jZVNjYWxlZAkAaAIFD0Fzc2V0T3V0QmFsYW5jZQUIc2NhbGVPdXQEC2ZlZUFtb3VudEluCQBrAwUIQW1vdW50SW4FA0ZlZQUIRmVlU2NhbGUEDWNsZWFuQW1vdW50SW4JAGUCBQhBbW91bnRJbgULZmVlQW1vdW50SW4EE2NsZWFuQW1vdW50SW5TY2FsZWQJAGgCBQ1jbGVhbkFtb3VudEluBQdzY2FsZUluBApBbW91bnRPdXQxCQESY2FsY3VsYXRlT3V0QW1vdW50BQUTY2xlYW5BbW91bnRJblNjYWxlZAUHQXNzZXRJbgUIQXNzZXRPdXQFFEFzc2V0SW5CYWxhbmNlU2NhbGVkBRVBc3NldE91dEJhbGFuY2VTY2FsZWQECUFtb3VudE91dAkAawMFCkFtb3VudE91dDEAAQUIc2NhbGVPdXQEEEFzc2V0T3V0QmFsYW5jZTIJAGUCBQ9Bc3NldE91dEJhbGFuY2UFCUFtb3VudE91dAQPQXNzZXRJbkJhbGFuY2UyCQBkAgUOQXNzZXRJbkJhbGFuY2UFDWNsZWFuQW1vdW50SW4EEmZlZUFzc2V0T3V0QmFsYW5jZQMJAAACBQtmZWVBc3NldE91dAUHQXNzZXRJbgUPQXNzZXRJbkJhbGFuY2UyAwkAAAIFC2ZlZUFzc2V0T3V0BQhBc3NldE91dAUQQXNzZXRPdXRCYWxhbmNlMgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwkBDmdldEFzc2V0U3RyaW5nAQULZmVlQXNzZXRPdXQCCF9iYWxhbmNlBAxmZWVBbW91bnRPdXQJARJjYWxjdWxhdGVPdXRBbW91bnQFBQtmZWVBbW91bnRJbgUHQXNzZXRJbgULZmVlQXNzZXRPdXQFDkFzc2V0SW5CYWxhbmNlBRJmZWVBc3NldE91dEJhbGFuY2UDCQAAAgUIQXNzZXRPdXQFB0Fzc2V0SW4JAAIBAhh0aGlzIHN3YXAgaXMgbm90IGFsbG93ZWQDCQBmAgAACQBlAgUPQXNzZXRPdXRCYWxhbmNlBQlBbW91bnRPdXQJAAIBAhtjb250cmFjdCBpcyBvdXQgb2YgcmVzZXJ2ZXMDCQEKaXNTaHV0ZG93bgAJAAIBAhNjb250cmFjdCBpcyBvbiBzdG9wCQCUCgIFA25pbAUJQW1vdW50T3V0AWkBEXRyYW5zZmVyT3duZXJzaGlwAQ9uZXdPd25lckFkZHJlc3MDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBDHRyeUdldFN0cmluZwECEHN0YXRpY19wb29sT3duZXIJAAIBAid0aGlzIGNhbGwgYXZhaWxhYmxlIG9ubHkgZm9yIHBvb2wgb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgIQc3RhdGljX3Bvb2xPd25lcgUPbmV3T3duZXJBZGRyZXNzBQNuaWwBAnR4AQZ2ZXJpZnkABBNrZXlBZG1pbkFkZHJlc3NMaXN0AhQlc19fYWRtaW5BZGRyZXNzTGlzdAQRa1Bvb2xDb250cmFjdEhhc2gCFHBvb2xfX2NvbnRyYWN0X19oYXNoBA5rZXlBbGxvd2VkVHhJZAIIJXNfX3R4SWQECWFkbWluTGlzdAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFDmZhY3RvcnlBY2NvdW50BRNrZXlBZG1pbkFkZHJlc3NMaXN0AgACAl9fBAdieU93bmVyAwkAZwIJAJADAQUJYWRtaW5MaXN0AAMHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BAhieUFkbWlucwkAAAIIBQJ0eAJpZAkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFDmZhY3RvcnlBY2NvdW50BQ5rZXlBbGxvd2VkVHhJZAIABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQKc2V0U2NyaXBUeAUHJG1hdGNoMAQNaGFzaE9uRmFjdG9yeQkBC3ZhbHVlT3JFbHNlAgkAnAgCBQ5mYWN0b3J5QWNjb3VudAURa1Bvb2xDb250cmFjdEhhc2gBAAQEaGFzaAkA9gMBCQEFdmFsdWUBCAUKc2V0U2NyaXBUeAZzY3JpcHQDAwkAAAIFBGhhc2gFDWhhc2hPbkZhY3RvcnkGBQhieUFkbWlucwYFB2J5T3duZXIDBQhieUFkbWlucwYFB2J5T3duZXKwqijF", "height": 3392378, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "PM-0.8.1-PROD"
5+
6+let b = valueOrElse(getString(this, "configAddress"), "3PPEBRg4s2af2rQ2ZbLvdu1Hfd4Vo6QVDTo")
7+
8+let c = if ((b == ""))
9+ then this
10+ else Address(fromBase58String(b))
11+
12+let d = 4
13+
14+let e = 10000
15+
16+let f = 100000000
17+
18+let g = 10000000000000000
19+
20+let h = 10000
21+
22+let i = 8
23+
24+let j = pow(10, 0, i, 0, 0, HALFUP)
25+
26+let k = valueOrElse(getInteger(c, "min_steps_amount"), 1)
27+
28+let l = valueOrElse(getInteger(c, "max_steps_amount"), 500)
29+
30+let m = valueOrElse(getInteger(c, "min_steps_interval"), 1)
31+
32+let n = valueOrElse(getInteger(c, "max_steps_interval"), 10000)
33+
34+let o = valueOrElse(getInteger(c, "min_weight"), 100)
35+
36+let p = valueOrElse(getInteger(c, "max_weight"), 9900)
37+
38+func q (r) = {
39+ let s = getInteger(this, r)
40+ if ($isInstanceOf(s, "Int"))
41+ then {
42+ let t = s
43+ t
44+ }
45+ else 0
46+ }
47+
48+
49+func u (r) = {
50+ let s = getBinary(this, r)
51+ if ($isInstanceOf(s, "ByteVector"))
52+ then {
53+ let t = s
54+ t
55+ }
56+ else base58''
57+ }
58+
59+
60+func v (r) = {
61+ let s = getString(this, r)
62+ if ($isInstanceOf(s, "String"))
63+ then {
64+ let t = s
65+ t
66+ }
67+ else ""
68+ }
69+
70+
71+func w (r) = {
72+ let s = getString(this, r)
73+ if ($isInstanceOf(s, "String"))
74+ then {
75+ let t = s
76+ t
77+ }
78+ else throw(("no such key in data storage: " + r))
79+ }
80+
81+
82+func x (y) = {
83+ let s = y
84+ if ($isInstanceOf(s, "ByteVector"))
85+ then {
86+ let t = s
87+ toBase58String(t)
88+ }
89+ else "WAVES"
90+ }
91+
92+
93+func z (A) = if ((A == "WAVES"))
94+ then unit
95+ else fromBase58String(A)
96+
97+
98+func B (y) = {
99+ let s = y
100+ if ($isInstanceOf(s, "ByteVector"))
101+ then {
102+ let C = s
103+ assetBalance(this, C)
104+ }
105+ else wavesBalance(this).available
106+ }
107+
108+
109+func D (E,F) = (E ++ [z(F)])
110+
111+
112+func G (E,F) = (E ++ [q((("static_" + x(F)) + "_weight"))])
113+
114+
115+func H (E,F) = (E ++ [toString(q((("static_" + F) + "_weight")))])
116+
117+
118+func I (E,F) = (E ++ [q((("static_" + x(F)) + "_decimals"))])
119+
120+
121+func J (E,F) = (E ++ [q((("static_" + x(F)) + "_scale"))])
122+
123+
124+func K (E,F) = (E ++ [parseIntValue(F)])
125+
126+
127+let L = valueOrElse(getString(c, "usdnAssetIdStr"), "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p")
128+
129+let M = valueOrElse(getString(c, "puzzleAssetIdStr"), "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS")
130+
131+let N = valueOrElse(getString(c, "usdtAssetIdStr"), "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ")
132+
133+let O = valueOrElse(getString(c, "usdtPptAssetIdStr"), "9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi")
134+
135+let P = valueOrElse(getString(c, "romeAssetIdStr"), "AP4Cb5xLYGH6ZigHreCZHoXpQTWDkPsG2BHqfDUx6taJ")
136+
137+let Q = "WAVES"
138+
139+let R = fromBase58String(L)
140+
141+let S = fromBase58String(M)
142+
143+let T = fromBase58String(N)
144+
145+let U = fromBase58String(O)
146+
147+let V = fromBase58String(P)
148+
149+let W = unit
150+
151+let X = [L, M, N, O, Q, P]
152+
153+let Y = Address(fromBase58String(valueOrElse(getString(c, "oracleAddress"), "3N91e7wHiV7QadDsx3RUJQxx1etqcAKrfHj")))
154+
155+let Z = Address(fromBase58String(valueOrElse(getString(c, "feesAddress"), "3N91e7wHiV7QadDsx3RUJQxx1etqcAKrfHj")))
156+
157+let aa = valueOrElse(getString(c, "shutdownAddress"), "3N91e7wHiV7QadDsx3RUJQxx1etqcAKrfHj")
158+
159+let ab = valueOrElse(getString(c, "layer2Addresses"), "3N91e7wHiV7QadDsx3RUJQxx1etqcAKrfHj")
160+
161+let ac = Address(fromBase58String(valueOrElse(getString(c, "coldMasterAddress"), "3N91e7wHiV7QadDsx3RUJQxx1etqcAKrfHj")))
162+
163+let ad = Address(fromBase58String(valueOrElse(getString(c, "factoryAddress"), "3N1ytAUyhtig9X6F2hHHs1jbzYxr47Yp8Fr")))
164+
165+let ae = Address(fromBase58String(valueOrElse(getString(c, "factoryAddress"), "3MsgzbtRg8NEkbTcHBywtwTdCe9BRxMQo5T")))
166+
167+let af = fromBase58String(valueOrElse(getString(c, "masterPubKey"), "4z8CKSYQBKkzx7PBb5uBP1YPa6YAHRNTApW1sQVHT5eU"))
168+
169+let ag = q("static_tokensAmount")
170+
171+let ah = {
172+ let ai = split(v("static_tokenIds"), ",")
173+ let aj = size(ai)
174+ let ak = nil
175+ func al (am,an) = if ((an >= aj))
176+ then am
177+ else D(am, ai[an])
178+
179+ func ao (am,an) = if ((an >= aj))
180+ then am
181+ else throw("List size exceeds 10")
182+
183+ ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
184+ }
185+
186+let ap = {
187+ let ai = ah
188+ let aj = size(ai)
189+ let ak = nil
190+ func aq (am,an) = if ((an >= aj))
191+ then am
192+ else G(am, ai[an])
193+
194+ func ar (am,an) = if ((an >= aj))
195+ then am
196+ else throw("List size exceeds 10")
197+
198+ ar(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
199+ }
200+
201+let as = {
202+ let ai = ah
203+ let aj = size(ai)
204+ let ak = nil
205+ func at (am,an) = if ((an >= aj))
206+ then am
207+ else I(am, ai[an])
208+
209+ func au (am,an) = if ((an >= aj))
210+ then am
211+ else throw("List size exceeds 10")
212+
213+ au(at(at(at(at(at(at(at(at(at(at(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
214+ }
215+
216+let av = {
217+ let ai = ah
218+ let aj = size(ai)
219+ let ak = nil
220+ func aw (am,an) = if ((an >= aj))
221+ then am
222+ else J(am, ai[an])
223+
224+ func ax (am,an) = if ((an >= aj))
225+ then am
226+ else throw("List size exceeds 10")
227+
228+ ax(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
229+ }
230+
231+let ay = q("static_fee")
232+
233+let az = ah
234+
235+func aA () = {
236+ let aB = valueOrElse(getInteger(ae, ("pool__" + toString(this))), 0)
237+ let aC = valueOrElse(getInteger(ae, ("pool__status__" + toString(aB))), 2)
238+ aC
239+ }
240+
241+
242+func aD (r) = getIntegerValue(ae, ("setup__" + r))
243+
244+
245+let aE = aD("virtualLiquidity")
246+
247+let aF = aD("creationFee")
248+
249+let aG = aD("curveTarget")
250+
251+func aH () = {
252+ let aI = addressFromString(aa)
253+ if ((aI == unit))
254+ then false
255+ else {
256+ let s = getBoolean(value(aI), "is_shutdown")
257+ if ($isInstanceOf(s, "Boolean"))
258+ then {
259+ let aJ = s
260+ aJ
261+ }
262+ else false
263+ }
264+ }
265+
266+
267+func aK (A) = {
268+ let s = getInteger(Y, (A + "_twap5B"))
269+ if ($isInstanceOf(s, "Int"))
270+ then {
271+ let aJ = s
272+ aJ
273+ }
274+ else 1000000
275+ }
276+
277+
278+func aL (y,aM,aN) = {
279+ let aO = q((("static_" + x(y)) + "_weight"))
280+ let aP = v("static_feeToken")
281+ let aQ = getIntegerValue(this, (("static_" + aP) + "_scale"))
282+ let aR = value(indexOf(ah, z(aP)))
283+ let aS = ap[aR]
284+ let aT = q((("global_" + aP) + "_balance"))
285+ let aU = fraction(aM, (aT / aS), (aN / aO))
286+ let aV = aK(aP)
287+ fraction(aU, aV, aQ)
288+ }
289+
290+
291+func aW (aX,aY,aZ,ba,bb) = {
292+ let bc = value(indexOf(ah, aY))
293+ let bd = value(indexOf(ah, aZ))
294+ if ((bc == bd))
295+ then aX
296+ else fraction(bb, ((f * f) - toInt(pow(fraction((toBigInt(ba) * toBigInt(10000)), toBigInt((f * f)), (toBigInt((ba + aX)) * toBigInt(10000)), HALFUP), 16, toBigInt(fraction(ap[bc], 1000000000000, ap[bd])), 12, 16, CEILING))), (f * f), HALFEVEN)
297+ }
298+
299+
300+func be (y,A,aN,bf) = {
301+ let bg = q("global_indexStaked")
302+ let bh = bf
303+ let bi = (B(y) - aN)
304+ let bj = if ((bi > bh))
305+ then bi
306+ else bh
307+ let bk = (bj - bh)
308+ let bl = if ((bg == 0))
309+ then 0
310+ else fraction(bk, f, bg)
311+ let bm = q((("global_lastCheck_" + A) + "_interest"))
312+ (bm + bl)
313+ }
314+
315+
316+func bn (bo) = {
317+ let bp = toString(bo)
318+ let bq = q((bp + "_indexStaked"))
319+ func br (E,y) = {
320+ let A = x(y)
321+ let aN = q((("global_" + x(y)) + "_balance"))
322+ let bf = q((("global_lastCheck_" + A) + "_earnings"))
323+ let bs = be(y, A, aN, bf)
324+ let bj = max([bf, (B(y) - aN)])
325+ let bt = fraction(bq, (bs - q((((bp + "_lastCheck_") + A) + "_interest"))), f)
326+ let bu = if ((bt == 0))
327+ then nil
328+ else [ScriptTransfer(bo, bt, y)]
329+ $Tuple2(((E._1 ++ bu) ++ [IntegerEntry((("global_lastCheck_" + A) + "_earnings"), (bj - bt)), IntegerEntry((("global_lastCheck_" + A) + "_interest"), bs), IntegerEntry((((bp + "_lastCheck_") + A) + "_interest"), bs)]), (E._2 + aL(y, bt, aN)))
330+ }
331+
332+ let E = {
333+ let ai = az
334+ let aj = size(ai)
335+ let ak = $Tuple2(nil, 0)
336+ func bv (am,an) = if ((an >= aj))
337+ then am
338+ else br(am, ai[an])
339+
340+ func bw (am,an) = if ((an >= aj))
341+ then am
342+ else throw("List size exceeds 10")
343+
344+ bw(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
345+ }
346+ $Tuple2((E._1 ++ [IntegerEntry((bp + "_claimedRewardUSD"), (q((bp + "_claimedRewardUSD")) + E._2)), IntegerEntry((bp + "_lastClaim"), lastBlock.timestamp)]), E._2)
347+ }
348+
349+
350+func bx (E,by) = (E + parseIntValue(by))
351+
352+
353+func bz (E,bA) = if (if ((indexOf(X, bA) != unit))
354+ then (E == "")
355+ else false)
356+ then bA
357+ else E
358+
359+
360+func bB (aY,aZ,bC,bD,bE) = {
361+ let aX = bC
362+ let bF = z(aY)
363+ let bG = z(aZ)
364+ let bH = (f / q((("static_" + aY) + "_scale")))
365+ let bI = (f / q((("static_" + aZ) + "_scale")))
366+ let bJ = v("static_feeToken")
367+ let bK = if ((bJ == ""))
368+ then W
369+ else z(bJ)
370+ let bL = q((("global_" + x(bF)) + "_balance"))
371+ let bM = q((("global_" + aZ) + "_balance"))
372+ let bN = (bL * bH)
373+ let bO = (bM * bI)
374+ let bP = fraction(aX, ay, h)
375+ let bQ = (aX - bP)
376+ let bR = (bQ * bH)
377+ let bS = aW(bR, bF, bG, bN, bO)
378+ let bT = fraction(bS, 1, bI)
379+ let bU = (bM - bT)
380+ let bV = (bL + bQ)
381+ let bW = if ((bK == bF))
382+ then bV
383+ else if ((bK == bG))
384+ then bU
385+ else q((("global_" + x(bK)) + "_balance"))
386+ let bX = aW(bP, bF, bK, bL, bW)
387+ if ((bD > bT))
388+ then throw("amount to recieve is lower than given one")
389+ else if ((bG == bF))
390+ then throw("this swap is not allowed")
391+ else if ((0 > (bM - bT)))
392+ then throw("contract is out of reserves")
393+ else if (aH())
394+ then throw("contract is on stop")
395+ else {
396+ let bY = fraction(bX, 1, 10)
397+ let bZ = fraction(bX, 4, 10)
398+ let ca = bV
399+ let cb = (bU - (if ((bG == bK))
400+ then bX
401+ else 0))
402+ let cc = if (if ((bK != bF))
403+ then (bK != bG)
404+ else false)
405+ then (bW - bX)
406+ else unit
407+ let cd = IntegerEntry((("global_" + x(bF)) + "_balance"), ca)
408+ let ce = IntegerEntry((("global_" + aZ) + "_balance"), cb)
409+ let cf = if ((cc != unit))
410+ then IntegerEntry((("global_" + x(bK)) + "_balance"), value(cc))
411+ else StringEntry("hello", "world")
412+ let cg = aL(bF, aX, bL)
413+ $Tuple2([ce, cd, cf, ScriptTransfer(addressFromStringValue(bE), bT, bG), ScriptTransfer(addressFromStringValue(v("static_poolOwner")), bY, bK), IntegerEntry("global_earnedByOwner", (q("global_earnedByOwner") + bY)), IntegerEntry("global_volume_usd", (q("global_volume_usd") + cg)), ScriptTransfer(Z, bZ, bK)], bT)
414+ }
415+ }
416+
417+
418+@Callable(ch)
419+func initPool (ci,cj,ck,cl,cm) = {
420+ func cn (co) = {
421+ func br (E,cp) = {
422+ let y = cp.assetId
423+ func cq (E,by) = if ((by == y))
424+ then value(indexOf(ah, by))
425+ else E
426+
427+ let cr = {
428+ let ai = ah
429+ let aj = size(ai)
430+ let ak = 1
431+ func bv (am,an) = if ((an >= aj))
432+ then am
433+ else cq(am, ai[an])
434+
435+ func bw (am,an) = if ((an >= aj))
436+ then am
437+ else throw("List size exceeds 10")
438+
439+ bw(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
440+ }
441+ fraction(E, pow(cp.amount, as[cr], ap[cr], d, 8, FLOOR), f)
442+ }
443+
444+ let ai = co
445+ let aj = size(ai)
446+ let ak = j
447+ func bv (am,an) = if ((an >= aj))
448+ then am
449+ else br(am, ai[an])
450+
451+ func bw (am,an) = if ((an >= aj))
452+ then am
453+ else throw("List size exceeds 10")
454+
455+ bw(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
456+ }
457+
458+ let cs = Issue(ck, cl, cm, 8, false)
459+ let ct = calculateAssetId(cs)
460+ let cu = x(ct)
461+ let cv = "5000,5000"
462+ let cw = "WAVES"
463+ let cx = Address(fromBase58String(cj))
464+ let cy = ("WAVES," + cu)
465+ let cz = split(cy, ",")
466+ let cA = {
467+ let ai = cz
468+ let aj = size(ai)
469+ let ak = nil
470+ func bv (am,an) = if ((an >= aj))
471+ then am
472+ else D(am, ai[an])
473+
474+ func bw (am,an) = if ((an >= aj))
475+ then am
476+ else throw("List size exceeds 10")
477+
478+ bw(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
479+ }
480+ let cB = 100
481+ let aP = {
482+ let ai = cz
483+ let aj = size(ai)
484+ let ak = ""
485+ func cC (am,an) = if ((an >= aj))
486+ then am
487+ else bz(am, ai[an])
488+
489+ func cD (am,an) = if ((an >= aj))
490+ then am
491+ else throw("List size exceeds 10")
492+
493+ cD(cC(cC(cC(cC(cC(cC(cC(cC(cC(cC(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
494+ }
495+ let cp = ch.payments[0]
496+ let aM = cp.amount
497+ let cE = if ((cp.assetId == unit))
498+ then "WAVES"
499+ else throw("you have to attach some WAVES")
500+ if ((this != this))
501+ then throw("self-invoke only")
502+ else if ((aP == ""))
503+ then throw("pool must have one of the supported fee assets in the composition")
504+ else if ((size(ci) > 13))
505+ then throw("too large pool domain")
506+ else if (if ((cB > 500))
507+ then true
508+ else (0 > cB))
509+ then throw("fee value must be between 50 and 500 (0.5-5%)")
510+ else if (aH())
511+ then throw("contract is on stop")
512+ else {
513+ let cF = split(cv, ",")
514+ let cG = {
515+ let ai = cF
516+ let aj = size(ai)
517+ let ak = 0
518+ func cH (am,an) = if ((an >= aj))
519+ then am
520+ else bx(am, ai[an])
521+
522+ func cI (am,an) = if ((an >= aj))
523+ then am
524+ else throw("List size exceeds 10")
525+
526+ cI(cH(cH(cH(cH(cH(cH(cH(cH(cH(cH(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
527+ }
528+ func cJ (E,cK) = if ((cK >= size(cA)))
529+ then E
530+ else {
531+ let cL = 8
532+ (E ++ [IntegerEntry((("static_" + cz[cK]) + "_scale"), pow(10, 0, cL, 0, 0, DOWN)), IntegerEntry((("static_" + cz[cK]) + "_decimals"), cL), IntegerEntry((("static_" + cz[cK]) + "_weight"), value(parseInt(cF[cK])))])
533+ }
534+
535+ let cM = cn(ch.payments)
536+ if ((cG != 10000))
537+ then throw("sum of token weights must be equal to 10000")
538+ else if ((cM == 0))
539+ then throw("you need a bigger tokens amount to launch the pool")
540+ else {
541+ let cN = Issue(("PZ " + ci), "Puzzle Swap: pool index token", cM, i, true, unit, 0)
542+ let cO = calculateAssetId(cN)
543+ $Tuple2(((({
544+ let ai = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
545+ let aj = size(ai)
546+ let ak = nil
547+ func cP (am,an) = if ((an >= aj))
548+ then am
549+ else cJ(am, ai[an])
550+
551+ func cQ (am,an) = if ((an >= aj))
552+ then am
553+ else throw("List size exceeds 10")
554+
555+ cQ(cP(cP(cP(cP(cP(cP(cP(cP(cP(cP(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
556+ } ++ [cs, StringEntry("static_tokenIds", cy), StringEntry("static_feeToken", aP), StringEntry("static_tokenWeights", cv), IntegerEntry("static_tokensAmount", size(cA)), StringEntry("static_poolDomain", ci), StringEntry("static_baseTokenId", cw), StringEntry("static_poolOwner", cj), IntegerEntry("static_fee", cB), IntegerEntry("static_KMult", g), IntegerEntry("global_wasPreInited", 1)]) ++ [IntegerEntry("global_WAVES_balance", aE), IntegerEntry((("global_" + cu) + "_balance"), cm)]) ++ [cN, IntegerEntry("global_poolToken_amount", cM), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", cO), StringEntry("static_poolToken_idStr", x(cO)), IntegerEntry((toString(ch.caller) + "_indexStaked"), cM), IntegerEntry("global_indexStaked", cM)]), cu)
557+ }
558+ }
559+ }
560+
561+
562+
563+@Callable(ch)
564+func init (ci,cj,ck,cl,cm) = if ((ch.caller != ae))
565+ then throw("admin only")
566+ else {
567+ let cR = invoke(this, "initPool", [ci, cj, ck, cl, cm], nil)
568+ if ((cR == cR))
569+ then {
570+ let cu = {
571+ let cS = cR
572+ if ($isInstanceOf(cS, "String"))
573+ then cS
574+ else throw(($getType(cS) + " couldn't be cast to String"))
575+ }
576+ bB("WAVES", cu, (ch.payments[0].amount - aF), 0, toString(ch.originCaller))._1
577+ }
578+ else throw("Strict value is not equal to itself.")
579+ }
580+
581+
582+
583+@Callable(ch)
584+func claimIndexRewards () = if (aH())
585+ then throw("contract is on stop")
586+ else bn(ch.caller)
587+
588+
589+
590+@Callable(ch)
591+func evaluateClaim (cT) = $Tuple2(nil, bn(addressFromStringValue(cT))._2)
592+
593+
594+
595+@Callable(ch)
596+func swap (aZ,bD) = {
597+ let aC = aA()
598+ if ((2 > aC))
599+ then {
600+ let cp = if ((size(ch.payments) == 1))
601+ then value(ch.payments[0])
602+ else throw("please attach exactly one payment")
603+ let aX = value(ch.payments[0].amount)
604+ let bF = ch.payments[0].assetId
605+ let cU = bB(x(bF), aZ, aX, bD, toString(ch.caller))
606+ if ((getIntegerValue("global_WAVES_balance") > aG))
607+ then {
608+ let cV = invoke(ae, "notifyStatusUpdate", [2], nil)
609+ if ((cV == cV))
610+ then cU
611+ else throw("Strict value is not equal to itself.")
612+ }
613+ else cU
614+ }
615+ else throw("pool is stopped: most probably it reached the target liquidity")
616+ }
617+
618+
619+
620+@Callable(ch)
621+func swapReadOnly (aY,aZ,aX) = {
622+ let bF = z(aY)
623+ let bG = z(aZ)
624+ let bH = (f / q((("static_" + aY) + "_scale")))
625+ let bI = (f / q((("static_" + aZ) + "_scale")))
626+ let bJ = v("static_feeToken")
627+ let bK = if ((bJ == ""))
628+ then R
629+ else z(bJ)
630+ let bL = q((("global_" + x(bF)) + "_balance"))
631+ let bM = q((("global_" + aZ) + "_balance"))
632+ let bN = (bL * bH)
633+ let bO = (bM * bI)
634+ let bP = fraction(aX, ay, h)
635+ let bQ = (aX - bP)
636+ let bR = (bQ * bH)
637+ let bS = aW(bR, bF, bG, bN, bO)
638+ let bT = fraction(bS, 1, bI)
639+ let bU = (bM - bT)
640+ let bV = (bL + bQ)
641+ let bW = if ((bK == bF))
642+ then bV
643+ else if ((bK == bG))
644+ then bU
645+ else q((("global_" + x(bK)) + "_balance"))
646+ let bX = aW(bP, bF, bK, bL, bW)
647+ if ((bG == bF))
648+ then throw("this swap is not allowed")
649+ else if ((0 > (bM - bT)))
650+ then throw("contract is out of reserves")
651+ else if (aH())
652+ then throw("contract is on stop")
653+ else $Tuple2(nil, bT)
654+ }
655+
656+
657+
658+@Callable(ch)
659+func transferOwnership (cW) = if ((toString(ch.caller) != v("static_poolOwner")))
660+ then throw("this call available only for pool owner")
661+ else [StringEntry("static_poolOwner", cW)]
662+
663+
664+@Verifier(cX)
665+func cY () = {
666+ let cZ = "%s__adminAddressList"
667+ let da = "pool__contract__hash"
668+ let db = "%s__txId"
669+ let dc = split(valueOrElse(getString(ae, cZ), ""), "__")
670+ let dd = if ((size(dc) >= 3))
671+ then false
672+ else sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
673+ let de = (cX.id == fromBase58String(valueOrElse(getString(ae, db), "")))
674+ let s = cX
675+ if ($isInstanceOf(s, "SetScriptTransaction"))
676+ then {
677+ let df = s
678+ let dg = valueOrElse(getBinary(ae, da), base58'')
679+ let dh = blake2b256(value(df.script))
680+ if (if ((dh == dg))
681+ then true
682+ else de)
683+ then true
684+ else dd
685+ }
686+ else if (de)
687+ then true
688+ else dd
689+ }
690+

github/deemru/w8io/026f985 
37.06 ms