tx · GqxVkacVNtCK7FQeJgVvFfRrxeh7SwmFKrMQeeEZy75J

3PAZsTidSJHjo1xxqY9t3Rvuk144u3EHQXQ:  -0.02600000 Waves

2023.10.02 20:58 [3847181] smart account 3PAZsTidSJHjo1xxqY9t3Rvuk144u3EHQXQ > SELF 0.00000000 Waves

{ "type": 13, "id": "GqxVkacVNtCK7FQeJgVvFfRrxeh7SwmFKrMQeeEZy75J", "fee": 2600000, "feeAssetId": null, "timestamp": 1696269503050, "version": 2, "chainId": 87, "sender": "3PAZsTidSJHjo1xxqY9t3Rvuk144u3EHQXQ", "senderPublicKey": "C58SydppP6AwzqeJE98CeJ547TRnjYSkmo5TkgwPSmNW", "proofs": [ "3PY863KN5Vy1qHmBHXZYXcgueoc6gk6CX1XtVymmxpBqefCb8kNCQiEWskxuCqrwUAXia4gHfqFgMcRmCZ9NfBQk", "58UVi5ckdzBUxfVBWHuJ4VDvp9J3iwuSYFFKqzhKqmM9fEjkQrbkt9Tbu989Piyf92jbNEssURSbsAFrmdusFVpa" ], "script": "base64:BgJDCAISBQoDCAgBEgASBgoECAgICBIDCgEIEgMKAQQSABIDCgEBEgASAwoBBBIECgIIARIFCgMEAQgSABIHCgUIAQEICDIACXN0YXJ0VHNNcwDo546s8jABF2NhbGN1bGF0ZURheXNTaW5jZVN0YXJ0AAQEZGlmZgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQlzdGFydFRzTXMECmRheXNQYXNzZWQJAGkCBQRkaWZmCQBoAgCAowUA6AcFCmRheXNQYXNzZWQBCmFzSW50VHVwbGUBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgooSW50LCBJbnQpBANpbnQFByRtYXRjaDAFA2ludAkAAgECH1dyb25nIHR5cGUsIGV4cGVjdGVkOiBUdXBsZSBJbnQBEGdldE9yYWNsZUFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMCDXN0YXRpY19vcmFjbGUCEW9yYWNsZSBub3QgZm91bmQhAhZjb3VsZCBub3QgcGFyc2Ugb3JhY2xlAQ5nZXRGZWVzQWNjb3VudAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQEQZ2V0T3JhY2xlQWRkcmVzcwACFHN0YXRpY19mZWVBZ2dyZWdhdG9yAh9zdGF0aWNfZmVlQWdncmVnYXRvciBub3QgZm91bmQhAQ5nZXROb2RlQWNjb3VudAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQEQZ2V0T3JhY2xlQWRkcmVzcwACEnN0YXRpY19ub2RlQWRkcmVzcwIXbm9kZV9hZGRyZXNzIG5vdCBmb3VuZCEBDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldEJpbmFyeQEDa2V5BAckbWF0Y2gwCQCcCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwBQFiAQABDHRyeUdldFN0cmluZwEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAEOZ2V0QXNzZXRTdHJpbmcBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiAgVXQVZFUwENZ2V0QXNzZXRCeXRlcwEKYXNzZXRJZFN0cgMJAAACBQphc3NldElkU3RyAgVXQVZFUwUEdW5pdAkA2QQBBQphc3NldElkU3RyARNhZGRBc3NldEJ5dGVzVG9MaXN0AgVhY2N1bQRpdGVtCQDOCAIFBWFjY3VtCQDMCAIJAQ1nZXRBc3NldEJ5dGVzAQUEaXRlbQUDbmlsARRhZGRBc3NldFdlaWdodFRvTGlzdAIFYWNjdW0EaXRlbQkAzggCBQVhY2N1bQkAzAgCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdzdGF0aWNfCQEOZ2V0QXNzZXRTdHJpbmcBBQRpdGVtAgdfd2VpZ2h0BQNuaWwBFmFkZEFzc2V0RGVjaW1hbHNUb0xpc3QCBWFjY3VtBGl0ZW0JAM4IAgUFYWNjdW0JAMwIAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHc3RhdGljXwkBDmdldEFzc2V0U3RyaW5nAQUEaXRlbQIJX2RlY2ltYWxzBQNuaWwBE2FkZEFzc2V0U2NhbGVUb0xpc3QCBWFjY3VtBGl0ZW0JAM4IAgUFYWNjdW0JAMwIAgkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHc3RhdGljXwkBDmdldEFzc2V0U3RyaW5nAQUEaXRlbQIGX3NjYWxlBQNuaWwBDGFkZEludFRvTGlzdAIFYWNjdW0EaXRlbQkAzggCBQVhY2N1bQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEFBGl0ZW0FA25pbAEXcmV2ZW5ldUZvckRheUJ5QXNzZXRPdXQCA2RheQdhc3NldElkCQCsAgIJAKwCAgkArAICAgxyZXZlbmV1X2RheV8FB2Fzc2V0SWQCAV8JAKQDAQUDZGF5ARB2b2x1bWVGb3JEYXlCeUluAgNkYXkHYXNzZXRJZAkArAICCQCsAgIJAKwCAgILdm9sdW1lX2RheV8FB2Fzc2V0SWQCAV8JAKQDAQUDZGF5AAFUCQENdHJ5R2V0SW50ZWdlcgECE3N0YXRpY190b2tlbnNBbW91bnQACGFzc2V0SWRzCgACJGwJALUJAgkBDHRyeUdldFN0cmluZwECD3N0YXRpY190b2tlbklkcwIBLAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkQXNzZXRCeXRlc1RvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwANQXNzZXRzV2VpZ2h0cwoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEUYWRkQXNzZXRXZWlnaHRUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjFfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMACERlY2ltYWxzCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARZhZGRBc3NldERlY2ltYWxzVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYyXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAZTY2FsZXMKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjNfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBE2FkZEFzc2V0U2NhbGVUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjNfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjNfMgIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIFBSRhY2MwAAAAAQACAAMAB3N0YWtlSWQJAQx0cnlHZXRTdHJpbmcBAg1sYXN0X3N0YWtlX2lkAANGZWUJAQ10cnlHZXRJbnRlZ2VyAQIKc3RhdGljX2ZlZQAVQXNzZXRzV2VpZ2h0c0RlY2ltYWxzAAIABVNjYWxlAJBOAAZTY2FsZTgAgMLXLwAIRmVlU2NhbGUAkE4AEVBvb2xUb2tlbkRlY2ltYWxzAAgADlBvb2xUb2tlblNjYWxlCQBsBgAKAAAFEVBvb2xUb2tlbkRlY2ltYWxzAAAAAAUGSEFMRlVQAAxlYXJuZWRBc3NldHMFCGFzc2V0SWRzAQppc1NodXRkb3duAAQIc2h1dGRvd24DCQECIT0CCQEMdHJ5R2V0U3RyaW5nAQINc3RhdGljX29yYWNsZQIABAckbWF0Y2gwCQCbCAIJARBnZXRPcmFjbGVBZGRyZXNzAAIMYW1tX3NodXRkb3duAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHBwQJc2h1dGRvd24yBAckbWF0Y2gwCQCbCAIFBHRoaXMCC2lzX3NodXRkb3duAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHAwUIc2h1dGRvd24GBQlzaHV0ZG93bjIBCWNhblVwZGF0ZQADCQECIT0CCQEMdHJ5R2V0U3RyaW5nAQINc3RhdGljX29yYWNsZQIABAckbWF0Y2gwCQCbCAIJARBnZXRPcmFjbGVBZGRyZXNzAAIGYW1tX3R4AwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgGBgEWZ2V0Q3VycmVudFRva2VuQmFsYW5jZQEJdG9rZW5UeXBlBAd0b2tlbklkCQEOZ2V0QXNzZXRTdHJpbmcBCQCRAwIFCGFzc2V0SWRzBQl0b2tlblR5cGUJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8FB3Rva2VuSWQCCF9iYWxhbmNlARBjYWxjdWxhdGVQSXNzdWVkAgZhbW91bnQHdG9rZW5JZAQHUHN1cHBseQkBDXRyeUdldEludGVnZXIBAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAQHQmFsYW5jZQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwkBDmdldEFzc2V0U3RyaW5nAQUHdG9rZW5JZAIIX2JhbGFuY2UJAG4EBQZhbW91bnQFB1BzdXBwbHkFB0JhbGFuY2UFBERPV04BDWdldE1pblBJc3N1ZWQBCHBheW1lbnRzCgEHaGFuZGxlcgIFYWNjdW0HY3VycmVudAQHUElzc3VlZAkBEGNhbGN1bGF0ZVBJc3N1ZWQCCAUHY3VycmVudAZhbW91bnQIBQdjdXJyZW50B2Fzc2V0SWQDCQAAAgUHUElzc3VlZAAACQACAQIkb25lIG9mIHRoZSB0b2tlbnMgYW1vdW50cyBpcyB0b28gbG93AwMJAAACBQVhY2N1bQAABgkAZgIFBWFjY3VtBQdQSXNzdWVkBQdQSXNzdWVkBQVhY2N1bQQJbWluUElzc2VkCgACJGwFCHBheW1lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdoYW5kbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADBQltaW5QSXNzZWQBE2NoZWNrVG9rZW5zVmFsaWRpdHkBCHBheW1lbnRzCgEIaGFuZGxlcjECBWFjY3VtB3BheW1lbnQJAM4IAgUFYWNjdW0JAMwIAggFB3BheW1lbnQHYXNzZXRJZAUDbmlsBANpZHMKAAIkbAUIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGhhbmRsZXIxAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADAwkAAAIFA2lkcwUDaWRzCgEIaGFuZGxlcjICBWFjY3VtB2Fzc2V0SWQDCQECIT0CCQDPCAIFA2lkcwUHYXNzZXRJZAUEdW5pdAkAZAIFBWFjY3VtAAEJAAIBCQCsAgICFGFzc2V0IG5vdCBhdHRhY2hlZDogCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldElkBAZjaGVja3MKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjVfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGhhbmRsZXIyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY1XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGY1XzICCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECBQUkYWNjMAAAAAEAAgADAwkAAAIFBmNoZWNrcwUGY2hlY2tzBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMc3Rha2VVbnN0YWtlAwVzdGFrZQZhbW91bnQHYXNzZXRJZAMDCQAAAgUHYXNzZXRJZAIFV0FWRVMJAGYCBQZhbW91bnQAAAcEDWxlYXNpbmdBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIObGVhc2luZ19hbW91bnQAAAQObmV3TGVhc2VBbW91bnQDBQVzdGFrZQkAZAIFDWxlYXNpbmdBbW91bnQFBmFtb3VudAkAZQIFDWxlYXNpbmdBbW91bnQFBmFtb3VudAQIbmV3TGVhc2UJAMQIAgkBDmdldE5vZGVBY2NvdW50AAUObmV3TGVhc2VBbW91bnQECm5ld0xlYXNlSWQJALkIAQUIbmV3TGVhc2UEBGRhdGEJAMwIAgUIbmV3TGVhc2UJAMwIAgkBC1N0cmluZ0VudHJ5AgINbGFzdF9zdGFrZV9pZAkA2AQBBQpuZXdMZWFzZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg5sZWFzaW5nX2Ftb3VudAUObmV3TGVhc2VBbW91bnQFA25pbAMJAQIhPQIFB3N0YWtlSWQCAAkAzggCCQDMCAIJAQtMZWFzZUNhbmNlbAEJANkEAQUHc3Rha2VJZAUDbmlsBQRkYXRhBQRkYXRhBQNuaWwBE2hhbmRsZVBvb2xUb2tlbnNBZGQEB1BJc3N1ZWQIcGF5bWVudHMLdXNlckFkZHJlc3MKbmVlZENoYW5nZQoBFWdldFRva2VuUGF5bWVudEFtb3VudAEHdG9rZW5JZAoBB2hhbmRsZXICBWFjY3VtB3BheW1lbnQDCQAAAggFB3BheW1lbnQHYXNzZXRJZAUHdG9rZW5JZAgFB3BheW1lbnQGYW1vdW50BQVhY2N1bQoAAiRsBQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmNF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHaGFuZGxlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmNF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwoBEWhhbmRsZVRva2VuQ2hhbmdlAgVhY2N1bQd0b2tlbklkBAJCawkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwkBDmdldEFzc2V0U3RyaW5nAQUHdG9rZW5JZAIIX2JhbGFuY2UEB1BTdXBwbHkJAQ10cnlHZXRJbnRlZ2VyAQIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQEDXRva2VuRGVjaW1hbHMJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB3N0YXRpY18JAQ5nZXRBc3NldFN0cmluZwEFB3Rva2VuSWQCBl9zY2FsZQQGRGtUZW1wCQBuBAkAZQIJAG4ECQBkAgUHUFN1cHBseQUHUElzc3VlZAUNdG9rZW5EZWNpbWFscwUHUFN1cHBseQUHQ0VJTElORwUNdG9rZW5EZWNpbWFscwUCQmsFDXRva2VuRGVjaW1hbHMFB0NFSUxJTkcEDXBheW1lbnRBbW91bnQJARVnZXRUb2tlblBheW1lbnRBbW91bnQBBQd0b2tlbklkBAJEawkAlwMBCQDMCAIFBkRrVGVtcAkAzAgCBQ1wYXltZW50QW1vdW50BQNuaWwECHRvUmV0dXJuCQBlAgMJAQIhPQIFDXBheW1lbnRBbW91bnQAAAUNcGF5bWVudEFtb3VudAAABQJEawQBdAMDBQpuZWVkQ2hhbmdlCQBmAgUIdG9SZXR1cm4AAAcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCHRvUmV0dXJuBQd0b2tlbklkBQNuaWwFA25pbAQQc3Rha2VVbnN0YWtlRGF0YQMJAAACCQEOZ2V0QXNzZXRTdHJpbmcBBQd0b2tlbklkAgVXQVZFUwkBDHN0YWtlVW5zdGFrZQMGBQJEawIFV0FWRVMFA25pbAkAzggCCQDOCAIJAM4IAgUFYWNjdW0FAXQFEHN0YWtlVW5zdGFrZURhdGEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQd0b2tlbklkAghfYmFsYW5jZQkAZAIFAkJrBQJEawUDbmlsCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFoYW5kbGVUb2tlbkNoYW5nZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmNF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwEWaGFuZGxlUG9vbFRva2Vuc1JlZGVlbQIJUFJlZGVlbWVkC3VzZXJBZGRyZXNzCgERaGFuZGxlVG9rZW5SZWRlZW0CBWFjY3VtB3Rva2VuSWQEAkJrCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQd0b2tlbklkAghfYmFsYW5jZQQHUFN1cHBseQkBDXRyeUdldEludGVnZXIBAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAQNdG9rZW5EZWNpbWFscwkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHc3RhdGljXwkBDmdldEFzc2V0U3RyaW5nAQUHdG9rZW5JZAIGX3NjYWxlBAZhbW91bnQJAKADAQkAvQIECQC4AgIJALYCAQUGU2NhbGU4CQC9AgQJALYCAQkAZQIFB1BTdXBwbHkFCVBSZWRlZW1lZAkAtgIBBQZTY2FsZTgJALYCAQUHUFN1cHBseQUHQ0VJTElORwkAtgIBBQJCawkAtgIBBQZTY2FsZTgFBERPV04EEHN0YWtlVW5zdGFrZURhdGEDCQAAAgkBDmdldEFzc2V0U3RyaW5nAQUHdG9rZW5JZAIFV0FWRVMJAQxzdGFrZVVuc3Rha2UDBwUGYW1vdW50AgVXQVZFUwUDbmlsCQDOCAIJAM4IAgUFYWNjdW0FEHN0YWtlVW5zdGFrZURhdGEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQd0b2tlbklkAghfYmFsYW5jZQkAZQIFAkJrBQZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFBmFtb3VudAUHdG9rZW5JZAUDbmlsCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFoYW5kbGVUb2tlblJlZGVlbQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmNF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwESY2FsY3VsYXRlT3V0QW1vdW50BQhBbW91bnRJbgdhc3NldEluCGFzc2V0T3V0CUJhbGFuY2VJbgpCYWxhbmNlT3V0BAdJbmRleEluCQEFdmFsdWUBCQDPCAIFCGFzc2V0SWRzBQdhc3NldEluBAhJbmRleE91dAkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwUIYXNzZXRPdXQDCQAAAgUHSW5kZXhJbgUISW5kZXhPdXQJAAIBAhF3cm9uZyB0b2tlbnMgcGFpcgkAbgQFCkJhbGFuY2VPdXQJAGUCCQBoAgUGU2NhbGU4BQZTY2FsZTgJAKADAQkAdgYJAL0CBAkAtgIBBQlCYWxhbmNlSW4JALYCAQkAaAIFBlNjYWxlOAUGU2NhbGU4CQC2AgEJAGQCBQlCYWxhbmNlSW4FCEFtb3VudEluBQZIQUxGVVAAEAkAtgIBCQBrAwkAkQMCBQ1Bc3NldHNXZWlnaHRzBQdJbmRleEluAJBOCQCRAwIFDUFzc2V0c1dlaWdodHMFCEluZGV4T3V0AAQAEAUHQ0VJTElORwkAaAIFBlNjYWxlOAUGU2NhbGU4BQRET1dOARFjYWxjdWxhdGVNaW5Ub0dldAMGYXNzZXQxBmFzc2V0MgxhbW91bnRUb1N3YXAECWtCYWxhbmNlQQkArAICCQCsAgICB2dsb2JhbF8FBmFzc2V0MQIIX2JhbGFuY2UED0FfYXNzZXRfYmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUJa0JhbGFuY2VBBAlrQmFsYW5jZUIJAKwCAgkArAICAgdnbG9iYWxfBQZhc3NldDICCF9iYWxhbmNlBA9CX2Fzc2V0X2JhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFCWtCYWxhbmNlQgQFdG9HZXQJARJjYWxjdWxhdGVPdXRBbW91bnQFBQxhbW91bnRUb1N3YXAJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQxCQENZ2V0QXNzZXRCeXRlcwEFBmFzc2V0MgUPQV9hc3NldF9iYWxhbmNlBQ9CX2Fzc2V0X2JhbGFuY2UECWZlZUFtb3VudAkAawMFBXRvR2V0BQNGZWUFCEZlZVNjYWxlAwkAAAIFCWZlZUFtb3VudAUJZmVlQW1vdW50BA5jbGVhbkFtb3VudE91dAkAZQIFBXRvR2V0BQlmZWVBbW91bnQDCQAAAgUOY2xlYW5BbW91bnRPdXQFDmNsZWFuQW1vdW50T3V0BQ5jbGVhbkFtb3VudE91dAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPZ2V0VG9rZW5CYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAXQFByRtYXRjaDAJAPAHAgUEdGhpcwUBdAgJAO8HAQUEdGhpcwdyZWd1bGFyAR1jYWxjdWxhdGVDdXJyZW50QXNzZXRJbnRlcmVzdAQHYXNzZXRJZAphc3NldElkU3RyCGFCYWxhbmNlFnRva2VuRWFybmluZ3NMYXN0Q2hlY2sEC3RvdGFsU3Rha2VkCQENdHJ5R2V0SW50ZWdlcgECEmdsb2JhbF9pbmRleFN0YWtlZAQVdG9rZW5CYWxhbmNlTGFzdENoZWNrBRZ0b2tlbkVhcm5pbmdzTGFzdENoZWNrBBNjdXJyZW50QmFsYW5jZURlbHRhCQBlAgkBD2dldFRva2VuQmFsYW5jZQEFB2Fzc2V0SWQFCGFCYWxhbmNlBBRjdXJyZW50VG9rZW5FYXJuaW5ncwMJAGYCBRNjdXJyZW50QmFsYW5jZURlbHRhBRV0b2tlbkJhbGFuY2VMYXN0Q2hlY2sFE2N1cnJlbnRCYWxhbmNlRGVsdGEFFXRva2VuQmFsYW5jZUxhc3RDaGVjawQLbmV3RWFybmluZ3MJAGUCBRRjdXJyZW50VG9rZW5FYXJuaW5ncwUVdG9rZW5CYWxhbmNlTGFzdENoZWNrBAtuZXdJbnRlcmVzdAMJAAACBQt0b3RhbFN0YWtlZAAAAAAJAGsDBQtuZXdFYXJuaW5ncwUGU2NhbGU4BQt0b3RhbFN0YWtlZAQRbGFzdENoZWNrSW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICEWdsb2JhbF9sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfaW50ZXJlc3QJAGQCBRFsYXN0Q2hlY2tJbnRlcmVzdAULbmV3SW50ZXJlc3QBC2NsYWltUmVzdWx0AQdhZGRyZXNzBAphZGRyZXNzU3RyCQClCAEFB2FkZHJlc3MEC3NoYXJlQW1vdW50CQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYWRkcmVzc1N0cgIMX2luZGV4U3Rha2VkCgEHaGFuZGxlcgIFYWNjdW0HYXNzZXRJZAQKYXNzZXRJZFN0cgkBDmdldEFzc2V0U3RyaW5nAQUHYXNzZXRJZAQIYUJhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8JAQ5nZXRBc3NldFN0cmluZwEFB2Fzc2V0SWQCCF9iYWxhbmNlBBZ0b2tlbkVhcm5pbmdzTGFzdENoZWNrCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAhFnbG9iYWxfbGFzdENoZWNrXwUKYXNzZXRJZFN0cgIJX2Vhcm5pbmdzBBRjdXJyZW50VG9rZW5JbnRlcmVzdAkBHWNhbGN1bGF0ZUN1cnJlbnRBc3NldEludGVyZXN0BAUHYXNzZXRJZAUKYXNzZXRJZFN0cgUIYUJhbGFuY2UFFnRva2VuRWFybmluZ3NMYXN0Q2hlY2sEFGN1cnJlbnRUb2tlbkVhcm5pbmdzCQCWAwEJAMwIAgUWdG9rZW5FYXJuaW5nc0xhc3RDaGVjawkAzAgCCQBlAgkBD2dldFRva2VuQmFsYW5jZQEFB2Fzc2V0SWQFCGFCYWxhbmNlBQNuaWwEDHJld2FyZEFtb3VudAkAawMFC3NoYXJlQW1vdW50CQBlAgUUY3VycmVudFRva2VuSW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgIJAKwCAgUKYWRkcmVzc1N0cgILX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAUGU2NhbGU4BAh0cmFuc2ZlcgMJAAACBQxyZXdhcmRBbW91bnQAAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFB2FkZHJlc3MFDHJld2FyZEFtb3VudAUHYXNzZXRJZAUDbmlsBAdjbGFpbWVkCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICC19sYXN0Q2hlY2tfBQphc3NldElkU3RyAghfY2xhaW1lZAkAzggCCQDOCAIFBWFjY3VtBQh0cmFuc2ZlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICEWdsb2JhbF9sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfZWFybmluZ3MJAGUCBRRjdXJyZW50VG9rZW5FYXJuaW5ncwUMcmV3YXJkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIRZ2xvYmFsX2xhc3RDaGVja18FCmFzc2V0SWRTdHICCV9pbnRlcmVzdAUUY3VycmVudFRva2VuSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFCmFkZHJlc3NTdHICC19sYXN0Q2hlY2tfBQphc3NldElkU3RyAglfaW50ZXJlc3QFFGN1cnJlbnRUb2tlbkludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQphZGRyZXNzU3RyAgtfbGFzdENoZWNrXwUKYXNzZXRJZFN0cgIIX2NsYWltZWQJAGQCBQdjbGFpbWVkBQxyZXdhcmRBbW91bnQFA25pbAQFYWNjdW0KAAIkbAUMZWFybmVkQXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdoYW5kbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADCQDOCAIFBWFjY3VtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCmFkZHJlc3NTdHICCl9sYXN0Q2xhaW0IBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwBEGluZGV4U3Rha2VSZXN1bHQCCmFkZHJlc3NTdHIGYW1vdW50BAJsaQkBC2NsYWltUmVzdWx0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYWRkcmVzc1N0cgkAzggCBQJsaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphZGRyZXNzU3RyAgxfaW5kZXhTdGFrZWQJAGQCCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgUKYWRkcmVzc1N0cgIMX2luZGV4U3Rha2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICEmdsb2JhbF9pbmRleFN0YWtlZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQISZ2xvYmFsX2luZGV4U3Rha2VkBQZhbW91bnQFA25pbAEDc3VtAgVhY2N1bQFuCQBkAgUFYWNjdW0JAQ1wYXJzZUludFZhbHVlAQUBbgEbc2V0T3JhY2xlQWRkcmVzc0FuZEluaXRpYXRlAQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQICDXN0YXRpY19vcmFjbGUFB2FkZHJlc3MFA25pbAEJaXNUZXN0RW52AAQHdGVzdGVudgQHJG1hdGNoMAkAmwgCBQR0aGlzAgdURVNURU5WAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHBQd0ZXN0ZW52DQFpAQxyZWFkT25seUZ1bmMDBmFzc2V0MQZhc3NldDIMYW1vdW50VG9Td2FwBAlhbW91bnRPdXQJARFjYWxjdWxhdGVNaW5Ub0dldAMFBmFzc2V0MQUGYXNzZXQyBQxhbW91bnRUb1N3YXAJAMwIAgkBDEludGVnZXJFbnRyeQICBURFQlVHBQlhbW91bnRPdXQFA25pbAFpAQp0b3BVcEZ1bmRzAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECGFdyb25nIHBheW1lbnRzIGF0dGFjaGVkIQQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABAVhc3NldAgFB3BheW1lbnQHYXNzZXRJZAMJAAACCQDPCAIFCGFzc2V0SWRzBQVhc3NldAUEdW5pdAkAAgECFU5vdCBzdXBwb3J0ZWQgYXNzZXRJZAQGYW1vdW50CAUHcGF5bWVudAZhbW91bnQECGFCYWxhbmNlCQENdHJ5R2V0SW50ZWdlcgEJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBBQVhc3NldAIIX2JhbGFuY2UEA2RheQkBF2NhbGN1bGF0ZURheXNTaW5jZVN0YXJ0AAQHcmV2ZW5ldQkBDXRyeUdldEludGVnZXIBCQEXcmV2ZW5ldUZvckRheUJ5QXNzZXRPdXQCBQNkYXkJAQ5nZXRBc3NldFN0cmluZwEFBWFzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHZ2xvYmFsXwkBDmdldEFzc2V0U3RyaW5nAQUFYXNzZXQCCF9iYWxhbmNlCQBkAgUIYUJhbGFuY2UFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgIOZGF5c19zaW5jZV9hcHkFA2RheQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF3JldmVuZXVGb3JEYXlCeUFzc2V0T3V0AgUDZGF5CQEOZ2V0QXNzZXRTdHJpbmcBBQVhc3NldAkAZAIFB3JldmVuZXUFBmFtb3VudAUDbmlsAWkBB3ByZUluaXQEC2Fzc2V0SWRzU3RyD2Fzc2V0V2VpZ2h0c1N0cg5iYXNlVG9rZW5JZFN0cgpwb29sRG9tYWluAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQACAQIKYWRtaW4gb25seQMJAGYCCQCxAgEFCnBvb2xEb21haW4ADQkAAgECFXRvbyBsYXJnZSBwb29sIGRvbWFpbgQNYXNzZXRJZHNTdHJMaQkAtQkCBQthc3NldElkc1N0cgIBLAQKYXNzZXRJZHNMaQoAAiRsBQ1hc3NldElkc1N0ckxpCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNhZGRBc3NldEJ5dGVzVG9MaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADBBFhc3NldFdlaWdodHNTdHJMaQkAtQkCBQ9hc3NldFdlaWdodHNTdHICASwED2Fzc2V0V2VpZ2h0c1N1bQoAAiRsBRFhc3NldFdlaWdodHNTdHJMaQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmNV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDc3VtAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY1XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGY1XzICCQEFJGY1XzECCQEFJGY1XzECCQEFJGY1XzECBQUkYWNjMAAAAAEAAgADCgETYWRkVG9rZW5EYXRhRW50cmllcwIFYWNjdW0IYXNzZXROdW0DCQBnAgUIYXNzZXROdW0JAJADAQUKYXNzZXRJZHNMaQUFYWNjdW0EDWFzc2V0RGVjaW1hbHMEByRtYXRjaDAJAJEDAgUKYXNzZXRJZHNMaQUIYXNzZXROdW0DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBeAUHJG1hdGNoMAgJAQV2YWx1ZQEJAOwHAQkAkQMCBQphc3NldElkc0xpBQhhc3NldE51bQhkZWNpbWFscwAICQDOCAIFBWFjY3VtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHc3RhdGljXwkAkQMCBQ1hc3NldElkc1N0ckxpBQhhc3NldE51bQIGX3NjYWxlCQBsBgAKAAAFDWFzc2V0RGVjaW1hbHMAAAAABQRET1dOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHc3RhdGljXwkAkQMCBQ1hc3NldElkc1N0ckxpBQhhc3NldE51bQIJX2RlY2ltYWxzBQ1hc3NldERlY2ltYWxzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHc3RhdGljXwkAkQMCBQ1hc3NldElkc1N0ckxpBQhhc3NldE51bQIHX3dlaWdodAkBBXZhbHVlAQkAtgkBCQCRAwIFEWFzc2V0V2VpZ2h0c1N0ckxpBQhhc3NldE51bQUDbmlsAwkBAiE9AgUPYXNzZXRXZWlnaHRzU3VtAGQJAAIBAilzdW0gb2YgdG9rZW4gd2VpZ2h0cyBtdXN0IGJlIGVxdWFsIHRvIDEwMAkAzggCCgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmNl8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQETYWRkVG9rZW5EYXRhRW50cmllcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmNl8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmNl8yAgkBBSRmNl8xAgkBBSRmNl8xAgkBBSRmNl8xAgUFJGFjYzAAAAABAAIAAwkAzAgCCQELU3RyaW5nRW50cnkCAg9zdGF0aWNfdG9rZW5JZHMFC2Fzc2V0SWRzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQICE3N0YXRpY190b2tlbldlaWdodHMFD2Fzc2V0V2VpZ2h0c1N0cgkAzAgCCQEMSW50ZWdlckVudHJ5AgITc3RhdGljX3Rva2Vuc0Ftb3VudAkAkAMBBQphc3NldElkc0xpCQDMCAIJAQtTdHJpbmdFbnRyeQICEXN0YXRpY19wb29sRG9tYWluBQpwb29sRG9tYWluCQDMCAIJAQtTdHJpbmdFbnRyeQICEnN0YXRpY19iYXNlVG9rZW5JZAUOYmFzZVRva2VuSWRTdHIJAMwIAgkBDEludGVnZXJFbnRyeQICCnN0YXRpY19mZWUAZAUDbmlsAWkBBGluaXQBBm9yYWNsZQoBC3ByZXBhcmVMaXN0AAoBB2hhbmRsZXICBWFjY3VtAW4JAM4IAgUFYWNjdW0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdnbG9iYWxfCQEOZ2V0QXNzZXRTdHJpbmcBCAUBbgdhc3NldElkAghfYmFsYW5jZQgFAW4GYW1vdW50BQNuaWwKAAIkbAgFAWkIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjRfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2hhbmRsZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjRfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjRfMgIJAQUkZjRfMQIJAQUkZjRfMQIJAQUkZjRfMQIFBSRhY2MwAAAAAQACAAMKARljYWxjdWxhdGVQb29sVG9rZW5zQW1vdW50AQhwYXltZW50cwoBB2hhbmRsZXICBWFjY3VtA3BtdAQHYXNzZXRJZAgFA3BtdAdhc3NldElkCgEIaGFuZGxlcjICBWFjY3VtAW4DCQAAAgUBbgUHYXNzZXRJZAkBBXZhbHVlAQkAzwgCBQhhc3NldElkcwUBbgUFYWNjdW0EBVRva2VuCgACJGwFCGFzc2V0SWRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAABCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhoYW5kbGVyMgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmNF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmNF8yAgkBBSRmNF8xAgkBBSRmNF8xAgkBBSRmNF8xAgUFJGFjYzAAAAABAAIAAwkAawMFBWFjY3VtCQBsBggFA3BtdAZhbW91bnQJAJEDAgUIRGVjaW1hbHMFBVRva2VuCQCRAwIFDUFzc2V0c1dlaWdodHMFBVRva2VuBRVBc3NldHNXZWlnaHRzRGVjaW1hbHMACAUFRkxPT1IFBlNjYWxlOAoAAiRsBQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFDlBvb2xUb2tlblNjYWxlCgEFJGY0XzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdoYW5kbGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGY0XzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGY0XzICCQEFJGY0XzECCQEFJGY0XzECCQEFJGY0XzECBQUkYWNjMAAAAAEAAgADAwkAZgIJAQ10cnlHZXRJbnRlZ2VyAQIQZ2xvYmFsX3dhc0luaXRlZAAACQACAQITcG9vbCBhbHJlYWR5IGluaXRlZAQRaW5pdGlhbFBvb2xUb2tlbnMJARljYWxjdWxhdGVQb29sVG9rZW5zQW1vdW50AQgFAWkIcGF5bWVudHMDCQAAAgURaW5pdGlhbFBvb2xUb2tlbnMAAAkAAgECMnlvdSBuZWVkIGEgYmlnZ2VyIHRva2VucyBhbW91bnQgdG8gbGF1bmNoIHRoZSBwb29sBA5wb29sVG9rZW5Jc3N1ZQkAwwgHCQCsAgICA1dEIAkBDHRyeUdldFN0cmluZwECEXN0YXRpY19wb29sRG9tYWluAg1XRCBwb29sIHRva2VuBRFpbml0aWFsUG9vbFRva2VucwURUG9vbFRva2VuRGVjaW1hbHMGBQR1bml0AAAEC3Bvb2xUb2tlbklkCQC4CAEFDnBvb2xUb2tlbklzc3VlCQDOCAIJAM4IAgkBC3ByZXBhcmVMaXN0AAkAzAgCBQ5wb29sVG9rZW5Jc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFEWluaXRpYWxQb29sVG9rZW5zCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhBnbG9iYWxfd2FzSW5pdGVkAAEJAMwIAgkBC0JpbmFyeUVudHJ5AgITZ2xvYmFsX3Bvb2xUb2tlbl9pZAULcG9vbFRva2VuSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgIWc3RhdGljX3Bvb2xUb2tlbl9pZFN0cgkBDmdldEFzc2V0U3RyaW5nAQULcG9vbFRva2VuSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRFpbml0aWFsUG9vbFRva2VucwULcG9vbFRva2VuSWQFA25pbAkBG3NldE9yYWNsZUFkZHJlc3NBbmRJbml0aWF0ZQEFBm9yYWNsZQFpAQ1nZW5lcmF0ZUluZGV4AQpuZWVkQ2hhbmdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwUBVAkAAgEJAKwCAgI7eW91IG5lZWQgdG8gYXR0YWNoIGFsbCBwb29sIHRva2Vucy4gYW1vdW50IG9mIHBvb2wgdG9rZW5zOiAJAKQDAQUBVAMJAQEhAQkBE2NoZWNrVG9rZW5zVmFsaWRpdHkBCAUBaQhwYXltZW50cwkAAgECFXdyb25nIGFzc2V0cyBhdHRhY2hlZAQHUElzc3VlZAkBDWdldE1pblBJc3N1ZWQBCAUBaQhwYXltZW50cwQHcmVpc3N1ZQkBB1JlaXNzdWUDCQERQGV4dHJOYXRpdmUoMTA1NykBAhNnbG9iYWxfcG9vbFRva2VuX2lkBQdQSXNzdWVkBgQGcmVzdWx0CQETaGFuZGxlUG9vbFRva2Vuc0FkZAQFB1BJc3N1ZWQIBQFpCHBheW1lbnRzCAUBaQxvcmlnaW5DYWxsZXIFCm5lZWRDaGFuZ2UJAJQKAgkAzggCBQZyZXN1bHQJAMwIAgUHcmVpc3N1ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB1BJc3N1ZWQJAQx0cnlHZXRCaW5hcnkBAhNnbG9iYWxfcG9vbFRva2VuX2lkCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFB1BJc3N1ZWQFA25pbAUHUElzc3VlZAFpAQpzdGFrZUluZGV4AAQKYWRkcmVzc1N0cgkApQgBCAUBaQxvcmlnaW5DYWxsZXIEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkCQEMdHJ5R2V0QmluYXJ5AQITZ2xvYmFsX3Bvb2xUb2tlbl9pZAkAAgECFHdyb25nIGFzc2V0IGF0dGFjaGVkCQEQaW5kZXhTdGFrZVJlc3VsdAIFCmFkZHJlc3NTdHIIBQNwbXQGYW1vdW50AWkBDHVuc3Rha2VJbmRleAELc2hhcmVBbW91bnQECmFkZHJlc3NTdHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBA5zaGFyZUF2YWlsYWJsZQkBDXRyeUdldEludGVnZXIBCQCsAgIFCmFkZHJlc3NTdHICDF9pbmRleFN0YWtlZAMJAGYCBQtzaGFyZUFtb3VudAUOc2hhcmVBdmFpbGFibGUJAAIBAiV5b3UgZG9uJ3QgaGF2ZSBpbmRleCB0b2tlbnMgYXZhaWxhYmxlCQDOCAIJAQtjbGFpbVJlc3VsdAEIBQFpDG9yaWdpbkNhbGxlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQphZGRyZXNzU3RyAgxfaW5kZXhTdGFrZWQJAGUCBQ5zaGFyZUF2YWlsYWJsZQULc2hhcmVBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQICEmdsb2JhbF9pbmRleFN0YWtlZAkAZQIJAQ10cnlHZXRJbnRlZ2VyAQISZ2xvYmFsX2luZGV4U3Rha2VkBQtzaGFyZUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC3NoYXJlQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NykBAhNnbG9iYWxfcG9vbFRva2VuX2lkBQNuaWwBaQERY2xhaW1JbmRleFJld2FyZHMACQELY2xhaW1SZXN1bHQBCAUBaQZjYWxsZXIBaQELcmVkZWVtSW5kZXgBDHNlbmRUb09yaWdpbgQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUDcG10B2Fzc2V0SWQJAQx0cnlHZXRCaW5hcnkBAhNnbG9iYWxfcG9vbFRva2VuX2lkCQACAQIecGxlYXNlIGF0dGFjaCBwb29sIHNoYXJlIHRva2VuBAlQUmVkZWVtZWQIBQNwbXQGYW1vdW50BAZyZXN1bHQJARZoYW5kbGVQb29sVG9rZW5zUmVkZWVtAgUJUFJlZGVlbWVkAwUMc2VuZFRvT3JpZ2luCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgkAzggCBQZyZXN1bHQJAMwIAgkBBEJ1cm4CCQEMdHJ5R2V0QmluYXJ5AQITZ2xvYmFsX3Bvb2xUb2tlbl9pZAUJUFJlZGVlbWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhdnbG9iYWxfcG9vbFRva2VuX2Ftb3VudAkAZQIJAQ10cnlHZXRJbnRlZ2VyAQIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQFCVBSZWRlZW1lZAUDbmlsAWkBBHN3YXACCGFzc2V0T3V0B21pbmltdW0DCQEKaXNTaHV0ZG93bgAJAAIBAhpQb29sIGlzIGN1cnJlbnRseSBzaHV0ZG93bgQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECEFtb3VudEluCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQHQXNzZXRJbggFA3BtdAdhc3NldElkBAppbnZva2VTd2FwCQEKYXNJbnRUdXBsZQEJAP0HBAUEdGhpcwIMc3dhcEludGVybmFsCQDMCAIFCGFzc2V0T3V0CQDMCAIFB21pbmltdW0JAMwIAgUIQW1vdW50SW4JAMwIAgkBDmdldEFzc2V0U3RyaW5nAQUHQXNzZXRJbgkAzAgCCQClCAEIBQFpBmNhbGxlcgUDbmlsBQNuaWwDCQAAAgUKaW52b2tlU3dhcAUKaW52b2tlU3dhcAQOY2xlYW5BbW91bnRPdXQIBQppbnZva2VTd2FwAl8xAwkAAAIFDmNsZWFuQW1vdW50T3V0BQ5jbGVhbkFtb3VudE91dAQJZmVlQW1vdW50CAUKaW52b2tlU3dhcAJfMgMJAAACBQlmZWVBbW91bnQFCWZlZUFtb3VudAQFdG9wVXAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBDmdldEZlZXNBY2NvdW50AAkAawMFCWZlZUFtb3VudAACAAQJAQ1nZXRBc3NldEJ5dGVzAQUIYXNzZXRPdXQFA25pbAMJAAACBQV0b3BVcAUFdG9wVXAJAJQKAgUFdG9wVXAFDmNsZWFuQW1vdW50T3V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGludGVybmFsAwVzdGFrZQZhbW91bnQHYXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECC05vdCBhbGxvd2VkCQEMc3Rha2VVbnN0YWtlAwUFc3Rha2UFBmFtb3VudAUHYXNzZXRJZAFpAQhzdGFrZUFsbAAJAQxzdGFrZVVuc3Rha2UDBgkAZQIJAQ10cnlHZXRJbnRlZ2VyAQIUZ2xvYmFsX1dBVkVTX2JhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQIObGVhc2luZ19hbW91bnQCBVdBVkVTAWkBDHN3YXBJbnRlcm5hbAUIYXNzZXRPdXQHbWluaW11bQhBbW91bnRJbgdBc3NldEluBmNhbGxlcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECG1lvdSBjYW50IGNhbGwgdGhpcyBkaXJlY3RseQQIQXNzZXRPdXQJAQ1nZXRBc3NldEJ5dGVzAQUIYXNzZXRPdXQEA2RheQkBF2NhbGN1bGF0ZURheXNTaW5jZVN0YXJ0AAQHcmV2ZW5ldQkBDXRyeUdldEludGVnZXIBCQEXcmV2ZW5ldUZvckRheUJ5QXNzZXRPdXQCBQNkYXkFCGFzc2V0T3V0BA5Bc3NldEluQmFsYW5jZQkBDXRyeUdldEludGVnZXIBCQCsAgIJAKwCAgIHZ2xvYmFsXwUHQXNzZXRJbgIIX2JhbGFuY2UDCQAAAgUOQXNzZXRJbkJhbGFuY2UFDkFzc2V0SW5CYWxhbmNlBA9Bc3NldE91dEJhbGFuY2UJAQ10cnlHZXRJbnRlZ2VyAQkArAICCQCsAgICB2dsb2JhbF8FCGFzc2V0T3V0AghfYmFsYW5jZQMJAAACBQ9Bc3NldE91dEJhbGFuY2UFD0Fzc2V0T3V0QmFsYW5jZQQJQW1vdW50T3V0CQESY2FsY3VsYXRlT3V0QW1vdW50BQUIQW1vdW50SW4JAQ1nZXRBc3NldEJ5dGVzAQUHQXNzZXRJbgUIQXNzZXRPdXQFDkFzc2V0SW5CYWxhbmNlBQ9Bc3NldE91dEJhbGFuY2UDCQAAAgUJQW1vdW50T3V0BQlBbW91bnRPdXQECWZlZUFtb3VudAkAawMFCUFtb3VudE91dAUDRmVlBQhGZWVTY2FsZQMJAAACBQlmZWVBbW91bnQFCWZlZUFtb3VudAQOY2xlYW5BbW91bnRPdXQJAGUCBQlBbW91bnRPdXQFCWZlZUFtb3VudAMJAAACBQ5jbGVhbkFtb3VudE91dAUOY2xlYW5BbW91bnRPdXQDCQBmAgUHbWluaW11bQUOY2xlYW5BbW91bnRPdXQJAAIBCQCsAgICK2Ftb3VudCB0byByZWNpZXZlIGlzIGxvd2VyIHRoYW4gZ2l2ZW4gb25lOiAJAKQDAQUOY2xlYW5BbW91bnRPdXQDCQBmAgAACQBlAgUPQXNzZXRPdXRCYWxhbmNlBQlBbW91bnRPdXQJAAIBAhtjb250cmFjdCBpcyBvdXQgb2YgcmVzZXJ2ZXMDCQAAAgUIQXNzZXRPdXQJAQ1nZXRBc3NldEJ5dGVzAQUHQXNzZXRJbgkAAgECGHRoaXMgc3dhcCBpcyBub3QgYWxsb3dlZAQJdm9sdW1lS2V5CQEQdm9sdW1lRm9yRGF5QnlJbgIFA2RheQUHQXNzZXRJbgQMbmV3QmFsYW5jZUluCQBkAgUOQXNzZXRJbkJhbGFuY2UFCEFtb3VudEluAwkAAAIFDG5ld0JhbGFuY2VJbgUMbmV3QmFsYW5jZUluBAVzdGFrZQkA/QcEBQR0aGlzAghpbnRlcm5hbAkAzAgCBgkAzAgCBQhBbW91bnRJbgkAzAgCBQdBc3NldEluBQNuaWwFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEDW5ld0JhbGFuY2VPdXQJAGUCBQ9Bc3NldE91dEJhbGFuY2UFCUFtb3VudE91dAMJAAACBQ1uZXdCYWxhbmNlT3V0BQ1uZXdCYWxhbmNlT3V0BAd1bnN0YWtlCQD9BwQFBHRoaXMCCGludGVybmFsCQDMCAIHCQDMCAIJAGQCBQ5jbGVhbkFtb3VudE91dAkAawMFCWZlZUFtb3VudAADAAQJAMwIAgUIYXNzZXRPdXQFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICB2dsb2JhbF8FCGFzc2V0T3V0AghfYmFsYW5jZQkAZAIFDW5ld0JhbGFuY2VPdXQJAGsDBQlmZWVBbW91bnQAAQAECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBmNhbGxlcgUOY2xlYW5BbW91bnRPdXQFCEFzc2V0T3V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHZ2xvYmFsXwUHQXNzZXRJbgIIX2JhbGFuY2UFDG5ld0JhbGFuY2VJbgkAzAgCCQEMSW50ZWdlckVudHJ5AgIOZGF5c19zaW5jZV9hcHkFA2RheQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF3JldmVuZXVGb3JEYXlCeUFzc2V0T3V0AgUDZGF5BQhhc3NldE91dAkAZAIFB3JldmVuZXUFCWZlZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJdm9sdW1lS2V5BQhBbW91bnRJbgUDbmlsCQCUCgIFDmNsZWFuQW1vdW50T3V0BQlmZWVBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkAAwkBCWlzVGVzdEVudgAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECWZpcnN0VXNlcgEgURzk/Wb/EmnS8VoUnzuy4vQ7f8HLaCeiNF5sONdX3W0ECnNlY29uZFVzZXIBIMFs347t041zj4ui+fqJD/R1zUQbVHJSo7Sc0lakLeB1BAl0aGlyZFVzZXIBIOdb9I6q0vlJnm6EJrj5fh/cZ6h93Cu41Op7zfJoCsElBA9maXJzdFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQlmaXJzdFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCWZpcnN0VXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJZmlyc3RVc2VyAAEAAAQQc2Vjb25kVXNlclNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCnNlY29uZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCnNlY29uZFVzZXIAAQAABA90aGlyZFVzZXJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQl0aGlyZFVzZXIAAQMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCXRoaXJkVXNlcgABAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUJdGhpcmRVc2VyAAEAAAQPc2lnbmF0dXJlc0NvdW50CQBkAgkAZAIFD2ZpcnN0VXNlclNpZ25lZAUQc2Vjb25kVXNlclNpZ25lZAUPdGhpcmRVc2VyU2lnbmVkBAckbWF0Y2gwBQJ0eAkAZwIFD3NpZ25hdHVyZXNDb3VudAAC9BjUyg==", "height": 3847181, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BQ467q3vvXV1dpWsZzFH1Wgn5SGcpZFwdRKJJTyGqec3 Next: GPw9BWntMZqhdRegxuBxFcUr5xanawRVTLKceWXY8ymG Diff:
OldNewDifferences
9797 func B (C,r) = ((("reveneu_day_" + r) + "_") + toString(C))
9898
9999
100-let D = l("static_tokensAmount")
100+func D (C,r) = ((("volume_day_" + r) + "_") + toString(C))
101101
102-let E = {
103- let F = split(p("static_tokenIds"), ",")
104- let G = size(F)
105- let H = nil
106- func I (J,K) = if ((K >= G))
107- then J
108- else u(J, F[K])
109102
110- func L (J,K) = if ((K >= G))
111- then J
103+let E = l("static_tokensAmount")
104+
105+let F = {
106+ let G = split(p("static_tokenIds"), ",")
107+ let H = size(G)
108+ let I = nil
109+ func J (K,L) = if ((L >= H))
110+ then K
111+ else u(K, G[L])
112+
113+ func M (K,L) = if ((L >= H))
114+ then K
112115 else throw("List size exceeds 3")
113116
114- L(I(I(I(H, 0), 1), 2), 3)
117+ M(J(J(J(I, 0), 1), 2), 3)
115118 }
116119
117-let M = {
118- let F = E
119- let G = size(F)
120- let H = nil
121- func N (J,K) = if ((K >= G))
122- then J
123- else x(J, F[K])
120+let N = {
121+ let G = F
122+ let H = size(G)
123+ let I = nil
124+ func O (K,L) = if ((L >= H))
125+ then K
126+ else x(K, G[L])
124127
125- func O (J,K) = if ((K >= G))
126- then J
128+ func P (K,L) = if ((L >= H))
129+ then K
127130 else throw("List size exceeds 3")
128131
129- O(N(N(N(H, 0), 1), 2), 3)
132+ P(O(O(O(I, 0), 1), 2), 3)
130133 }
131134
132-let P = {
133- let F = E
134- let G = size(F)
135- let H = nil
136- func Q (J,K) = if ((K >= G))
137- then J
138- else y(J, F[K])
135+let Q = {
136+ let G = F
137+ let H = size(G)
138+ let I = nil
139+ func R (K,L) = if ((L >= H))
140+ then K
141+ else y(K, G[L])
139142
140- func R (J,K) = if ((K >= G))
141- then J
143+ func S (K,L) = if ((L >= H))
144+ then K
142145 else throw("List size exceeds 3")
143146
144- R(Q(Q(Q(H, 0), 1), 2), 3)
147+ S(R(R(R(I, 0), 1), 2), 3)
145148 }
146149
147-let S = {
148- let F = E
149- let G = size(F)
150- let H = nil
151- func T (J,K) = if ((K >= G))
152- then J
153- else z(J, F[K])
150+let T = {
151+ let G = F
152+ let H = size(G)
153+ let I = nil
154+ func U (K,L) = if ((L >= H))
155+ then K
156+ else z(K, G[L])
154157
155- func U (J,K) = if ((K >= G))
156- then J
158+ func V (K,L) = if ((L >= H))
159+ then K
157160 else throw("List size exceeds 3")
158161
159- U(T(T(T(H, 0), 1), 2), 3)
162+ V(U(U(U(I, 0), 1), 2), 3)
160163 }
161164
162-let V = p("last_stake_id")
165+let W = p("last_stake_id")
163166
164-let W = l("static_fee")
167+let X = l("static_fee")
165168
166-let X = 2
169+let Y = 2
167170
168-let Y = 10000
171+let Z = 10000
169172
170-let Z = 100000000
173+let aa = 100000000
171174
172-let aa = 10000
175+let ab = 10000
173176
174-let ab = 8
177+let ac = 8
175178
176-let ac = pow(10, 0, ab, 0, 0, HALFUP)
179+let ad = pow(10, 0, ac, 0, 0, HALFUP)
177180
178-let ad = E
181+let ae = F
179182
180-func ae () = {
181- let af = if ((p("static_oracle") != ""))
183+func af () = {
184+ let ag = if ((p("static_oracle") != ""))
182185 then {
183186 let g = getBoolean(i(), "amm_shutdown")
184187 if ($isInstanceOf(g, "Boolean"))
185188 then {
186- let ag = g
187- ag
189+ let ah = g
190+ ah
188191 }
189192 else false
190193 }
191194 else false
192- let ah = {
195+ let ai = {
193196 let g = getBoolean(this, "is_shutdown")
194197 if ($isInstanceOf(g, "Boolean"))
195198 then {
196- let ag = g
197- ag
199+ let ah = g
200+ ah
198201 }
199202 else false
200203 }
201- if (af)
204+ if (ag)
202205 then true
203- else ah
206+ else ai
204207 }
205208
206209
207-func ai () = if ((p("static_oracle") != ""))
210+func aj () = if ((p("static_oracle") != ""))
208211 then {
209212 let g = getBoolean(i(), "amm_tx")
210213 if ($isInstanceOf(g, "Boolean"))
211214 then {
212- let ag = g
213- ag
215+ let ah = g
216+ ah
214217 }
215218 else true
216219 }
217220 else true
218221
219222
220-func aj (ak) = {
221- let al = q(E[ak])
222- l((("global_" + al) + "_balance"))
223+func ak (al) = {
224+ let am = q(F[al])
225+ l((("global_" + am) + "_balance"))
223226 }
224227
225228
226-func am (an,al) = {
227- let ao = l("global_poolToken_amount")
228- let ap = l((("global_" + q(al)) + "_balance"))
229- fraction(an, ao, ap, DOWN)
229+func an (ao,am) = {
230+ let ap = l("global_poolToken_amount")
231+ let aq = l((("global_" + q(am)) + "_balance"))
232+ fraction(ao, ap, aq, DOWN)
230233 }
231234
232235
233-func aq (ar) = {
234- func as (v,at) = {
235- let au = am(at.amount, at.assetId)
236- if ((au == 0))
236+func ar (as) = {
237+ func at (v,au) = {
238+ let av = an(au.amount, au.assetId)
239+ if ((av == 0))
237240 then throw("one of the tokens amounts is too low")
238241 else if (if ((v == 0))
239242 then true
240- else (v > au))
241- then au
243+ else (v > av))
244+ then av
242245 else v
243246 }
244247
245- let av = {
246- let F = ar
247- let G = size(F)
248- let H = 0
249- func aw (J,K) = if ((K >= G))
250- then J
251- else as(J, F[K])
248+ let aw = {
249+ let G = as
250+ let H = size(G)
251+ let I = 0
252+ func ax (K,L) = if ((L >= H))
253+ then K
254+ else at(K, G[L])
252255
253- func ax (J,K) = if ((K >= G))
254- then J
256+ func ay (K,L) = if ((L >= H))
257+ then K
255258 else throw("List size exceeds 3")
256259
257- ax(aw(aw(aw(H, 0), 1), 2), 3)
260+ ay(ax(ax(ax(I, 0), 1), 2), 3)
258261 }
259- av
262+ aw
260263 }
261264
262265
263-func ay (ar) = {
264- func az (v,aA) = (v ++ [aA.assetId])
266+func az (as) = {
267+ func aA (v,aB) = (v ++ [aB.assetId])
265268
266- let aB = {
267- let F = ar
268- let G = size(F)
269- let H = nil
270- func aw (J,K) = if ((K >= G))
271- then J
272- else az(J, F[K])
269+ let aC = {
270+ let G = as
271+ let H = size(G)
272+ let I = nil
273+ func ax (K,L) = if ((L >= H))
274+ then K
275+ else aA(K, G[L])
273276
274- func ax (J,K) = if ((K >= G))
275- then J
277+ func ay (K,L) = if ((L >= H))
278+ then K
276279 else throw("List size exceeds 3")
277280
278- ax(aw(aw(aw(H, 0), 1), 2), 3)
281+ ay(ax(ax(ax(I, 0), 1), 2), 3)
279282 }
280- if ((aB == aB))
283+ if ((aC == aC))
281284 then {
282- func aC (v,r) = if ((indexOf(aB, r) != unit))
285+ func aD (v,r) = if ((indexOf(aC, r) != unit))
283286 then (v + 1)
284287 else throw(("asset not attached: " + q(r)))
285288
286- let aD = {
287- let F = E
288- let G = size(F)
289- let H = 0
290- func aE (J,K) = if ((K >= G))
291- then J
292- else aC(J, F[K])
289+ let aE = {
290+ let G = F
291+ let H = size(G)
292+ let I = 0
293+ func aF (K,L) = if ((L >= H))
294+ then K
295+ else aD(K, G[L])
293296
294- func aF (J,K) = if ((K >= G))
295- then J
297+ func aG (K,L) = if ((L >= H))
298+ then K
296299 else throw("List size exceeds 3")
297300
298- aF(aE(aE(aE(H, 0), 1), 2), 3)
301+ aG(aF(aF(aF(I, 0), 1), 2), 3)
299302 }
300- if ((aD == aD))
303+ if ((aE == aE))
301304 then true
302305 else throw("Strict value is not equal to itself.")
303306 }
305308 }
306309
307310
308-func aG (aH,an,r) = if (if ((r == "WAVES"))
309- then (an > 0)
311+func aH (aI,ao,r) = if (if ((r == "WAVES"))
312+ then (ao > 0)
310313 else false)
311314 then {
312- let aI = valueOrElse(getInteger(this, "leasing_amount"), 0)
313- let aJ = if (aH)
314- then (aI + an)
315- else (aI - an)
316- let aK = Lease(k(), aJ)
317- let aL = calculateLeaseId(aK)
318- let aM = [aK, StringEntry("last_stake_id", toBase58String(aL)), IntegerEntry("leasing_amount", aJ)]
319- if ((V != ""))
320- then ([LeaseCancel(fromBase58String(V))] ++ aM)
321- else aM
315+ let aJ = valueOrElse(getInteger(this, "leasing_amount"), 0)
316+ let aK = if (aI)
317+ then (aJ + ao)
318+ else (aJ - ao)
319+ let aL = Lease(k(), aK)
320+ let aM = calculateLeaseId(aL)
321+ let aN = [aL, StringEntry("last_stake_id", toBase58String(aM)), IntegerEntry("leasing_amount", aK)]
322+ if ((W != ""))
323+ then ([LeaseCancel(fromBase58String(W))] ++ aN)
324+ else aN
322325 }
323326 else nil
324327
325328
326-func aN (au,ar,aO,aP) = {
327- func aQ (al) = {
328- func as (v,aA) = if ((aA.assetId == al))
329- then aA.amount
329+func aO (av,as,aP,aQ) = {
330+ func aR (am) = {
331+ func at (v,aB) = if ((aB.assetId == am))
332+ then aB.amount
330333 else v
331334
332- let F = ar
333- let G = size(F)
334- let H = 0
335- func aw (J,K) = if ((K >= G))
336- then J
337- else as(J, F[K])
335+ let G = as
336+ let H = size(G)
337+ let I = 0
338+ func ax (K,L) = if ((L >= H))
339+ then K
340+ else at(K, G[L])
338341
339- func ax (J,K) = if ((K >= G))
340- then J
342+ func ay (K,L) = if ((L >= H))
343+ then K
341344 else throw("List size exceeds 3")
342345
343- ax(aw(aw(aw(H, 0), 1), 2), 3)
346+ ay(ax(ax(ax(I, 0), 1), 2), 3)
344347 }
345348
346- func aR (v,al) = {
347- let aS = l((("global_" + q(al)) + "_balance"))
348- let aT = l("global_poolToken_amount")
349- let aU = l((("static_" + q(al)) + "_scale"))
350- let aV = fraction((fraction((aT + au), aU, aT, CEILING) - aU), aS, aU, CEILING)
351- let aW = aQ(al)
352- let aX = min([aV, aW])
353- let aY = ((if ((aW != 0))
354- then aW
355- else 0) - aX)
356- let aZ = if (if (aP)
357- then (aY > 0)
349+ func aS (v,am) = {
350+ let aT = l((("global_" + q(am)) + "_balance"))
351+ let aU = l("global_poolToken_amount")
352+ let aV = l((("static_" + q(am)) + "_scale"))
353+ let aW = fraction((fraction((aU + av), aV, aU, CEILING) - aV), aT, aV, CEILING)
354+ let aX = aR(am)
355+ let aY = min([aW, aX])
356+ let aZ = ((if ((aX != 0))
357+ then aX
358+ else 0) - aY)
359+ let ba = if (if (aQ)
360+ then (aZ > 0)
358361 else false)
359- then [ScriptTransfer(aO, aY, al)]
362+ then [ScriptTransfer(aP, aZ, am)]
360363 else nil
361- let ba = if ((q(al) == "WAVES"))
362- then aG(true, aX, "WAVES")
364+ let bb = if ((q(am) == "WAVES"))
365+ then aH(true, aY, "WAVES")
363366 else nil
364- (((v ++ aZ) ++ ba) ++ [IntegerEntry((("global_" + q(al)) + "_balance"), (aS + aX))])
367+ (((v ++ ba) ++ bb) ++ [IntegerEntry((("global_" + q(am)) + "_balance"), (aT + aY))])
365368 }
366369
367- let F = E
368- let G = size(F)
369- let H = nil
370- func aw (J,K) = if ((K >= G))
371- then J
372- else aR(J, F[K])
370+ let G = F
371+ let H = size(G)
372+ let I = nil
373+ func ax (K,L) = if ((L >= H))
374+ then K
375+ else aS(K, G[L])
373376
374- func ax (J,K) = if ((K >= G))
375- then J
377+ func ay (K,L) = if ((L >= H))
378+ then K
376379 else throw("List size exceeds 3")
377380
378- ax(aw(aw(aw(H, 0), 1), 2), 3)
381+ ay(ax(ax(ax(I, 0), 1), 2), 3)
379382 }
380383
381384
382-func bb (bc,aO) = {
383- func bd (v,al) = {
384- let aS = l((("global_" + q(al)) + "_balance"))
385- let aT = l("global_poolToken_amount")
386- let aU = l((("static_" + q(al)) + "_scale"))
387- let an = toInt(fraction((toBigInt(Z) - fraction(toBigInt((aT - bc)), toBigInt(Z), toBigInt(aT), CEILING)), toBigInt(aS), toBigInt(Z), DOWN))
388- let ba = if ((q(al) == "WAVES"))
389- then aG(false, an, "WAVES")
385+func bc (bd,aP) = {
386+ func be (v,am) = {
387+ let aT = l((("global_" + q(am)) + "_balance"))
388+ let aU = l("global_poolToken_amount")
389+ let aV = l((("static_" + q(am)) + "_scale"))
390+ let ao = toInt(fraction((toBigInt(aa) - fraction(toBigInt((aU - bd)), toBigInt(aa), toBigInt(aU), CEILING)), toBigInt(aT), toBigInt(aa), DOWN))
391+ let bb = if ((q(am) == "WAVES"))
392+ then aH(false, ao, "WAVES")
390393 else nil
391- ((v ++ ba) ++ [IntegerEntry((("global_" + q(al)) + "_balance"), (aS - an)), ScriptTransfer(aO, an, al)])
394+ ((v ++ bb) ++ [IntegerEntry((("global_" + q(am)) + "_balance"), (aT - ao)), ScriptTransfer(aP, ao, am)])
392395 }
393396
394- let F = E
395- let G = size(F)
396- let H = nil
397- func aw (J,K) = if ((K >= G))
398- then J
399- else bd(J, F[K])
397+ let G = F
398+ let H = size(G)
399+ let I = nil
400+ func ax (K,L) = if ((L >= H))
401+ then K
402+ else be(K, G[L])
400403
401- func ax (J,K) = if ((K >= G))
402- then J
404+ func ay (K,L) = if ((L >= H))
405+ then K
403406 else throw("List size exceeds 3")
404407
405- ax(aw(aw(aw(H, 0), 1), 2), 3)
408+ ay(ax(ax(ax(I, 0), 1), 2), 3)
406409 }
407410
408411
409-func be (bf,bg,bh,bi,bj) = {
410- let bk = value(indexOf(E, bg))
411- let bl = value(indexOf(E, bh))
412- if ((bk == bl))
412+func bf (bg,bh,bi,bj,bk) = {
413+ let bl = value(indexOf(F, bh))
414+ let bm = value(indexOf(F, bi))
415+ if ((bl == bm))
413416 then throw("wrong tokens pair")
414- else fraction(bj, ((Z * Z) - toInt(pow(fraction(toBigInt(bi), toBigInt((Z * Z)), toBigInt((bi + bf)), HALFUP), 16, toBigInt(fraction(M[bk], 10000, M[bl])), 4, 16, CEILING))), (Z * Z), DOWN)
417+ else fraction(bk, ((aa * aa) - toInt(pow(fraction(toBigInt(bj), toBigInt((aa * aa)), toBigInt((bj + bg)), HALFUP), 16, toBigInt(fraction(N[bl], 10000, N[bm])), 4, 16, CEILING))), (aa * aa), DOWN)
415418 }
416419
417420
418-func bm (bn,bo,bp) = {
419- let bq = (("global_" + bn) + "_balance")
420- let br = getIntegerValue(this, bq)
421- let bs = (("global_" + bo) + "_balance")
422- let bt = getIntegerValue(this, bs)
423- let bu = be(bp, s(bn), s(bo), br, bt)
424- let bv = fraction(bu, W, aa)
425- if ((bv == bv))
421+func bn (bo,bp,bq) = {
422+ let br = (("global_" + bo) + "_balance")
423+ let bs = getIntegerValue(this, br)
424+ let bt = (("global_" + bp) + "_balance")
425+ let bu = getIntegerValue(this, bt)
426+ let bv = bf(bq, s(bo), s(bp), bs, bu)
427+ let bw = fraction(bv, X, ab)
428+ if ((bw == bw))
426429 then {
427- let bw = (bu - bv)
428- if ((bw == bw))
429- then bw
430+ let bx = (bv - bw)
431+ if ((bx == bx))
432+ then bx
430433 else throw("Strict value is not equal to itself.")
431434 }
432435 else throw("Strict value is not equal to itself.")
433436 }
434437
435438
436-func bx (r) = {
439+func by (r) = {
437440 let g = r
438441 if ($isInstanceOf(g, "ByteVector"))
439442 then {
440- let aZ = g
441- assetBalance(this, aZ)
443+ let ba = g
444+ assetBalance(this, ba)
442445 }
443446 else wavesBalance(this).regular
444447 }
445448
446449
447-func by (r,t,bz,bA) = {
448- let bB = l("global_indexStaked")
449- let bC = bA
450- let bD = (bx(r) - bz)
451- let bE = if ((bD > bC))
452- then bD
453- else bC
454- let bF = (bE - bC)
455- let bG = if ((bB == 0))
450+func bz (r,t,bA,bB) = {
451+ let bC = l("global_indexStaked")
452+ let bD = bB
453+ let bE = (by(r) - bA)
454+ let bF = if ((bE > bD))
455+ then bE
456+ else bD
457+ let bG = (bF - bD)
458+ let bH = if ((bC == 0))
456459 then 0
457- else fraction(bF, Z, bB)
458- let bH = l((("global_lastCheck_" + t) + "_interest"))
459- (bH + bG)
460+ else fraction(bG, aa, bC)
461+ let bI = l((("global_lastCheck_" + t) + "_interest"))
462+ (bI + bH)
460463 }
461464
462465
463-func bI (bJ) = {
464- let bK = toString(bJ)
465- let bL = l((bK + "_indexStaked"))
466- func as (v,r) = {
466+func bJ (bK) = {
467+ let bL = toString(bK)
468+ let bM = l((bL + "_indexStaked"))
469+ func at (v,r) = {
467470 let t = q(r)
468- let bz = l((("global_" + q(r)) + "_balance"))
469- let bA = l((("global_lastCheck_" + t) + "_earnings"))
470- let bM = by(r, t, bz, bA)
471- let bE = max([bA, (bx(r) - bz)])
472- let bN = fraction(bL, (bM - l((((bK + "_lastCheck_") + t) + "_interest"))), Z)
473- let bO = if ((bN == 0))
471+ let bA = l((("global_" + q(r)) + "_balance"))
472+ let bB = l((("global_lastCheck_" + t) + "_earnings"))
473+ let bN = bz(r, t, bA, bB)
474+ let bF = max([bB, (by(r) - bA)])
475+ let bO = fraction(bM, (bN - l((((bL + "_lastCheck_") + t) + "_interest"))), aa)
476+ let bP = if ((bO == 0))
474477 then nil
475- else [ScriptTransfer(bJ, bN, r)]
476- let bP = l((((bK + "_lastCheck_") + t) + "_claimed"))
477- ((v ++ bO) ++ [IntegerEntry((("global_lastCheck_" + t) + "_earnings"), (bE - bN)), IntegerEntry((("global_lastCheck_" + t) + "_interest"), bM), IntegerEntry((((bK + "_lastCheck_") + t) + "_interest"), bM), IntegerEntry((((bK + "_lastCheck_") + t) + "_claimed"), (bP + bN))])
478+ else [ScriptTransfer(bK, bO, r)]
479+ let bQ = l((((bL + "_lastCheck_") + t) + "_claimed"))
480+ ((v ++ bP) ++ [IntegerEntry((("global_lastCheck_" + t) + "_earnings"), (bF - bO)), IntegerEntry((("global_lastCheck_" + t) + "_interest"), bN), IntegerEntry((((bL + "_lastCheck_") + t) + "_interest"), bN), IntegerEntry((((bL + "_lastCheck_") + t) + "_claimed"), (bQ + bO))])
478481 }
479482
480483 let v = {
481- let F = ad
482- let G = size(F)
483- let H = nil
484- func aw (J,K) = if ((K >= G))
485- then J
486- else as(J, F[K])
484+ let G = ae
485+ let H = size(G)
486+ let I = nil
487+ func ax (K,L) = if ((L >= H))
488+ then K
489+ else at(K, G[L])
487490
488- func ax (J,K) = if ((K >= G))
489- then J
491+ func ay (K,L) = if ((L >= H))
492+ then K
490493 else throw("List size exceeds 3")
491494
492- ax(aw(aw(aw(H, 0), 1), 2), 3)
495+ ay(ax(ax(ax(I, 0), 1), 2), 3)
493496 }
494- (v ++ [IntegerEntry((bK + "_lastClaim"), lastBlock.timestamp)])
497+ (v ++ [IntegerEntry((bL + "_lastClaim"), lastBlock.timestamp)])
495498 }
496499
497500
498-func bQ (bK,an) = {
499- let bR = bI(addressFromStringValue(bK))
500- (bR ++ [IntegerEntry((bK + "_indexStaked"), (l((bK + "_indexStaked")) + an)), IntegerEntry("global_indexStaked", (l("global_indexStaked") + an))])
501+func bR (bL,ao) = {
502+ let bS = bJ(addressFromStringValue(bL))
503+ (bS ++ [IntegerEntry((bL + "_indexStaked"), (l((bL + "_indexStaked")) + ao)), IntegerEntry("global_indexStaked", (l("global_indexStaked") + ao))])
501504 }
502505
503506
504-func bS (v,bT) = (v + parseIntValue(bT))
507+func bT (v,bU) = (v + parseIntValue(bU))
505508
506509
507-func bU (bJ) = [StringEntry("static_oracle", bJ)]
510+func bV (bK) = [StringEntry("static_oracle", bK)]
508511
509512
510-func bV () = {
511- let bW = {
513+func bW () = {
514+ let bX = {
512515 let g = getBoolean(this, "TESTENV")
513516 if ($isInstanceOf(g, "Boolean"))
514517 then {
515- let ag = g
516- ag
518+ let ah = g
519+ ah
517520 }
518521 else false
519522 }
520- bW
523+ bX
521524 }
522525
523526
524-@Callable(bX)
525-func readOnlyFunc (bn,bo,bp) = {
526- let bY = bm(bn, bo, bp)
527-[IntegerEntry("DEBUG", bY)]
527+@Callable(bY)
528+func readOnlyFunc (bo,bp,bq) = {
529+ let bZ = bn(bo, bp, bq)
530+[IntegerEntry("DEBUG", bZ)]
528531 }
529532
530533
531534
532-@Callable(bX)
533-func topUpFunds () = if ((size(bX.payments) != 1))
535+@Callable(bY)
536+func topUpFunds () = if ((size(bY.payments) != 1))
534537 then throw("Wrong payments attached!")
535538 else {
536- let aA = bX.payments[0]
537- let bZ = aA.assetId
538- if ((indexOf(E, bZ) == unit))
539+ let aB = bY.payments[0]
540+ let ca = aB.assetId
541+ if ((indexOf(F, ca) == unit))
539542 then throw("Not supported assetId")
540543 else {
541- let an = aA.amount
542- let bz = l((("global_" + q(bZ)) + "_balance"))
544+ let ao = aB.amount
545+ let bA = l((("global_" + q(ca)) + "_balance"))
543546 let C = b()
544- let ca = l(B(C, q(bZ)))
545-[IntegerEntry((("global_" + q(bZ)) + "_balance"), (bz + an)), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, q(bZ)), (ca + an))]
547+ let cb = l(B(C, q(ca)))
548+[IntegerEntry((("global_" + q(ca)) + "_balance"), (bA + ao)), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, q(ca)), (cb + ao))]
546549 }
547550 }
548551
549552
550553
551-@Callable(bX)
552-func preInit (cb,cc,cd,ce) = if ((this != bX.caller))
554+@Callable(bY)
555+func preInit (cc,cd,ce,cf) = if ((this != bY.caller))
553556 then throw("admin only")
554- else if ((size(ce) > 13))
557+ else if ((size(cf) > 13))
555558 then throw("too large pool domain")
556559 else {
557- let cf = split(cb, ",")
558- let cg = {
559- let F = cf
560- let G = size(F)
561- let H = nil
562- func aw (J,K) = if ((K >= G))
563- then J
564- else u(J, F[K])
560+ let cg = split(cc, ",")
561+ let ch = {
562+ let G = cg
563+ let H = size(G)
564+ let I = nil
565+ func ax (K,L) = if ((L >= H))
566+ then K
567+ else u(K, G[L])
565568
566- func ax (J,K) = if ((K >= G))
567- then J
569+ func ay (K,L) = if ((L >= H))
570+ then K
568571 else throw("List size exceeds 3")
569572
570- ax(aw(aw(aw(H, 0), 1), 2), 3)
573+ ay(ax(ax(ax(I, 0), 1), 2), 3)
571574 }
572- let ch = split(cc, ",")
573- let ci = {
574- let F = ch
575- let G = size(F)
576- let H = 0
577- func aE (J,K) = if ((K >= G))
578- then J
579- else bS(J, F[K])
575+ let ci = split(cd, ",")
576+ let cj = {
577+ let G = ci
578+ let H = size(G)
579+ let I = 0
580+ func aF (K,L) = if ((L >= H))
581+ then K
582+ else bT(K, G[L])
580583
581- func aF (J,K) = if ((K >= G))
582- then J
584+ func aG (K,L) = if ((L >= H))
585+ then K
583586 else throw("List size exceeds 3")
584587
585- aF(aE(aE(aE(H, 0), 1), 2), 3)
588+ aG(aF(aF(aF(I, 0), 1), 2), 3)
586589 }
587- func cj (v,ck) = if ((ck >= size(cg)))
590+ func ck (v,cl) = if ((cl >= size(ch)))
588591 then v
589592 else {
590- let cl = {
591- let g = cg[ck]
593+ let cm = {
594+ let g = ch[cl]
592595 if ($isInstanceOf(g, "ByteVector"))
593596 then {
594- let ag = g
595- value(assetInfo(cg[ck])).decimals
597+ let ah = g
598+ value(assetInfo(ch[cl])).decimals
596599 }
597600 else 8
598601 }
599- (v ++ [IntegerEntry((("static_" + cf[ck]) + "_scale"), pow(10, 0, cl, 0, 0, DOWN)), IntegerEntry((("static_" + cf[ck]) + "_decimals"), cl), IntegerEntry((("static_" + cf[ck]) + "_weight"), value(parseInt(ch[ck])))])
602+ (v ++ [IntegerEntry((("static_" + cg[cl]) + "_scale"), pow(10, 0, cm, 0, 0, DOWN)), IntegerEntry((("static_" + cg[cl]) + "_decimals"), cm), IntegerEntry((("static_" + cg[cl]) + "_weight"), value(parseInt(ci[cl])))])
600603 }
601604
602- if ((ci != 100))
605+ if ((cj != 100))
603606 then throw("sum of token weights must be equal to 100")
604607 else ({
605- let F = [0, 1, 2]
606- let G = size(F)
607- let H = nil
608- func cm (J,K) = if ((K >= G))
609- then J
610- else cj(J, F[K])
608+ let G = [0, 1, 2]
609+ let H = size(G)
610+ let I = nil
611+ func cn (K,L) = if ((L >= H))
612+ then K
613+ else ck(K, G[L])
611614
612- func cn (J,K) = if ((K >= G))
613- then J
615+ func co (K,L) = if ((L >= H))
616+ then K
614617 else throw("List size exceeds 3")
615618
616- cn(cm(cm(cm(H, 0), 1), 2), 3)
617- } ++ [StringEntry("static_tokenIds", cb), StringEntry("static_tokenWeights", cc), IntegerEntry("static_tokensAmount", size(cg)), StringEntry("static_poolDomain", ce), StringEntry("static_baseTokenId", cd), IntegerEntry("static_fee", 100)])
619+ co(cn(cn(cn(I, 0), 1), 2), 3)
620+ } ++ [StringEntry("static_tokenIds", cc), StringEntry("static_tokenWeights", cd), IntegerEntry("static_tokensAmount", size(ch)), StringEntry("static_poolDomain", cf), StringEntry("static_baseTokenId", ce), IntegerEntry("static_fee", 100)])
618621 }
619622
620623
621624
622-@Callable(bX)
623-func init (co) = {
624- func cp () = {
625- func as (v,bT) = (v ++ [IntegerEntry((("global_" + q(bT.assetId)) + "_balance"), bT.amount)])
625+@Callable(bY)
626+func init (cp) = {
627+ func cq () = {
628+ func at (v,bU) = (v ++ [IntegerEntry((("global_" + q(bU.assetId)) + "_balance"), bU.amount)])
626629
627- let F = bX.payments
628- let G = size(F)
629- let H = nil
630- func aw (J,K) = if ((K >= G))
631- then J
632- else as(J, F[K])
630+ let G = bY.payments
631+ let H = size(G)
632+ let I = nil
633+ func ax (K,L) = if ((L >= H))
634+ then K
635+ else at(K, G[L])
633636
634- func ax (J,K) = if ((K >= G))
635- then J
637+ func ay (K,L) = if ((L >= H))
638+ then K
636639 else throw("List size exceeds 3")
637640
638- ax(aw(aw(aw(H, 0), 1), 2), 3)
641+ ay(ax(ax(ax(I, 0), 1), 2), 3)
639642 }
640643
641- func cq (ar) = {
642- func as (v,cr) = {
643- let r = cr.assetId
644- func aC (v,bT) = if ((bT == r))
645- then value(indexOf(E, bT))
644+ func cr (as) = {
645+ func at (v,cs) = {
646+ let r = cs.assetId
647+ func aD (v,bU) = if ((bU == r))
648+ then value(indexOf(F, bU))
646649 else v
647650
648- let cs = {
649- let F = E
650- let G = size(F)
651- let H = 1
652- func aw (J,K) = if ((K >= G))
653- then J
654- else aC(J, F[K])
651+ let ct = {
652+ let G = F
653+ let H = size(G)
654+ let I = 1
655+ func ax (K,L) = if ((L >= H))
656+ then K
657+ else aD(K, G[L])
655658
656- func ax (J,K) = if ((K >= G))
657- then J
659+ func ay (K,L) = if ((L >= H))
660+ then K
658661 else throw("List size exceeds 3")
659662
660- ax(aw(aw(aw(H, 0), 1), 2), 3)
663+ ay(ax(ax(ax(I, 0), 1), 2), 3)
661664 }
662- fraction(v, pow(cr.amount, P[cs], M[cs], X, 8, FLOOR), Z)
665+ fraction(v, pow(cs.amount, Q[ct], N[ct], Y, 8, FLOOR), aa)
663666 }
664667
665- let F = ar
666- let G = size(F)
667- let H = ac
668- func aw (J,K) = if ((K >= G))
669- then J
670- else as(J, F[K])
668+ let G = as
669+ let H = size(G)
670+ let I = ad
671+ func ax (K,L) = if ((L >= H))
672+ then K
673+ else at(K, G[L])
671674
672- func ax (J,K) = if ((K >= G))
673- then J
675+ func ay (K,L) = if ((L >= H))
676+ then K
674677 else throw("List size exceeds 3")
675678
676- ax(aw(aw(aw(H, 0), 1), 2), 3)
679+ ay(ax(ax(ax(I, 0), 1), 2), 3)
677680 }
678681
679682 if ((l("global_wasInited") > 0))
680683 then throw("pool already inited")
681684 else {
682- let ct = cq(bX.payments)
683- if ((ct == 0))
685+ let cu = cr(bY.payments)
686+ if ((cu == 0))
684687 then throw("you need a bigger tokens amount to launch the pool")
685688 else {
686- let cu = Issue(("WD " + p("static_poolDomain")), "WD pool token", ct, ab, true, unit, 0)
687- let cv = calculateAssetId(cu)
688- ((cp() ++ [cu, IntegerEntry("global_poolToken_amount", ct), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", cv), StringEntry("static_poolToken_idStr", q(cv)), ScriptTransfer(bX.caller, ct, cv)]) ++ bU(co))
689+ let cv = Issue(("WD " + p("static_poolDomain")), "WD pool token", cu, ac, true, unit, 0)
690+ let cw = calculateAssetId(cv)
691+ ((cq() ++ [cv, IntegerEntry("global_poolToken_amount", cu), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", cw), StringEntry("static_poolToken_idStr", q(cw)), ScriptTransfer(bY.caller, cu, cw)]) ++ bV(cp))
689692 }
690693 }
691694 }
692695
693696
694697
695-@Callable(bX)
696-func generateIndex (aP) = if ((size(bX.payments) != D))
697- then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(D)))
698- else if (!(ay(bX.payments)))
698+@Callable(bY)
699+func generateIndex (aQ) = if ((size(bY.payments) != E))
700+ then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(E)))
701+ else if (!(az(bY.payments)))
699702 then throw("wrong assets attached")
700703 else {
701- let au = aq(bX.payments)
702- let cw = Reissue(getBinaryValue("global_poolToken_id"), au, true)
703- let cx = aN(au, bX.payments, bX.originCaller, aP)
704- $Tuple2((cx ++ [cw, ScriptTransfer(bX.caller, au, o("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") + au))]), au)
704+ let av = ar(bY.payments)
705+ let cx = Reissue(getBinaryValue("global_poolToken_id"), av, true)
706+ let cy = aO(av, bY.payments, bY.originCaller, aQ)
707+ $Tuple2((cy ++ [cx, ScriptTransfer(bY.caller, av, o("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") + av))]), av)
705708 }
706709
707710
708711
709-@Callable(bX)
712+@Callable(bY)
710713 func stakeIndex () = {
711- let bK = toString(bX.originCaller)
712- let cr = bX.payments[0]
713- if ((value(cr.assetId) != o("global_poolToken_id")))
714+ let bL = toString(bY.originCaller)
715+ let cs = bY.payments[0]
716+ if ((value(cs.assetId) != o("global_poolToken_id")))
714717 then throw("wrong asset attached")
715- else bQ(bK, cr.amount)
718+ else bR(bL, cs.amount)
716719 }
717720
718721
719722
720-@Callable(bX)
721-func unstakeIndex (bL) = {
722- let bK = toString(bX.originCaller)
723- let cy = l((bK + "_indexStaked"))
724- if ((bL > cy))
723+@Callable(bY)
724+func unstakeIndex (bM) = {
725+ let bL = toString(bY.originCaller)
726+ let cz = l((bL + "_indexStaked"))
727+ if ((bM > cz))
725728 then throw("you don't have index tokens available")
726- else (bI(bX.originCaller) ++ [IntegerEntry((bK + "_indexStaked"), (cy - bL)), IntegerEntry("global_indexStaked", (l("global_indexStaked") - bL)), ScriptTransfer(bX.caller, bL, getBinaryValue("global_poolToken_id"))])
729+ else (bJ(bY.originCaller) ++ [IntegerEntry((bL + "_indexStaked"), (cz - bM)), IntegerEntry("global_indexStaked", (l("global_indexStaked") - bM)), ScriptTransfer(bY.caller, bM, getBinaryValue("global_poolToken_id"))])
727730 }
728731
729732
730733
731-@Callable(bX)
732-func claimIndexRewards () = bI(bX.caller)
734+@Callable(bY)
735+func claimIndexRewards () = bJ(bY.caller)
733736
734737
735738
736-@Callable(bX)
737-func redeemIndex (cz) = {
738- let cr = bX.payments[0]
739- if ((cr.assetId != o("global_poolToken_id")))
739+@Callable(bY)
740+func redeemIndex (cA) = {
741+ let cs = bY.payments[0]
742+ if ((cs.assetId != o("global_poolToken_id")))
740743 then throw("please attach pool share token")
741744 else {
742- let bc = cr.amount
743- let cx = bb(bc, if (cz)
744- then bX.originCaller
745- else bX.caller)
746- (cx ++ [Burn(o("global_poolToken_id"), bc), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") - bc))])
745+ let bd = cs.amount
746+ let cy = bc(bd, if (cA)
747+ then bY.originCaller
748+ else bY.caller)
749+ (cy ++ [Burn(o("global_poolToken_id"), bd), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") - bd))])
747750 }
748751 }
749752
750753
751754
752-@Callable(bX)
753-func swap (bh,cA) = if (ae())
755+@Callable(bY)
756+func swap (bi,cB) = if (af())
754757 then throw("Pool is currently shutdown")
755758 else {
756- let cr = value(bX.payments[0])
757- let bf = value(bX.payments[0].amount)
758- let cB = cr.assetId
759- let cC = e(reentrantInvoke(this, "swapInternal", [bh, cA, bf, q(cB), toString(bX.caller)], nil))
760- if ((cC == cC))
759+ let cs = value(bY.payments[0])
760+ let bg = value(bY.payments[0].amount)
761+ let cC = cs.assetId
762+ let cD = e(reentrantInvoke(this, "swapInternal", [bi, cB, bg, q(cC), toString(bY.caller)], nil))
763+ if ((cD == cD))
761764 then {
762- let bw = cC._1
763- if ((bw == bw))
765+ let bx = cD._1
766+ if ((bx == bx))
764767 then {
765- let bv = cC._2
766- if ((bv == bv))
768+ let bw = cD._2
769+ if ((bw == bw))
767770 then {
768- let cD = [ScriptTransfer(j(), fraction(bv, 2, 4), s(bh))]
769- if ((cD == cD))
770- then $Tuple2(cD, bw)
771+ let cE = [ScriptTransfer(j(), fraction(bw, 2, 4), s(bi))]
772+ if ((cE == cE))
773+ then $Tuple2(cE, bx)
771774 else throw("Strict value is not equal to itself.")
772775 }
773776 else throw("Strict value is not equal to itself.")
779782
780783
781784
782-@Callable(bX)
783-func internal (aH,an,r) = if ((bX.caller != this))
785+@Callable(bY)
786+func internal (aI,ao,r) = if ((bY.caller != this))
784787 then throw("Not allowed")
785- else aG(aH, an, r)
788+ else aH(aI, ao, r)
786789
787790
788791
789-@Callable(bX)
790-func stakeAll () = aG(true, (l("global_WAVES_balance") - l("leasing_amount")), "WAVES")
792+@Callable(bY)
793+func stakeAll () = aH(true, (l("global_WAVES_balance") - l("leasing_amount")), "WAVES")
791794
792795
793796
794-@Callable(bX)
795-func swapInternal (bh,cA,bf,cB,cE) = if ((bX.caller != this))
797+@Callable(bY)
798+func swapInternal (bi,cB,bg,cC,cF) = if ((bY.caller != this))
796799 then throw("You cant call this directly")
797800 else {
798- let cF = s(bh)
801+ let cG = s(bi)
799802 let C = b()
800- let ca = l(B(C, bh))
801- let cG = l((("global_" + cB) + "_balance"))
802- if ((cG == cG))
803+ let cb = l(B(C, bi))
804+ let cH = l((("global_" + cC) + "_balance"))
805+ if ((cH == cH))
803806 then {
804- let cH = l((("global_" + bh) + "_balance"))
805- if ((cH == cH))
807+ let cI = l((("global_" + bi) + "_balance"))
808+ if ((cI == cI))
806809 then {
807- let cI = be(bf, s(cB), cF, cG, cH)
808- if ((cI == cI))
810+ let cJ = bf(bg, s(cC), cG, cH, cI)
811+ if ((cJ == cJ))
809812 then {
810- let bv = fraction(cI, W, aa)
811- if ((bv == bv))
813+ let bw = fraction(cJ, X, ab)
814+ if ((bw == bw))
812815 then {
813- let bw = (cI - bv)
814- if ((bw == bw))
815- then if ((cA > bw))
816- then throw(("amount to recieve is lower than given one: " + toString(bw)))
817- else if ((0 > (cH - cI)))
816+ let bx = (cJ - bw)
817+ if ((bx == bx))
818+ then if ((cB > bx))
819+ then throw(("amount to recieve is lower than given one: " + toString(bx)))
820+ else if ((0 > (cI - cJ)))
818821 then throw("contract is out of reserves")
819- else if ((cF == s(cB)))
822+ else if ((cG == s(cC)))
820823 then throw("this swap is not allowed")
821824 else {
822- let cJ = (cG + bf)
823- if ((cJ == cJ))
825+ let cK = D(C, cC)
826+ let cL = (cH + bg)
827+ if ((cL == cL))
824828 then {
825- let aH = reentrantInvoke(this, "internal", [true, bf, cB], nil)
826- if ((aH == aH))
829+ let aI = reentrantInvoke(this, "internal", [true, bg, cC], nil)
830+ if ((aI == aI))
827831 then {
828- let cK = (cH - cI)
829- if ((cK == cK))
832+ let cM = (cI - cJ)
833+ if ((cM == cM))
830834 then {
831- let cL = reentrantInvoke(this, "internal", [false, (bw + fraction(bv, 3, 4)), bh], nil)
832- if ((cL == cL))
833- then $Tuple2([IntegerEntry((("global_" + bh) + "_balance"), (cK + fraction(bv, 1, 4))), ScriptTransfer(addressFromStringValue(cE), bw, cF), IntegerEntry((("global_" + cB) + "_balance"), cJ), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, bh), ca)], $Tuple2(bw, bv))
835+ let cN = reentrantInvoke(this, "internal", [false, (bx + fraction(bw, 3, 4)), bi], nil)
836+ if ((cN == cN))
837+ then $Tuple2([IntegerEntry((("global_" + bi) + "_balance"), (cM + fraction(bw, 1, 4))), ScriptTransfer(addressFromStringValue(cF), bx, cG), IntegerEntry((("global_" + cC) + "_balance"), cL), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, bi), (cb + bw)), IntegerEntry(cK, bg)], $Tuple2(bx, bw))
834838 else throw("Strict value is not equal to itself.")
835839 }
836840 else throw("Strict value is not equal to itself.")
851855 }
852856
853857
854-@Verifier(cM)
855-func cN () = if (bV())
856- then sigVerify(cM.bodyBytes, cM.proofs[0], cM.senderPublicKey)
858+@Verifier(cO)
859+func cP () = if (bW())
860+ then sigVerify(cO.bodyBytes, cO.proofs[0], cO.senderPublicKey)
857861 else {
858- let cO = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
859- let cP = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
860- let cQ = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
861- let cR = if (sigVerify(cM.bodyBytes, cM.proofs[0], cO))
862+ let cQ = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
863+ let cR = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
864+ let cS = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
865+ let cT = if (sigVerify(cO.bodyBytes, cO.proofs[0], cQ))
862866 then 1
863- else if (sigVerify(cM.bodyBytes, cM.proofs[1], cO))
867+ else if (sigVerify(cO.bodyBytes, cO.proofs[1], cQ))
864868 then 1
865- else if (sigVerify(cM.bodyBytes, cM.proofs[2], cO))
869+ else if (sigVerify(cO.bodyBytes, cO.proofs[2], cQ))
866870 then 1
867871 else 0
868- let cS = if (sigVerify(cM.bodyBytes, cM.proofs[0], cP))
872+ let cU = if (sigVerify(cO.bodyBytes, cO.proofs[0], cR))
869873 then 1
870- else if (sigVerify(cM.bodyBytes, cM.proofs[1], cP))
874+ else if (sigVerify(cO.bodyBytes, cO.proofs[1], cR))
871875 then 1
872- else if (sigVerify(cM.bodyBytes, cM.proofs[2], cP))
876+ else if (sigVerify(cO.bodyBytes, cO.proofs[2], cR))
873877 then 1
874878 else 0
875- let cT = if (sigVerify(cM.bodyBytes, cM.proofs[0], cQ))
879+ let cV = if (sigVerify(cO.bodyBytes, cO.proofs[0], cS))
876880 then 1
877- else if (sigVerify(cM.bodyBytes, cM.proofs[1], cQ))
881+ else if (sigVerify(cO.bodyBytes, cO.proofs[1], cS))
878882 then 1
879- else if (sigVerify(cM.bodyBytes, cM.proofs[2], cQ))
883+ else if (sigVerify(cO.bodyBytes, cO.proofs[2], cS))
880884 then 1
881885 else 0
882- let cU = ((cR + cS) + cT)
883- let g = cM
884- (cU >= 2)
886+ let cW = ((cT + cU) + cV)
887+ let g = cO
888+ (cW >= 2)
885889 }
886890
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 1679961601000
55
66 func b () = {
77 let c = (lastBlock.timestamp - a)
88 let d = (c / (86400 * 1000))
99 d
1010 }
1111
1212
1313 func e (f) = {
1414 let g = f
1515 if ($isInstanceOf(g, "(Int, Int)"))
1616 then {
1717 let h = g
1818 h
1919 }
2020 else throw("Wrong type, expected: Tuple Int")
2121 }
2222
2323
2424 func i () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, "static_oracle"), "oracle not found!")), "could not parse oracle")
2525
2626
2727 func j () = addressFromStringValue(valueOrErrorMessage(getString(i(), "static_feeAggregator"), "static_feeAggregator not found!"))
2828
2929
3030 func k () = addressFromStringValue(valueOrErrorMessage(getString(i(), "static_nodeAddress"), "node_address not found!"))
3131
3232
3333 func l (m) = {
3434 let g = getInteger(this, m)
3535 if ($isInstanceOf(g, "Int"))
3636 then {
3737 let n = g
3838 n
3939 }
4040 else 0
4141 }
4242
4343
4444 func o (m) = {
4545 let g = getBinary(this, m)
4646 if ($isInstanceOf(g, "ByteVector"))
4747 then {
4848 let n = g
4949 n
5050 }
5151 else base58''
5252 }
5353
5454
5555 func p (m) = {
5656 let g = getString(this, m)
5757 if ($isInstanceOf(g, "String"))
5858 then {
5959 let n = g
6060 n
6161 }
6262 else ""
6363 }
6464
6565
6666 func q (r) = {
6767 let g = r
6868 if ($isInstanceOf(g, "ByteVector"))
6969 then {
7070 let n = g
7171 toBase58String(n)
7272 }
7373 else "WAVES"
7474 }
7575
7676
7777 func s (t) = if ((t == "WAVES"))
7878 then unit
7979 else fromBase58String(t)
8080
8181
8282 func u (v,w) = (v ++ [s(w)])
8383
8484
8585 func x (v,w) = (v ++ [l((("static_" + q(w)) + "_weight"))])
8686
8787
8888 func y (v,w) = (v ++ [l((("static_" + q(w)) + "_decimals"))])
8989
9090
9191 func z (v,w) = (v ++ [l((("static_" + q(w)) + "_scale"))])
9292
9393
9494 func A (v,w) = (v ++ [parseIntValue(w)])
9595
9696
9797 func B (C,r) = ((("reveneu_day_" + r) + "_") + toString(C))
9898
9999
100-let D = l("static_tokensAmount")
100+func D (C,r) = ((("volume_day_" + r) + "_") + toString(C))
101101
102-let E = {
103- let F = split(p("static_tokenIds"), ",")
104- let G = size(F)
105- let H = nil
106- func I (J,K) = if ((K >= G))
107- then J
108- else u(J, F[K])
109102
110- func L (J,K) = if ((K >= G))
111- then J
103+let E = l("static_tokensAmount")
104+
105+let F = {
106+ let G = split(p("static_tokenIds"), ",")
107+ let H = size(G)
108+ let I = nil
109+ func J (K,L) = if ((L >= H))
110+ then K
111+ else u(K, G[L])
112+
113+ func M (K,L) = if ((L >= H))
114+ then K
112115 else throw("List size exceeds 3")
113116
114- L(I(I(I(H, 0), 1), 2), 3)
117+ M(J(J(J(I, 0), 1), 2), 3)
115118 }
116119
117-let M = {
118- let F = E
119- let G = size(F)
120- let H = nil
121- func N (J,K) = if ((K >= G))
122- then J
123- else x(J, F[K])
120+let N = {
121+ let G = F
122+ let H = size(G)
123+ let I = nil
124+ func O (K,L) = if ((L >= H))
125+ then K
126+ else x(K, G[L])
124127
125- func O (J,K) = if ((K >= G))
126- then J
128+ func P (K,L) = if ((L >= H))
129+ then K
127130 else throw("List size exceeds 3")
128131
129- O(N(N(N(H, 0), 1), 2), 3)
132+ P(O(O(O(I, 0), 1), 2), 3)
130133 }
131134
132-let P = {
133- let F = E
134- let G = size(F)
135- let H = nil
136- func Q (J,K) = if ((K >= G))
137- then J
138- else y(J, F[K])
135+let Q = {
136+ let G = F
137+ let H = size(G)
138+ let I = nil
139+ func R (K,L) = if ((L >= H))
140+ then K
141+ else y(K, G[L])
139142
140- func R (J,K) = if ((K >= G))
141- then J
143+ func S (K,L) = if ((L >= H))
144+ then K
142145 else throw("List size exceeds 3")
143146
144- R(Q(Q(Q(H, 0), 1), 2), 3)
147+ S(R(R(R(I, 0), 1), 2), 3)
145148 }
146149
147-let S = {
148- let F = E
149- let G = size(F)
150- let H = nil
151- func T (J,K) = if ((K >= G))
152- then J
153- else z(J, F[K])
150+let T = {
151+ let G = F
152+ let H = size(G)
153+ let I = nil
154+ func U (K,L) = if ((L >= H))
155+ then K
156+ else z(K, G[L])
154157
155- func U (J,K) = if ((K >= G))
156- then J
158+ func V (K,L) = if ((L >= H))
159+ then K
157160 else throw("List size exceeds 3")
158161
159- U(T(T(T(H, 0), 1), 2), 3)
162+ V(U(U(U(I, 0), 1), 2), 3)
160163 }
161164
162-let V = p("last_stake_id")
165+let W = p("last_stake_id")
163166
164-let W = l("static_fee")
167+let X = l("static_fee")
165168
166-let X = 2
169+let Y = 2
167170
168-let Y = 10000
171+let Z = 10000
169172
170-let Z = 100000000
173+let aa = 100000000
171174
172-let aa = 10000
175+let ab = 10000
173176
174-let ab = 8
177+let ac = 8
175178
176-let ac = pow(10, 0, ab, 0, 0, HALFUP)
179+let ad = pow(10, 0, ac, 0, 0, HALFUP)
177180
178-let ad = E
181+let ae = F
179182
180-func ae () = {
181- let af = if ((p("static_oracle") != ""))
183+func af () = {
184+ let ag = if ((p("static_oracle") != ""))
182185 then {
183186 let g = getBoolean(i(), "amm_shutdown")
184187 if ($isInstanceOf(g, "Boolean"))
185188 then {
186- let ag = g
187- ag
189+ let ah = g
190+ ah
188191 }
189192 else false
190193 }
191194 else false
192- let ah = {
195+ let ai = {
193196 let g = getBoolean(this, "is_shutdown")
194197 if ($isInstanceOf(g, "Boolean"))
195198 then {
196- let ag = g
197- ag
199+ let ah = g
200+ ah
198201 }
199202 else false
200203 }
201- if (af)
204+ if (ag)
202205 then true
203- else ah
206+ else ai
204207 }
205208
206209
207-func ai () = if ((p("static_oracle") != ""))
210+func aj () = if ((p("static_oracle") != ""))
208211 then {
209212 let g = getBoolean(i(), "amm_tx")
210213 if ($isInstanceOf(g, "Boolean"))
211214 then {
212- let ag = g
213- ag
215+ let ah = g
216+ ah
214217 }
215218 else true
216219 }
217220 else true
218221
219222
220-func aj (ak) = {
221- let al = q(E[ak])
222- l((("global_" + al) + "_balance"))
223+func ak (al) = {
224+ let am = q(F[al])
225+ l((("global_" + am) + "_balance"))
223226 }
224227
225228
226-func am (an,al) = {
227- let ao = l("global_poolToken_amount")
228- let ap = l((("global_" + q(al)) + "_balance"))
229- fraction(an, ao, ap, DOWN)
229+func an (ao,am) = {
230+ let ap = l("global_poolToken_amount")
231+ let aq = l((("global_" + q(am)) + "_balance"))
232+ fraction(ao, ap, aq, DOWN)
230233 }
231234
232235
233-func aq (ar) = {
234- func as (v,at) = {
235- let au = am(at.amount, at.assetId)
236- if ((au == 0))
236+func ar (as) = {
237+ func at (v,au) = {
238+ let av = an(au.amount, au.assetId)
239+ if ((av == 0))
237240 then throw("one of the tokens amounts is too low")
238241 else if (if ((v == 0))
239242 then true
240- else (v > au))
241- then au
243+ else (v > av))
244+ then av
242245 else v
243246 }
244247
245- let av = {
246- let F = ar
247- let G = size(F)
248- let H = 0
249- func aw (J,K) = if ((K >= G))
250- then J
251- else as(J, F[K])
248+ let aw = {
249+ let G = as
250+ let H = size(G)
251+ let I = 0
252+ func ax (K,L) = if ((L >= H))
253+ then K
254+ else at(K, G[L])
252255
253- func ax (J,K) = if ((K >= G))
254- then J
256+ func ay (K,L) = if ((L >= H))
257+ then K
255258 else throw("List size exceeds 3")
256259
257- ax(aw(aw(aw(H, 0), 1), 2), 3)
260+ ay(ax(ax(ax(I, 0), 1), 2), 3)
258261 }
259- av
262+ aw
260263 }
261264
262265
263-func ay (ar) = {
264- func az (v,aA) = (v ++ [aA.assetId])
266+func az (as) = {
267+ func aA (v,aB) = (v ++ [aB.assetId])
265268
266- let aB = {
267- let F = ar
268- let G = size(F)
269- let H = nil
270- func aw (J,K) = if ((K >= G))
271- then J
272- else az(J, F[K])
269+ let aC = {
270+ let G = as
271+ let H = size(G)
272+ let I = nil
273+ func ax (K,L) = if ((L >= H))
274+ then K
275+ else aA(K, G[L])
273276
274- func ax (J,K) = if ((K >= G))
275- then J
277+ func ay (K,L) = if ((L >= H))
278+ then K
276279 else throw("List size exceeds 3")
277280
278- ax(aw(aw(aw(H, 0), 1), 2), 3)
281+ ay(ax(ax(ax(I, 0), 1), 2), 3)
279282 }
280- if ((aB == aB))
283+ if ((aC == aC))
281284 then {
282- func aC (v,r) = if ((indexOf(aB, r) != unit))
285+ func aD (v,r) = if ((indexOf(aC, r) != unit))
283286 then (v + 1)
284287 else throw(("asset not attached: " + q(r)))
285288
286- let aD = {
287- let F = E
288- let G = size(F)
289- let H = 0
290- func aE (J,K) = if ((K >= G))
291- then J
292- else aC(J, F[K])
289+ let aE = {
290+ let G = F
291+ let H = size(G)
292+ let I = 0
293+ func aF (K,L) = if ((L >= H))
294+ then K
295+ else aD(K, G[L])
293296
294- func aF (J,K) = if ((K >= G))
295- then J
297+ func aG (K,L) = if ((L >= H))
298+ then K
296299 else throw("List size exceeds 3")
297300
298- aF(aE(aE(aE(H, 0), 1), 2), 3)
301+ aG(aF(aF(aF(I, 0), 1), 2), 3)
299302 }
300- if ((aD == aD))
303+ if ((aE == aE))
301304 then true
302305 else throw("Strict value is not equal to itself.")
303306 }
304307 else throw("Strict value is not equal to itself.")
305308 }
306309
307310
308-func aG (aH,an,r) = if (if ((r == "WAVES"))
309- then (an > 0)
311+func aH (aI,ao,r) = if (if ((r == "WAVES"))
312+ then (ao > 0)
310313 else false)
311314 then {
312- let aI = valueOrElse(getInteger(this, "leasing_amount"), 0)
313- let aJ = if (aH)
314- then (aI + an)
315- else (aI - an)
316- let aK = Lease(k(), aJ)
317- let aL = calculateLeaseId(aK)
318- let aM = [aK, StringEntry("last_stake_id", toBase58String(aL)), IntegerEntry("leasing_amount", aJ)]
319- if ((V != ""))
320- then ([LeaseCancel(fromBase58String(V))] ++ aM)
321- else aM
315+ let aJ = valueOrElse(getInteger(this, "leasing_amount"), 0)
316+ let aK = if (aI)
317+ then (aJ + ao)
318+ else (aJ - ao)
319+ let aL = Lease(k(), aK)
320+ let aM = calculateLeaseId(aL)
321+ let aN = [aL, StringEntry("last_stake_id", toBase58String(aM)), IntegerEntry("leasing_amount", aK)]
322+ if ((W != ""))
323+ then ([LeaseCancel(fromBase58String(W))] ++ aN)
324+ else aN
322325 }
323326 else nil
324327
325328
326-func aN (au,ar,aO,aP) = {
327- func aQ (al) = {
328- func as (v,aA) = if ((aA.assetId == al))
329- then aA.amount
329+func aO (av,as,aP,aQ) = {
330+ func aR (am) = {
331+ func at (v,aB) = if ((aB.assetId == am))
332+ then aB.amount
330333 else v
331334
332- let F = ar
333- let G = size(F)
334- let H = 0
335- func aw (J,K) = if ((K >= G))
336- then J
337- else as(J, F[K])
335+ let G = as
336+ let H = size(G)
337+ let I = 0
338+ func ax (K,L) = if ((L >= H))
339+ then K
340+ else at(K, G[L])
338341
339- func ax (J,K) = if ((K >= G))
340- then J
342+ func ay (K,L) = if ((L >= H))
343+ then K
341344 else throw("List size exceeds 3")
342345
343- ax(aw(aw(aw(H, 0), 1), 2), 3)
346+ ay(ax(ax(ax(I, 0), 1), 2), 3)
344347 }
345348
346- func aR (v,al) = {
347- let aS = l((("global_" + q(al)) + "_balance"))
348- let aT = l("global_poolToken_amount")
349- let aU = l((("static_" + q(al)) + "_scale"))
350- let aV = fraction((fraction((aT + au), aU, aT, CEILING) - aU), aS, aU, CEILING)
351- let aW = aQ(al)
352- let aX = min([aV, aW])
353- let aY = ((if ((aW != 0))
354- then aW
355- else 0) - aX)
356- let aZ = if (if (aP)
357- then (aY > 0)
349+ func aS (v,am) = {
350+ let aT = l((("global_" + q(am)) + "_balance"))
351+ let aU = l("global_poolToken_amount")
352+ let aV = l((("static_" + q(am)) + "_scale"))
353+ let aW = fraction((fraction((aU + av), aV, aU, CEILING) - aV), aT, aV, CEILING)
354+ let aX = aR(am)
355+ let aY = min([aW, aX])
356+ let aZ = ((if ((aX != 0))
357+ then aX
358+ else 0) - aY)
359+ let ba = if (if (aQ)
360+ then (aZ > 0)
358361 else false)
359- then [ScriptTransfer(aO, aY, al)]
362+ then [ScriptTransfer(aP, aZ, am)]
360363 else nil
361- let ba = if ((q(al) == "WAVES"))
362- then aG(true, aX, "WAVES")
364+ let bb = if ((q(am) == "WAVES"))
365+ then aH(true, aY, "WAVES")
363366 else nil
364- (((v ++ aZ) ++ ba) ++ [IntegerEntry((("global_" + q(al)) + "_balance"), (aS + aX))])
367+ (((v ++ ba) ++ bb) ++ [IntegerEntry((("global_" + q(am)) + "_balance"), (aT + aY))])
365368 }
366369
367- let F = E
368- let G = size(F)
369- let H = nil
370- func aw (J,K) = if ((K >= G))
371- then J
372- else aR(J, F[K])
370+ let G = F
371+ let H = size(G)
372+ let I = nil
373+ func ax (K,L) = if ((L >= H))
374+ then K
375+ else aS(K, G[L])
373376
374- func ax (J,K) = if ((K >= G))
375- then J
377+ func ay (K,L) = if ((L >= H))
378+ then K
376379 else throw("List size exceeds 3")
377380
378- ax(aw(aw(aw(H, 0), 1), 2), 3)
381+ ay(ax(ax(ax(I, 0), 1), 2), 3)
379382 }
380383
381384
382-func bb (bc,aO) = {
383- func bd (v,al) = {
384- let aS = l((("global_" + q(al)) + "_balance"))
385- let aT = l("global_poolToken_amount")
386- let aU = l((("static_" + q(al)) + "_scale"))
387- let an = toInt(fraction((toBigInt(Z) - fraction(toBigInt((aT - bc)), toBigInt(Z), toBigInt(aT), CEILING)), toBigInt(aS), toBigInt(Z), DOWN))
388- let ba = if ((q(al) == "WAVES"))
389- then aG(false, an, "WAVES")
385+func bc (bd,aP) = {
386+ func be (v,am) = {
387+ let aT = l((("global_" + q(am)) + "_balance"))
388+ let aU = l("global_poolToken_amount")
389+ let aV = l((("static_" + q(am)) + "_scale"))
390+ let ao = toInt(fraction((toBigInt(aa) - fraction(toBigInt((aU - bd)), toBigInt(aa), toBigInt(aU), CEILING)), toBigInt(aT), toBigInt(aa), DOWN))
391+ let bb = if ((q(am) == "WAVES"))
392+ then aH(false, ao, "WAVES")
390393 else nil
391- ((v ++ ba) ++ [IntegerEntry((("global_" + q(al)) + "_balance"), (aS - an)), ScriptTransfer(aO, an, al)])
394+ ((v ++ bb) ++ [IntegerEntry((("global_" + q(am)) + "_balance"), (aT - ao)), ScriptTransfer(aP, ao, am)])
392395 }
393396
394- let F = E
395- let G = size(F)
396- let H = nil
397- func aw (J,K) = if ((K >= G))
398- then J
399- else bd(J, F[K])
397+ let G = F
398+ let H = size(G)
399+ let I = nil
400+ func ax (K,L) = if ((L >= H))
401+ then K
402+ else be(K, G[L])
400403
401- func ax (J,K) = if ((K >= G))
402- then J
404+ func ay (K,L) = if ((L >= H))
405+ then K
403406 else throw("List size exceeds 3")
404407
405- ax(aw(aw(aw(H, 0), 1), 2), 3)
408+ ay(ax(ax(ax(I, 0), 1), 2), 3)
406409 }
407410
408411
409-func be (bf,bg,bh,bi,bj) = {
410- let bk = value(indexOf(E, bg))
411- let bl = value(indexOf(E, bh))
412- if ((bk == bl))
412+func bf (bg,bh,bi,bj,bk) = {
413+ let bl = value(indexOf(F, bh))
414+ let bm = value(indexOf(F, bi))
415+ if ((bl == bm))
413416 then throw("wrong tokens pair")
414- else fraction(bj, ((Z * Z) - toInt(pow(fraction(toBigInt(bi), toBigInt((Z * Z)), toBigInt((bi + bf)), HALFUP), 16, toBigInt(fraction(M[bk], 10000, M[bl])), 4, 16, CEILING))), (Z * Z), DOWN)
417+ else fraction(bk, ((aa * aa) - toInt(pow(fraction(toBigInt(bj), toBigInt((aa * aa)), toBigInt((bj + bg)), HALFUP), 16, toBigInt(fraction(N[bl], 10000, N[bm])), 4, 16, CEILING))), (aa * aa), DOWN)
415418 }
416419
417420
418-func bm (bn,bo,bp) = {
419- let bq = (("global_" + bn) + "_balance")
420- let br = getIntegerValue(this, bq)
421- let bs = (("global_" + bo) + "_balance")
422- let bt = getIntegerValue(this, bs)
423- let bu = be(bp, s(bn), s(bo), br, bt)
424- let bv = fraction(bu, W, aa)
425- if ((bv == bv))
421+func bn (bo,bp,bq) = {
422+ let br = (("global_" + bo) + "_balance")
423+ let bs = getIntegerValue(this, br)
424+ let bt = (("global_" + bp) + "_balance")
425+ let bu = getIntegerValue(this, bt)
426+ let bv = bf(bq, s(bo), s(bp), bs, bu)
427+ let bw = fraction(bv, X, ab)
428+ if ((bw == bw))
426429 then {
427- let bw = (bu - bv)
428- if ((bw == bw))
429- then bw
430+ let bx = (bv - bw)
431+ if ((bx == bx))
432+ then bx
430433 else throw("Strict value is not equal to itself.")
431434 }
432435 else throw("Strict value is not equal to itself.")
433436 }
434437
435438
436-func bx (r) = {
439+func by (r) = {
437440 let g = r
438441 if ($isInstanceOf(g, "ByteVector"))
439442 then {
440- let aZ = g
441- assetBalance(this, aZ)
443+ let ba = g
444+ assetBalance(this, ba)
442445 }
443446 else wavesBalance(this).regular
444447 }
445448
446449
447-func by (r,t,bz,bA) = {
448- let bB = l("global_indexStaked")
449- let bC = bA
450- let bD = (bx(r) - bz)
451- let bE = if ((bD > bC))
452- then bD
453- else bC
454- let bF = (bE - bC)
455- let bG = if ((bB == 0))
450+func bz (r,t,bA,bB) = {
451+ let bC = l("global_indexStaked")
452+ let bD = bB
453+ let bE = (by(r) - bA)
454+ let bF = if ((bE > bD))
455+ then bE
456+ else bD
457+ let bG = (bF - bD)
458+ let bH = if ((bC == 0))
456459 then 0
457- else fraction(bF, Z, bB)
458- let bH = l((("global_lastCheck_" + t) + "_interest"))
459- (bH + bG)
460+ else fraction(bG, aa, bC)
461+ let bI = l((("global_lastCheck_" + t) + "_interest"))
462+ (bI + bH)
460463 }
461464
462465
463-func bI (bJ) = {
464- let bK = toString(bJ)
465- let bL = l((bK + "_indexStaked"))
466- func as (v,r) = {
466+func bJ (bK) = {
467+ let bL = toString(bK)
468+ let bM = l((bL + "_indexStaked"))
469+ func at (v,r) = {
467470 let t = q(r)
468- let bz = l((("global_" + q(r)) + "_balance"))
469- let bA = l((("global_lastCheck_" + t) + "_earnings"))
470- let bM = by(r, t, bz, bA)
471- let bE = max([bA, (bx(r) - bz)])
472- let bN = fraction(bL, (bM - l((((bK + "_lastCheck_") + t) + "_interest"))), Z)
473- let bO = if ((bN == 0))
471+ let bA = l((("global_" + q(r)) + "_balance"))
472+ let bB = l((("global_lastCheck_" + t) + "_earnings"))
473+ let bN = bz(r, t, bA, bB)
474+ let bF = max([bB, (by(r) - bA)])
475+ let bO = fraction(bM, (bN - l((((bL + "_lastCheck_") + t) + "_interest"))), aa)
476+ let bP = if ((bO == 0))
474477 then nil
475- else [ScriptTransfer(bJ, bN, r)]
476- let bP = l((((bK + "_lastCheck_") + t) + "_claimed"))
477- ((v ++ bO) ++ [IntegerEntry((("global_lastCheck_" + t) + "_earnings"), (bE - bN)), IntegerEntry((("global_lastCheck_" + t) + "_interest"), bM), IntegerEntry((((bK + "_lastCheck_") + t) + "_interest"), bM), IntegerEntry((((bK + "_lastCheck_") + t) + "_claimed"), (bP + bN))])
478+ else [ScriptTransfer(bK, bO, r)]
479+ let bQ = l((((bL + "_lastCheck_") + t) + "_claimed"))
480+ ((v ++ bP) ++ [IntegerEntry((("global_lastCheck_" + t) + "_earnings"), (bF - bO)), IntegerEntry((("global_lastCheck_" + t) + "_interest"), bN), IntegerEntry((((bL + "_lastCheck_") + t) + "_interest"), bN), IntegerEntry((((bL + "_lastCheck_") + t) + "_claimed"), (bQ + bO))])
478481 }
479482
480483 let v = {
481- let F = ad
482- let G = size(F)
483- let H = nil
484- func aw (J,K) = if ((K >= G))
485- then J
486- else as(J, F[K])
484+ let G = ae
485+ let H = size(G)
486+ let I = nil
487+ func ax (K,L) = if ((L >= H))
488+ then K
489+ else at(K, G[L])
487490
488- func ax (J,K) = if ((K >= G))
489- then J
491+ func ay (K,L) = if ((L >= H))
492+ then K
490493 else throw("List size exceeds 3")
491494
492- ax(aw(aw(aw(H, 0), 1), 2), 3)
495+ ay(ax(ax(ax(I, 0), 1), 2), 3)
493496 }
494- (v ++ [IntegerEntry((bK + "_lastClaim"), lastBlock.timestamp)])
497+ (v ++ [IntegerEntry((bL + "_lastClaim"), lastBlock.timestamp)])
495498 }
496499
497500
498-func bQ (bK,an) = {
499- let bR = bI(addressFromStringValue(bK))
500- (bR ++ [IntegerEntry((bK + "_indexStaked"), (l((bK + "_indexStaked")) + an)), IntegerEntry("global_indexStaked", (l("global_indexStaked") + an))])
501+func bR (bL,ao) = {
502+ let bS = bJ(addressFromStringValue(bL))
503+ (bS ++ [IntegerEntry((bL + "_indexStaked"), (l((bL + "_indexStaked")) + ao)), IntegerEntry("global_indexStaked", (l("global_indexStaked") + ao))])
501504 }
502505
503506
504-func bS (v,bT) = (v + parseIntValue(bT))
507+func bT (v,bU) = (v + parseIntValue(bU))
505508
506509
507-func bU (bJ) = [StringEntry("static_oracle", bJ)]
510+func bV (bK) = [StringEntry("static_oracle", bK)]
508511
509512
510-func bV () = {
511- let bW = {
513+func bW () = {
514+ let bX = {
512515 let g = getBoolean(this, "TESTENV")
513516 if ($isInstanceOf(g, "Boolean"))
514517 then {
515- let ag = g
516- ag
518+ let ah = g
519+ ah
517520 }
518521 else false
519522 }
520- bW
523+ bX
521524 }
522525
523526
524-@Callable(bX)
525-func readOnlyFunc (bn,bo,bp) = {
526- let bY = bm(bn, bo, bp)
527-[IntegerEntry("DEBUG", bY)]
527+@Callable(bY)
528+func readOnlyFunc (bo,bp,bq) = {
529+ let bZ = bn(bo, bp, bq)
530+[IntegerEntry("DEBUG", bZ)]
528531 }
529532
530533
531534
532-@Callable(bX)
533-func topUpFunds () = if ((size(bX.payments) != 1))
535+@Callable(bY)
536+func topUpFunds () = if ((size(bY.payments) != 1))
534537 then throw("Wrong payments attached!")
535538 else {
536- let aA = bX.payments[0]
537- let bZ = aA.assetId
538- if ((indexOf(E, bZ) == unit))
539+ let aB = bY.payments[0]
540+ let ca = aB.assetId
541+ if ((indexOf(F, ca) == unit))
539542 then throw("Not supported assetId")
540543 else {
541- let an = aA.amount
542- let bz = l((("global_" + q(bZ)) + "_balance"))
544+ let ao = aB.amount
545+ let bA = l((("global_" + q(ca)) + "_balance"))
543546 let C = b()
544- let ca = l(B(C, q(bZ)))
545-[IntegerEntry((("global_" + q(bZ)) + "_balance"), (bz + an)), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, q(bZ)), (ca + an))]
547+ let cb = l(B(C, q(ca)))
548+[IntegerEntry((("global_" + q(ca)) + "_balance"), (bA + ao)), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, q(ca)), (cb + ao))]
546549 }
547550 }
548551
549552
550553
551-@Callable(bX)
552-func preInit (cb,cc,cd,ce) = if ((this != bX.caller))
554+@Callable(bY)
555+func preInit (cc,cd,ce,cf) = if ((this != bY.caller))
553556 then throw("admin only")
554- else if ((size(ce) > 13))
557+ else if ((size(cf) > 13))
555558 then throw("too large pool domain")
556559 else {
557- let cf = split(cb, ",")
558- let cg = {
559- let F = cf
560- let G = size(F)
561- let H = nil
562- func aw (J,K) = if ((K >= G))
563- then J
564- else u(J, F[K])
560+ let cg = split(cc, ",")
561+ let ch = {
562+ let G = cg
563+ let H = size(G)
564+ let I = nil
565+ func ax (K,L) = if ((L >= H))
566+ then K
567+ else u(K, G[L])
565568
566- func ax (J,K) = if ((K >= G))
567- then J
569+ func ay (K,L) = if ((L >= H))
570+ then K
568571 else throw("List size exceeds 3")
569572
570- ax(aw(aw(aw(H, 0), 1), 2), 3)
573+ ay(ax(ax(ax(I, 0), 1), 2), 3)
571574 }
572- let ch = split(cc, ",")
573- let ci = {
574- let F = ch
575- let G = size(F)
576- let H = 0
577- func aE (J,K) = if ((K >= G))
578- then J
579- else bS(J, F[K])
575+ let ci = split(cd, ",")
576+ let cj = {
577+ let G = ci
578+ let H = size(G)
579+ let I = 0
580+ func aF (K,L) = if ((L >= H))
581+ then K
582+ else bT(K, G[L])
580583
581- func aF (J,K) = if ((K >= G))
582- then J
584+ func aG (K,L) = if ((L >= H))
585+ then K
583586 else throw("List size exceeds 3")
584587
585- aF(aE(aE(aE(H, 0), 1), 2), 3)
588+ aG(aF(aF(aF(I, 0), 1), 2), 3)
586589 }
587- func cj (v,ck) = if ((ck >= size(cg)))
590+ func ck (v,cl) = if ((cl >= size(ch)))
588591 then v
589592 else {
590- let cl = {
591- let g = cg[ck]
593+ let cm = {
594+ let g = ch[cl]
592595 if ($isInstanceOf(g, "ByteVector"))
593596 then {
594- let ag = g
595- value(assetInfo(cg[ck])).decimals
597+ let ah = g
598+ value(assetInfo(ch[cl])).decimals
596599 }
597600 else 8
598601 }
599- (v ++ [IntegerEntry((("static_" + cf[ck]) + "_scale"), pow(10, 0, cl, 0, 0, DOWN)), IntegerEntry((("static_" + cf[ck]) + "_decimals"), cl), IntegerEntry((("static_" + cf[ck]) + "_weight"), value(parseInt(ch[ck])))])
602+ (v ++ [IntegerEntry((("static_" + cg[cl]) + "_scale"), pow(10, 0, cm, 0, 0, DOWN)), IntegerEntry((("static_" + cg[cl]) + "_decimals"), cm), IntegerEntry((("static_" + cg[cl]) + "_weight"), value(parseInt(ci[cl])))])
600603 }
601604
602- if ((ci != 100))
605+ if ((cj != 100))
603606 then throw("sum of token weights must be equal to 100")
604607 else ({
605- let F = [0, 1, 2]
606- let G = size(F)
607- let H = nil
608- func cm (J,K) = if ((K >= G))
609- then J
610- else cj(J, F[K])
608+ let G = [0, 1, 2]
609+ let H = size(G)
610+ let I = nil
611+ func cn (K,L) = if ((L >= H))
612+ then K
613+ else ck(K, G[L])
611614
612- func cn (J,K) = if ((K >= G))
613- then J
615+ func co (K,L) = if ((L >= H))
616+ then K
614617 else throw("List size exceeds 3")
615618
616- cn(cm(cm(cm(H, 0), 1), 2), 3)
617- } ++ [StringEntry("static_tokenIds", cb), StringEntry("static_tokenWeights", cc), IntegerEntry("static_tokensAmount", size(cg)), StringEntry("static_poolDomain", ce), StringEntry("static_baseTokenId", cd), IntegerEntry("static_fee", 100)])
619+ co(cn(cn(cn(I, 0), 1), 2), 3)
620+ } ++ [StringEntry("static_tokenIds", cc), StringEntry("static_tokenWeights", cd), IntegerEntry("static_tokensAmount", size(ch)), StringEntry("static_poolDomain", cf), StringEntry("static_baseTokenId", ce), IntegerEntry("static_fee", 100)])
618621 }
619622
620623
621624
622-@Callable(bX)
623-func init (co) = {
624- func cp () = {
625- func as (v,bT) = (v ++ [IntegerEntry((("global_" + q(bT.assetId)) + "_balance"), bT.amount)])
625+@Callable(bY)
626+func init (cp) = {
627+ func cq () = {
628+ func at (v,bU) = (v ++ [IntegerEntry((("global_" + q(bU.assetId)) + "_balance"), bU.amount)])
626629
627- let F = bX.payments
628- let G = size(F)
629- let H = nil
630- func aw (J,K) = if ((K >= G))
631- then J
632- else as(J, F[K])
630+ let G = bY.payments
631+ let H = size(G)
632+ let I = nil
633+ func ax (K,L) = if ((L >= H))
634+ then K
635+ else at(K, G[L])
633636
634- func ax (J,K) = if ((K >= G))
635- then J
637+ func ay (K,L) = if ((L >= H))
638+ then K
636639 else throw("List size exceeds 3")
637640
638- ax(aw(aw(aw(H, 0), 1), 2), 3)
641+ ay(ax(ax(ax(I, 0), 1), 2), 3)
639642 }
640643
641- func cq (ar) = {
642- func as (v,cr) = {
643- let r = cr.assetId
644- func aC (v,bT) = if ((bT == r))
645- then value(indexOf(E, bT))
644+ func cr (as) = {
645+ func at (v,cs) = {
646+ let r = cs.assetId
647+ func aD (v,bU) = if ((bU == r))
648+ then value(indexOf(F, bU))
646649 else v
647650
648- let cs = {
649- let F = E
650- let G = size(F)
651- let H = 1
652- func aw (J,K) = if ((K >= G))
653- then J
654- else aC(J, F[K])
651+ let ct = {
652+ let G = F
653+ let H = size(G)
654+ let I = 1
655+ func ax (K,L) = if ((L >= H))
656+ then K
657+ else aD(K, G[L])
655658
656- func ax (J,K) = if ((K >= G))
657- then J
659+ func ay (K,L) = if ((L >= H))
660+ then K
658661 else throw("List size exceeds 3")
659662
660- ax(aw(aw(aw(H, 0), 1), 2), 3)
663+ ay(ax(ax(ax(I, 0), 1), 2), 3)
661664 }
662- fraction(v, pow(cr.amount, P[cs], M[cs], X, 8, FLOOR), Z)
665+ fraction(v, pow(cs.amount, Q[ct], N[ct], Y, 8, FLOOR), aa)
663666 }
664667
665- let F = ar
666- let G = size(F)
667- let H = ac
668- func aw (J,K) = if ((K >= G))
669- then J
670- else as(J, F[K])
668+ let G = as
669+ let H = size(G)
670+ let I = ad
671+ func ax (K,L) = if ((L >= H))
672+ then K
673+ else at(K, G[L])
671674
672- func ax (J,K) = if ((K >= G))
673- then J
675+ func ay (K,L) = if ((L >= H))
676+ then K
674677 else throw("List size exceeds 3")
675678
676- ax(aw(aw(aw(H, 0), 1), 2), 3)
679+ ay(ax(ax(ax(I, 0), 1), 2), 3)
677680 }
678681
679682 if ((l("global_wasInited") > 0))
680683 then throw("pool already inited")
681684 else {
682- let ct = cq(bX.payments)
683- if ((ct == 0))
685+ let cu = cr(bY.payments)
686+ if ((cu == 0))
684687 then throw("you need a bigger tokens amount to launch the pool")
685688 else {
686- let cu = Issue(("WD " + p("static_poolDomain")), "WD pool token", ct, ab, true, unit, 0)
687- let cv = calculateAssetId(cu)
688- ((cp() ++ [cu, IntegerEntry("global_poolToken_amount", ct), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", cv), StringEntry("static_poolToken_idStr", q(cv)), ScriptTransfer(bX.caller, ct, cv)]) ++ bU(co))
689+ let cv = Issue(("WD " + p("static_poolDomain")), "WD pool token", cu, ac, true, unit, 0)
690+ let cw = calculateAssetId(cv)
691+ ((cq() ++ [cv, IntegerEntry("global_poolToken_amount", cu), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", cw), StringEntry("static_poolToken_idStr", q(cw)), ScriptTransfer(bY.caller, cu, cw)]) ++ bV(cp))
689692 }
690693 }
691694 }
692695
693696
694697
695-@Callable(bX)
696-func generateIndex (aP) = if ((size(bX.payments) != D))
697- then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(D)))
698- else if (!(ay(bX.payments)))
698+@Callable(bY)
699+func generateIndex (aQ) = if ((size(bY.payments) != E))
700+ then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(E)))
701+ else if (!(az(bY.payments)))
699702 then throw("wrong assets attached")
700703 else {
701- let au = aq(bX.payments)
702- let cw = Reissue(getBinaryValue("global_poolToken_id"), au, true)
703- let cx = aN(au, bX.payments, bX.originCaller, aP)
704- $Tuple2((cx ++ [cw, ScriptTransfer(bX.caller, au, o("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") + au))]), au)
704+ let av = ar(bY.payments)
705+ let cx = Reissue(getBinaryValue("global_poolToken_id"), av, true)
706+ let cy = aO(av, bY.payments, bY.originCaller, aQ)
707+ $Tuple2((cy ++ [cx, ScriptTransfer(bY.caller, av, o("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") + av))]), av)
705708 }
706709
707710
708711
709-@Callable(bX)
712+@Callable(bY)
710713 func stakeIndex () = {
711- let bK = toString(bX.originCaller)
712- let cr = bX.payments[0]
713- if ((value(cr.assetId) != o("global_poolToken_id")))
714+ let bL = toString(bY.originCaller)
715+ let cs = bY.payments[0]
716+ if ((value(cs.assetId) != o("global_poolToken_id")))
714717 then throw("wrong asset attached")
715- else bQ(bK, cr.amount)
718+ else bR(bL, cs.amount)
716719 }
717720
718721
719722
720-@Callable(bX)
721-func unstakeIndex (bL) = {
722- let bK = toString(bX.originCaller)
723- let cy = l((bK + "_indexStaked"))
724- if ((bL > cy))
723+@Callable(bY)
724+func unstakeIndex (bM) = {
725+ let bL = toString(bY.originCaller)
726+ let cz = l((bL + "_indexStaked"))
727+ if ((bM > cz))
725728 then throw("you don't have index tokens available")
726- else (bI(bX.originCaller) ++ [IntegerEntry((bK + "_indexStaked"), (cy - bL)), IntegerEntry("global_indexStaked", (l("global_indexStaked") - bL)), ScriptTransfer(bX.caller, bL, getBinaryValue("global_poolToken_id"))])
729+ else (bJ(bY.originCaller) ++ [IntegerEntry((bL + "_indexStaked"), (cz - bM)), IntegerEntry("global_indexStaked", (l("global_indexStaked") - bM)), ScriptTransfer(bY.caller, bM, getBinaryValue("global_poolToken_id"))])
727730 }
728731
729732
730733
731-@Callable(bX)
732-func claimIndexRewards () = bI(bX.caller)
734+@Callable(bY)
735+func claimIndexRewards () = bJ(bY.caller)
733736
734737
735738
736-@Callable(bX)
737-func redeemIndex (cz) = {
738- let cr = bX.payments[0]
739- if ((cr.assetId != o("global_poolToken_id")))
739+@Callable(bY)
740+func redeemIndex (cA) = {
741+ let cs = bY.payments[0]
742+ if ((cs.assetId != o("global_poolToken_id")))
740743 then throw("please attach pool share token")
741744 else {
742- let bc = cr.amount
743- let cx = bb(bc, if (cz)
744- then bX.originCaller
745- else bX.caller)
746- (cx ++ [Burn(o("global_poolToken_id"), bc), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") - bc))])
745+ let bd = cs.amount
746+ let cy = bc(bd, if (cA)
747+ then bY.originCaller
748+ else bY.caller)
749+ (cy ++ [Burn(o("global_poolToken_id"), bd), IntegerEntry("global_poolToken_amount", (l("global_poolToken_amount") - bd))])
747750 }
748751 }
749752
750753
751754
752-@Callable(bX)
753-func swap (bh,cA) = if (ae())
755+@Callable(bY)
756+func swap (bi,cB) = if (af())
754757 then throw("Pool is currently shutdown")
755758 else {
756- let cr = value(bX.payments[0])
757- let bf = value(bX.payments[0].amount)
758- let cB = cr.assetId
759- let cC = e(reentrantInvoke(this, "swapInternal", [bh, cA, bf, q(cB), toString(bX.caller)], nil))
760- if ((cC == cC))
759+ let cs = value(bY.payments[0])
760+ let bg = value(bY.payments[0].amount)
761+ let cC = cs.assetId
762+ let cD = e(reentrantInvoke(this, "swapInternal", [bi, cB, bg, q(cC), toString(bY.caller)], nil))
763+ if ((cD == cD))
761764 then {
762- let bw = cC._1
763- if ((bw == bw))
765+ let bx = cD._1
766+ if ((bx == bx))
764767 then {
765- let bv = cC._2
766- if ((bv == bv))
768+ let bw = cD._2
769+ if ((bw == bw))
767770 then {
768- let cD = [ScriptTransfer(j(), fraction(bv, 2, 4), s(bh))]
769- if ((cD == cD))
770- then $Tuple2(cD, bw)
771+ let cE = [ScriptTransfer(j(), fraction(bw, 2, 4), s(bi))]
772+ if ((cE == cE))
773+ then $Tuple2(cE, bx)
771774 else throw("Strict value is not equal to itself.")
772775 }
773776 else throw("Strict value is not equal to itself.")
774777 }
775778 else throw("Strict value is not equal to itself.")
776779 }
777780 else throw("Strict value is not equal to itself.")
778781 }
779782
780783
781784
782-@Callable(bX)
783-func internal (aH,an,r) = if ((bX.caller != this))
785+@Callable(bY)
786+func internal (aI,ao,r) = if ((bY.caller != this))
784787 then throw("Not allowed")
785- else aG(aH, an, r)
788+ else aH(aI, ao, r)
786789
787790
788791
789-@Callable(bX)
790-func stakeAll () = aG(true, (l("global_WAVES_balance") - l("leasing_amount")), "WAVES")
792+@Callable(bY)
793+func stakeAll () = aH(true, (l("global_WAVES_balance") - l("leasing_amount")), "WAVES")
791794
792795
793796
794-@Callable(bX)
795-func swapInternal (bh,cA,bf,cB,cE) = if ((bX.caller != this))
797+@Callable(bY)
798+func swapInternal (bi,cB,bg,cC,cF) = if ((bY.caller != this))
796799 then throw("You cant call this directly")
797800 else {
798- let cF = s(bh)
801+ let cG = s(bi)
799802 let C = b()
800- let ca = l(B(C, bh))
801- let cG = l((("global_" + cB) + "_balance"))
802- if ((cG == cG))
803+ let cb = l(B(C, bi))
804+ let cH = l((("global_" + cC) + "_balance"))
805+ if ((cH == cH))
803806 then {
804- let cH = l((("global_" + bh) + "_balance"))
805- if ((cH == cH))
807+ let cI = l((("global_" + bi) + "_balance"))
808+ if ((cI == cI))
806809 then {
807- let cI = be(bf, s(cB), cF, cG, cH)
808- if ((cI == cI))
810+ let cJ = bf(bg, s(cC), cG, cH, cI)
811+ if ((cJ == cJ))
809812 then {
810- let bv = fraction(cI, W, aa)
811- if ((bv == bv))
813+ let bw = fraction(cJ, X, ab)
814+ if ((bw == bw))
812815 then {
813- let bw = (cI - bv)
814- if ((bw == bw))
815- then if ((cA > bw))
816- then throw(("amount to recieve is lower than given one: " + toString(bw)))
817- else if ((0 > (cH - cI)))
816+ let bx = (cJ - bw)
817+ if ((bx == bx))
818+ then if ((cB > bx))
819+ then throw(("amount to recieve is lower than given one: " + toString(bx)))
820+ else if ((0 > (cI - cJ)))
818821 then throw("contract is out of reserves")
819- else if ((cF == s(cB)))
822+ else if ((cG == s(cC)))
820823 then throw("this swap is not allowed")
821824 else {
822- let cJ = (cG + bf)
823- if ((cJ == cJ))
825+ let cK = D(C, cC)
826+ let cL = (cH + bg)
827+ if ((cL == cL))
824828 then {
825- let aH = reentrantInvoke(this, "internal", [true, bf, cB], nil)
826- if ((aH == aH))
829+ let aI = reentrantInvoke(this, "internal", [true, bg, cC], nil)
830+ if ((aI == aI))
827831 then {
828- let cK = (cH - cI)
829- if ((cK == cK))
832+ let cM = (cI - cJ)
833+ if ((cM == cM))
830834 then {
831- let cL = reentrantInvoke(this, "internal", [false, (bw + fraction(bv, 3, 4)), bh], nil)
832- if ((cL == cL))
833- then $Tuple2([IntegerEntry((("global_" + bh) + "_balance"), (cK + fraction(bv, 1, 4))), ScriptTransfer(addressFromStringValue(cE), bw, cF), IntegerEntry((("global_" + cB) + "_balance"), cJ), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, bh), ca)], $Tuple2(bw, bv))
835+ let cN = reentrantInvoke(this, "internal", [false, (bx + fraction(bw, 3, 4)), bi], nil)
836+ if ((cN == cN))
837+ then $Tuple2([IntegerEntry((("global_" + bi) + "_balance"), (cM + fraction(bw, 1, 4))), ScriptTransfer(addressFromStringValue(cF), bx, cG), IntegerEntry((("global_" + cC) + "_balance"), cL), IntegerEntry("days_since_apy", C), IntegerEntry(B(C, bi), (cb + bw)), IntegerEntry(cK, bg)], $Tuple2(bx, bw))
834838 else throw("Strict value is not equal to itself.")
835839 }
836840 else throw("Strict value is not equal to itself.")
837841 }
838842 else throw("Strict value is not equal to itself.")
839843 }
840844 else throw("Strict value is not equal to itself.")
841845 }
842846 else throw("Strict value is not equal to itself.")
843847 }
844848 else throw("Strict value is not equal to itself.")
845849 }
846850 else throw("Strict value is not equal to itself.")
847851 }
848852 else throw("Strict value is not equal to itself.")
849853 }
850854 else throw("Strict value is not equal to itself.")
851855 }
852856
853857
854-@Verifier(cM)
855-func cN () = if (bV())
856- then sigVerify(cM.bodyBytes, cM.proofs[0], cM.senderPublicKey)
858+@Verifier(cO)
859+func cP () = if (bW())
860+ then sigVerify(cO.bodyBytes, cO.proofs[0], cO.senderPublicKey)
857861 else {
858- let cO = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
859- let cP = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
860- let cQ = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
861- let cR = if (sigVerify(cM.bodyBytes, cM.proofs[0], cO))
862+ let cQ = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
863+ let cR = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
864+ let cS = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
865+ let cT = if (sigVerify(cO.bodyBytes, cO.proofs[0], cQ))
862866 then 1
863- else if (sigVerify(cM.bodyBytes, cM.proofs[1], cO))
867+ else if (sigVerify(cO.bodyBytes, cO.proofs[1], cQ))
864868 then 1
865- else if (sigVerify(cM.bodyBytes, cM.proofs[2], cO))
869+ else if (sigVerify(cO.bodyBytes, cO.proofs[2], cQ))
866870 then 1
867871 else 0
868- let cS = if (sigVerify(cM.bodyBytes, cM.proofs[0], cP))
872+ let cU = if (sigVerify(cO.bodyBytes, cO.proofs[0], cR))
869873 then 1
870- else if (sigVerify(cM.bodyBytes, cM.proofs[1], cP))
874+ else if (sigVerify(cO.bodyBytes, cO.proofs[1], cR))
871875 then 1
872- else if (sigVerify(cM.bodyBytes, cM.proofs[2], cP))
876+ else if (sigVerify(cO.bodyBytes, cO.proofs[2], cR))
873877 then 1
874878 else 0
875- let cT = if (sigVerify(cM.bodyBytes, cM.proofs[0], cQ))
879+ let cV = if (sigVerify(cO.bodyBytes, cO.proofs[0], cS))
876880 then 1
877- else if (sigVerify(cM.bodyBytes, cM.proofs[1], cQ))
881+ else if (sigVerify(cO.bodyBytes, cO.proofs[1], cS))
878882 then 1
879- else if (sigVerify(cM.bodyBytes, cM.proofs[2], cQ))
883+ else if (sigVerify(cO.bodyBytes, cO.proofs[2], cS))
880884 then 1
881885 else 0
882- let cU = ((cR + cS) + cT)
883- let g = cM
884- (cU >= 2)
886+ let cW = ((cT + cU) + cV)
887+ let g = cO
888+ (cW >= 2)
885889 }
886890

github/deemru/w8io/3ef1775 
288.43 ms