tx · 9BoyqumZYmWUr5to1DtL4i6t8nXq6PZE177phrV862KM

3NAQoM4AUNeqgrhrh2RmVACXAF18Lw3Wysc:  -0.01400000 Waves

2021.09.20 09:51 [1711025] smart account 3NAQoM4AUNeqgrhrh2RmVACXAF18Lw3Wysc > SELF 0.00000000 Waves

{ "type": 13, "id": "9BoyqumZYmWUr5to1DtL4i6t8nXq6PZE177phrV862KM", "fee": 1400000, "feeAssetId": null, "timestamp": 1632120668354, "version": 2, "chainId": 84, "sender": "3NAQoM4AUNeqgrhrh2RmVACXAF18Lw3Wysc", "senderPublicKey": "GGrLCcVj972oWWPRkrKkKpet3g8W1RgGsxTppzdXqj4K", "proofs": [ "3u9hrmTC7krMKax4hDk47Mxm42Pkzvw3DiYfdyXBSyLkoG73Nj1mKANExA8Zc95jqjxmsHi46r6aCxfpw9v7PUN8", "4gctt86q9JzQrMy39kGCt33Jny5dq1mwAKcBVyiKEQuuixfJqhGdJwFdNCU8RYxXuyfYGVhQHBqSZ4MH89rm4onA" ], "script": "base64:AAIFAAAAAAAAACMIAhIDCgEIEgMKAQESAwoBARIAEgMKAQESABIAEgMKAQESAAAAAFgAAAAAB3ZlcnNpb24CAAAABTEuMC4wAAAAAAprZXlWZXJzaW9uAgAAAAd2ZXJzaW9uAAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAALa2V5QXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAAC2tleUFzc2V0SWRCAgAAAApCX2Fzc2V0X2lkAAAAAAtrZXlCYWxhbmNlQQIAAAAPQV9hc3NldF9iYWxhbmNlAAAAAAtrZXlCYWxhbmNlQgIAAAAPQl9hc3NldF9iYWxhbmNlAAAAAA9rZXlCYWxhbmNlSW5pdEECAAAADEFfYXNzZXRfaW5pdAAAAAAPa2V5QmFsYW5jZUluaXRCAgAAAAxCX2Fzc2V0X2luaXQAAAAAD2tleVNoYXJlQXNzZXRJZAIAAAAOc2hhcmVfYXNzZXRfaWQAAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkCAAAAEnNoYXJlX2Fzc2V0X3N1cHBseQAAAAANa2V5Q29tbWlzc2lvbgIAAAAKY29tbWlzc2lvbgAAAAAba2V5Q29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAgAAABpjb21taXNzaW9uX3NjYWxlX2RlbGltaXRlcgAAAAAIa2V5Q2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAA9rZXlGaXJzdEhhcnZlc3QCAAAADWZpcnN0X2hhcnZlc3QAAAAAFWtleUZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAADWtleVNoYXJlTGltaXQCAAAAHHNoYXJlX2xpbWl0X29uX2ZpcnN0X2hhcnZlc3QAAAAADWtleUJhc2VQZXJpb2QCAAAAC2Jhc2VfcGVyaW9kAAAAAA9rZXlQZXJpb2RMZW5ndGgCAAAADXBlcmlvZF9sZW5ndGgAAAAADmtleVN0YXJ0SGVpZ2h0AgAAAAxzdGFydF9oZWlnaHQAAAAAFmtleU9yYWNsZUFzc2V0UHJpb3JpdHkCAAAAD2Fzc2V0X3ByaW9yaXR5XwAAAAATa2V5T3JhY2xlU2NyaXB0SGFzaAIAAAAQc2NyaXB0X2hhc2hfY3BtbQAAAAARa2V5SW5pdFBv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AAALa2V5QmFsYW5jZUEAAAAACGJhbGFuY2VCCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAAtrZXlCYWxhbmNlQgAAAAAMc2hhcmVBc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAD2tleVNoYXJlQXNzZXRJZAAAAAAQc2hhcmVBc3NldFN1cHBseQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAATa2V5U2hhcmVBc3NldFN1cHBseQAAAAAKY29tbWlzc2lvbgAAAAAAAAALuAAAAAAUY29tbWlzc2lvbkdvdmVybmFuY2UAAAAAAAAABLAAAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgAAAAAAAA9CQAAAAAALc2NhbGVWYWx1ZTMAAAAAAAAAA+gAAAAAC3NjYWxlVmFsdWU4AAAAAAAF9eEAAAAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgAAAAAAAAAD6AAAAAARc2NhbGVWYWx1ZThEaWdpdHMAAAAAAAAAAAgAAAAAGWNvbWlzc2lvbkZvckluaXRhbGl6YXRpb24AAAAAADuaygABAAAADmFjY291bnRCYWxhbmNlAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAkAA/AAAAACBQAAAAR0aGlzBQAAAAJpZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAICQAD7wAAAAEFAAAABHRoaXMAAAAJYXZhaWxhYmxlCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAAxzdGFrZWRBbW91bnQAAAABAAAAB2Fzc2V0SWQEAAAAFnN0YWtlZEFtb3VudENhbGN1bGF0ZWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAA2FJZAUAAAAHJG1hdGNoMAMDCQAAAAAAAAIFAAAAA2FJZAUAAAAEVVNETgYJAAAAAAAAAgUAAAADYUlkBQAAAAROU0JUCQAEGgAAAAIFAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADHJwZF9iYWxhbmNlXwkAAlgAAAABBQAAAANhSWQCAAAAAV8JAAQlAAAAAQUAAAAEdGhpcwMJAAAAAAAAAgUAAAADYUlkBQAAAARFVVJOCQAEGgAAAAIFAAAAEnN0YWtpbmdFVVJOQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAYJXMlcyVzX19zdGFraW5nQmFsYW5jZV9fCQACWAAAAAEFAAAAA2FJZAIAAAACX18JAAQlAAAAAQUAAAAEdGhpcwAAAAAAAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAAHJG1hdGNoMAUAAAAWc3Rha2VkQW1vdW50Q2FsY3VsYXRlZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAAA5pc0FsbG93ZWRBc3NldAAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDADAwkAAAAAAAACBQAAAAJpZAUAAAAEVVNETgYJAAAAAAAAAgUAAAACaWQFAAAABFNXT1AGBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAGCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAAAAAA1zdGFrZWRBbW91bnRBCQEAAAAMc3Rha2VkQW1vdW50AAAAAQUAAAAIYXNzZXRJZEEAAAAADXN0YWtlZEFtb3VudEIJAQAAAAxzdGFrZWRBbW91bnQAAAABBQAAAAhhc3NldElkQgAAAAAKYXNzZXRJbml0QQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPa2V5QmFsYW5jZUluaXRBAAAAAAphc3NldEluaXRCCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9rZXlCYWxhbmNlSW5pdEIAAAAAEWF2YWlsYWJsZUJhbGFuY2VBCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1zdGFrZWRBbW91bnRBAAAAABFhdmFpbGFibGVCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAANc3Rha2VkQW1vdW50QgAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQQUAAAANc3Rha2VkQW1vdW50QQAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQgUAAAANc3Rha2VkQW1vdW50QgAAAAAQaGFzRW5vdWdoQmFsYW5jZQMJAABnAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQUAAAAIYmFsYW5jZUEJAABnAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgUAAAAIYmFsYW5jZUIHAQAAAAxnZXRBc3NldEluZm8AAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwBAAAAAhzdHJpbmdJZAkAAlgAAAABBQAAAAJpZAQAAAAEaW5mbwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAAAmlkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAAhzdHJpbmdJZAIAAAAOIGRvZXNuJ3QgZXhpc3QJAAUVAAAAAwUAAAAIc3RyaW5nSWQIBQAAAARpbmZvAAAABG5hbWUIBQAAAARpbmZvAAAACGRlY2ltYWxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAV3YXZlcwUAAAAHJG1hdGNoMAkABRUAAAADAgAAAAVXQVZFUwIAAAAFV0FWRVMAAAAAAAAAAAgJAAAC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AAAAC01hdGNoIGVycm9yBAAAAA5hc3NldDFQcmlvcml0eQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAZvcmFjbGUJAAEsAAAAAgUAAAAWa2V5T3JhY2xlQXNzZXRQcmlvcml0eQUAAAAOcG10U3RyQXNzZXRJZDEAAAAAAAAPQj8EAAAADmFzc2V0MlByaW9yaXR5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABm9yYWNsZQkAASwAAAACBQAAABZrZXlPcmFjbGVBc3NldFByaW9yaXR5BQAAAA5wbXRTdHJBc3NldElkMgAAAAAAAA9CPwQAAAANJHQwMTAwMDMxMDIzMAMJAABmAAAAAgUAAAAOYXNzZXQyUHJpb3JpdHkFAAAADmFzc2V0MVByaW9yaXR5CQAFFgAAAAQFAAAACnBtdEFtb3VudDIFAAAAC3BtdEFzc2V0SWQyBQAAAApwbXRBbW91bnQxBQAAAAtwbXRBc3NldElkMQkABRYAAAAEBQAAAApwbXRBbW91bnQxBQAAAAtwbXRBc3NldElkMQUAAAAKcG10QW1vdW50MgUAAAALcG10QXNzZXRJZDIEAAAACnBtdEFtb3VudEEIBQAAAA0kdDAxMDAwMzEwMjMwAAAAAl8xBAAAAAtwbXRBc3NldElkQQgFAAAADSR0MDEwMDAzMTAyMzAAAAACXzIEAAAACnBtdEFtb3VudEIIBQAAAA0kdDAxMDAwMzEwMjMwAAAAAl8zBAAAAAtwbXRBc3NldElkQggFAAAADSR0MDEwMDAzMTAyMzAAAAACXzQEAAAADSR0MDEwMjM5MTAzMTYJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAtwbXRBc3NldElkQQQAAAAOcG10U3RyQXNzZXRJZEEIBQAAAA0kdDAxMDIzOTEwMzE2AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVBCAUAAAANJHQwMTAyMzkxMDMxNgAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAANJHQwMTAyMzkxMDMxNgAAAAJfMwQAAAANJHQwMTAzMjUxMDQwMgkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAAC3BtdEFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAADSR0MDEwMzI1MTA0MDIAAAACXzEEAAAADXBtdEFzc2V0TmFtZUIIBQAAAA0kdDAxMDMyNTEwNDAyAAAAAl8yBAAAAAxwbXREZWNpbWFsc0IIBQAAAA0kdDAxMDMyNTEwNDAyAAAAAl8zBAAAAAlhZGRQYXJhbXMJAARMAAAAAgkABCUAAAABBQAAAAR0aGlzCQAETAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1wbXRBc3NldE5hbWVBAgAAAAFfBQAAAA1wbXRBc3NldE5hbWVCCQAETAAAAAIFAAAADnBtdFN0ckFzc2V0SWRBCQAETAAAAAIFAAAADnBtdFN0ckFzc2V0SWRCBQAAAANuaWwEAAAAB2FkZFBvb2wJAAP8AAAABAUAAAAGb3JhY2xlAgAAAAdhZGRQb29sBQAAAAlhZGRQYXJhbXMFAAAAA25pbAMJAAAAAAAAAgUAAAAHYWRkUG9vbAUAAAAHYWRkUG9vbAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAGb3JhY2xlCQABLAAAAAICAAAABXBvb2xfCQAEJQAAAAEFAAAABHRoaXMJAAACAAAAAQIAAAARUG9vbCBpcyBub3QgYWRkZWQEAAAACXNoYXJlTmFtZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAABcwkAAS8AAAACBQAAAA1wbXRBc3NldE5hbWVBAAAAAAAAAAAHAgAAAAFfCQABLwAAAAIFAAAADXBtdEFzc2V0TmFtZUIAAAAAAAAAAAcEAAAAEHNoYXJlRGVzY3JpcHRpb24JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACJTaGFyZVRva2VuIG9mIFN3b3BGaSBwcm90b2NvbCBmb3IgBQAAAA1wbXRBc3NldE5hbWVBAgAAAAUgYW5kIAUAAAANcG10QXNzZXROYW1lQgIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAABHRoaXMEAAAADXNoYXJlRGVjaW1hbHMJAABpAAAAAgkAAGQAAAACBQAAAAxwbXREZWNpbWFsc0EFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAAAgQAAAAEYXJnMQkAAGwAAAAGBQAAAApwbXRBbW91bnRBBQAAAAxwbXREZWNpbWFsc0EAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQQUAAAAERE9XTgQAAAAEYXJnMgkAAGwAAAAGBQAAAApwbXRBbW91bnRCBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQgUAAAAERE9XTgQAAAAEYXJnMwkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAA1zaGFyZURlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBAAAABJzaGFyZUluaXRpYWxTdXBwbHkJAABrAAAAAwUAAAAEYXJnMQUAAAAEYXJnMgUAAAAEYXJnMwQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5U2hhcmVBc3NldElkCQACWAAAAAEFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrZXlJbml0UG9vbEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA13YWxsZXRBZGRyZXNzBQAAABljb21pc3Npb25Gb3JJbml0YWxpemF0aW9uBQAAAARTV09QBQAAAANuaWwFAAAACWJhc2VFbnRyeQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAYa2VlcExpbWl0Rm9yRmlyc3RIYXJ2ZXN0AAAAAQAAAApzaGFyZUxpbWl0AwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABJhZG1pblB1YktleVN0YWtpbmcFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5U2hhcmVMaW1pdAUAAAAKc2hhcmVMaW1pdAUAAAADbmlsAAAAAWkBAAAAFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMAAAABAAAAEXNsaXBwYWdlVG9sZXJhbmNlBAAAAAtwbXRBc3NldElkQQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAALcG10QXNzZXRJZEIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAAB2Fzc2V0SWQEAAAACnBtdEFtb3VudEEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAwgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50BQAAAAtwbXRBc3NldElkQQUAAAALcG10QXNzZXRJZEIEAAAACnBtdEFtb3VudEIJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAwgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAtwbXRBc3NldElkQgUAAAALcG10QXNzZXRJZEEDAwkAAAAAAAACBQAAAAhiYWxhbmNlQQAAAAAAAAAAAAkAAAAAAAACBQAAAAhiYWxhbmNlQgAAAAAAAAAAAAcEAAAADSR0MDEzMzIyMTMzOTkJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAtwbXRBc3NldElkQQQAAAAOcG10U3RyQXNzZXRJZEEIBQAAAA0kdDAxMzMyMjEzMzk5AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVBCAUAAAANJHQwMTMzMjIxMzM5OQAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAANJHQwMTMzMjIxMzM5OQAAAAJfMwQAAAANJHQwMTM0MDgxMzQ4NQkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAAC3BtdEFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAADSR0MDEzNDA4MTM0ODUAAAACXzEEAAAADXBtdEFzc2V0TmFtZUIIBQAAAA0kdDAxMzQwODEzNDg1AAAAAl8yBAAAAAxwbXREZWNpbWFsc0IIBQAAAA0kdDAxMzQwODEzNDg1AAAAAl8zBAAAAAp0b2tlblJhdGlvCQAAawAAAAMJAABrAAAAAwUAAAAKYXNzZXRJbml0QQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACmFzc2V0SW5pdEIFAAAAC3NjYWxlVmFsdWU4BQAAAApwbXRBbW91bnRCAwkAAAAAAAACBQAAAAtwbXRBc3NldElkQQUAAAALcG10QXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkAAGsAAAADCQAAbAAAAAYFAAAACnBtdEFtb3VudEEFAAAADHBtdERlY2ltYWxzQQAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNBBQAAAARET1dOCQAAbAAAAAYFAAAACnBtdEFtb3VudEIFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNCBQAAAARET1dOCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAADXNoYXJlRGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04DCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAAGYAAAACAAAAAAAAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQYJAABmAAAAAgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAKVNsaXBwYWdlIHRvbGVyYW5jZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgCQABpAAAAAEFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyAgAAABYgaW5jbHVzaXZlbHkuIEFjdHVhbDogCQABpAAAAAEFAAAAEXNsaXBwYWdlVG9sZXJhbmNlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABxUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAABmAAAAAgkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZQAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAtzY2FsZVZhbHVlMwkAAGQAAAACBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAECAAAAPUluY29ycmVjdCBhc3NldHMgYW1vdW50OiBhbW91bnRzIG11c3QgaGF2ZSB0aGUgY29udHJhY3QgcmF0aW8DAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDCQAAAAAAAAIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAkAAAIAAAABAgAAAB1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QQUAAAALcG10QXNzZXRJZEEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRCBQAAAAtwbXRBc3NldElkQgUAAAADbmlsCQEAAAARc3VzcGVuZFN1c3BpY2lvdXMAAAAACQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAMc2hhcmVBc3NldElkBQAAABJzaGFyZUluaXRpYWxTdXBwbHkGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwEAAAACnRva2VuUmF0aW8JAABrAAAAAwkAAGsAAAADBQAAAAhiYWxhbmNlQQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACGJhbGFuY2VCBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QgQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADBQAAAApwbXRBbW91bnRBBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApU2xpcHBhZ2UgdG9sZXJhbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAJAAGkAAAAAQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXICAAAAFiBpbmNsdXNpdmVseS4gQWN0dWFsOiAJAAGkAAAAAQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAHFR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABlAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAAKdG9rZW5SYXRpbwYJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZAAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQIAAAA9SW5jb3JyZWN0IGFzc2V0cyBhbW91bnQ6IGFtb3VudHMgbXVzdCBoYXZlIHRoZSBjb250cmFjdCByYXRpbwMJAAAAAAAAAgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRBBQAAAAtwbXRBc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEIFAAAAC3BtdEFzc2V0SWRCBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTc4ODQxODAzNAkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE3ODg0MTgwMzQAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNzg4NDE4MDM0AAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAwkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQUAAAAIYXNzZXRJZEIEAAAADGFtb3VudFRvUGF5QgkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAADCQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAIYmFsYW5jZUIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACGFzc2V0SWRCBQAAAAhhc3NldElkQQMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAACRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJAAJYAAAAAQUAAAAMc2hhcmVBc3NldElkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMDCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAARYXZhaWxhYmxlQmFsYW5jZUEGCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QgUAAAARYXZhaWxhYmxlQmFsYW5jZUIJAQAAACJ0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2VzAAAAAgUAAAAMYW1vdW50VG9QYXlBBQAAAAxhbW91bnRUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAAxhbW91bnRUb1BheUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkJAABlAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAMc2hhcmVBc3NldElkBQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxhbW91bnRUb1BheUEFAAAACGFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlCBQAAAAhhc3NldElkQgUAAAADbmlsAAAAAWkBAAAACGV4Y2hhbmdlAAAAAQAAABJtaW5BbW91bnRUb1JlY2VpdmUEAAAADSR0MDE5MjYwMTkzMzUJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxOTI2MDE5MzM1AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTkyNjAxOTMzNQAAAAJfMgoBAAAADWNhbGN1bGF0ZUZlZXMAAAACAAAACXRva2VuRnJvbQAAAAd0b2tlblRvBAAAABBhbW91bnRXaXRob3V0RmVlCQAAawAAAAMFAAAAB3Rva2VuVG8FAAAACXBtdEFtb3VudAkAAGQAAAACBQAAAAlwbXRBbW91bnQFAAAACXRva2VuRnJvbQQAAAANYW1vdW50V2l0aEZlZQkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlCQAAZQAAAAIFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAKY29tbWlzc2lvbgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBAAAABBnb3Zlcm5hbmNlUmV3YXJkCQAAawAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUFAAAAFGNvbW1pc3Npb25Hb3Zlcm5hbmNlBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIDCQAAZgAAAAIFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAANYW1vdW50V2l0aEZlZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB1DYWxjdWxhdGVkIGFtb3VudCB0byByZWNlaXZlIAkAAaQAAAABBQAAAA1hbW91bnRXaXRoRmVlAgAAACAgaXMgbGVzcyB0aGFuIHNwZWNpZmllZCBtaW5pbXVtIAkAAaQAAAABBQAAABJtaW5BbW91bnRUb1JlY2VpdmUJAAUVAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQAAAAAAAAIFAAAACGJhbGFuY2VBAAAAAAAAAAAABgkAAAAAAAACBQAAAAhiYWxhbmNlQgAAAAAAAAAAAAkAAAIAAAABAgAAACBDYW4ndCBleGNoYW5nZSB3aXRoIHplcm8gYmFsYW5jZQMJAABnAAAAAgAAAAAAAAAAAAUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgIAAAA0TWluaW1hbCBhbW91bnQgdG8gcmVjZWl2ZSBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAABJtaW5BbW91bnRUb1JlY2VpdmUDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEEAAAAC2Fzc2V0SWRTZW5kBQAAAAhhc3NldElkQgQAAAANJHQwMjA2MDkyMDcwMAkBAAAADWNhbGN1bGF0ZUZlZXMAAAACBQAAAAhiYWxhbmNlQQUAAAAIYmFsYW5jZUIEAAAAEGFtb3VudFdpdGhvdXRGZWUIBQAAAA0kdDAyMDYwOTIwNzAwAAAAAl8xBAAAAA1hbW91bnRXaXRoRmVlCAUAAAANJHQwMjA2MDkyMDcwMAAAAAJfMgQAAAAQZ292ZXJuYW5jZVJld2FyZAgFAAAADSR0MDIwNjA5MjA3MDAAAAACXzMEAAAAC25ld0JhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQEAAAAC25ld0JhbGFuY2VCCQAAZQAAAAIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQDAwkAAGcAAAACBQAAAA1zdGFrZWRBbW91bnRBBQAAAAtuZXdCYWxhbmNlQQYJAABnAAAAAgUAAAANc3Rha2VkQW1vdW50QgUAAAALbmV3QmFsYW5jZUIJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA1hbW91bnRXaXRoRmVlBQAAABFhdmFpbGFibGVCYWxhbmNlQgUAAAAKYXNzZXROYW1lQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA1hbW91bnRXaXRoRmVlBQAAAAthc3NldElkU2VuZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA13YWxsZXRBZGRyZXNzBQAAABBnb3Zlcm5hbmNlUmV3YXJkBQAAAAthc3NldElkU2VuZAUAAAADbmlsAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQgQAAAALYXNzZXRJZFNlbmQFAAAACGFzc2V0SWRBBAAAAA0kdDAyMTUxOTIxNjEwCQEAAAANY2FsY3VsYXRlRmVlcwAAAAIFAAAACGJhbGFuY2VCBQAAAAhiYWxhbmNlQQQAAAAQYW1vdW50V2l0aG91dEZlZQgFAAAADSR0MDIxNTE5MjE2MTAAAAACXzEEAAAADWFtb3VudFdpdGhGZWUIBQAAAA0kdDAyMTUxOTIxNjEwAAAAAl8yBAAAABBnb3Zlcm5hbmNlUmV3YXJkCAUAAAANJHQwMjE1MTkyMTYxMAAAAAJfMwQAAAALbmV3QmFsYW5jZUEJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAQAAAALbmV3QmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACXBtdEFtb3VudAMDCQAAZwAAAAIFAAAADXN0YWtlZEFtb3VudEEFAAAAC25ld0JhbGFuY2VBBgkAAGcAAAACBQAAAA1zdGFrZWRBbW91bnRCBQAAAAtuZXdCYWxhbmNlQgkBAAAAIXRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZQAAAAMFAAAADWFtb3VudFdpdGhGZWUFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBQAAAAphc3NldE5hbWVBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQAAAAtzdHJBc3NldElkQQIAAAAEIG9yIAUAAAALc3RyQXNzZXRJZEIAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgQAAAANYW1vdW50RW5yb2xsQQkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEdW5pdAUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAArT25seSB0aGUgREFwcCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgAAAAAAAAAAAAUAAAALYW1vdW50TGVhdmUJAAACAAAAAQkAASwAAAACAgAAADNBcmd1bWVudCAnYW1vdW50TGVhdmUnIGNhbm5vdCBiZSBuZWdhdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAALYW1vdW50TGVhdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQYJAABmAAAAAgAAAAAAAAAAAAUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIJAQAAAAdzdXNwZW5kAAAAAQIAAAAWRW5yb2xsIGFtb3VudCBuZWdhdGl2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEEGCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEIJAAACAAAAAQIAAAAVVG9vIGxhcmdlIGFtb3VudExlYXZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAADWFtb3VudEVucm9sbEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAMbGFzdF9pbmNvbWVfBQAAAAtzdHJBc3NldElkQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxsYXN0X2luY29tZV8FAAAAC3N0ckFzc2V0SWRCBQAAAA1hbW91bnRFbnJvbGxCBQAAAANuaWwAAAABaQEAAAASZW5hYmxlRmlyc3RIYXJ2ZXN0AAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAPa2V5Rmlyc3RIYXJ2ZXN0BgkABEwAAAACCQEAAAAMSW50ZWdl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", "height": 1711025, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3PyELUHc6NJVeShYa92Ja6mg5CwmvweFoUX3TRrCLnyx Next: none Diff:
OldNewDifferences
345345 let bq = isDataStorageUntouched(this)
346346 let br = scriptHash(this)
347347 let bs = addressFromStringValue(bg)
348+ let bt = value(getBinary(A, v))
348349 if ((aB.caller == this))
349350 then throw("You can't call yourself")
350351 else if (if ((bp != P))
355356 then !(aC(bm))
356357 else false)
357358 then throw("One of assets must be USDN, WAVES or SWOP")
358- else if (if ((br != value(getBinary(A, v))))
359+ else if (if ((br != bt))
359360 then true
360361 else !(bq))
361362 then throw("Unexpected script was found.")
364365 else if ((bj == bm))
365366 then throw("Assets must be different")
366367 else {
367- let bt = {
368+ let bu = {
368369 let D = bj
369370 if ($isInstanceOf(D, "ByteVector"))
370371 then {
378379 }
379380 else throw("Match error")
380381 }
381- let bu = {
382+ let bv = {
382383 let D = bm
383384 if ($isInstanceOf(D, "ByteVector"))
384385 then {
392393 }
393394 else throw("Match error")
394395 }
395- let bv = valueOrElse(getInteger(A, (u + bt)), 999999)
396396 let bw = valueOrElse(getInteger(A, (u + bu)), 999999)
397- let bx = if ((bw > bv))
397+ let bx = valueOrElse(getInteger(A, (u + bv)), 999999)
398+ let by = if ((bx > bw))
398399 then $Tuple4(bl, bm, bi, bj)
399400 else $Tuple4(bi, bj, bl, bm)
400- let by = bx._1
401- let bz = bx._2
402- let bA = bx._3
403- let bB = bx._4
404- let bC = aM(bz)
405- let bD = bC._1
406- let bE = bC._2
407- let bF = bC._3
408- let bG = aM(bB)
409- let bH = bG._1
410- let bI = bG._2
411- let bJ = bG._3
412- let bK = [toString(this), ((bE + "_") + bI), bD, bH]
413- let bL = invoke(A, "addPool", bK, nil)
414- if ((bL == bL))
401+ let bz = by._1
402+ let bA = by._2
403+ let bB = by._3
404+ let bC = by._4
405+ let bD = aM(bA)
406+ let bE = bD._1
407+ let bF = bD._2
408+ let bG = bD._3
409+ let bH = aM(bC)
410+ let bI = bH._1
411+ let bJ = bH._2
412+ let bK = bH._3
413+ let bL = [toString(this), ((bF + "_") + bJ), bE, bI]
414+ let bM = invoke(A, "addPool", bL, nil)
415+ if ((bM == bM))
415416 then if (!(isDefined(getString(A, ("pool_" + toString(this))))))
416417 then throw("Pool is not added")
417418 else {
418- let bM = ((("s" + take(bE, 7)) + "_") + take(bI, 7))
419- let bN = ((((("ShareToken of SwopFi protocol for " + bE) + " and ") + bI) + " at address ") + toString(this))
420- let bO = ((bF + bJ) / 2)
421- let bP = pow(by, bF, 5, 1, bF, DOWN)
422- let bQ = pow(bA, bJ, 5, 1, bJ, DOWN)
423- let bR = pow(10, 0, bO, 0, 0, DOWN)
424- let bS = fraction(bP, bQ, bR)
425- let bT = Issue(bM, bN, bS, bO, true)
426- let bU = calculateAssetId(bT)
427- let bV = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bD), StringEntry(e, bH), IntegerEntry(f, by), IntegerEntry(g, bA), IntegerEntry(l, ao), IntegerEntry(m, aq), bT, StringEntry(j, toBase58String(bU)), IntegerEntry(k, bS), IntegerEntry(w, height), ScriptTransfer(bs, bS, bU), ScriptTransfer(L, av, P)]
428- bV
419+ let bN = ((("s" + take(bF, 7)) + "_") + take(bJ, 7))
420+ let bO = ((((("ShareToken of SwopFi protocol for " + bF) + " and ") + bJ) + " at address ") + toString(this))
421+ let bP = ((bG + bK) / 2)
422+ let bQ = pow(bz, bG, 5, 1, bG, DOWN)
423+ let bR = pow(bB, bK, 5, 1, bK, DOWN)
424+ let bS = pow(10, 0, bP, 0, 0, DOWN)
425+ let bT = fraction(bQ, bR, bS)
426+ let bU = Issue(bN, bO, bT, bP, true)
427+ let bV = calculateAssetId(bU)
428+ let bW = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bE), StringEntry(e, bI), IntegerEntry(f, bz), IntegerEntry(g, bB), IntegerEntry(l, ao), IntegerEntry(m, aq), bU, StringEntry(j, toBase58String(bV)), IntegerEntry(k, bT), IntegerEntry(w, height), ScriptTransfer(bs, bT, bV), ScriptTransfer(L, av, P)]
429+ bW
429430 }
430431 else throw("Strict value is not equal to itself.")
431432 }
434435
435436
436437 @Callable(aB)
437-func keepLimitForFirstHarvest (bW) = if (!(ab))
438+func keepLimitForFirstHarvest (bX) = if (!(ab))
438439 then throw("DApp is inactive at this moment")
439440 else if (!(containsElement([G, H, I, K], aB.callerPublicKey)))
440441 then throw("Only admin can call this function")
441- else [IntegerEntry(q, bW)]
442+ else [IntegerEntry(q, bX)]
442443
443444
444445
445446 @Callable(aB)
446-func replenishWithTwoTokens (bX) = {
447- let bz = aB.payments[0].assetId
448- let bB = aB.payments[1].assetId
449- let by = aT(aB.payments[0].amount, bz, bB)
450- let bA = aT(aB.payments[1].amount, bB, bz)
447+func replenishWithTwoTokens (bY) = {
448+ let bA = aB.payments[0].assetId
449+ let bC = aB.payments[1].assetId
450+ let bz = aT(aB.payments[0].amount, bA, bC)
451+ let bB = aT(aB.payments[1].amount, bC, bA)
451452 if (if ((ak == 0))
452453 then (al == 0)
453454 else false)
454455 then {
455- let bY = aM(bz)
456- let bD = bY._1
457- let bE = bY._2
458- let bF = bY._3
459- let bZ = aM(bB)
460- let bH = bZ._1
461- let bI = bZ._2
462- let bJ = bZ._3
463- let ca = fraction(fraction(aF, as, by), ar, fraction(aG, as, bA))
464- if ((bz == bB))
456+ let bZ = aM(bA)
457+ let bE = bZ._1
458+ let bF = bZ._2
459+ let bG = bZ._3
460+ let ca = aM(bC)
461+ let bI = ca._1
462+ let bJ = ca._2
463+ let bK = ca._3
464+ let cb = fraction(fraction(aF, as, bz), ar, fraction(aG, as, bB))
465+ if ((bA == bC))
465466 then throw("Assets must be different")
466467 else {
467- let bO = ((bF + bJ) / 2)
468- let bS = fraction(pow(by, bF, 5, 1, bF, DOWN), pow(bA, bJ, 5, 1, bJ, DOWN), pow(10, 0, bO, 0, 0, DOWN))
468+ let bP = ((bG + bK) / 2)
469+ let bT = fraction(pow(bz, bG, 5, 1, bG, DOWN), pow(bB, bK, 5, 1, bK, DOWN), pow(10, 0, bP, 0, 0, DOWN))
469470 if (!(ab))
470471 then throw("DApp is inactive at this moment")
471- else if (if ((0 > bX))
472+ else if (if ((0 > bY))
472473 then true
473- else (bX > at))
474- then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bX)))
474+ else (bY > at))
475+ then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bY)))
475476 else if ((size(aB.payments) != 2))
476477 then throw("Two attached assets expected")
477- else if (if ((((ar * (at - bX)) / at) > ca))
478+ else if (if ((((ar * (at - bY)) / at) > cb))
478479 then true
479- else (ca > ((ar * (at + bX)) / at)))
480+ else (cb > ((ar * (at + bY)) / at)))
480481 then throw("Incorrect assets amount: amounts must have the contract ratio")
481- else if (if ((bz != ae))
482+ else if (if ((bA != ae))
482483 then true
483- else (bB != af))
484+ else (bC != af))
484485 then throw(((("Incorrect assets attached. Expected: " + ac) + " and ") + ad))
485- else if ((bS == 0))
486+ else if ((bT == 0))
486487 then throw("Too small amount to replenish")
487488 else if (!(aL))
488- then ([ScriptTransfer(aB.caller, by, bz), ScriptTransfer(aB.caller, bA, bB)] ++ bf())
489- else [Reissue(am, bS, true), IntegerEntry(f, by), IntegerEntry(g, bA), IntegerEntry(k, bS), ScriptTransfer(aB.caller, bS, am)]
489+ then ([ScriptTransfer(aB.caller, bz, bA), ScriptTransfer(aB.caller, bB, bC)] ++ bf())
490+ else [Reissue(am, bT, true), IntegerEntry(f, bz), IntegerEntry(g, bB), IntegerEntry(k, bT), ScriptTransfer(aB.caller, bT, am)]
490491 }
491492 }
492493 else {
493- let ca = fraction(fraction(ak, as, by), ar, fraction(al, as, bA))
494- let cb = fraction(by, as, ak)
495- let cc = fraction(bA, as, al)
496- let cd = fraction(min([cb, cc]), an, as)
494+ let cb = fraction(fraction(ak, as, bz), ar, fraction(al, as, bB))
495+ let cc = fraction(bz, as, ak)
496+ let cd = fraction(bB, as, al)
497+ let ce = fraction(min([cc, cd]), an, as)
497498 if (!(ab))
498499 then throw("DApp is inactive at this moment")
499- else if (if ((0 > bX))
500+ else if (if ((0 > bY))
500501 then true
501- else (bX > at))
502- then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bX)))
502+ else (bY > at))
503+ then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bY)))
503504 else if ((size(aB.payments) != 2))
504505 then throw("Two attached assets expected")
505- else if (if ((bz != ae))
506+ else if (if ((bA != ae))
506507 then true
507- else (bB != af))
508+ else (bC != af))
508509 then throw(((("Incorrect assets attached. Expected: " + ac) + " and ") + ad))
509- else if (if ((((ar * (at - bX)) / at) > ca))
510+ else if (if ((((ar * (at - bY)) / at) > cb))
510511 then true
511- else (ca > ((ar * (at + bX)) / at)))
512+ else (cb > ((ar * (at + bY)) / at)))
512513 then throw("Incorrect assets amount: amounts must have the contract ratio")
513- else if ((cd == 0))
514+ else if ((ce == 0))
514515 then throw("Too small amount to replenish")
515516 else if (!(aL))
516- then ([ScriptTransfer(aB.caller, by, bz), ScriptTransfer(aB.caller, bA, bB)] ++ bf())
517- else [IntegerEntry(f, (ak + by)), IntegerEntry(g, (al + bA)), IntegerEntry(k, (an + cd)), Reissue(am, cd, true), ScriptTransfer(aB.caller, cd, am)]
517+ then ([ScriptTransfer(aB.caller, bz, bA), ScriptTransfer(aB.caller, bB, bC)] ++ bf())
518+ else [IntegerEntry(f, (ak + bz)), IntegerEntry(g, (al + bB)), IntegerEntry(k, (an + ce)), Reissue(am, ce, true), ScriptTransfer(aB.caller, ce, am)]
518519 }
519520 }
520521
522523
523524 @Callable(aB)
524525 func withdraw () = {
525- let ce = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
526- let cf = ce._1
527- let cg = ce._2
528- let ch = aT(fraction(cf, ak, an), ae, af)
529- let ci = aT(fraction(cf, al, an), af, ae)
526+ let cf = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
527+ let cg = cf._1
528+ let ch = cf._2
529+ let ci = aT(fraction(cg, ak, an), ae, af)
530+ let cj = aT(fraction(cg, al, an), af, ae)
530531 if (!(ab))
531532 then throw("DApp is inactive at this moment")
532533 else if ((size(aB.payments) != 1))
533534 then throw("One attached payment expected")
534- else if ((cg != am))
535+ else if ((ch != am))
535536 then throw(("Incorrect asset attached. Expected: " + toBase58String(am)))
536537 else if (!(aL))
537- then ([ScriptTransfer(aB.caller, cf, cg)] ++ bf())
538- else if (if ((ch > aH))
538+ then ([ScriptTransfer(aB.caller, cg, ch)] ++ bf())
539+ else if (if ((ci > aH))
539540 then true
540- else (ci > aI))
541- then bc(ch, ci)
542- else [IntegerEntry(f, (ak - ch)), IntegerEntry(g, (al - ci)), IntegerEntry(k, (an - cf)), Burn(am, cf), ScriptTransfer(aB.caller, ch, ae), ScriptTransfer(aB.caller, ci, af)]
541+ else (cj > aI))
542+ then bc(ci, cj)
543+ else [IntegerEntry(f, (ak - ci)), IntegerEntry(g, (al - cj)), IntegerEntry(k, (an - cg)), Burn(am, cg), ScriptTransfer(aB.caller, ci, ae), ScriptTransfer(aB.caller, cj, af)]
543544 }
544545
545546
546547
547548 @Callable(aB)
548-func exchange (cj) = {
549- let ck = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
550- let cf = ck._1
551- let cg = ck._2
552- func cl (cm,cn) = {
553- let co = fraction(cn, cf, (cf + cm))
554- let cp = fraction(co, (aq - ao), aq)
555- let cq = fraction(co, ap, aq)
556- if ((cj > cp))
557- then throw(((("Calculated amount to receive " + toString(cp)) + " is less than specified minimum ") + toString(cj)))
558- else $Tuple3(co, cp, cq)
549+func exchange (ck) = {
550+ let cl = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
551+ let cg = cl._1
552+ let ch = cl._2
553+ func cm (cn,co) = {
554+ let cp = fraction(co, cg, (cg + cn))
555+ let cq = fraction(cp, (aq - ao), aq)
556+ let cr = fraction(cp, ap, aq)
557+ if ((ck > cq))
558+ then throw(((("Calculated amount to receive " + toString(cq)) + " is less than specified minimum ") + toString(ck)))
559+ else $Tuple3(cp, cq, cr)
559560 }
560561
561562 if (!(ab))
564565 then true
565566 else (al == 0))
566567 then throw("Can't exchange with zero balance")
567- else if ((0 >= cj))
568- then throw(("Minimal amount to receive must be positive. Actual: " + toString(cj)))
568+ else if ((0 >= ck))
569+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(ck)))
569570 else if ((size(aB.payments) != 1))
570571 then throw("One attached payment expected")
571572 else if (!(aL))
572- then ([ScriptTransfer(aB.caller, cf, cg)] ++ bf())
573- else if ((cg == ae))
573+ then ([ScriptTransfer(aB.caller, cg, ch)] ++ bf())
574+ else if ((ch == ae))
574575 then {
575- let cr = af
576- let cs = cl(ak, al)
577- let co = cs._1
578- let cp = cs._2
579- let cq = cs._3
580- let ct = (ak + cf)
581- let cu = ((al - cp) - cq)
582- if (if ((aD >= ct))
576+ let cs = af
577+ let ct = cm(ak, al)
578+ let cp = ct._1
579+ let cq = ct._2
580+ let cr = ct._3
581+ let cu = (ak + cg)
582+ let cv = ((al - cq) - cr)
583+ if (if ((aD >= cu))
583584 then true
584- else (aE >= cu))
585- then aZ(cp, aI, aj)
586- else [IntegerEntry(f, ct), IntegerEntry(g, cu), ScriptTransfer(aB.caller, cp, cr), ScriptTransfer(L, cq, cr)]
585+ else (aE >= cv))
586+ then aZ(cq, aI, aj)
587+ else [IntegerEntry(f, cu), IntegerEntry(g, cv), ScriptTransfer(aB.caller, cq, cs), ScriptTransfer(L, cr, cs)]
587588 }
588- else if ((cg == af))
589+ else if ((ch == af))
589590 then {
590- let cr = ae
591- let cv = cl(al, ak)
592- let co = cv._1
593- let cp = cv._2
594- let cq = cv._3
595- let ct = ((ak - cp) - cq)
596- let cu = (al + cf)
597- if (if ((aD >= ct))
591+ let cs = ae
592+ let cw = cm(al, ak)
593+ let cp = cw._1
594+ let cq = cw._2
595+ let cr = cw._3
596+ let cu = ((ak - cq) - cr)
597+ let cv = (al + cg)
598+ if (if ((aD >= cu))
598599 then true
599- else (aE >= cu))
600- then aZ(cp, aH, ag)
601- else [IntegerEntry(f, ct), IntegerEntry(g, cu), ScriptTransfer(aB.caller, cp, cr), ScriptTransfer(L, cq, cr)]
600+ else (aE >= cv))
601+ then aZ(cq, aH, ag)
602+ else [IntegerEntry(f, cu), IntegerEntry(g, cv), ScriptTransfer(aB.caller, cq, cs), ScriptTransfer(L, cr, cs)]
602603 }
603604 else throw(((("Incorrect asset attached. Expected: " + ac) + " or ") + ad))
604605 }
624625
625626
626627 @Callable(aB)
627-func takeIntoAccountExtraFunds (cw) = {
628- let cx = (aJ - ak)
629- let cy = (aK - al)
630- let cz = (cx - (if ((ae == unit))
631- then cw
628+func takeIntoAccountExtraFunds (cx) = {
629+ let cy = (aJ - ak)
630+ let cz = (aK - al)
631+ let cA = (cy - (if ((ae == unit))
632+ then cx
632633 else 0))
633- let cA = (cy - (if ((af == unit))
634- then cw
634+ let cB = (cz - (if ((af == unit))
635+ then cx
635636 else 0))
636637 if (!(ab))
637638 then throw("DApp is inactive at this moment")
638639 else if ((aB.caller != this))
639640 then throw("Only the DApp itself can call this function")
640- else if ((0 > cw))
641- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cw)))
642- else if (if ((0 > cx))
641+ else if ((0 > cx))
642+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cx)))
643+ else if (if ((0 > cy))
643644 then true
644- else (0 > cy))
645+ else (0 > cz))
645646 then aR("Enroll amount negative")
646- else if (if ((0 > cz))
647+ else if (if ((0 > cA))
647648 then true
648- else (0 > cA))
649+ else (0 > cB))
649650 then throw("Too large amountLeave")
650- else [IntegerEntry(f, (ak + cz)), IntegerEntry(g, (al + cA)), IntegerEntry(("last_income_" + ac), cz), IntegerEntry(("last_income_" + ad), cA)]
651+ else [IntegerEntry(f, (ak + cA)), IntegerEntry(g, (al + cB)), IntegerEntry(("last_income_" + ac), cA), IntegerEntry(("last_income_" + ad), cB)]
651652 }
652653
653654
656657 func enableFirstHarvest () = [BooleanEntry(o, true), IntegerEntry(p, (Y + (aa * Z)))]
657658
658659
659-@Verifier(cB)
660-func cC () = {
661- let cD = {
662- let cE = if (sigVerify(cB.bodyBytes, cB.proofs[0], G))
660+@Verifier(cC)
661+func cD () = {
662+ let cE = {
663+ let cF = if (sigVerify(cC.bodyBytes, cC.proofs[0], G))
663664 then 1
664665 else 0
665- let cF = if (sigVerify(cB.bodyBytes, cB.proofs[1], H))
666+ let cG = if (sigVerify(cC.bodyBytes, cC.proofs[1], H))
666667 then 1
667668 else 0
668- let cG = if (sigVerify(cB.bodyBytes, cB.proofs[2], I))
669+ let cH = if (sigVerify(cC.bodyBytes, cC.proofs[2], I))
669670 then 1
670671 else 0
671- (((cE + cF) + cG) >= 2)
672+ (((cF + cG) + cH) >= 2)
672673 }
673- let D = cB
674+ let D = cC
674675 if ($isInstanceOf(D, "InvokeScriptTransaction"))
675676 then {
676- let cH = D
677- let cI = if ((cH.dApp == this))
678- then (cH.function == "takeIntoAccountExtraFunds")
677+ let cI = D
678+ let cJ = if ((cI.dApp == this))
679+ then (cI.function == "takeIntoAccountExtraFunds")
679680 else false
680- let cJ = if ((cH.dApp == this))
681- then (cH.function == "enableFirstHarvest")
681+ let cK = if ((cI.dApp == this))
682+ then (cI.function == "enableFirstHarvest")
682683 else false
683- let cK = if (if ((cH.dApp == R))
684- then if (if (if ((cH.function == "lockNeutrino"))
685- then (size(cH.payments) == 1)
684+ let cL = if (if ((cI.dApp == R))
685+ then if (if (if ((cI.function == "lockNeutrino"))
686+ then (size(cI.payments) == 1)
686687 else false)
687- then if ((cH.payments[0].assetId == N))
688+ then if ((cI.payments[0].assetId == N))
688689 then true
689- else (cH.payments[0].assetId == O)
690+ else (cI.payments[0].assetId == O)
690691 else false)
691692 then true
692- else if ((cH.function == "unlockNeutrino"))
693- then (size(cH.payments) == 0)
693+ else if ((cI.function == "unlockNeutrino"))
694+ then (size(cI.payments) == 0)
694695 else false
695696 else false)
696697 then true
697- else if ((cH.dApp == S))
698- then if (if (if ((cH.function == "startStaking"))
699- then (size(cH.payments) == 1)
698+ else if ((cI.dApp == S))
699+ then if (if (if ((cI.function == "startStaking"))
700+ then (size(cI.payments) == 1)
700701 else false)
701- then (cH.payments[0].assetId == Q)
702+ then (cI.payments[0].assetId == Q)
702703 else false)
703704 then true
704- else if ((cH.function == "stopStaking"))
705- then (size(cH.payments) == 0)
705+ else if ((cI.function == "stopStaking"))
706+ then (size(cI.payments) == 0)
706707 else false
707708 else false
708- let cL = if (if (if ((cH.dApp == T))
709- then (cH.function == "exchange")
709+ let cM = if (if (if ((cI.dApp == T))
710+ then (cI.function == "exchange")
710711 else false)
711712 then (ae == N)
712713 else false)
713714 then true
714715 else if (if ((af == N))
715- then (size(cH.payments) == 1)
716+ then (size(cI.payments) == 1)
716717 else false)
717- then (cH.payments[0].assetId == N)
718+ then (cI.payments[0].assetId == N)
718719 else false
719- let cM = if (if (if ((cH.dApp == U))
720- then (cH.function == "exchange")
720+ let cN = if (if (if ((cI.dApp == U))
721+ then (cI.function == "exchange")
721722 else false)
722723 then (ae == O)
723724 else false)
724725 then true
725726 else if (if ((af == O))
726- then (size(cH.payments) == 1)
727+ then (size(cI.payments) == 1)
727728 else false)
728- then (cH.payments[0].assetId == N)
729+ then (cI.payments[0].assetId == N)
729730 else false
730- let cN = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], G))
731+ let cO = if (if (if (sigVerify(cC.bodyBytes, cC.proofs[0], G))
731732 then true
732- else sigVerify(cB.bodyBytes, cB.proofs[0], H))
733+ else sigVerify(cC.bodyBytes, cC.proofs[0], H))
733734 then true
734- else sigVerify(cB.bodyBytes, cB.proofs[0], I))
735+ else sigVerify(cC.bodyBytes, cC.proofs[0], I))
735736 then true
736- else sigVerify(cB.bodyBytes, cB.proofs[0], K)
737- if (if (if (if (if (if (cI)
738- then true
739- else cJ)
737+ else sigVerify(cC.bodyBytes, cC.proofs[0], K)
738+ if (if (if (if (if (if (cJ)
740739 then true
741740 else cK)
742741 then true
743742 else cL)
744743 then true
745744 else cM)
746- then cN
745+ then true
746+ else cN)
747+ then cO
747748 else false)
748749 then true
749- else cD
750+ else cE
750751 }
751- else cD
752+ else cE
752753 }
753754
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "A_asset_init"
1919
2020 let i = "B_asset_init"
2121
2222 let j = "share_asset_id"
2323
2424 let k = "share_asset_supply"
2525
2626 let l = "commission"
2727
2828 let m = "commission_scale_delimiter"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "asset_priority_"
4545
4646 let v = "script_hash_cpmm"
4747
4848 let w = "init_pool_height"
4949
5050 let x = "admin_pub_1"
5151
5252 let y = "admin_pub_2"
5353
5454 let z = "admin_pub_3"
5555
5656 let A = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
5757
5858 func B (C) = {
5959 let D = getString(A, C)
6060 if ($isInstanceOf(D, "String"))
6161 then {
6262 let E = D
6363 fromBase58String(E)
6464 }
6565 else {
6666 let F = D
6767 throw("Admin public key is empty")
6868 }
6969 }
7070
7171
7272 let G = B(x)
7373
7474 let H = B(y)
7575
7676 let I = B(z)
7777
7878 let J = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
7979
8080 let K = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8181
8282 let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8383
8484 let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8585
8686 let N = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
8787
8888 let O = base58'36mg8NZTaFRDygiVwb8uBnLR51hetJruUCZcxhaVcHj9'
8989
9090 let P = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
9191
9292 let Q = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
9393
9494 let R = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
9595
9696 let S = Address(base58'3MyVqAbmKWh339gF6hy8faWw1jGeTV2wnGE')
9797
9898 let T = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
9999
100100 let U = Address(base58'3Mye9wVR7d2mc6Y5ZJTu11svzgUQ7o8H9dA')
101101
102102 let V = 270000
103103
104104 let W = 234000
105105
106106 let X = valueOrErrorMessage(getInteger(M, r), "Empty keyBasePeriod")
107107
108108 let Y = valueOrErrorMessage(getInteger(M, t), "Empty keyStartHeight")
109109
110110 let Z = valueOrErrorMessage(getInteger(M, s), "Empty keyPeriodLength")
111111
112112 let aa = ((X + ((height - Y) / Z)) + 1)
113113
114114 let ab = getBooleanValue(this, c)
115115
116116 let ac = getStringValue(this, d)
117117
118118 let ad = getStringValue(this, e)
119119
120120 let ae = if ((ac == "WAVES"))
121121 then unit
122122 else fromBase58String(ac)
123123
124124 let af = if ((ad == "WAVES"))
125125 then unit
126126 else fromBase58String(ad)
127127
128128 let ag = {
129129 let D = ae
130130 if ($isInstanceOf(D, "ByteVector"))
131131 then {
132132 let ah = D
133133 value(assetInfo(ah)).name
134134 }
135135 else if ($isInstanceOf(D, "Unit"))
136136 then {
137137 let ai = D
138138 "WAVES"
139139 }
140140 else throw("Match error")
141141 }
142142
143143 let aj = {
144144 let D = af
145145 if ($isInstanceOf(D, "ByteVector"))
146146 then {
147147 let ah = D
148148 value(assetInfo(ah)).name
149149 }
150150 else if ($isInstanceOf(D, "Unit"))
151151 then {
152152 let ai = D
153153 "WAVES"
154154 }
155155 else throw("Match error")
156156 }
157157
158158 let ak = getIntegerValue(this, f)
159159
160160 let al = getIntegerValue(this, g)
161161
162162 let am = fromBase58String(getStringValue(this, j))
163163
164164 let an = getIntegerValue(this, k)
165165
166166 let ao = 3000
167167
168168 let ap = 1200
169169
170170 let aq = 1000000
171171
172172 let ar = 1000
173173
174174 let as = 100000000
175175
176176 let at = 1000
177177
178178 let au = 8
179179
180180 let av = 1000000000
181181
182182 func aw (ax) = {
183183 let D = ax
184184 if ($isInstanceOf(D, "ByteVector"))
185185 then {
186186 let ah = D
187187 assetBalance(this, ah)
188188 }
189189 else if ($isInstanceOf(D, "Unit"))
190190 then {
191191 let ai = D
192192 wavesBalance(this).available
193193 }
194194 else throw("Match error")
195195 }
196196
197197
198198 func ay (ax) = {
199199 let az = {
200200 let D = ax
201201 if ($isInstanceOf(D, "ByteVector"))
202202 then {
203203 let aA = D
204204 if (if ((aA == N))
205205 then true
206206 else (aA == O))
207207 then getInteger(R, ((("rpd_balance_" + toBase58String(aA)) + "_") + toString(this)))
208208 else if ((aA == Q))
209209 then getInteger(S, ((("%s%s%s__stakingBalance__" + toBase58String(aA)) + "__") + toString(this)))
210210 else 0
211211 }
212212 else if ($isInstanceOf(D, "Unit"))
213213 then 0
214214 else throw("Match error")
215215 }
216216 let D = az
217217 if ($isInstanceOf(D, "Int"))
218218 then {
219219 let aB = D
220220 aB
221221 }
222222 else 0
223223 }
224224
225225
226226 func aC (ax) = {
227227 let D = ax
228228 if ($isInstanceOf(D, "ByteVector"))
229229 then {
230230 let ah = D
231231 if (if ((ah == N))
232232 then true
233233 else (ah == P))
234234 then true
235235 else false
236236 }
237237 else if ($isInstanceOf(D, "Unit"))
238238 then {
239239 let ai = D
240240 true
241241 }
242242 else throw("Match error")
243243 }
244244
245245
246246 let aD = ay(ae)
247247
248248 let aE = ay(af)
249249
250250 let aF = getIntegerValue(this, h)
251251
252252 let aG = getIntegerValue(this, i)
253253
254254 let aH = (ak - aD)
255255
256256 let aI = (al - aE)
257257
258258 let aJ = (aw(ae) + aD)
259259
260260 let aK = (aw(af) + aE)
261261
262262 let aL = if ((aJ >= ak))
263263 then (aK >= al)
264264 else false
265265
266266 func aM (ax) = {
267267 let D = ax
268268 if ($isInstanceOf(D, "ByteVector"))
269269 then {
270270 let ah = D
271271 let aN = toBase58String(ah)
272272 let aO = valueOrErrorMessage(assetInfo(ah), (("Asset " + aN) + " doesn't exist"))
273273 $Tuple3(aN, aO.name, aO.decimals)
274274 }
275275 else if ($isInstanceOf(D, "Unit"))
276276 then {
277277 let ai = D
278278 $Tuple3("WAVES", "WAVES", 8)
279279 }
280280 else throw("Match error")
281281 }
282282
283283
284284 func aP (aQ) = if ((aQ == "WAVES"))
285285 then $Tuple3("WAVES", "WAVES", 8)
286286 else {
287287 let aN = aQ
288288 let ah = fromBase58String(aQ)
289289 let aO = valueOrErrorMessage(assetInfo(ah), (("Asset " + aN) + " doesn't exist"))
290290 $Tuple3(aN, aO.name, aO.decimals)
291291 }
292292
293293
294294 func aR (aS) = [BooleanEntry(c, false), StringEntry(n, aS)]
295295
296296
297297 func aT (aU,ax,aV) = if (if ((ax == N))
298298 then true
299299 else (ax == Q))
300300 then {
301301 let aW = if ((ax == N))
302302 then (V * (if ((aV == O))
303303 then 2
304304 else 1))
305305 else if ((ax == Q))
306306 then W
307307 else 0
308308 let aX = (aU - aW)
309309 if ((0 >= aX))
310310 then throw((((("Insufficient amount " + toString(aU)) + " to deduct staking fee ") + toString(aW)) + "USDN/EURN"))
311311 else aX
312312 }
313313 else aU
314314
315315
316316 func aY (ax,aV) = if ((ax == N))
317317 then (V * (if ((aV == O))
318318 then 2
319319 else 1))
320320 else if ((ax == Q))
321321 then W
322322 else 0
323323
324324
325325 func aZ (aU,ba,bb) = throw((((((((("Insufficient DApp balance to pay " + toString(aU)) + " ") + bb) + " due to staking. Available: ") + toString(ba)) + " ") + bb) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
326326
327327
328328 func bc (bd,be) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bd)) + " ") + ag) + " and ") + toString(be)) + " ") + aj) + " due to staking. Available: ") + toString(aH)) + " ") + ag) + " and ") + toString(aI)) + " ") + aj) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
329329
330330
331331 func bf () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(aJ)) + " ") + ag) + ", ") + toString(aK)) + " ") + aj) + ". State: ") + toString(ak)) + " ") + ag) + ", ") + toString(al)) + " ") + aj))
332332
333333
334334 @Callable(aB)
335335 func init (bg) = {
336336 let bh = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
337337 let bi = bh._1
338338 let bj = bh._2
339339 let bk = $Tuple2(aB.payments[1].amount, aB.payments[1].assetId)
340340 let bl = bk._1
341341 let bm = bk._2
342342 let bn = $Tuple2(aB.payments[2].amount, aB.payments[2].assetId)
343343 let bo = bn._1
344344 let bp = bn._2
345345 let bq = isDataStorageUntouched(this)
346346 let br = scriptHash(this)
347347 let bs = addressFromStringValue(bg)
348+ let bt = value(getBinary(A, v))
348349 if ((aB.caller == this))
349350 then throw("You can't call yourself")
350351 else if (if ((bp != P))
351352 then true
352353 else (bo != av))
353354 then throw("You need to attach 10 SWOP tokens")
354355 else if (if (!(aC(bj)))
355356 then !(aC(bm))
356357 else false)
357358 then throw("One of assets must be USDN, WAVES or SWOP")
358- else if (if ((br != value(getBinary(A, v))))
359+ else if (if ((br != bt))
359360 then true
360361 else !(bq))
361362 then throw("Unexpected script was found.")
362363 else if (isDefined(getBoolean(this, c)))
363364 then throw("DApp is already active")
364365 else if ((bj == bm))
365366 then throw("Assets must be different")
366367 else {
367- let bt = {
368+ let bu = {
368369 let D = bj
369370 if ($isInstanceOf(D, "ByteVector"))
370371 then {
371372 let ah = D
372373 toBase58String(ah)
373374 }
374375 else if ($isInstanceOf(D, "Unit"))
375376 then {
376377 let ai = D
377378 "WAVES"
378379 }
379380 else throw("Match error")
380381 }
381- let bu = {
382+ let bv = {
382383 let D = bm
383384 if ($isInstanceOf(D, "ByteVector"))
384385 then {
385386 let ah = D
386387 toBase58String(ah)
387388 }
388389 else if ($isInstanceOf(D, "Unit"))
389390 then {
390391 let ai = D
391392 "WAVES"
392393 }
393394 else throw("Match error")
394395 }
395- let bv = valueOrElse(getInteger(A, (u + bt)), 999999)
396396 let bw = valueOrElse(getInteger(A, (u + bu)), 999999)
397- let bx = if ((bw > bv))
397+ let bx = valueOrElse(getInteger(A, (u + bv)), 999999)
398+ let by = if ((bx > bw))
398399 then $Tuple4(bl, bm, bi, bj)
399400 else $Tuple4(bi, bj, bl, bm)
400- let by = bx._1
401- let bz = bx._2
402- let bA = bx._3
403- let bB = bx._4
404- let bC = aM(bz)
405- let bD = bC._1
406- let bE = bC._2
407- let bF = bC._3
408- let bG = aM(bB)
409- let bH = bG._1
410- let bI = bG._2
411- let bJ = bG._3
412- let bK = [toString(this), ((bE + "_") + bI), bD, bH]
413- let bL = invoke(A, "addPool", bK, nil)
414- if ((bL == bL))
401+ let bz = by._1
402+ let bA = by._2
403+ let bB = by._3
404+ let bC = by._4
405+ let bD = aM(bA)
406+ let bE = bD._1
407+ let bF = bD._2
408+ let bG = bD._3
409+ let bH = aM(bC)
410+ let bI = bH._1
411+ let bJ = bH._2
412+ let bK = bH._3
413+ let bL = [toString(this), ((bF + "_") + bJ), bE, bI]
414+ let bM = invoke(A, "addPool", bL, nil)
415+ if ((bM == bM))
415416 then if (!(isDefined(getString(A, ("pool_" + toString(this))))))
416417 then throw("Pool is not added")
417418 else {
418- let bM = ((("s" + take(bE, 7)) + "_") + take(bI, 7))
419- let bN = ((((("ShareToken of SwopFi protocol for " + bE) + " and ") + bI) + " at address ") + toString(this))
420- let bO = ((bF + bJ) / 2)
421- let bP = pow(by, bF, 5, 1, bF, DOWN)
422- let bQ = pow(bA, bJ, 5, 1, bJ, DOWN)
423- let bR = pow(10, 0, bO, 0, 0, DOWN)
424- let bS = fraction(bP, bQ, bR)
425- let bT = Issue(bM, bN, bS, bO, true)
426- let bU = calculateAssetId(bT)
427- let bV = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bD), StringEntry(e, bH), IntegerEntry(f, by), IntegerEntry(g, bA), IntegerEntry(l, ao), IntegerEntry(m, aq), bT, StringEntry(j, toBase58String(bU)), IntegerEntry(k, bS), IntegerEntry(w, height), ScriptTransfer(bs, bS, bU), ScriptTransfer(L, av, P)]
428- bV
419+ let bN = ((("s" + take(bF, 7)) + "_") + take(bJ, 7))
420+ let bO = ((((("ShareToken of SwopFi protocol for " + bF) + " and ") + bJ) + " at address ") + toString(this))
421+ let bP = ((bG + bK) / 2)
422+ let bQ = pow(bz, bG, 5, 1, bG, DOWN)
423+ let bR = pow(bB, bK, 5, 1, bK, DOWN)
424+ let bS = pow(10, 0, bP, 0, 0, DOWN)
425+ let bT = fraction(bQ, bR, bS)
426+ let bU = Issue(bN, bO, bT, bP, true)
427+ let bV = calculateAssetId(bU)
428+ let bW = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bE), StringEntry(e, bI), IntegerEntry(f, bz), IntegerEntry(g, bB), IntegerEntry(l, ao), IntegerEntry(m, aq), bU, StringEntry(j, toBase58String(bV)), IntegerEntry(k, bT), IntegerEntry(w, height), ScriptTransfer(bs, bT, bV), ScriptTransfer(L, av, P)]
429+ bW
429430 }
430431 else throw("Strict value is not equal to itself.")
431432 }
432433 }
433434
434435
435436
436437 @Callable(aB)
437-func keepLimitForFirstHarvest (bW) = if (!(ab))
438+func keepLimitForFirstHarvest (bX) = if (!(ab))
438439 then throw("DApp is inactive at this moment")
439440 else if (!(containsElement([G, H, I, K], aB.callerPublicKey)))
440441 then throw("Only admin can call this function")
441- else [IntegerEntry(q, bW)]
442+ else [IntegerEntry(q, bX)]
442443
443444
444445
445446 @Callable(aB)
446-func replenishWithTwoTokens (bX) = {
447- let bz = aB.payments[0].assetId
448- let bB = aB.payments[1].assetId
449- let by = aT(aB.payments[0].amount, bz, bB)
450- let bA = aT(aB.payments[1].amount, bB, bz)
447+func replenishWithTwoTokens (bY) = {
448+ let bA = aB.payments[0].assetId
449+ let bC = aB.payments[1].assetId
450+ let bz = aT(aB.payments[0].amount, bA, bC)
451+ let bB = aT(aB.payments[1].amount, bC, bA)
451452 if (if ((ak == 0))
452453 then (al == 0)
453454 else false)
454455 then {
455- let bY = aM(bz)
456- let bD = bY._1
457- let bE = bY._2
458- let bF = bY._3
459- let bZ = aM(bB)
460- let bH = bZ._1
461- let bI = bZ._2
462- let bJ = bZ._3
463- let ca = fraction(fraction(aF, as, by), ar, fraction(aG, as, bA))
464- if ((bz == bB))
456+ let bZ = aM(bA)
457+ let bE = bZ._1
458+ let bF = bZ._2
459+ let bG = bZ._3
460+ let ca = aM(bC)
461+ let bI = ca._1
462+ let bJ = ca._2
463+ let bK = ca._3
464+ let cb = fraction(fraction(aF, as, bz), ar, fraction(aG, as, bB))
465+ if ((bA == bC))
465466 then throw("Assets must be different")
466467 else {
467- let bO = ((bF + bJ) / 2)
468- let bS = fraction(pow(by, bF, 5, 1, bF, DOWN), pow(bA, bJ, 5, 1, bJ, DOWN), pow(10, 0, bO, 0, 0, DOWN))
468+ let bP = ((bG + bK) / 2)
469+ let bT = fraction(pow(bz, bG, 5, 1, bG, DOWN), pow(bB, bK, 5, 1, bK, DOWN), pow(10, 0, bP, 0, 0, DOWN))
469470 if (!(ab))
470471 then throw("DApp is inactive at this moment")
471- else if (if ((0 > bX))
472+ else if (if ((0 > bY))
472473 then true
473- else (bX > at))
474- then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bX)))
474+ else (bY > at))
475+ then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bY)))
475476 else if ((size(aB.payments) != 2))
476477 then throw("Two attached assets expected")
477- else if (if ((((ar * (at - bX)) / at) > ca))
478+ else if (if ((((ar * (at - bY)) / at) > cb))
478479 then true
479- else (ca > ((ar * (at + bX)) / at)))
480+ else (cb > ((ar * (at + bY)) / at)))
480481 then throw("Incorrect assets amount: amounts must have the contract ratio")
481- else if (if ((bz != ae))
482+ else if (if ((bA != ae))
482483 then true
483- else (bB != af))
484+ else (bC != af))
484485 then throw(((("Incorrect assets attached. Expected: " + ac) + " and ") + ad))
485- else if ((bS == 0))
486+ else if ((bT == 0))
486487 then throw("Too small amount to replenish")
487488 else if (!(aL))
488- then ([ScriptTransfer(aB.caller, by, bz), ScriptTransfer(aB.caller, bA, bB)] ++ bf())
489- else [Reissue(am, bS, true), IntegerEntry(f, by), IntegerEntry(g, bA), IntegerEntry(k, bS), ScriptTransfer(aB.caller, bS, am)]
489+ then ([ScriptTransfer(aB.caller, bz, bA), ScriptTransfer(aB.caller, bB, bC)] ++ bf())
490+ else [Reissue(am, bT, true), IntegerEntry(f, bz), IntegerEntry(g, bB), IntegerEntry(k, bT), ScriptTransfer(aB.caller, bT, am)]
490491 }
491492 }
492493 else {
493- let ca = fraction(fraction(ak, as, by), ar, fraction(al, as, bA))
494- let cb = fraction(by, as, ak)
495- let cc = fraction(bA, as, al)
496- let cd = fraction(min([cb, cc]), an, as)
494+ let cb = fraction(fraction(ak, as, bz), ar, fraction(al, as, bB))
495+ let cc = fraction(bz, as, ak)
496+ let cd = fraction(bB, as, al)
497+ let ce = fraction(min([cc, cd]), an, as)
497498 if (!(ab))
498499 then throw("DApp is inactive at this moment")
499- else if (if ((0 > bX))
500+ else if (if ((0 > bY))
500501 then true
501- else (bX > at))
502- then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bX)))
502+ else (bY > at))
503+ then throw(((("Slippage tolerance must be between 0 and " + toString(at)) + " inclusively. Actual: ") + toString(bY)))
503504 else if ((size(aB.payments) != 2))
504505 then throw("Two attached assets expected")
505- else if (if ((bz != ae))
506+ else if (if ((bA != ae))
506507 then true
507- else (bB != af))
508+ else (bC != af))
508509 then throw(((("Incorrect assets attached. Expected: " + ac) + " and ") + ad))
509- else if (if ((((ar * (at - bX)) / at) > ca))
510+ else if (if ((((ar * (at - bY)) / at) > cb))
510511 then true
511- else (ca > ((ar * (at + bX)) / at)))
512+ else (cb > ((ar * (at + bY)) / at)))
512513 then throw("Incorrect assets amount: amounts must have the contract ratio")
513- else if ((cd == 0))
514+ else if ((ce == 0))
514515 then throw("Too small amount to replenish")
515516 else if (!(aL))
516- then ([ScriptTransfer(aB.caller, by, bz), ScriptTransfer(aB.caller, bA, bB)] ++ bf())
517- else [IntegerEntry(f, (ak + by)), IntegerEntry(g, (al + bA)), IntegerEntry(k, (an + cd)), Reissue(am, cd, true), ScriptTransfer(aB.caller, cd, am)]
517+ then ([ScriptTransfer(aB.caller, bz, bA), ScriptTransfer(aB.caller, bB, bC)] ++ bf())
518+ else [IntegerEntry(f, (ak + bz)), IntegerEntry(g, (al + bB)), IntegerEntry(k, (an + ce)), Reissue(am, ce, true), ScriptTransfer(aB.caller, ce, am)]
518519 }
519520 }
520521
521522
522523
523524 @Callable(aB)
524525 func withdraw () = {
525- let ce = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
526- let cf = ce._1
527- let cg = ce._2
528- let ch = aT(fraction(cf, ak, an), ae, af)
529- let ci = aT(fraction(cf, al, an), af, ae)
526+ let cf = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
527+ let cg = cf._1
528+ let ch = cf._2
529+ let ci = aT(fraction(cg, ak, an), ae, af)
530+ let cj = aT(fraction(cg, al, an), af, ae)
530531 if (!(ab))
531532 then throw("DApp is inactive at this moment")
532533 else if ((size(aB.payments) != 1))
533534 then throw("One attached payment expected")
534- else if ((cg != am))
535+ else if ((ch != am))
535536 then throw(("Incorrect asset attached. Expected: " + toBase58String(am)))
536537 else if (!(aL))
537- then ([ScriptTransfer(aB.caller, cf, cg)] ++ bf())
538- else if (if ((ch > aH))
538+ then ([ScriptTransfer(aB.caller, cg, ch)] ++ bf())
539+ else if (if ((ci > aH))
539540 then true
540- else (ci > aI))
541- then bc(ch, ci)
542- else [IntegerEntry(f, (ak - ch)), IntegerEntry(g, (al - ci)), IntegerEntry(k, (an - cf)), Burn(am, cf), ScriptTransfer(aB.caller, ch, ae), ScriptTransfer(aB.caller, ci, af)]
541+ else (cj > aI))
542+ then bc(ci, cj)
543+ else [IntegerEntry(f, (ak - ci)), IntegerEntry(g, (al - cj)), IntegerEntry(k, (an - cg)), Burn(am, cg), ScriptTransfer(aB.caller, ci, ae), ScriptTransfer(aB.caller, cj, af)]
543544 }
544545
545546
546547
547548 @Callable(aB)
548-func exchange (cj) = {
549- let ck = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
550- let cf = ck._1
551- let cg = ck._2
552- func cl (cm,cn) = {
553- let co = fraction(cn, cf, (cf + cm))
554- let cp = fraction(co, (aq - ao), aq)
555- let cq = fraction(co, ap, aq)
556- if ((cj > cp))
557- then throw(((("Calculated amount to receive " + toString(cp)) + " is less than specified minimum ") + toString(cj)))
558- else $Tuple3(co, cp, cq)
549+func exchange (ck) = {
550+ let cl = $Tuple2(aB.payments[0].amount, aB.payments[0].assetId)
551+ let cg = cl._1
552+ let ch = cl._2
553+ func cm (cn,co) = {
554+ let cp = fraction(co, cg, (cg + cn))
555+ let cq = fraction(cp, (aq - ao), aq)
556+ let cr = fraction(cp, ap, aq)
557+ if ((ck > cq))
558+ then throw(((("Calculated amount to receive " + toString(cq)) + " is less than specified minimum ") + toString(ck)))
559+ else $Tuple3(cp, cq, cr)
559560 }
560561
561562 if (!(ab))
562563 then throw("DApp is inactive at this moment")
563564 else if (if ((ak == 0))
564565 then true
565566 else (al == 0))
566567 then throw("Can't exchange with zero balance")
567- else if ((0 >= cj))
568- then throw(("Minimal amount to receive must be positive. Actual: " + toString(cj)))
568+ else if ((0 >= ck))
569+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(ck)))
569570 else if ((size(aB.payments) != 1))
570571 then throw("One attached payment expected")
571572 else if (!(aL))
572- then ([ScriptTransfer(aB.caller, cf, cg)] ++ bf())
573- else if ((cg == ae))
573+ then ([ScriptTransfer(aB.caller, cg, ch)] ++ bf())
574+ else if ((ch == ae))
574575 then {
575- let cr = af
576- let cs = cl(ak, al)
577- let co = cs._1
578- let cp = cs._2
579- let cq = cs._3
580- let ct = (ak + cf)
581- let cu = ((al - cp) - cq)
582- if (if ((aD >= ct))
576+ let cs = af
577+ let ct = cm(ak, al)
578+ let cp = ct._1
579+ let cq = ct._2
580+ let cr = ct._3
581+ let cu = (ak + cg)
582+ let cv = ((al - cq) - cr)
583+ if (if ((aD >= cu))
583584 then true
584- else (aE >= cu))
585- then aZ(cp, aI, aj)
586- else [IntegerEntry(f, ct), IntegerEntry(g, cu), ScriptTransfer(aB.caller, cp, cr), ScriptTransfer(L, cq, cr)]
585+ else (aE >= cv))
586+ then aZ(cq, aI, aj)
587+ else [IntegerEntry(f, cu), IntegerEntry(g, cv), ScriptTransfer(aB.caller, cq, cs), ScriptTransfer(L, cr, cs)]
587588 }
588- else if ((cg == af))
589+ else if ((ch == af))
589590 then {
590- let cr = ae
591- let cv = cl(al, ak)
592- let co = cv._1
593- let cp = cv._2
594- let cq = cv._3
595- let ct = ((ak - cp) - cq)
596- let cu = (al + cf)
597- if (if ((aD >= ct))
591+ let cs = ae
592+ let cw = cm(al, ak)
593+ let cp = cw._1
594+ let cq = cw._2
595+ let cr = cw._3
596+ let cu = ((ak - cq) - cr)
597+ let cv = (al + cg)
598+ if (if ((aD >= cu))
598599 then true
599- else (aE >= cu))
600- then aZ(cp, aH, ag)
601- else [IntegerEntry(f, ct), IntegerEntry(g, cu), ScriptTransfer(aB.caller, cp, cr), ScriptTransfer(L, cq, cr)]
600+ else (aE >= cv))
601+ then aZ(cq, aH, ag)
602+ else [IntegerEntry(f, cu), IntegerEntry(g, cv), ScriptTransfer(aB.caller, cq, cs), ScriptTransfer(L, cr, cs)]
602603 }
603604 else throw(((("Incorrect asset attached. Expected: " + ac) + " or ") + ad))
604605 }
605606
606607
607608
608609 @Callable(aB)
609610 func shutdown () = if (!(ab))
610611 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
611612 else if (!(containsElement([G, H, I, J], aB.callerPublicKey)))
612613 then throw("Only admin can call this function")
613614 else aR("Paused by admin")
614615
615616
616617
617618 @Callable(aB)
618619 func activate () = if (ab)
619620 then throw("DApp is already active")
620621 else if (!(containsElement([G, H, I, J], aB.callerPublicKey)))
621622 then throw("Only admin can call this function")
622623 else [BooleanEntry(c, true), DeleteEntry(n)]
623624
624625
625626
626627 @Callable(aB)
627-func takeIntoAccountExtraFunds (cw) = {
628- let cx = (aJ - ak)
629- let cy = (aK - al)
630- let cz = (cx - (if ((ae == unit))
631- then cw
628+func takeIntoAccountExtraFunds (cx) = {
629+ let cy = (aJ - ak)
630+ let cz = (aK - al)
631+ let cA = (cy - (if ((ae == unit))
632+ then cx
632633 else 0))
633- let cA = (cy - (if ((af == unit))
634- then cw
634+ let cB = (cz - (if ((af == unit))
635+ then cx
635636 else 0))
636637 if (!(ab))
637638 then throw("DApp is inactive at this moment")
638639 else if ((aB.caller != this))
639640 then throw("Only the DApp itself can call this function")
640- else if ((0 > cw))
641- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cw)))
642- else if (if ((0 > cx))
641+ else if ((0 > cx))
642+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cx)))
643+ else if (if ((0 > cy))
643644 then true
644- else (0 > cy))
645+ else (0 > cz))
645646 then aR("Enroll amount negative")
646- else if (if ((0 > cz))
647+ else if (if ((0 > cA))
647648 then true
648- else (0 > cA))
649+ else (0 > cB))
649650 then throw("Too large amountLeave")
650- else [IntegerEntry(f, (ak + cz)), IntegerEntry(g, (al + cA)), IntegerEntry(("last_income_" + ac), cz), IntegerEntry(("last_income_" + ad), cA)]
651+ else [IntegerEntry(f, (ak + cA)), IntegerEntry(g, (al + cB)), IntegerEntry(("last_income_" + ac), cA), IntegerEntry(("last_income_" + ad), cB)]
651652 }
652653
653654
654655
655656 @Callable(aB)
656657 func enableFirstHarvest () = [BooleanEntry(o, true), IntegerEntry(p, (Y + (aa * Z)))]
657658
658659
659-@Verifier(cB)
660-func cC () = {
661- let cD = {
662- let cE = if (sigVerify(cB.bodyBytes, cB.proofs[0], G))
660+@Verifier(cC)
661+func cD () = {
662+ let cE = {
663+ let cF = if (sigVerify(cC.bodyBytes, cC.proofs[0], G))
663664 then 1
664665 else 0
665- let cF = if (sigVerify(cB.bodyBytes, cB.proofs[1], H))
666+ let cG = if (sigVerify(cC.bodyBytes, cC.proofs[1], H))
666667 then 1
667668 else 0
668- let cG = if (sigVerify(cB.bodyBytes, cB.proofs[2], I))
669+ let cH = if (sigVerify(cC.bodyBytes, cC.proofs[2], I))
669670 then 1
670671 else 0
671- (((cE + cF) + cG) >= 2)
672+ (((cF + cG) + cH) >= 2)
672673 }
673- let D = cB
674+ let D = cC
674675 if ($isInstanceOf(D, "InvokeScriptTransaction"))
675676 then {
676- let cH = D
677- let cI = if ((cH.dApp == this))
678- then (cH.function == "takeIntoAccountExtraFunds")
677+ let cI = D
678+ let cJ = if ((cI.dApp == this))
679+ then (cI.function == "takeIntoAccountExtraFunds")
679680 else false
680- let cJ = if ((cH.dApp == this))
681- then (cH.function == "enableFirstHarvest")
681+ let cK = if ((cI.dApp == this))
682+ then (cI.function == "enableFirstHarvest")
682683 else false
683- let cK = if (if ((cH.dApp == R))
684- then if (if (if ((cH.function == "lockNeutrino"))
685- then (size(cH.payments) == 1)
684+ let cL = if (if ((cI.dApp == R))
685+ then if (if (if ((cI.function == "lockNeutrino"))
686+ then (size(cI.payments) == 1)
686687 else false)
687- then if ((cH.payments[0].assetId == N))
688+ then if ((cI.payments[0].assetId == N))
688689 then true
689- else (cH.payments[0].assetId == O)
690+ else (cI.payments[0].assetId == O)
690691 else false)
691692 then true
692- else if ((cH.function == "unlockNeutrino"))
693- then (size(cH.payments) == 0)
693+ else if ((cI.function == "unlockNeutrino"))
694+ then (size(cI.payments) == 0)
694695 else false
695696 else false)
696697 then true
697- else if ((cH.dApp == S))
698- then if (if (if ((cH.function == "startStaking"))
699- then (size(cH.payments) == 1)
698+ else if ((cI.dApp == S))
699+ then if (if (if ((cI.function == "startStaking"))
700+ then (size(cI.payments) == 1)
700701 else false)
701- then (cH.payments[0].assetId == Q)
702+ then (cI.payments[0].assetId == Q)
702703 else false)
703704 then true
704- else if ((cH.function == "stopStaking"))
705- then (size(cH.payments) == 0)
705+ else if ((cI.function == "stopStaking"))
706+ then (size(cI.payments) == 0)
706707 else false
707708 else false
708- let cL = if (if (if ((cH.dApp == T))
709- then (cH.function == "exchange")
709+ let cM = if (if (if ((cI.dApp == T))
710+ then (cI.function == "exchange")
710711 else false)
711712 then (ae == N)
712713 else false)
713714 then true
714715 else if (if ((af == N))
715- then (size(cH.payments) == 1)
716+ then (size(cI.payments) == 1)
716717 else false)
717- then (cH.payments[0].assetId == N)
718+ then (cI.payments[0].assetId == N)
718719 else false
719- let cM = if (if (if ((cH.dApp == U))
720- then (cH.function == "exchange")
720+ let cN = if (if (if ((cI.dApp == U))
721+ then (cI.function == "exchange")
721722 else false)
722723 then (ae == O)
723724 else false)
724725 then true
725726 else if (if ((af == O))
726- then (size(cH.payments) == 1)
727+ then (size(cI.payments) == 1)
727728 else false)
728- then (cH.payments[0].assetId == N)
729+ then (cI.payments[0].assetId == N)
729730 else false
730- let cN = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], G))
731+ let cO = if (if (if (sigVerify(cC.bodyBytes, cC.proofs[0], G))
731732 then true
732- else sigVerify(cB.bodyBytes, cB.proofs[0], H))
733+ else sigVerify(cC.bodyBytes, cC.proofs[0], H))
733734 then true
734- else sigVerify(cB.bodyBytes, cB.proofs[0], I))
735+ else sigVerify(cC.bodyBytes, cC.proofs[0], I))
735736 then true
736- else sigVerify(cB.bodyBytes, cB.proofs[0], K)
737- if (if (if (if (if (if (cI)
738- then true
739- else cJ)
737+ else sigVerify(cC.bodyBytes, cC.proofs[0], K)
738+ if (if (if (if (if (if (cJ)
740739 then true
741740 else cK)
742741 then true
743742 else cL)
744743 then true
745744 else cM)
746- then cN
745+ then true
746+ else cN)
747+ then cO
747748 else false)
748749 then true
749- else cD
750+ else cE
750751 }
751- else cD
752+ else cE
752753 }
753754

github/deemru/w8io/873ac7e 
191.86 ms