tx · Fr3Mtq7anneY4J3W6BVV31DvmTBogXxwt4BzAiBe8UBx

3P4Dn8Ghz4QDH5SAL4xQi6cW2FhuKq6gnyC:  -0.03100000 Waves

2022.11.16 15:32 [3385051] smart account 3P4Dn8Ghz4QDH5SAL4xQi6cW2FhuKq6gnyC > SELF 0.00000000 Waves

{ "type": 13, "id": "Fr3Mtq7anneY4J3W6BVV31DvmTBogXxwt4BzAiBe8UBx", "fee": 3100000, "feeAssetId": null, "timestamp": 1668601735746, "version": 1, "sender": "3P4Dn8Ghz4QDH5SAL4xQi6cW2FhuKq6gnyC", "senderPublicKey": "2v3UkbMeYo6k7kxtMa3riRL6SjgNAkkcEJV6QsGYsNKU", "proofs": [ "x9xUnuBXyGjxvfGzaWstc6fnFoLNxwuGPtLCpAZMyyAsAr9GbGUwMbQTDPkcTZ2WdkcB1qFwmRG4RXU2vwPdcU6" ], "script": "base64:BgKhIggCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgZrZXlGZWUiA2ZlZSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIDdG9lIgNvclYiBnNlbmRyViIGbWF0Y2hWIgNzdHIiByRtYXRjaDAiBnZhbFN0ciIEc3RyZiIEYWRkciIDa2V5IgRpbnRmIgh0aHJvd0VyciIDbXNnIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNjgzMDcwMTYiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc0NDcxNzc5MiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCIEZ2V0RCICeHAiAW4iA3hwMCIDeHAxIgphUHJlY2lzaW9uIgFhIgFzIgNhbm4iC3hwMF94cDFfbl9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiBGNhbGMiA2FjYyIDY3VyIg0kdDAyMjM0NDIyMzY0IgFkIgVmb3VuZCICZHAiBWROZXh0IgVkRGlmZiIDYXJyIg0kdDAyMjc4NTIyODMyIgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIzMzMyMjMzNTIiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjM2NTkyMzcwNiINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSIPbHBBc3NldEVtaXNzaW9uIg1jaGVjaEVtaXNzaW9uIg0kdDAyNDQ4OTI0OTUxIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjQ5NTcyNTEzMyILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNTEzNzI1Mzc2IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyNzM3ODI3NDg2IgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI3Njc2Mjc5ODMiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiIBbSICcG0iAnBkIglpc01hbmFnZXIiAnBrIgJtbSIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgZjaGVja3MiDSR0MDMzMzQ1MzM1MDAiB2VzdGltTFAiB21heFNscGciBmVzdFB1dCIJb3V0QW10QW10Ig1pc0dldERpc2FibGVkIg0kdDAzNjEyMjM2Mjc3Ig1scEFzc2V0QW1vdW50IgpscEVtaXNzaW9uIgVpbmRleCIEbmV3WSICZHkiC3RvdGFsR2V0UmF3Ig0kdDAzNzA2NzM3MTE2Ig0kdDAzNzQ2MTM3NTc2Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0MTQxNDQxNjAyIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDE4NjE0MTk2NCINJHQwNDIyNDM0MjM0NyIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFh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YVAFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYVABAmFSAQJhUwkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFTBQFyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVMFAXMJANkEAQkAkQMCBQJhUwUBdAkBAmFPAQkAkQMCBQJhUwUBdQkBAmFPAQkAkQMCBQJhUwUBdgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVMFAXgAAmFUCQECYVIBCQECYUsAAAJhVQUCYVQAAmFWCAUCYVUCXzEAAmFXCAUCYVUCXzIAAmFYCAUCYVUCXzMAAmFZCAUCYVUCXzQAAmFaCAUCYVUCXzUAAmJhCAUCYVUCXzYAAmJiCAUCYVUCXzcBAmJjAAkAtQkCCQECYXoCBQJhRgkBAmFpAAUBbAACYmQJAQJiYwAAAmJlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZAUBQQIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZAUBQwIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZAUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJkBQFCAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJiaQoCYmoCYmsCYmwCYm0CYm4CYm8CYnACYnECYnICYnMJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJqCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzBQNuaWwFAWwBAmJ0BgJidQJidgJidwJibQJicAJicQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQUDbmlsBQFsAQJieAECYnkDCQAAAgUCYnkCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJ5AQJiegICYkECYkIJALwCAwUCYkEFAWMFAmJCAQJiQwMCYkQCYkUCYkYEAmJHCQC8AgMJALgCAgUCYkQFAmJFBQFiBQJiRQQCYkgJAL8CAgkAuAICBQJiRgkBAVABBQJiRwUBZAMJAQEhAQUCYkgJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYkcJAJQKAgUCYkgJAJkDAQkAzAgCBQJiRAkAzAgCBQJiRQUDbmlsAQJiSQMCYkoCYksCYkwEAmJHCQC8AgMFAmJLBQFiBQJiSgQCYk0JAL8CAgUCYkwFAmJHAwMFAmJNBgkAvwICBQJiSwUCYkoJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJLAgEgCQCmAwEFAmJKAgEgCQCmAwEFAmJHAgEgCQCmAwEFAmJMBQJiTQECYk4EAmJPAmJQAmJRAmJSBAJiUwkBAUYCBQJiUQUCYk8EAmJUCQEBRgIFAmJSBQJiUAkBAmJ6AgUCYlQFAmJTAQJiVQMCYlECYlICYlYEAmJXCQECYUsABAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJXBQF3BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJXBQF4BAJiWgkBAmJOBAUCYlgFAmJZBQJiUQUCYlIEAmJCCQEBRgIFAmJRBQJiWAQCYkEJAQFGAgUCYlIFAmJZBAJjYQkBAUYCBQJiVgUBYQQCY2IJAQJiegIFAmJCBQJjYQQCY2MJAQJiegIFAmJBBQJjYQkAzAgCBQJiWgkAzAgCBQJjYgkAzAgCBQJjYwUDbmlsAQJjZAMCYlECYlICYlYEAmNlCQECYlUDBQJiUQUCYlIFAmJWCQDMCAIJAQFJAgkAkQMCBQJjZQAABQFhCQDMCAIJAQFJAgkAkQMCBQJjZQABBQFhCQDMCAIJAQFJAgkAkQMCBQJjZQACBQFhBQNuaWwBAmNmAQJjZwQCY2gJAGsDBQJjZwUCYWgFAWEJAJQKAgkAZQIFAmNnBQJjaAUCY2gBAmNpBAJjagJjawJjbAJjbQQCYlcJAQJhSwAEAmNuCQCRAwIFAmJXBQF0BAJjbwkAkQMCBQJiVwUBdQQCY3AJAJEDAgUCYlcFAXYEAmNxCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXcEAmNyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXgEAmNzCQCRAwIFAmJXBQFzBAJjdAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNuAgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmNuBQJjawkAAgECD1dyb25nIHBtdCBhc3NldAQCY3UJAQJieAEFAmNvBAJjdgkBAUYCBQJjdQUCY3EEAmN3CQECYngBBQJjcAQCY3gJAQFGAgUCY3cFAmNyBAJjeQkBAmJ6AgUCY3gFAmN2BAJjegkBAUkCBQJjeQUBYQQCY0EJAQFGAgUCY2wFAWEEAmNCCQEBRgIFAmN0BQFhBAJjQwkAvAIDBQJjdgUCY0EFAmNCBAJjRAkAvAIDBQJjeAUCY0EFAmNCBAJjRQkBAUkCBQJjQwUCY3EEAmNGCQEBSQIFAmNEBQJjcgQCY0cDCQAAAgUCY2oCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNtBQJjRQMJAAACBQJjbwIFV0FWRVMFBHVuaXQJANkEAQUCY28JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY20FAmNGAwkAAAIFAmNwAgVXQVZFUwUEdW5pdAkA2QQBBQJjcAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAmNtBQJjagkBAmJ0BgUCY0UFAmNGBQJjbAUCY3oFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY3oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY3oFA25pbAkAnAoKBQJjRQUCY0YFAmNvBQJjcAUCY3UFAmN3BQJjdAUCY3kFAmNzBQJjRwECY0gNAmNqAmJGAmNJAmNKAmNLAmNMAmNtAmNNAmNOAmNPAmNQAmNRAmNSBAJiVwkBAmFLAAQCY24JANkEAQkAkQMCBQJiVwUBdAQCY1MJAJEDAgUCYlcFAXUEAmNUCQCRAwIFAmJXBQF2BAJjVQkAkQMCBQJiVwUBeQQCY1YJAJEDAgUCYlcFAXoEAmNXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXcEAmNYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlcFAXgEAmNzCQCRAwIFAmJXBQFzBAJjWQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjbgIIV3IgbHAgYXMIcXVhbnRpdHkEAmN1AwUCY00JAQJieAEFAmNTAwMFAmNPCQAAAgUCY1IFAmNTBwkAZQIJAQJieAEFAmNTBQJjUQMFAmNPCQECYngBBQJjUwkAZQIJAQJieAEFAmNTBQJjSQQCY3cDBQJjTQkBAmJ4AQUCY1QDAwUCY08JAAACBQJjUgUCY1QHCQBlAgkBAmJ4AQUCY1QFAmNRAwUCY08JAQJieAEFAmNUCQBlAgkBAmJ4AQUCY1QFAmNLBAJjWgkBAUYCBQJjSQUCY1cEAmRhCQEBRgIFAmNLBQJjWAQCZGIJAQJiegIFAmRhBQJjWgQCY3YJAQFGAgUCY3UFAmNXBAJjeAkBAUYCBQJjdwUCY1gEAmRjAwkAAAIFAmNZAAAEAmN5BQFkBAJkZAUBZAQCY2EJAHYGCQC5AgIFAmNaBQJkYQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUkCBQJjYQUBYQkBAUkCBQJjWgUCY1cJAQFJAgUCZGEFAmNYCQECYnoCCQC3AgIFAmN4BQJkYQkAtwICBQJjdgUCY1oFAmRkBAJjeQkBAmJ6AgUCY3gFAmN2BAJkZQkAvAIDCQEBUAEJALgCAgUCY3kFAmRiBQFjBQJjeQQCZGQJAQFGAgUCYkYFAWEDAwMFAmNQCQECIT0CBQJjeQUBZAcJAL8CAgUCZGUFAmRkBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkZQIDID4gCQCmAwEFAmRkBAJkZgkBAUYCBQJjWQUBYQQCZGcJALwCAwUCY1oFAmN5BQFjBAJkaAkAvAIDBQJkYQUBYwUCY3kEAmRpAwkAvwICBQJkZwUCZGEJAJQKAgUCZGgFAmRhCQCUCgIFAmNaBQJkZwQCZGoIBQJkaQJfMQQCZGsIBQJkaQJfMgQCY2EJALwCAwUCZGYFAmRrBQJjeAkAlwoFCQEBSQIFAmNhBQFhCQEBSQIFAmRqBQJjVwkBAUkCBQJkawUCY1gFAmN5BQJkZAQCZGwIBQJkYwJfMQQCZG0IBQJkYwJfMgQCZG4IBQJkYwJfMwQCY3oJAQFJAggFAmRjAl80BQFhBAJkbwkBAUkCCAUCZGMCXzUFAWEDCQBnAgAABQJkbAkAAgECB0xQIDw9IDAEAmRwAwkBASEBBQJjTgAABQJkbAQCZHEJAGUCBQJjSQUCZG0EAmRyCQBlAgUCY0sFAmRuBAJkcwMDBQJjTwkAAAIFAmNSBQJjUwcJAJQKAgUCY1EAAAMDBQJjTwkAAAIFAmNSBQJjVAcJAJQKAgAABQJjUQkAlAoCBQJkbQUCZG4EAmR0CAUCZHMCXzEEAmR1CAUCZHMCXzIEAmR2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmN6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmN6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUCY20FAmNqCQECYmkKBQJkdAUCZHUFAmRwBQJjegUCYkYFAmRvBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkcQUCZHIFA25pbAkAnwoNBQJkbAUCZHAFAmN6BQJjdQUCY3cFAmNZBQJjbgUCY3MFAmR2BQJkcQUCZHIFAmNKBQJjTAECZHcBAmR4BAJiVwkBAmFLAAQCZHkJAJEDAgUCYlcFAXUEAmR6CQCRAwIFAmJXBQF2BAJjcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJXBQFzBAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJXBQF3BAJiWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJXBQF4BAJkQQkBAmJ4AQUCZHkEAmRCCQECYngBBQJkegQCY3kDCQAAAggFAmR4CW9yZGVyVHlwZQUDQnV5CQECYk4EBQJiWAUCYlkJAGQCBQJkQQgFAmR4BmFtb3VudAUCZEIJAQJiTgQFAmJYBQJiWQkAZQIFAmRBCAUCZHgGYW1vdW50BQJkQgQCY3oJAQFJAgUCY3kFAWEDAwMJAQJhSAAGCQAAAgUCY3MFAXAGCQAAAgUCY3MFAXEJAAIBAg1BZG1pbiBibG9ja2VkBAJkQwgIBQJkeAlhc3NldFBhaXILYW1vdW50QXNzZXQEAmREAwkAAAIFAmRDBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkQwQCZEUICAUCZHgJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmRGAwkAAAIFAmRFBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkRQMDCQECIT0CBQJkRAUCZHkGCQECIT0CBQJkRgUCZHoJAAIBAglXciBhc3NldHMEAmRHCAUCZHgFcHJpY2UEAmNYCQBrAwUBYQUCYlkFAmJYBAJkSAkBAUwDBQJkRwUBYQUCY1gEAmRJAwkAAAIIBQJkeAlvcmRlclR5cGUFA0J1eQkAZwIFAmN6BQJkSAkAZwIFAmRIBQJjegYBAmRKAQJkSwMJAQIhPQIJAJADAQgFAmRLCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJkTAkBBXZhbHVlAQkAkQMCCAUCZEsIcGF5bWVudHMAAAQCY2sJAQV2YWx1ZQEIBQJkTAdhc3NldElkBAJjUQgFAmRMBmFtb3VudAQCZGMJAQJjaQQJANgEAQgFAmRLDXRyYW5zYWN0aW9uSWQJANgEAQUCY2sFAmNRCAUCZEsGY2FsbGVyBAJjRQgFAmRjAl8xBAJjRggFAmRjAl8yBAJjcwkBDXBhcnNlSW50VmFsdWUBCAUCZGMCXzkEAmNHCAUCZGMDXzEwAwMJAQJhSAAGCQAAAgUCY3MFAXEJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJjcwkAlwoFBQJjRQUCY0YFAmNRBQJjawUCY0cBAmRNCgJkTgJhYQJkTwJkUAJiRgJjTgJjTwJjUAJjUQJjUgQCZGMJAQJjSA0FAmFhBQJiRggJAQV2YWx1ZQEFAmRPBmFtb3VudAgJAQV2YWx1ZQEFAmRPB2Fzc2V0SWQICQEFdmFsdWUBBQJkUAZhbW91bnQICQEFdmFsdWUBBQJkUAdhc3NldElkBQJkTgkAAAIFAmFhAgAFAmNOBQJjTwUCY1AFAmNRBQJjUgQCY3MJAQ1wYXJzZUludFZhbHVlAQgFAmRjAl84AwMDCQECYUgABgkAAAIFAmNzBQFvBgkAAAIFAmNzBQFxCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJjcwUCZGMBAmRRAQJkUgQCZFMFAWcEAmRUCQCRAwIFAmRSAAAEAmRVCQCRAwIFAmRSAAEEAmRWCQCnAwEFAWoEAmRXCQC5AgIJAKcDAQUCYUcFAmRWBAJkWAkAtwICBQJkVAUCZFUDCQAAAgUCZFgFAWUFAWUEAmRZCQC5AgIFAmRXBQJkUwQCZFoJALkCAgkAuQICCQC5AgIFAmRUBQJkVQUCZFMFAmRTBAJlYQkAugICCQC5AgIFAmRZBQJkWAUCZFYEAmViCQC4AgIFAmRZBQJkVgQCZWMJALcCAgUCZFMFAWYKAQJlZAICZWUCZWYEAmVnBQJlZQQCZWgIBQJlZwJfMQQCZWkIBQJlZwJfMgMJAQIhPQIFAmVpBQR1bml0BQJlZQQCZWoJALoCAgkAuQICCQC5AgIFAmVoBQJlaAUCZWgFAmRaBAJlawkAugICCQC5AgIJALcCAgUCZWEJALkCAgUCZWoFAmRTBQJlaAkAtwICCQC6AgIJALkCAgUCZWIFAmVoBQJkVgkAuQICBQJlYwUCZWoEAmVsCQEBUQEJALgCAgUCZWsJAQV2YWx1ZQEFAmVoAwkAwAICBQFmBQJlbAkAlAoCBQJlawUCZWYJAJQKAgUCZWsFBHVuaXQEAmVtCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVuCgACZW8FAmVtCgACZXAJAJADAQUCZW8KAAJlcQkAlAoCBQJkWAUEdW5pdAoBAmVyAgJlcwJldAMJAGcCBQJldAUCZXAFAmVzCQECZWQCBQJlcwkAkQMCBQJlbwUCZXQKAQJldQICZXMCZXQDCQBnAgUCZXQFAmVwBQJlcwkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZXUCCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICCQECZXICBQJlcQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlaAgFAmVuAl8xBAJlaQgFAmVuAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmVoCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmVoAQJldgMCZFICZEsCZXcEAmRTBQFnBAJleAkAkQMCBQJkUgMJAAACBQJkSwAAAAEAAAQCZFYJAKcDAQUBagQCZFcJALkCAgkApwMBBQJhRwUCZFYEAmRYBQJleAQCZFkJALkCAgUCZFcFAmRTBAJleQkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV3BQJldwkAuQICBQJleAUCZFMFAmV3BQJkVgkAuQICBQJkWQUCZFMEAmV6CQC4AgIJALcCAgUCZFgJALoCAgkAuQICBQJldwUCZFYFAmRZBQJldwoBAmVkAgJlZQJlZgQCZUEFAmVlBAJlQggFAmVBAl8xBAJlaQgFAmVBAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmVlBAJlQwkAugICCQC3AgIJALkCAgUCZUIFAmVCBQJleQkAtwICCQC5AgIFAWcFAmVCBQJlegQCZUQJAQFRAQkAuAICBQJlQwkBBXZhbHVlAQUCZUIDCQDAAgIFAWYFAmVECQCUCgIFAmVDBQJlZgkAlAoCBQJlQwUEdW5pdAQCZW0JAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUUKAAJlbwUCZW0KAAJlcAkAkAMBBQJlbwoAAmVxCQCUCgIFAmV3BQR1bml0CgECZXICAmVzAmV0AwkAZwIFAmV0BQJlcAUCZXMJAQJlZAIFAmVzCQCRAwIFAmVvBQJldAoBAmV1AgJlcwJldAMJAGcCBQJldAUCZXAFAmVzCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJldQIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIJAQJlcgIFAmVxAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVCCAUCZUUCXzEEAmVpCAUCZUUCXzIDCQECIT0CBQJlaQUEdW5pdAUCZUIJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUIBAmVGBQJlRwJjawJjbQJhYQJlSAQCYVMJAQJhSwAEAmNvCQCRAwIFAmFTBQF1BAJjcAkAkQMCBQJhUwUBdgQCY24JAJEDAgUCYVMFAXQEAmNXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVMFAXcEAmNYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVMFAXgEAmVJCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjbgIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZUoDCQC/AgIFAmVJBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZUoFAmVKBAJjdQkBAmJ4AQUCY28EAmN3CQECYngBBQJjcAQCZUsDCQAAAgUCYWECAAkAlAoCBQJjdQUCY3cDCQAAAgUCY2sFAmNvAwkAZgIFAmVHBQJjdQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmN1BQJlRwUCY3cDCQAAAgUCY2sFAmNwAwkAZgIFAmVHBQJjdwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY3UJAGUCBQJjdwUCZUcJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJlTAgFAmVLAl8xBAJlTQgFAmVLAl8yBAJlTgMJAAACBQJjawUCY28JAJQKAgUCZUcAAAMJAAACBQJjawUCY3AJAJQKAgAABQJlRwkAAgECD2ludmFsaWQgcGF5bWVudAQCZU8IBQJlTgJfMQQCZVAIBQJlTgJfMgQCZVEDBQJlSAkAlQoDCAkBAmNmAQUCZU8CXzEICQECY2YBBQJlUAJfMQgJAQJjZgEFAmVHAl8yCQCVCgMFAmVPBQJlUAAABAJlUggFAmVRAl8xBAJlUwgFAmVRAl8yBAJjaAgFAmVRAl8zBAJlVAkAZAIFAmVMBQJlUgQCZVUJAGQCBQJlTQUCZVMEAmJLCQECZFEBCQDMCAIJALYCAQUCZUwJAMwIAgkAtgIBBQJlTQUDbmlsBAJiSgkBAmRRAQkAzAgCCQC2AgEFAmVUCQDMCAIJALYCAQUCZVUFA25pbAQCZVYDCQC/AgIFAmJKBQJiSwYJAQV0aHJvdwADCQAAAgUCZVYFAmVWBAJlVwkAvAIDBQJlSQkAuAICBQJiSgUCYksFAmJLBAJjegkBAUkCCQECYnoCCQEBRgIFAmVVBQJjWAkBAUYCBQJlVAUCY1cFAWEEAmR2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmN6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmN6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUCY20FAmFhCQECYmkKBQJlTwUCZVAJAKADAQUCZVcFAmN6AAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZVgJAGsDBQJlTQUBYQUCZUwEAmVZCQBrAwUCZUcFAWEJAGQCBQJlWAUBYQQCZVoJAGUCBQJlRwUCZVkEAmZhCQC8AgMFAmVJCQC2AgEFAmVaCQC2AgEFAmVNBAJmYgkAoAMBCQC8AgMJALgCAgUCZVcFAmZhBQFiBQJmYQkAlgoECQCgAwEFAmVXBQJkdgUCY2gFAmZiCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmYwYCZmQCZmUCZmYCZE4CZmcCZmgEAmFTCQECYUsABAJjbgkAkQMCBQJhUwUBdAQCY28JAJEDAgUCYVMFAXUEAmNwCQCRAwIFAmFTBQF2BAJmaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF3BAJmagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF4BAJmawkAkQMCBQJhUwUBcwQCY20DCQAAAgUCZE4FAmJoBQJmZwUCZE4EAmRMCQEFdmFsdWUBCQCRAwIFAmZmAAAEAmNrCQEFdmFsdWUBCAUCZEwHYXNzZXRJZAQCY1EIBQJkTAZhbW91bnQEAmNqCQDYBAEFAmZoAwkBAiE9AgUCY24JANgEAQUCY2sJAAIBAghXcm9uZyBMUAQCY3UJAQJieAEFAmNvBAJjdwkBAmJ4AQUCY3AEAmZsCgACZm0JAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmZAkAzAgCBQJjUQUDbmlsBQNuaWwDCQABAgUCZm0CCihJbnQsIEludCkFAmZtCQACAQkArAICCQADAQUCZm0CHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZuCAUCZmwCXzEEAmNoCAUCZmwCXzIEAmZvAwMJAGYCBQJmZQAACQBmAgUCZmUFAmZuBwkBAmFEAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmZQUDbmlsAgAFAmZuBAJmcAMJAAACBQJmZAUCY28JAJYKBAUCZm8AAAkAZQIJAGUCBQJjdQUCZm8FAmNoBQJjdwMJAAACBQJmZAUCY3AJAJYKBAAABQJmbwUCY3UJAGUCCQBlAgUCY3cFAmZvBQJjaAkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmcQgFAmZwAl8xBAJmcggFAmZwAl8yBAJlVAgFAmZwAl8zBAJlVQgFAmZwAl80BAJmcwkBAmJ6AgkBAUYCBQJlVQUCZmoJAQFGAgUCZVQFAmZpBAJmdAkBAUkCBQJmcwUBYQQCZnUDCQAAAgUCZmQCBVdBVkVTBQR1bml0CQDZBAEFAmZkBAJmdgMJAGYCBQJjaAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFKBQJjaAUCZnUFA25pbAUDbmlsBAJjRwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNtBQJmbwUCZnUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQJjbQUCY2oJAQJidAYFAmZxBQJmcgUCY1EFAmZ0BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmZ0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZ0BQNuaWwFAmZ2AwkAAAIFAmNHBQJjRwQCZncJAPwHBAUCYUYCBGJ1cm4JAMwIAgUCY1EFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2sFAmNRBQNuaWwDCQAAAgUCZncFAmZ3CQCUCgIFAmNHBQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZngABAJheAkAoggBCQEBUwADCQABAgUCYXgCBlN0cmluZwQCZFgFAmF4CQDZBAEFAmRYAwkAAQIFAmF4AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZ5AAQCYXgJAKIIAQkBAVQAAwkAAQIFAmF4AgZTdHJpbmcEAmRYBQJheAkA2QQBBQJkWAMJAAECBQJheAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJmegkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJmQQECZEsEAmF4CQECZngAAwkAAQIFAmF4AgpCeXRlVmVjdG9yBAJmQgUCYXgJAAACCAUCZEsPY2FsbGVyUHVibGljS2V5BQJmQgMJAAECBQJheAIEVW5pdAkAAAIIBQJkSwZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZkMBAmRLBAJheAkBAmZ4AAMJAAECBQJheAIKQnl0ZVZlY3RvcgQCZkIFAmF4AwkAAAIIBQJkSw9jYWxsZXJQdWJsaWNLZXkFAmZCBgUCZnoDCQABAgUCYXgCBFVuaXQDCQAAAggFAmRLBmNhbGxlcgUEdGhpcwYFAmZ6CQACAQILTWF0Y2ggZXJyb3IcAmRLAQtjb25zdHJ1Y3RvcgEBUgQCZXkJAQJmQwEFAmRLAwkAAAIFAmV5BQJleQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAVIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwEKc2V0TWFuYWdlcgECZkQEAmV5CQECZkMBBQJkSwMJAAACBQJleQUCZXkEAmZFCQDZBAEFAmZEAwkAAAIFAmZFBQJmRQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmZEBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBDmNvbmZpcm1NYW5hZ2VyAAQCY2UJAQJmeQAEAmZGAwkBCWlzRGVmaW5lZAEFAmNlBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmRgUCZkYEAmZHAwkAAAIIBQJkSw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNlBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmRwUCZkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmNlCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQNwdXQCAmZIAmZJBAJmSgkBAmJjAAQCZksJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZKBQFBAgpXciBzdCBhZGRyBAJmTAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZkoFAUMCCldyIHNsIGFkZHIDCQBmAgAABQJmSAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZEsIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZk0JAQJkTQoJAKUIAQgFAmRLBmNhbGxlcgkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZEsIcGF5bWVudHMAAQUCZkgGBwYAAAIABAJkcAgFAmZNAl8yBAJmTggFAmZNAl83BAJjRwgFAmZNAl85BAJkcQgFAmZNA18xMAQCZHIIBQJmTQNfMTEEAmNvCAUCZk0DXzEyBAJjcAgFAmZNA18xMwQCZGMJAPwHBAUCYUYCBGVtaXQJAMwIAgUCZHAFA25pbAUDbmlsAwkAAAIFAmRjBQJkYwQCZk8EAmF4BQJkYwMJAAECBQJheAIHQWRkcmVzcwQCZlAFAmF4CQD8BwQFAmZQAgRlbWl0CQDMCAIFAmRwBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmTwUCZk8EAmZRAwkAZgIFAmRxAAAJAPwHBAUCZkwCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbwUCZHEFA25pbAUDbmlsAwkAAAIFAmZRBQJmUQQCZlIDCQBmAgUCZHIAAAkA/AcEBQJmTAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNwBQJkcgUDbmlsBQNuaWwDCQAAAgUCZlIFAmZSBAJmUwMFAmZJBAJmVAkA/AcEBQJmSwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZk4FAmRwBQNuaWwDCQAAAgUCZlQFAmZUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRLBmNhbGxlcgUCZHAFAmZOBQNuaWwJAM4IAgUCY0cFAmZTCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQtwdXRPbmVUa25WMgICZmUCZkkEAmZVAwoAAmZtCQD8BwQFAmFGAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZm0CB0Jvb2xlYW4FAmZtCQACAQkArAICCQADAQUCZm0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4GCQECZkEBBQJkSwQCZlYDAwMJAQJhSAAGCQAAAgUCYVcFAW8GCQAAAgUCYVcFAXEGBQJmVQQCZlcJAMwIAgMJAQEhAQUCZlYGCQECYUQBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSwhwYXltZW50cwABBgkBAmFEAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlcFAmZXBAJhUwkBAmFLAAQCY28JAJEDAgUCYVMFAXUEAmNwCQCRAwIFAmFTBQF2BAJjbgkA2QQBCQCRAwIFAmFTBQF0BAJmaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF3BAJmagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF4BAJjbQMJAAACCAUCZEsGY2FsbGVyBQR0aGlzCAUCZEsMb3JpZ2luQ2FsbGVyCAUCZEsGY2FsbGVyBAJkTAkBBXZhbHVlAQkAkQMCCAUCZEsIcGF5bWVudHMAAAQCY2sJANgEAQkBBXZhbHVlAQgFAmRMB2Fzc2V0SWQEAmNRCAUCZEwGYW1vdW50BAJmWAkBAmVGBQUCY1EFAmNrCQClCAEFAmNtCQDYBAEIBQJkSw10cmFuc2FjdGlvbklkBgQCZlkIBQJmWAJfMQQCY0cIBQJmWAJfMgQCY2gIBQJmWAJfMwQCZHADAwkAZgIFAmZlAAAJAGYCBQJmZQUCZlkHCQECYUQBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZlBQNuaWwCAAUCZlkEAmZNCQD8BwQFAmFGAgRlbWl0CQDMCAIFAmRwBQNuaWwFA25pbAMJAAACBQJmTQUCZk0EAmZPBAJheAUCZk0DCQABAgUCYXgCB0FkZHJlc3MEAmZQBQJheAkA/AcEBQJmUAIEZW1pdAkAzAgCBQJkcAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZk8FAmZPBAJmUwMFAmZJBAJmVAkA/AcEBQJiZQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY24FAmRwBQNuaWwDCQAAAgUCZlQFAmZUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRLBmNhbGxlcgUCZHAFAmNuBQNuaWwEAmZ2AwkAZgIFAmNoAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUoFAmNoCQDZBAEFAmNrBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY0cFAmZTBQJmdgUCZHAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBCnB1dEZvckZyZWUBAmZaAwkAZgIAAAUCZloJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZEsIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ2EJAQJkTQoJAKUIAQgFAmRLBmNhbGxlcgkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZEsIcGF5bWVudHMAAQUCZloHBwYAAAIACAUCZ2ECXzkCZEsBA2dldAAEAmRjCQECZEoBBQJkSwQCZ2IIBQJkYwJfMQQCY0YIBQJkYwJfMgQCY1EIBQJkYwJfMwQCY2sIBQJkYwJfNAQCY0cIBQJkYwJfNQQCZXoJAPwHBAUCYUYCBGJ1cm4JAMwIAgUCY1EFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2sFAmNRBQNuaWwDCQAAAgUCZXoFAmV6BQJjRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwELZ2V0T25lVGtuVjICAmZkAmZlBAJmVQMKAAJmbQkA/AcEBQJhRgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZtAgdCb29sZWFuBQJmbQkAAgEJAKwCAgkAAwEFAmZtAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBgkBAmZBAQUCZEsEAmdjAwMJAQJhSAAGCQAAAgUCYVcFAXEGBQJmVQQCZlcJAMwIAgMJAQEhAQUCZ2MGCQECYUQBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSwhwYXltZW50cwABBgkBAmFEAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlcFAmZXBAJnZAkBAmZjBgUCZmQFAmZlCAUCZEsIcGF5bWVudHMIBQJkSwZjYWxsZXIIBQJkSwxvcmlnaW5DYWxsZXIIBQJkSw10cmFuc2FjdGlvbklkBAJjRwgFAmdkAl8xBAJmbwgFAmdkAl8yCQCUCgIFAmNHBQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwETZ2V0T25lVGtuVjJSRUFET05MWQICZmQCZ2UEAmFTCQECYUsABAJjbwkAkQMCBQJhUwUBdQQCY3AJAJEDAgUCYVMFAXYEAmNuCQCRAwIFAmFTBQF0BAJkUgkAzAgCCQC2AgEJAQJieAEFAmNvCQDMCAIJALYCAQkBAmJ4AQUCY3AFA25pbAQCZ2YJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNuAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiSwkBAmRRAQUCZFIEAmJKCQC4AgIFAmJLCQC8AgMJALYCAQUCZ2UFAmJLBQJnZgQCZ2cDCQAAAgUCZmQFAmNvAAADCQAAAgUCZmQFAmNwAAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ2gJAQJldgMFAmRSBQJnZwUCYkoEAmdpCQC4AgIJAJEDAgUCZFIFAmdnBQJnaAQCZ2oJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdpBQFmBQNuaWwEAmdrCQECY2YBBQJnagQCZm4IBQJnawJfMQQCY2gIBQJnawJfMgkAlAoCBQNuaWwJAJQKAgUCZm4FAmNoAmRLARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmZAJnZQQCYVMJAQJhSwAEAmNvCQCRAwIFAmFTBQF1BAJjcAkAkQMCBQJhUwUBdgQCY24JAJEDAgUCYVMFAXQEAmN1CQECYngBBQJjbwQCY3cJAQJieAEFAmNwBAJnbAoAAmZtCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZmQJAMwIAgUCZ2UFA25pbAUDbmlsAwkAAQIFAmZtAgooSW50LCBJbnQpBQJmbQkAAgEJAKwCAgkAAwEFAmZtAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmbggFAmdsAl8xBAJjaAgFAmdsAl8yBAJkYwkBAmNpBAIABQJjbgUCZ2UFBHRoaXMEAmNFCAUCZGMCXzEEAmNGCAUCZGMCXzIEAmdtCQBkAgUCY0UFAmNGBAJmYgMJAAACBQJnbQAAAwkAAAIFAmZuAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZuBQJnbQUBYQUCZ20JAJQKAgUDbmlsCQCVCgMFAmZuBQJjaAUCZmICZEsBCWdldE5vTGVzcwICZ24CZ28EAmRjCQECZEoBBQJkSwQCY0UIBQJkYwJfMQQCY0YIBQJkYwJfMgQCY1EIBQJkYwJfMwQCY2sIBQJkYwJfNAQCY0cIBQJkYwJfNQMJAGYCBQJnbgUCY0UJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY0UCAyA8IAkApAMBBQJnbgMJAGYCBQJnbwUCY0YJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjRgIDIDwgCQCkAwEFAmdvBAJncAkA/AcEBQJhRgIEYnVybgkAzAgCBQJjUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjawUCY1EFA25pbAMJAAACBQJncAUCZ3AFAmNHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQ11bnN0YWtlQW5kR2V0AQJjZwQCZ3EDCQECIT0CCQCQAwEIBQJkSwhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ3EFAmdxBAJiVwkBAmFLAAQCZ3IJAQJiYwAEAmZOCQDZBAEJAJEDAgUCYlcFAXQEAmdzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJncgUBQQIKV3Igc3QgYWRkcgQCZ3QJAPwHBAUCZ3MCB3Vuc3Rha2UJAMwIAgkA2AQBBQJmTgkAzAgCBQJjZwUDbmlsBQNuaWwDCQAAAgUCZ3QFAmd0BAJkYwkBAmNpBAkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkA2AQBBQJmTgUCY2cIBQJkSwZjYWxsZXIEAmNzCQENcGFyc2VJbnRWYWx1ZQEIBQJkYwJfOQQCY0cIBQJkYwNfMTAEAmd1AwMJAQJhSAAGCQAAAgUCY3MFAXEJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjcwYDCQAAAgUCZ3UFAmd1BAJndgkA/AcEBQJhRgIEYnVybgkAzAgCBQJjZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmTgUCY2cFA25pbAMJAAACBQJndgUCZ3YFAmNHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJndwJneAJnbwQCZ2MDCQECYUgABgkAAAIFAmFXBQFxBAJmVwkAzAgCAwkBASEBBQJnYwYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZXBQJmVwQCZ3QJAPwHBAUCYmUCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhWAkAzAgCBQJndwUDbmlsBQNuaWwDCQAAAgUCZ3QFAmd0BAJneQkBAmNpBAkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkA2AQBBQJhWAUCZ3cIBQJkSwZjYWxsZXIEAmNFCAUCZ3kCXzEEAmNGCAUCZ3kCXzIEAmNHCAUCZ3kDXzEwBAJnegkAzAgCAwkAZwIFAmNFBQJneAYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJneAUDbmlsAgAJAMwIAgMJAGcCBQJjRgUCZ28GCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnbwUDbmlsAgAFA25pbAMJAAACBQJnegUCZ3oEAmdwCQD8BwQFAmFGAgRidXJuCQDMCAIFAmd3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFYBQJndwUDbmlsAwkAAAIFAmdwBQJncAUCY0cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCZ3cCZmQCZmUEAmZVAwoAAmZtCQD8BwQFAmFGAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZm0CB0Jvb2xlYW4FAmZtCQACAQkArAICCQADAQUCZm0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4GCQECZkEBBQJkSwQCZ2MDAwkBAmFIAAYJAAACBQJhVwUBcQYFAmZVBAJmVwkAzAgCAwkBASEBBQJnYwYJAQJhRAECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRLCHBheW1lbnRzAAAGCQECYUQBAhhubyBwYXltZW50cyBhcmUgZXhw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dGl2ZSgxMDYyKQEFAmdLCQCUCgIFA25pbAkAnAoKCAUCZGMCXzEIBQJkYwJfMggFAmRjAl8zCAUCZGMCXzQIBQJkYwJfNQgFAmRjAl82CAUCZGMCXzcJAKYDAQgFAmRjAl84CAUCZGMCXzkIBQJkYwNfMTACZEsBDmdldEZlZVJFQURPTkxZAAkAlAoCBQNuaWwFAmFoAQJnTQECZ04ABAJnTwQCYXgJAQJmeAADCQABAgUCYXgCCkJ5dGVWZWN0b3IEAmZCBQJheAUCZkIDCQABAgUCYXgCBFVuaXQIBQJnTQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXgFAmdNAwkAAQIFAmF4AgVPcmRlcgQCZHgFAmF4BAJnUAkBAmFJAAQCZ1EJAQJkdwEFAmR4BAJnUgkA9AMDCAUCZHgJYm9keUJ5dGVzCQCRAwIIBQJkeAZwcm9vZnMAAAgFAmR4D3NlbmRlclB1YmxpY0tleQQCZ1MJAPQDAwgFAmR4CWJvZHlCeXRlcwkAkQMCCAUCZHgGcHJvb2ZzAAEFAmdQAwMDBQJnUQUCZ1IHBQJnUwcGCQECYXMDBQJnUQUCZ1IFAmdTAwkAAQIFAmF4AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZFgFAmF4BAJnVAkA9gMBCQEFdmFsdWUBCAUCZFgGc2NyaXB0BAJnVQkA2wQBCQEFdmFsdWUBCQCdCAIFAmFGCQECYXEABAJnVgkA8QcBBQR0aGlzAwMJAAACBQJnVQUCZ1QJAQIhPQIFAmdWBQJnVAcGCQD0AwMIBQJnTQlib2R5Qnl0ZXMJAJEDAggFAmdNBnByb29mcwAABQJnTwkA9AMDCAUCZ00JYm9keUJ5dGVzCQCRAwIIBQJnTQZwcm9vZnMAAAUCZ0/CEGl5", "chainId": 87, "height": 3385051, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F2aEdDReLEStciAptH7bAzr1ZnHCLTkjhaPgpzLRYKAQ Next: Aaj5oXKbkiMj1deP66cgyUriTruDmgVsYpJNmmBFbqtH Diff:
OldNewDifferences
768768 if ($isInstanceOf(ax, "ByteVector"))
769769 then {
770770 let fB = ax
771+ (dK.callerPublicKey == fB)
772+ }
773+ else if ($isInstanceOf(ax, "Unit"))
774+ then (dK.caller == this)
775+ else throw("Match error")
776+ }
777+
778+
779+func fC (dK) = {
780+ let ax = fx()
781+ if ($isInstanceOf(ax, "ByteVector"))
782+ then {
783+ let fB = ax
771784 if ((dK.callerPublicKey == fB))
772785 then true
773786 else fz
782795
783796 @Callable(dK)
784797 func constructor (R) = {
785- let ey = fA(dK)
798+ let ey = fC(dK)
786799 if ((ey == ey))
787800 then [StringEntry(R(), R)]
788801 else throw("Strict value is not equal to itself.")
791804
792805
793806 @Callable(dK)
794-func setManager (fC) = {
795- let ey = fA(dK)
807+func setManager (fD) = {
808+ let ey = fC(dK)
796809 if ((ey == ey))
797810 then {
798- let fD = fromBase58String(fC)
799- if ((fD == fD))
800- then [StringEntry(T(), fC)]
811+ let fE = fromBase58String(fD)
812+ if ((fE == fE))
813+ then [StringEntry(T(), fD)]
801814 else throw("Strict value is not equal to itself.")
802815 }
803816 else throw("Strict value is not equal to itself.")
808821 @Callable(dK)
809822 func confirmManager () = {
810823 let ce = fy()
811- let fE = if (isDefined(ce))
824+ let fF = if (isDefined(ce))
812825 then true
813826 else throw("No pending manager")
814- if ((fE == fE))
827+ if ((fF == fF))
815828 then {
816- let fF = if ((dK.callerPublicKey == value(ce)))
829+ let fG = if ((dK.callerPublicKey == value(ce)))
817830 then true
818831 else throw("You are not pending manager")
819- if ((fF == fF))
832+ if ((fG == fG))
820833 then [StringEntry(S(), toBase58String(value(ce))), DeleteEntry(T())]
821834 else throw("Strict value is not equal to itself.")
822835 }
826839
827840
828841 @Callable(dK)
829-func put (fG,fH) = {
830- let fI = bc()
831- let fJ = valueOrErrorMessage(addressFromString(fI[A]), "Wr st addr")
832- let fK = valueOrErrorMessage(addressFromString(fI[C]), "Wr sl addr")
833- if ((0 > fG))
842+func put (fH,fI) = {
843+ let fJ = bc()
844+ let fK = valueOrErrorMessage(addressFromString(fJ[A]), "Wr st addr")
845+ let fL = valueOrErrorMessage(addressFromString(fJ[C]), "Wr sl addr")
846+ if ((0 > fH))
834847 then throw("Wrong slippage")
835848 else if ((size(dK.payments) != 2))
836849 then throw("2 pmnts expd")
837850 else {
838- let fL = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fG, true, false, true, 0, "")
839- let dp = fL._2
840- let fM = fL._7
841- let cG = fL._9
842- let dq = fL._10
843- let dr = fL._11
844- let co = fL._12
845- let cp = fL._13
851+ let fM = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fH, true, false, true, 0, "")
852+ let dp = fM._2
853+ let fN = fM._7
854+ let cG = fM._9
855+ let dq = fM._10
856+ let dr = fM._11
857+ let co = fM._12
858+ let cp = fM._13
846859 let dc = invoke(aF, "emit", [dp], nil)
847860 if ((dc == dc))
848861 then {
849- let fN = {
862+ let fO = {
850863 let ax = dc
851864 if ($isInstanceOf(ax, "Address"))
852865 then {
853- let fO = ax
854- invoke(fO, "emit", [dp], nil)
866+ let fP = ax
867+ invoke(fP, "emit", [dp], nil)
855868 }
856869 else unit
857870 }
858- if ((fN == fN))
871+ if ((fO == fO))
859872 then {
860- let fP = if ((dq > 0))
861- then invoke(fK, "put", nil, [AttachedPayment(co, dq)])
873+ let fQ = if ((dq > 0))
874+ then invoke(fL, "put", nil, [AttachedPayment(co, dq)])
862875 else nil
863- if ((fP == fP))
876+ if ((fQ == fQ))
864877 then {
865- let fQ = if ((dr > 0))
866- then invoke(fK, "put", nil, [AttachedPayment(cp, dr)])
878+ let fR = if ((dr > 0))
879+ then invoke(fL, "put", nil, [AttachedPayment(cp, dr)])
867880 else nil
868- if ((fQ == fQ))
881+ if ((fR == fR))
869882 then {
870- let fR = if (fH)
883+ let fS = if (fI)
871884 then {
872- let fS = invoke(fJ, "stake", nil, [AttachedPayment(fM, dp)])
873- if ((fS == fS))
885+ let fT = invoke(fK, "stake", nil, [AttachedPayment(fN, dp)])
886+ if ((fT == fT))
874887 then nil
875888 else throw("Strict value is not equal to itself.")
876889 }
877- else [ScriptTransfer(dK.caller, dp, fM)]
878- (cG ++ fR)
890+ else [ScriptTransfer(dK.caller, dp, fN)]
891+ (cG ++ fS)
879892 }
880893 else throw("Strict value is not equal to itself.")
881894 }
890903
891904
892905 @Callable(dK)
893-func putOneTknV2 (fe,fH) = {
894- let fT = {
906+func putOneTknV2 (fe,fI) = {
907+ let fU = if ({
895908 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
896909 if ($isInstanceOf(fm, "Boolean"))
897910 then fm
898911 else throw(($getType(fm) + " couldn't be cast to Boolean"))
899- }
900- let fU = if (if (if (aH())
912+ })
913+ then true
914+ else fA(dK)
915+ let fV = if (if (if (aH())
901916 then true
902917 else (aW == o))
903918 then true
904919 else (aW == q))
905920 then true
906- else fT
907- let fV = [if (!(fU))
921+ else fU
922+ let fW = [if (!(fV))
908923 then true
909924 else aD("put operation is blocked by admin"), if ((size(dK.payments) == 1))
910925 then true
911926 else aD("exactly 1 payment are expected")]
912- if ((fV == fV))
927+ if ((fW == fW))
913928 then {
914929 let aS = aK()
915930 let co = aS[u]
923938 let dL = value(dK.payments[0])
924939 let ck = toBase58String(value(dL.assetId))
925940 let cQ = dL.amount
926- let fW = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId), true)
927- let fX = fW._1
928- let cG = fW._2
929- let ch = fW._3
941+ let fX = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId), true)
942+ let fY = fX._1
943+ let cG = fX._2
944+ let ch = fX._3
930945 let dp = if (if ((fe > 0))
931- then (fe > fX)
946+ then (fe > fY)
932947 else false)
933948 then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
934- else fX
935- let fL = invoke(aF, "emit", [dp], nil)
936- if ((fL == fL))
949+ else fY
950+ let fM = invoke(aF, "emit", [dp], nil)
951+ if ((fM == fM))
937952 then {
938- let fN = {
939- let ax = fL
953+ let fO = {
954+ let ax = fM
940955 if ($isInstanceOf(ax, "Address"))
941956 then {
942- let fO = ax
943- invoke(fO, "emit", [dp], nil)
957+ let fP = ax
958+ invoke(fP, "emit", [dp], nil)
944959 }
945960 else unit
946961 }
947- if ((fN == fN))
962+ if ((fO == fO))
948963 then {
949- let fR = if (fH)
964+ let fS = if (fI)
950965 then {
951- let fS = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
952- if ((fS == fS))
966+ let fT = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
967+ if ((fT == fT))
953968 then nil
954969 else throw("Strict value is not equal to itself.")
955970 }
957972 let fv = if ((ch > 0))
958973 then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
959974 else nil
960- $Tuple2(((cG ++ fR) ++ fv), dp)
975+ $Tuple2(((cG ++ fS) ++ fv), dp)
961976 }
962977 else throw("Strict value is not equal to itself.")
963978 }
969984
970985
971986 @Callable(dK)
972-func putForFree (fY) = if ((0 > fY))
987+func putForFree (fZ) = if ((0 > fZ))
973988 then throw("Wrong slpg")
974989 else if ((size(dK.payments) != 2))
975990 then throw("2 pmnts expd")
976991 else {
977- let fZ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fY, false, false, true, 0, "")
978- fZ._9
992+ let ga = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fZ, false, false, true, 0, "")
993+ ga._9
979994 }
980995
981996
983998 @Callable(dK)
984999 func get () = {
9851000 let dc = dJ(dK)
986- let ga = dc._1
1001+ let gb = dc._1
9871002 let cF = dc._2
9881003 let cQ = dc._3
9891004 let ck = dc._4
9981013
9991014 @Callable(dK)
10001015 func getOneTknV2 (fd,fe) = {
1001- let fT = {
1016+ let fU = if ({
10021017 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10031018 if ($isInstanceOf(fm, "Boolean"))
10041019 then fm
10051020 else throw(($getType(fm) + " couldn't be cast to Boolean"))
1006- }
1007- let gb = if (if (aH())
1021+ })
1022+ then true
1023+ else fA(dK)
1024+ let gc = if (if (aH())
10081025 then true
10091026 else (aW == q))
10101027 then true
1011- else fT
1012- let fV = [if (!(gb))
1028+ else fU
1029+ let fW = [if (!(gc))
10131030 then true
10141031 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 1))
10151032 then true
10161033 else aD("exactly 1 payment are expected")]
1017- if ((fV == fV))
1034+ if ((fW == fW))
10181035 then {
1019- let gc = fc(fd, fe, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1020- let cG = gc._1
1021- let fo = gc._2
1036+ let gd = fc(fd, fe, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1037+ let cG = gd._1
1038+ let fo = gd._2
10221039 $Tuple2(cG, fo)
10231040 }
10241041 else throw("Strict value is not equal to itself.")
10271044
10281045
10291046 @Callable(dK)
1030-func getOneTknV2READONLY (fd,gd) = {
1047+func getOneTknV2READONLY (fd,ge) = {
10311048 let aS = aK()
10321049 let co = aS[u]
10331050 let cp = aS[v]
10341051 let cn = aS[t]
10351052 let dR = [toBigInt(bx(co)), toBigInt(bx(cp))]
1036- let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
1053+ let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
10371054 let bK = dQ(dR)
1038- let bJ = (bK - fraction(toBigInt(gd), bK, ge))
1039- let gf = if ((fd == co))
1055+ let bJ = (bK - fraction(toBigInt(ge), bK, gf))
1056+ let gg = if ((fd == co))
10401057 then 0
10411058 else if ((fd == cp))
10421059 then 1
10431060 else throw("invalid out asset id")
1044- let gg = ev(dR, gf, bJ)
1045- let gh = (dR[gf] - gg)
1046- let gi = max([0, toInt((gh - f))])
1047- let gj = cf(gi)
1048- let fn = gj._1
1049- let ch = gj._2
1061+ let gh = ev(dR, gg, bJ)
1062+ let gi = (dR[gg] - gh)
1063+ let gj = max([0, toInt((gi - f))])
1064+ let gk = cf(gj)
1065+ let fn = gk._1
1066+ let ch = gk._2
10501067 $Tuple2(nil, $Tuple2(fn, ch))
10511068 }
10521069
10531070
10541071
10551072 @Callable(dK)
1056-func getOneTknV2WithBonusREADONLY (fd,gd) = {
1073+func getOneTknV2WithBonusREADONLY (fd,ge) = {
10571074 let aS = aK()
10581075 let co = aS[u]
10591076 let cp = aS[v]
10601077 let cn = aS[t]
10611078 let cu = bx(co)
10621079 let cw = bx(cp)
1063- let gk = {
1064- let fm = invoke(this, "getOneTknV2READONLY", [fd, gd], nil)
1080+ let gl = {
1081+ let fm = invoke(this, "getOneTknV2READONLY", [fd, ge], nil)
10651082 if ($isInstanceOf(fm, "(Int, Int)"))
10661083 then fm
10671084 else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
10681085 }
1069- let fn = gk._1
1070- let ch = gk._2
1071- let dc = ci("", cn, gd, this)
1086+ let fn = gl._1
1087+ let ch = gl._2
1088+ let dc = ci("", cn, ge, this)
10721089 let cE = dc._1
10731090 let cF = dc._2
1074- let gl = (cE + cF)
1075- let fb = if ((gl == 0))
1091+ let gm = (cE + cF)
1092+ let fb = if ((gm == 0))
10761093 then if ((fn == 0))
10771094 then 0
10781095 else throw("bonus calculation error")
1079- else fraction((fn - gl), a, gl)
1096+ else fraction((fn - gm), a, gm)
10801097 $Tuple2(nil, $Tuple3(fn, ch, fb))
10811098 }
10821099
10831100
10841101
10851102 @Callable(dK)
1086-func getNoLess (gm,gn) = {
1103+func getNoLess (gn,go) = {
10871104 let dc = dJ(dK)
10881105 let cE = dc._1
10891106 let cF = dc._2
10901107 let cQ = dc._3
10911108 let ck = dc._4
10921109 let cG = dc._5
1093- if ((gm > cE))
1094- then throw(((("Failed: " + toString(cE)) + " < ") + toString(gm)))
1095- else if ((gn > cF))
1096- then throw(((("Failed: " + toString(cF)) + " < ") + toString(gn)))
1110+ if ((gn > cE))
1111+ then throw(((("Failed: " + toString(cE)) + " < ") + toString(gn)))
1112+ else if ((go > cF))
1113+ then throw(((("Failed: " + toString(cF)) + " < ") + toString(go)))
10971114 else {
1098- let go = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1099- if ((go == go))
1115+ let gp = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1116+ if ((gp == gp))
11001117 then cG
11011118 else throw("Strict value is not equal to itself.")
11021119 }
11061123
11071124 @Callable(dK)
11081125 func unstakeAndGet (cg) = {
1109- let gp = if ((size(dK.payments) != 0))
1126+ let gq = if ((size(dK.payments) != 0))
11101127 then throw("No pmnts expd")
11111128 else true
1112- if ((gp == gp))
1129+ if ((gq == gq))
11131130 then {
11141131 let bW = aK()
1115- let gq = bc()
1116- let fM = fromBase58String(bW[t])
1117- let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1118- let gs = invoke(gr, "unstake", [toBase58String(fM), cg], nil)
1119- if ((gs == gs))
1132+ let gr = bc()
1133+ let fN = fromBase58String(bW[t])
1134+ let gs = valueOrErrorMessage(addressFromString(gr[A]), "Wr st addr")
1135+ let gt = invoke(gs, "unstake", [toBase58String(fN), cg], nil)
1136+ if ((gt == gt))
11201137 then {
1121- let dc = ci(toBase58String(dK.transactionId), toBase58String(fM), cg, dK.caller)
1138+ let dc = ci(toBase58String(dK.transactionId), toBase58String(fN), cg, dK.caller)
11221139 let cs = parseIntValue(dc._9)
11231140 let cG = dc._10
1124- let gt = if (if (aH())
1141+ let gu = if (if (aH())
11251142 then true
11261143 else (cs == q))
11271144 then throw(("Blocked: " + toString(cs)))
11281145 else true
1129- if ((gt == gt))
1146+ if ((gu == gu))
11301147 then {
1131- let gu = invoke(aF, "burn", [cg], [AttachedPayment(fM, cg)])
1132- if ((gu == gu))
1148+ let gv = invoke(aF, "burn", [cg], [AttachedPayment(fN, cg)])
1149+ if ((gv == gv))
11331150 then cG
11341151 else throw("Strict value is not equal to itself.")
11351152 }
11431160
11441161
11451162 @Callable(dK)
1146-func unstakeAndGetNoLess (gv,gw,gn) = {
1147- let gb = if (aH())
1163+func unstakeAndGetNoLess (gw,gx,go) = {
1164+ let gc = if (aH())
11481165 then true
11491166 else (aW == q)
1150- let fV = [if (!(gb))
1167+ let fW = [if (!(gc))
11511168 then true
11521169 else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
11531170 then true
11541171 else throw("no payments are expected")]
1155- if ((fV == fV))
1172+ if ((fW == fW))
11561173 then {
1157- let gs = invoke(be, "unstake", [toBase58String(aX), gv], nil)
1158- if ((gs == gs))
1174+ let gt = invoke(be, "unstake", [toBase58String(aX), gw], nil)
1175+ if ((gt == gt))
11591176 then {
1160- let gx = ci(toBase58String(dK.transactionId), toBase58String(aX), gv, dK.caller)
1161- let cE = gx._1
1162- let cF = gx._2
1163- let cG = gx._10
1164- let gy = [if ((cE >= gw))
1177+ let gy = ci(toBase58String(dK.transactionId), toBase58String(aX), gw, dK.caller)
1178+ let cE = gy._1
1179+ let cF = gy._2
1180+ let cG = gy._10
1181+ let gz = [if ((cE >= gx))
11651182 then true
1166- else throw(makeString(["amount asset amount to receive is less than ", toString(gw)], "")), if ((cF >= gn))
1183+ else throw(makeString(["amount asset amount to receive is less than ", toString(gx)], "")), if ((cF >= go))
11671184 then true
1168- else throw(makeString(["price asset amount to receive is less than ", toString(gn)], ""))]
1169- if ((gy == gy))
1185+ else throw(makeString(["price asset amount to receive is less than ", toString(go)], ""))]
1186+ if ((gz == gz))
11701187 then {
1171- let go = invoke(aF, "burn", [gv], [AttachedPayment(aX, gv)])
1172- if ((go == go))
1188+ let gp = invoke(aF, "burn", [gw], [AttachedPayment(aX, gw)])
1189+ if ((gp == gp))
11731190 then cG
11741191 else throw("Strict value is not equal to itself.")
11751192 }
11831200
11841201
11851202 @Callable(dK)
1186-func unstakeAndGetOneTknV2 (gv,fd,fe) = {
1187- let fT = {
1203+func unstakeAndGetOneTknV2 (gw,fd,fe) = {
1204+ let fU = if ({
11881205 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11891206 if ($isInstanceOf(fm, "Boolean"))
11901207 then fm
11911208 else throw(($getType(fm) + " couldn't be cast to Boolean"))
1192- }
1193- let gb = if (if (aH())
1209+ })
1210+ then true
1211+ else fA(dK)
1212+ let gc = if (if (aH())
11941213 then true
11951214 else (aW == q))
11961215 then true
1197- else fT
1198- let fV = [if (!(gb))
1216+ else fU
1217+ let fW = [if (!(gc))
11991218 then true
12001219 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 0))
12011220 then true
12021221 else aD("no payments are expected")]
1203- if ((fV == fV))
1222+ if ((fW == fW))
12041223 then {
12051224 let bW = aK()
1206- let gq = bc()
1207- let fM = fromBase58String(bW[t])
1208- let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1209- let gs = invoke(gr, "unstake", [toBase58String(fM), gv], nil)
1210- if ((gs == gs))
1225+ let gr = bc()
1226+ let fN = fromBase58String(bW[t])
1227+ let gs = valueOrErrorMessage(addressFromString(gr[A]), "Wr st addr")
1228+ let gt = invoke(gs, "unstake", [toBase58String(fN), gw], nil)
1229+ if ((gt == gt))
12111230 then {
1212- let gz = fc(fd, fe, [AttachedPayment(fM, gv)], dK.caller, dK.originCaller, dK.transactionId)
1213- let cG = gz._1
1214- let fo = gz._2
1231+ let gA = fc(fd, fe, [AttachedPayment(fN, gw)], dK.caller, dK.originCaller, dK.transactionId)
1232+ let cG = gA._1
1233+ let fo = gA._2
12151234 $Tuple2(cG, fo)
12161235 }
12171236 else throw("Strict value is not equal to itself.")
12221241
12231242
12241243 @Callable(dK)
1225-func putOneTknV2WithBonusREADONLY (gA,gB) = {
1244+func putOneTknV2WithBonusREADONLY (gB,gC) = {
12261245 let aS = aK()
12271246 let co = aS[u]
12281247 let cp = aS[v]
12291248 let cn = aS[t]
1230- let gC = eF(gA, gB, "", "", true)
1231- let eW = gC._1
1232- let cG = gC._2
1233- let ch = gC._3
1234- let fb = gC._4
1235- $Tuple2(nil, $Tuple3(eW, ch, fb))
1236- }
1237-
1238-
1239-
1240-@Callable(dK)
1241-func putOneTknV2WithoutTakeFeeREADONLY (gA,gB) = {
1242- let aS = aK()
1243- let co = aS[u]
1244- let cp = aS[v]
1245- let cn = aS[t]
1246- let gD = eF(gA, gB, "", "", false)
1249+ let gD = eF(gB, gC, "", "", true)
12471250 let eW = gD._1
12481251 let cG = gD._2
12491252 let ch = gD._3
12541257
12551258
12561259 @Callable(dK)
1257-func activate (gE,gF) = if ((toString(dK.caller) != toString(aF)))
1258- then throw("denied")
1259- else $Tuple2([StringEntry(ac(), gE), StringEntry(ad(), gF)], "success")
1260+func putOneTknV2WithoutTakeFeeREADONLY (gB,gC) = {
1261+ let aS = aK()
1262+ let co = aS[u]
1263+ let cp = aS[v]
1264+ let cn = aS[t]
1265+ let gE = eF(gB, gC, "", "", false)
1266+ let eW = gE._1
1267+ let cG = gE._2
1268+ let ch = gE._3
1269+ let fb = gE._4
1270+ $Tuple2(nil, $Tuple3(eW, ch, fb))
1271+ }
12601272
12611273
12621274
12631275 @Callable(dK)
1264-func setS (gG,gt) = if ((toString(dK.caller) != az(this, af())))
1265- then fz
1266- else [StringEntry(gG, gt)]
1276+func activate (gF,gG) = if ((toString(dK.caller) != toString(aF)))
1277+ then throw("denied")
1278+ else $Tuple2([StringEntry(ac(), gF), StringEntry(ad(), gG)], "success")
12671279
12681280
12691281
12701282 @Callable(dK)
1271-func setI (gG,gt) = if ((toString(dK.caller) != az(this, af())))
1283+func setS (gH,gu) = if ((toString(dK.caller) != az(this, af())))
12721284 then fz
1273- else [IntegerEntry(gG, gt)]
1285+ else [StringEntry(gH, gu)]
1286+
1287+
1288+
1289+@Callable(dK)
1290+func setI (gH,gu) = if ((toString(dK.caller) != az(this, af())))
1291+ then fz
1292+ else [IntegerEntry(gH, gu)]
12741293
12751294
12761295
12861305
12871306 @Callable(dK)
12881307 func calcPricesWrapperREADONLY (bQ,bR,bV) = {
1289- let gH = bU(bQ, bR, bV)
1290- $Tuple2(nil, [toString(gH[0]), toString(gH[1]), toString(gH[2])])
1308+ let gI = bU(bQ, bR, bV)
1309+ $Tuple2(nil, [toString(gI[0]), toString(gI[1]), toString(gI[2])])
12911310 }
12921311
12931312
12941313
12951314 @Callable(dK)
1296-func fromX18WrapperREADONLY (J,gI) = $Tuple2(nil, I(parseBigIntValue(J), gI))
1315+func fromX18WrapperREADONLY (J,gJ) = $Tuple2(nil, I(parseBigIntValue(J), gJ))
12971316
12981317
12991318
13081327
13091328
13101329 @Callable(dK)
1311-func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gJ,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gJ, cM, cN, true, false, 0, ""))
1330+func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gK,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gK, cM, cN, true, false, 0, ""))
13121331
13131332
13141333
13151334 @Callable(dK)
1316-func estimateGetOperationWrapperREADONLY (cj,gK,cl,gJ) = {
1317- let dc = ci(cj, gK, cl, addressFromStringValue(gJ))
1335+func estimateGetOperationWrapperREADONLY (cj,gL,cl,gK) = {
1336+ let dc = ci(cj, gL, cl, addressFromStringValue(gK))
13181337 $Tuple2(nil, $Tuple10(dc._1, dc._2, dc._3, dc._4, dc._5, dc._6, dc._7, toString(dc._8), dc._9, dc._10))
13191338 }
13201339
13241343 func getFeeREADONLY () = $Tuple2(nil, ah)
13251344
13261345
1327-@Verifier(gL)
1328-func gM () = {
1329- let gN = {
1346+@Verifier(gM)
1347+func gN () = {
1348+ let gO = {
13301349 let ax = fx()
13311350 if ($isInstanceOf(ax, "ByteVector"))
13321351 then {
13341353 fB
13351354 }
13361355 else if ($isInstanceOf(ax, "Unit"))
1337- then gL.senderPublicKey
1356+ then gM.senderPublicKey
13381357 else throw("Match error")
13391358 }
1340- let ax = gL
1359+ let ax = gM
13411360 if ($isInstanceOf(ax, "Order"))
13421361 then {
13431362 let dx = ax
1344- let gO = aI()
1345- let gP = dw(dx)
1346- let gQ = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1347- let gR = sigVerify(dx.bodyBytes, dx.proofs[1], gO)
1348- if (if (if (gP)
1349- then gQ
1350- else false)
1363+ let gP = aI()
1364+ let gQ = dw(dx)
1365+ let gR = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1366+ let gS = sigVerify(dx.bodyBytes, dx.proofs[1], gP)
1367+ if (if (if (gQ)
13511368 then gR
13521369 else false)
1370+ then gS
1371+ else false)
13531372 then true
1354- else as(gP, gQ, gR)
1373+ else as(gQ, gR, gS)
13551374 }
13561375 else if ($isInstanceOf(ax, "SetScriptTransaction"))
13571376 then {
13581377 let dX = ax
1359- let gS = blake2b256(value(dX.script))
1360- let gT = fromBase64String(value(getString(aF, aq())))
1361- let gU = scriptHash(this)
1362- if (if ((gT == gS))
1363- then (gU != gS)
1378+ let gT = blake2b256(value(dX.script))
1379+ let gU = fromBase64String(value(getString(aF, aq())))
1380+ let gV = scriptHash(this)
1381+ if (if ((gU == gT))
1382+ then (gV != gT)
13641383 else false)
13651384 then true
1366- else sigVerify(gL.bodyBytes, gL.proofs[0], gN)
1385+ else sigVerify(gM.bodyBytes, gM.proofs[0], gO)
13671386 }
1368- else sigVerify(gL.bodyBytes, gL.proofs[0], gN)
1387+ else sigVerify(gM.bodyBytes, gM.proofs[0], gO)
13691388 }
13701389
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "WAVES"
2121
2222 let j = "100"
2323
2424 let k = "1"
2525
2626 let l = "__"
2727
2828 let m = ""
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 1
3939
4040 let s = 2
4141
4242 let t = 3
4343
4444 let u = 4
4545
4646 let v = 5
4747
4848 let w = 6
4949
5050 let x = 7
5151
5252 let y = 8
5353
5454 let z = 9
5555
5656 let A = 1
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 10
6363
6464 let E = fraction(10, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
6868
6969 func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7070
7171
7272 func L (M,N,O) = fraction(M, N, O)
7373
7474
7575 func P (J) = if ((d > J))
7676 then -(J)
7777 else J
7878
7979
8080 func Q (J) = if ((d > J))
8181 then -(J)
8282 else J
8383
8484
8585 func R () = "%s__factoryContract"
8686
8787
8888 func S () = "%s__managerPublicKey"
8989
9090
9191 func T () = "%s__pendingManagerPublicKey"
9292
9393
9494 func U () = "%s%s__price__last"
9595
9696
9797 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9898
9999
100100 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
101101
102102
103103 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
104104
105105
106106 func ac () = "%s__amountAsset"
107107
108108
109109 func ad () = "%s__priceAsset"
110110
111111
112112 func ae () = "%s__amp"
113113
114114
115115 func af () = "%s__addonAddr"
116116
117117
118118 let ag = "%s__fee"
119119
120120 let ah = valueOrElse(getInteger(this, ag), E)
121121
122122 func ai () = "%s__factoryConfig"
123123
124124
125125 func aj () = "%s%s__matcher__publicKey"
126126
127127
128128 func ak (al,am) = (((("%d%d%s__" + al) + "__") + am) + "__config")
129129
130130
131131 func an (ao) = ("%s%s%s__mappings__baseAsset2internalId__" + ao)
132132
133133
134134 func ap () = "%s__shutdown"
135135
136136
137137 func aq () = "%s__allowedLpStableScriptHash"
138138
139139
140140 func ar () = "%s__feeCollectorAddress"
141141
142142
143143 func as (at,au,av) = throw(((((("Failed: ordValid=" + toString(at)) + " sndrValid=") + toString(au)) + " mtchrValid=") + toString(av)))
144144
145145
146146 func aw (J) = {
147147 let ax = J
148148 if ($isInstanceOf(ax, "String"))
149149 then {
150150 let ay = ax
151151 ay
152152 }
153153 else throw("fail cast to String")
154154 }
155155
156156
157157 func az (aA,aB) = valueOrErrorMessage(getString(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
158158
159159
160160 func aC (aA,aB) = valueOrErrorMessage(getInteger(aA, aB), makeString(["mandatory ", toString(aA), ".", aB, " not defined"], ""))
161161
162162
163163 func aD (aE) = throw(makeString(["lp_stable.ride:", aE], " "))
164164
165165
166166 let aF = addressFromStringValue(az(this, R()))
167167
168168 let aG = az(this, ae())
169169
170170 func aH () = valueOrElse(getBoolean(aF, ap()), false)
171171
172172
173173 func aI () = fromBase58String(az(aF, aj()))
174174
175175
176176 let aJ = addressFromStringValue(az(aF, ar()))
177177
178178 func aK () = {
179179 let aL = az(this, ac())
180180 let aM = az(this, ad())
181181 let aN = aC(aF, an(aM))
182182 let al = aC(aF, an(aL))
183183 split(az(aF, ak(toString(al), toString(aN))), l)
184184 }
185185
186186
187187 func aO (aP) = if ((aP == i))
188188 then unit
189189 else fromBase58String(aP)
190190
191191
192192 func aQ (aP) = if ((aP == unit))
193193 then i
194194 else toBase58String(value(aP))
195195
196196
197197 func aR (aS) = $Tuple7(addressFromStringValue(aS[r]), parseIntValue(aS[s]), fromBase58String(aS[t]), aO(aS[u]), aO(aS[v]), parseIntValue(aS[w]), parseIntValue(aS[x]))
198198
199199
200200 let aT = aR(aK())
201201
202202 let aU = aT
203203
204204 let aV = aU._1
205205
206206 let aW = aU._2
207207
208208 let aX = aU._3
209209
210210 let aY = aU._4
211211
212212 let aZ = aU._5
213213
214214 let ba = aU._6
215215
216216 let bb = aU._7
217217
218218 func bc () = split(az(aF, ai()), l)
219219
220220
221221 let bd = bc()
222222
223223 let be = valueOrErrorMessage(addressFromString(bd[A]), "Invalid staking contract address")
224224
225225 let bf = valueOrErrorMessage(addressFromString(bd[C]), "Invalid slipage contract address")
226226
227227 let bg = valueOrErrorMessage(addressFromString(bd[D]), "Invalid gwx contract address")
228228
229229 let bh = valueOrErrorMessage(addressFromString(bd[B]), "Invalid gwx contract address")
230230
231231 func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs)], l)
232232
233233
234234 func bt (bu,bv,bw,bm,bp,bq) = makeString(["%d%d%d%d%d%d", toString(bu), toString(bv), toString(bw), toString(bm), toString(bp), toString(bq)], l)
235235
236236
237237 func bx (by) = if ((by == "WAVES"))
238238 then wavesBalance(this).available
239239 else assetBalance(this, fromBase58String(by))
240240
241241
242242 func bz (bA,bB) = fraction(bA, c, bB)
243243
244244
245245 func bC (bD,bE,bF) = {
246246 let bG = fraction((bD - bE), b, bE)
247247 let bH = ((bF - P(bG)) > d)
248248 if (!(bH))
249249 then throw(("Big slpg: " + toString(bG)))
250250 else $Tuple2(bH, min([bD, bE]))
251251 }
252252
253253
254254 func bI (bJ,bK,bL) = {
255255 let bG = fraction(bK, b, bJ)
256256 let bM = (bL > bG)
257257 if (if (bM)
258258 then true
259259 else (bK > bJ))
260260 then throw(((((((toString(bK) + " ") + toString(bJ)) + " ") + toString(bG)) + " ") + toString(bL)))
261261 else bM
262262 }
263263
264264
265265 func bN (bO,bP,bQ,bR) = {
266266 let bS = F(bQ, bO)
267267 let bT = F(bR, bP)
268268 bz(bT, bS)
269269 }
270270
271271
272272 func bU (bQ,bR,bV) = {
273273 let bW = aK()
274274 let bX = parseIntValue(bW[w])
275275 let bY = parseIntValue(bW[x])
276276 let bZ = bN(bX, bY, bQ, bR)
277277 let bB = F(bQ, bX)
278278 let bA = F(bR, bY)
279279 let ca = F(bV, a)
280280 let cb = bz(bB, ca)
281281 let cc = bz(bA, ca)
282282 [bZ, cb, cc]
283283 }
284284
285285
286286 func cd (bQ,bR,bV) = {
287287 let ce = bU(bQ, bR, bV)
288288 [I(ce[0], a), I(ce[1], a), I(ce[2], a)]
289289 }
290290
291291
292292 func cf (cg) = {
293293 let ch = fraction(cg, ah, a)
294294 $Tuple2((cg - ch), ch)
295295 }
296296
297297
298298 func ci (cj,ck,cl,cm) = {
299299 let bW = aK()
300300 let cn = bW[t]
301301 let co = bW[u]
302302 let cp = bW[v]
303303 let cq = parseIntValue(bW[w])
304304 let cr = parseIntValue(bW[x])
305305 let cs = bW[s]
306306 let ct = valueOrErrorMessage(assetInfo(fromBase58String(cn)), "Wrong LP id").quantity
307307 if ((cn != ck))
308308 then throw("Wrong pmt asset")
309309 else {
310310 let cu = bx(co)
311311 let cv = F(cu, cq)
312312 let cw = bx(cp)
313313 let cx = F(cw, cr)
314314 let cy = bz(cx, cv)
315315 let cz = I(cy, a)
316316 let cA = F(cl, a)
317317 let cB = F(ct, a)
318318 let cC = fraction(cv, cA, cB)
319319 let cD = fraction(cx, cA, cB)
320320 let cE = I(cC, cq)
321321 let cF = I(cD, cr)
322322 let cG = if ((cj == ""))
323323 then nil
324324 else [ScriptTransfer(cm, cE, if ((co == "WAVES"))
325325 then unit
326326 else fromBase58String(co)), ScriptTransfer(cm, cF, if ((cp == "WAVES"))
327327 then unit
328328 else fromBase58String(cp)), StringEntry(ab(toString(cm), cj), bt(cE, cF, cl, cz, height, lastBlock.timestamp)), IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz)]
329329 $Tuple10(cE, cF, co, cp, cu, cw, ct, cy, cs, cG)
330330 }
331331 }
332332
333333
334334 func cH (cj,bF,cI,cJ,cK,cL,cm,cM,cN,cO,cP,cQ,cR) = {
335335 let bW = aK()
336336 let cn = fromBase58String(bW[t])
337337 let cS = bW[u]
338338 let cT = bW[v]
339339 let cU = bW[y]
340340 let cV = bW[z]
341341 let cW = parseIntValue(bW[w])
342342 let cX = parseIntValue(bW[x])
343343 let cs = bW[s]
344344 let cY = valueOrErrorMessage(assetInfo(cn), "Wr lp as").quantity
345345 let cu = if (cM)
346346 then bx(cS)
347347 else if (if (cO)
348348 then (cR == cS)
349349 else false)
350350 then (bx(cS) - cQ)
351351 else if (cO)
352352 then bx(cS)
353353 else (bx(cS) - cI)
354354 let cw = if (cM)
355355 then bx(cT)
356356 else if (if (cO)
357357 then (cR == cT)
358358 else false)
359359 then (bx(cT) - cQ)
360360 else if (cO)
361361 then bx(cT)
362362 else (bx(cT) - cK)
363363 let cZ = F(cI, cW)
364364 let da = F(cK, cX)
365365 let db = bz(da, cZ)
366366 let cv = F(cu, cW)
367367 let cx = F(cw, cX)
368368 let dc = if ((cY == 0))
369369 then {
370370 let cy = d
371371 let dd = d
372372 let ca = pow((cZ * da), 0, toBigInt(5), 1, 0, DOWN)
373373 $Tuple5(I(ca, a), I(cZ, cW), I(da, cX), bz((cx + da), (cv + cZ)), dd)
374374 }
375375 else {
376376 let cy = bz(cx, cv)
377377 let de = fraction(P((cy - db)), c, cy)
378378 let dd = F(bF, a)
379379 if (if (if (cP)
380380 then (cy != d)
381381 else false)
382382 then (de > dd)
383383 else false)
384384 then throw(((("Price slippage " + toString(de)) + " > ") + toString(dd)))
385385 else {
386386 let df = F(cY, a)
387387 let dg = fraction(cZ, cy, c)
388388 let dh = fraction(da, c, cy)
389389 let di = if ((dg > da))
390390 then $Tuple2(dh, da)
391391 else $Tuple2(cZ, dg)
392392 let dj = di._1
393393 let dk = di._2
394394 let ca = fraction(df, dk, cx)
395395 $Tuple5(I(ca, a), I(dj, cW), I(dk, cX), cy, dd)
396396 }
397397 }
398398 let dl = dc._1
399399 let dm = dc._2
400400 let dn = dc._3
401401 let cz = I(dc._4, a)
402402 let do = I(dc._5, a)
403403 if ((0 >= dl))
404404 then throw("LP <= 0")
405405 else {
406406 let dp = if (!(cN))
407407 then 0
408408 else dl
409409 let dq = (cI - dm)
410410 let dr = (cK - dn)
411411 let ds = if (if (cO)
412412 then (cR == cS)
413413 else false)
414414 then $Tuple2(cQ, 0)
415415 else if (if (cO)
416416 then (cR == cT)
417417 else false)
418418 then $Tuple2(0, cQ)
419419 else $Tuple2(dm, dn)
420420 let dt = ds._1
421421 let du = ds._2
422422 let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, cj), bi(dt, du, dp, cz, bF, do, height, lastBlock.timestamp, dq, dr))]
423423 $Tuple13(dl, dp, cz, cu, cw, cY, cn, cs, dv, dq, dr, cJ, cL)
424424 }
425425 }
426426
427427
428428 func dw (dx) = {
429429 let bW = aK()
430430 let dy = bW[u]
431431 let dz = bW[v]
432432 let cs = parseIntValue(bW[s])
433433 let bX = parseIntValue(bW[w])
434434 let bY = parseIntValue(bW[x])
435435 let dA = bx(dy)
436436 let dB = bx(dz)
437437 let cy = if ((dx.orderType == Buy))
438438 then bN(bX, bY, (dA + dx.amount), dB)
439439 else bN(bX, bY, (dA - dx.amount), dB)
440440 let cz = I(cy, a)
441441 if (if (if (aH())
442442 then true
443443 else (cs == p))
444444 then true
445445 else (cs == q))
446446 then throw("Admin blocked")
447447 else {
448448 let dC = dx.assetPair.amountAsset
449449 let dD = if ((dC == unit))
450450 then "WAVES"
451451 else toBase58String(value(dC))
452452 let dE = dx.assetPair.priceAsset
453453 let dF = if ((dE == unit))
454454 then "WAVES"
455455 else toBase58String(value(dE))
456456 if (if ((dD != dy))
457457 then true
458458 else (dF != dz))
459459 then throw("Wr assets")
460460 else {
461461 let dG = dx.price
462462 let cX = fraction(a, bY, bX)
463463 let dH = L(dG, a, cX)
464464 let dI = if ((dx.orderType == Buy))
465465 then (cz >= dH)
466466 else (dH >= cz)
467467 true
468468 }
469469 }
470470 }
471471
472472
473473 func dJ (dK) = if ((size(dK.payments) != 1))
474474 then throw("1 pmnt exp")
475475 else {
476476 let dL = value(dK.payments[0])
477477 let ck = value(dL.assetId)
478478 let cQ = dL.amount
479479 let dc = ci(toBase58String(dK.transactionId), toBase58String(ck), cQ, dK.caller)
480480 let cE = dc._1
481481 let cF = dc._2
482482 let cs = parseIntValue(dc._9)
483483 let cG = dc._10
484484 if (if (aH())
485485 then true
486486 else (cs == q))
487487 then throw(("Admin blocked: " + toString(cs)))
488488 else $Tuple5(cE, cF, cQ, ck, cG)
489489 }
490490
491491
492492 func dM (dN,aa,dO,dP,bF,cN,cO,cP,cQ,cR) = {
493493 let dc = cH(aa, bF, value(dO).amount, value(dO).assetId, value(dP).amount, value(dP).assetId, dN, (aa == ""), cN, cO, cP, cQ, cR)
494494 let cs = parseIntValue(dc._8)
495495 if (if (if (aH())
496496 then true
497497 else (cs == o))
498498 then true
499499 else (cs == q))
500500 then throw(("Blocked:" + toString(cs)))
501501 else dc
502502 }
503503
504504
505505 func dQ (dR) = {
506506 let dS = g
507507 let dT = dR[0]
508508 let dU = dR[1]
509509 let dV = parseBigIntValue(j)
510510 let dW = (parseBigIntValue(aG) * dV)
511511 let dX = (dT + dU)
512512 if ((dX == e))
513513 then e
514514 else {
515515 let dY = (dW * dS)
516516 let dZ = (((dT * dU) * dS) * dS)
517517 let ea = ((dY * dX) / dV)
518518 let eb = (dY - dV)
519519 let ec = (dS + f)
520520 func ed (ee,ef) = {
521521 let eg = ee
522522 let eh = eg._1
523523 let ei = eg._2
524524 if ((ei != unit))
525525 then ee
526526 else {
527527 let ej = (((eh * eh) * eh) / dZ)
528528 let ek = (((ea + (ej * dS)) * eh) / (((eb * eh) / dV) + (ec * ej)))
529529 let el = Q((ek - value(eh)))
530530 if ((f >= el))
531531 then $Tuple2(ek, ef)
532532 else $Tuple2(ek, unit)
533533 }
534534 }
535535
536536 let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
537537 let en = {
538538 let eo = em
539539 let ep = size(eo)
540540 let eq = $Tuple2(dX, unit)
541541 func er (es,et) = if ((et >= ep))
542542 then es
543543 else ed(es, eo[et])
544544
545545 func eu (es,et) = if ((et >= ep))
546546 then es
547547 else throw("List size exceeds 15")
548548
549549 eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
550550 }
551551 let eh = en._1
552552 let ei = en._2
553553 if ((ei != unit))
554554 then eh
555555 else throw(("D calculation error, D = " + toString(eh)))
556556 }
557557 }
558558
559559
560560 func ev (dR,dK,ew) = {
561561 let dS = g
562562 let ex = dR[if ((dK == 0))
563563 then 1
564564 else 0]
565565 let dV = parseBigIntValue(j)
566566 let dW = (parseBigIntValue(aG) * dV)
567567 let dX = ex
568568 let dY = (dW * dS)
569569 let ey = (((((ew * ew) / (ex * dS)) * ew) * dV) / (dY * dS))
570570 let ez = ((dX + ((ew * dV) / dY)) - ew)
571571 func ed (ee,ef) = {
572572 let eA = ee
573573 let eB = eA._1
574574 let ei = eA._2
575575 if ((ei != unit))
576576 then ee
577577 else {
578578 let eC = (((eB * eB) + ey) / ((g * eB) + ez))
579579 let eD = Q((eC - value(eB)))
580580 if ((f >= eD))
581581 then $Tuple2(eC, ef)
582582 else $Tuple2(eC, unit)
583583 }
584584 }
585585
586586 let em = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
587587 let eE = {
588588 let eo = em
589589 let ep = size(eo)
590590 let eq = $Tuple2(ew, unit)
591591 func er (es,et) = if ((et >= ep))
592592 then es
593593 else ed(es, eo[et])
594594
595595 func eu (es,et) = if ((et >= ep))
596596 then es
597597 else throw("List size exceeds 15")
598598
599599 eu(er(er(er(er(er(er(er(er(er(er(er(er(er(er(er(eq, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
600600 }
601601 let eB = eE._1
602602 let ei = eE._2
603603 if ((ei != unit))
604604 then eB
605605 else throw(("Y calculation error, Y = " + toString(eB)))
606606 }
607607
608608
609609 func eF (eG,ck,cm,aa,eH) = {
610610 let aS = aK()
611611 let co = aS[u]
612612 let cp = aS[v]
613613 let cn = aS[t]
614614 let cW = parseIntValue(aS[w])
615615 let cX = parseIntValue(aS[x])
616616 let eI = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
617617 let eJ = if ((eI > e))
618618 then true
619619 else throw("initial deposit requires all coins")
620620 if ((eJ == eJ))
621621 then {
622622 let cu = bx(co)
623623 let cw = bx(cp)
624624 let eK = if ((aa == ""))
625625 then $Tuple2(cu, cw)
626626 else if ((ck == co))
627627 then if ((eG > cu))
628628 then throw("invalid payment amount")
629629 else $Tuple2((cu - eG), cw)
630630 else if ((ck == cp))
631631 then if ((eG > cw))
632632 then throw("invalid payment amount")
633633 else $Tuple2(cu, (cw - eG))
634634 else throw("wrong pmtAssetId")
635635 let eL = eK._1
636636 let eM = eK._2
637637 let eN = if ((ck == co))
638638 then $Tuple2(eG, 0)
639639 else if ((ck == cp))
640640 then $Tuple2(0, eG)
641641 else throw("invalid payment")
642642 let eO = eN._1
643643 let eP = eN._2
644644 let eQ = if (eH)
645645 then $Tuple3(cf(eO)._1, cf(eP)._1, cf(eG)._2)
646646 else $Tuple3(eO, eP, 0)
647647 let eR = eQ._1
648648 let eS = eQ._2
649649 let ch = eQ._3
650650 let eT = (eL + eR)
651651 let eU = (eM + eS)
652652 let bK = dQ([toBigInt(eL), toBigInt(eM)])
653653 let bJ = dQ([toBigInt(eT), toBigInt(eU)])
654654 let eV = if ((bJ > bK))
655655 then true
656656 else throw()
657657 if ((eV == eV))
658658 then {
659659 let eW = fraction(eI, (bJ - bK), bK)
660660 let cz = I(bz(F(eU, cX), F(eT, cW)), a)
661661 let dv = [IntegerEntry(U(), cz), IntegerEntry(V(height, lastBlock.timestamp), cz), StringEntry(Y(cm, aa), bi(eO, eP, toInt(eW), cz, 0, 0, height, lastBlock.timestamp, 0, 0))]
662662 let eX = fraction(eM, a, eL)
663663 let eY = fraction(eG, a, (eX + a))
664664 let eZ = (eG - eY)
665665 let fa = fraction(eI, toBigInt(eZ), toBigInt(eM))
666666 let fb = toInt(fraction((eW - fa), b, fa))
667667 $Tuple4(toInt(eW), dv, ch, fb)
668668 }
669669 else throw("Strict value is not equal to itself.")
670670 }
671671 else throw("Strict value is not equal to itself.")
672672 }
673673
674674
675675 func fc (fd,fe,ff,dN,fg,fh) = {
676676 let aS = aK()
677677 let cn = aS[t]
678678 let co = aS[u]
679679 let cp = aS[v]
680680 let fi = parseIntValue(aS[w])
681681 let fj = parseIntValue(aS[x])
682682 let fk = aS[s]
683683 let cm = if ((dN == bh))
684684 then fg
685685 else dN
686686 let dL = value(ff[0])
687687 let ck = value(dL.assetId)
688688 let cQ = dL.amount
689689 let cj = toBase58String(fh)
690690 if ((cn != toBase58String(ck)))
691691 then throw("Wrong LP")
692692 else {
693693 let cu = bx(co)
694694 let cw = bx(cp)
695695 let fl = {
696696 let fm = invoke(this, "getOneTknV2READONLY", [fd, cQ], nil)
697697 if ($isInstanceOf(fm, "(Int, Int)"))
698698 then fm
699699 else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
700700 }
701701 let fn = fl._1
702702 let ch = fl._2
703703 let fo = if (if ((fe > 0))
704704 then (fe > fn)
705705 else false)
706706 then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
707707 else fn
708708 let fp = if ((fd == co))
709709 then $Tuple4(fo, 0, ((cu - fo) - ch), cw)
710710 else if ((fd == cp))
711711 then $Tuple4(0, fo, cu, ((cw - fo) - ch))
712712 else throw("invalid out asset id")
713713 let fq = fp._1
714714 let fr = fp._2
715715 let eT = fp._3
716716 let eU = fp._4
717717 let fs = bz(F(eU, fj), F(eT, fi))
718718 let ft = I(fs, a)
719719 let fu = if ((fd == "WAVES"))
720720 then unit
721721 else fromBase58String(fd)
722722 let fv = if ((ch > 0))
723723 then [ScriptTransfer(aJ, ch, fu)]
724724 else nil
725725 let cG = ([ScriptTransfer(cm, fo, fu), StringEntry(ab(toString(cm), cj), bt(fq, fr, cQ, ft, height, lastBlock.timestamp)), IntegerEntry(U(), ft), IntegerEntry(V(height, lastBlock.timestamp), ft)] ++ fv)
726726 if ((cG == cG))
727727 then {
728728 let fw = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
729729 if ((fw == fw))
730730 then $Tuple2(cG, fo)
731731 else throw("Strict value is not equal to itself.")
732732 }
733733 else throw("Strict value is not equal to itself.")
734734 }
735735 }
736736
737737
738738 func fx () = {
739739 let ax = getString(S())
740740 if ($isInstanceOf(ax, "String"))
741741 then {
742742 let dX = ax
743743 fromBase58String(dX)
744744 }
745745 else if ($isInstanceOf(ax, "Unit"))
746746 then unit
747747 else throw("Match error")
748748 }
749749
750750
751751 func fy () = {
752752 let ax = getString(T())
753753 if ($isInstanceOf(ax, "String"))
754754 then {
755755 let dX = ax
756756 fromBase58String(dX)
757757 }
758758 else if ($isInstanceOf(ax, "Unit"))
759759 then unit
760760 else throw("Match error")
761761 }
762762
763763
764764 let fz = throw("Permission denied")
765765
766766 func fA (dK) = {
767767 let ax = fx()
768768 if ($isInstanceOf(ax, "ByteVector"))
769769 then {
770770 let fB = ax
771+ (dK.callerPublicKey == fB)
772+ }
773+ else if ($isInstanceOf(ax, "Unit"))
774+ then (dK.caller == this)
775+ else throw("Match error")
776+ }
777+
778+
779+func fC (dK) = {
780+ let ax = fx()
781+ if ($isInstanceOf(ax, "ByteVector"))
782+ then {
783+ let fB = ax
771784 if ((dK.callerPublicKey == fB))
772785 then true
773786 else fz
774787 }
775788 else if ($isInstanceOf(ax, "Unit"))
776789 then if ((dK.caller == this))
777790 then true
778791 else fz
779792 else throw("Match error")
780793 }
781794
782795
783796 @Callable(dK)
784797 func constructor (R) = {
785- let ey = fA(dK)
798+ let ey = fC(dK)
786799 if ((ey == ey))
787800 then [StringEntry(R(), R)]
788801 else throw("Strict value is not equal to itself.")
789802 }
790803
791804
792805
793806 @Callable(dK)
794-func setManager (fC) = {
795- let ey = fA(dK)
807+func setManager (fD) = {
808+ let ey = fC(dK)
796809 if ((ey == ey))
797810 then {
798- let fD = fromBase58String(fC)
799- if ((fD == fD))
800- then [StringEntry(T(), fC)]
811+ let fE = fromBase58String(fD)
812+ if ((fE == fE))
813+ then [StringEntry(T(), fD)]
801814 else throw("Strict value is not equal to itself.")
802815 }
803816 else throw("Strict value is not equal to itself.")
804817 }
805818
806819
807820
808821 @Callable(dK)
809822 func confirmManager () = {
810823 let ce = fy()
811- let fE = if (isDefined(ce))
824+ let fF = if (isDefined(ce))
812825 then true
813826 else throw("No pending manager")
814- if ((fE == fE))
827+ if ((fF == fF))
815828 then {
816- let fF = if ((dK.callerPublicKey == value(ce)))
829+ let fG = if ((dK.callerPublicKey == value(ce)))
817830 then true
818831 else throw("You are not pending manager")
819- if ((fF == fF))
832+ if ((fG == fG))
820833 then [StringEntry(S(), toBase58String(value(ce))), DeleteEntry(T())]
821834 else throw("Strict value is not equal to itself.")
822835 }
823836 else throw("Strict value is not equal to itself.")
824837 }
825838
826839
827840
828841 @Callable(dK)
829-func put (fG,fH) = {
830- let fI = bc()
831- let fJ = valueOrErrorMessage(addressFromString(fI[A]), "Wr st addr")
832- let fK = valueOrErrorMessage(addressFromString(fI[C]), "Wr sl addr")
833- if ((0 > fG))
842+func put (fH,fI) = {
843+ let fJ = bc()
844+ let fK = valueOrErrorMessage(addressFromString(fJ[A]), "Wr st addr")
845+ let fL = valueOrErrorMessage(addressFromString(fJ[C]), "Wr sl addr")
846+ if ((0 > fH))
834847 then throw("Wrong slippage")
835848 else if ((size(dK.payments) != 2))
836849 then throw("2 pmnts expd")
837850 else {
838- let fL = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fG, true, false, true, 0, "")
839- let dp = fL._2
840- let fM = fL._7
841- let cG = fL._9
842- let dq = fL._10
843- let dr = fL._11
844- let co = fL._12
845- let cp = fL._13
851+ let fM = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fH, true, false, true, 0, "")
852+ let dp = fM._2
853+ let fN = fM._7
854+ let cG = fM._9
855+ let dq = fM._10
856+ let dr = fM._11
857+ let co = fM._12
858+ let cp = fM._13
846859 let dc = invoke(aF, "emit", [dp], nil)
847860 if ((dc == dc))
848861 then {
849- let fN = {
862+ let fO = {
850863 let ax = dc
851864 if ($isInstanceOf(ax, "Address"))
852865 then {
853- let fO = ax
854- invoke(fO, "emit", [dp], nil)
866+ let fP = ax
867+ invoke(fP, "emit", [dp], nil)
855868 }
856869 else unit
857870 }
858- if ((fN == fN))
871+ if ((fO == fO))
859872 then {
860- let fP = if ((dq > 0))
861- then invoke(fK, "put", nil, [AttachedPayment(co, dq)])
873+ let fQ = if ((dq > 0))
874+ then invoke(fL, "put", nil, [AttachedPayment(co, dq)])
862875 else nil
863- if ((fP == fP))
876+ if ((fQ == fQ))
864877 then {
865- let fQ = if ((dr > 0))
866- then invoke(fK, "put", nil, [AttachedPayment(cp, dr)])
878+ let fR = if ((dr > 0))
879+ then invoke(fL, "put", nil, [AttachedPayment(cp, dr)])
867880 else nil
868- if ((fQ == fQ))
881+ if ((fR == fR))
869882 then {
870- let fR = if (fH)
883+ let fS = if (fI)
871884 then {
872- let fS = invoke(fJ, "stake", nil, [AttachedPayment(fM, dp)])
873- if ((fS == fS))
885+ let fT = invoke(fK, "stake", nil, [AttachedPayment(fN, dp)])
886+ if ((fT == fT))
874887 then nil
875888 else throw("Strict value is not equal to itself.")
876889 }
877- else [ScriptTransfer(dK.caller, dp, fM)]
878- (cG ++ fR)
890+ else [ScriptTransfer(dK.caller, dp, fN)]
891+ (cG ++ fS)
879892 }
880893 else throw("Strict value is not equal to itself.")
881894 }
882895 else throw("Strict value is not equal to itself.")
883896 }
884897 else throw("Strict value is not equal to itself.")
885898 }
886899 else throw("Strict value is not equal to itself.")
887900 }
888901 }
889902
890903
891904
892905 @Callable(dK)
893-func putOneTknV2 (fe,fH) = {
894- let fT = {
906+func putOneTknV2 (fe,fI) = {
907+ let fU = if ({
895908 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
896909 if ($isInstanceOf(fm, "Boolean"))
897910 then fm
898911 else throw(($getType(fm) + " couldn't be cast to Boolean"))
899- }
900- let fU = if (if (if (aH())
912+ })
913+ then true
914+ else fA(dK)
915+ let fV = if (if (if (aH())
901916 then true
902917 else (aW == o))
903918 then true
904919 else (aW == q))
905920 then true
906- else fT
907- let fV = [if (!(fU))
921+ else fU
922+ let fW = [if (!(fV))
908923 then true
909924 else aD("put operation is blocked by admin"), if ((size(dK.payments) == 1))
910925 then true
911926 else aD("exactly 1 payment are expected")]
912- if ((fV == fV))
927+ if ((fW == fW))
913928 then {
914929 let aS = aK()
915930 let co = aS[u]
916931 let cp = aS[v]
917932 let cn = fromBase58String(aS[t])
918933 let fi = parseIntValue(aS[w])
919934 let fj = parseIntValue(aS[x])
920935 let cm = if ((dK.caller == this))
921936 then dK.originCaller
922937 else dK.caller
923938 let dL = value(dK.payments[0])
924939 let ck = toBase58String(value(dL.assetId))
925940 let cQ = dL.amount
926- let fW = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId), true)
927- let fX = fW._1
928- let cG = fW._2
929- let ch = fW._3
941+ let fX = eF(cQ, ck, toString(cm), toBase58String(dK.transactionId), true)
942+ let fY = fX._1
943+ let cG = fX._2
944+ let ch = fX._3
930945 let dp = if (if ((fe > 0))
931- then (fe > fX)
946+ then (fe > fY)
932947 else false)
933948 then aD(makeString(["amount to receive is less than ", toString(fe)], ""))
934- else fX
935- let fL = invoke(aF, "emit", [dp], nil)
936- if ((fL == fL))
949+ else fY
950+ let fM = invoke(aF, "emit", [dp], nil)
951+ if ((fM == fM))
937952 then {
938- let fN = {
939- let ax = fL
953+ let fO = {
954+ let ax = fM
940955 if ($isInstanceOf(ax, "Address"))
941956 then {
942- let fO = ax
943- invoke(fO, "emit", [dp], nil)
957+ let fP = ax
958+ invoke(fP, "emit", [dp], nil)
944959 }
945960 else unit
946961 }
947- if ((fN == fN))
962+ if ((fO == fO))
948963 then {
949- let fR = if (fH)
964+ let fS = if (fI)
950965 then {
951- let fS = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
952- if ((fS == fS))
966+ let fT = invoke(be, "stake", nil, [AttachedPayment(cn, dp)])
967+ if ((fT == fT))
953968 then nil
954969 else throw("Strict value is not equal to itself.")
955970 }
956971 else [ScriptTransfer(dK.caller, dp, cn)]
957972 let fv = if ((ch > 0))
958973 then [ScriptTransfer(aJ, ch, fromBase58String(ck))]
959974 else nil
960- $Tuple2(((cG ++ fR) ++ fv), dp)
975+ $Tuple2(((cG ++ fS) ++ fv), dp)
961976 }
962977 else throw("Strict value is not equal to itself.")
963978 }
964979 else throw("Strict value is not equal to itself.")
965980 }
966981 else throw("Strict value is not equal to itself.")
967982 }
968983
969984
970985
971986 @Callable(dK)
972-func putForFree (fY) = if ((0 > fY))
987+func putForFree (fZ) = if ((0 > fZ))
973988 then throw("Wrong slpg")
974989 else if ((size(dK.payments) != 2))
975990 then throw("2 pmnts expd")
976991 else {
977- let fZ = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fY, false, false, true, 0, "")
978- fZ._9
992+ let ga = dM(toString(dK.caller), toBase58String(dK.transactionId), AttachedPayment(value(dK.payments[0]).assetId, value(dK.payments[0]).amount), dK.payments[1], fZ, false, false, true, 0, "")
993+ ga._9
979994 }
980995
981996
982997
983998 @Callable(dK)
984999 func get () = {
9851000 let dc = dJ(dK)
986- let ga = dc._1
1001+ let gb = dc._1
9871002 let cF = dc._2
9881003 let cQ = dc._3
9891004 let ck = dc._4
9901005 let cG = dc._5
9911006 let ez = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
9921007 if ((ez == ez))
9931008 then cG
9941009 else throw("Strict value is not equal to itself.")
9951010 }
9961011
9971012
9981013
9991014 @Callable(dK)
10001015 func getOneTknV2 (fd,fe) = {
1001- let fT = {
1016+ let fU = if ({
10021017 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10031018 if ($isInstanceOf(fm, "Boolean"))
10041019 then fm
10051020 else throw(($getType(fm) + " couldn't be cast to Boolean"))
1006- }
1007- let gb = if (if (aH())
1021+ })
1022+ then true
1023+ else fA(dK)
1024+ let gc = if (if (aH())
10081025 then true
10091026 else (aW == q))
10101027 then true
1011- else fT
1012- let fV = [if (!(gb))
1028+ else fU
1029+ let fW = [if (!(gc))
10131030 then true
10141031 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 1))
10151032 then true
10161033 else aD("exactly 1 payment are expected")]
1017- if ((fV == fV))
1034+ if ((fW == fW))
10181035 then {
1019- let gc = fc(fd, fe, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1020- let cG = gc._1
1021- let fo = gc._2
1036+ let gd = fc(fd, fe, dK.payments, dK.caller, dK.originCaller, dK.transactionId)
1037+ let cG = gd._1
1038+ let fo = gd._2
10221039 $Tuple2(cG, fo)
10231040 }
10241041 else throw("Strict value is not equal to itself.")
10251042 }
10261043
10271044
10281045
10291046 @Callable(dK)
1030-func getOneTknV2READONLY (fd,gd) = {
1047+func getOneTknV2READONLY (fd,ge) = {
10311048 let aS = aK()
10321049 let co = aS[u]
10331050 let cp = aS[v]
10341051 let cn = aS[t]
10351052 let dR = [toBigInt(bx(co)), toBigInt(bx(cp))]
1036- let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
1053+ let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cn)), "invalid lp asset").quantity)
10371054 let bK = dQ(dR)
1038- let bJ = (bK - fraction(toBigInt(gd), bK, ge))
1039- let gf = if ((fd == co))
1055+ let bJ = (bK - fraction(toBigInt(ge), bK, gf))
1056+ let gg = if ((fd == co))
10401057 then 0
10411058 else if ((fd == cp))
10421059 then 1
10431060 else throw("invalid out asset id")
1044- let gg = ev(dR, gf, bJ)
1045- let gh = (dR[gf] - gg)
1046- let gi = max([0, toInt((gh - f))])
1047- let gj = cf(gi)
1048- let fn = gj._1
1049- let ch = gj._2
1061+ let gh = ev(dR, gg, bJ)
1062+ let gi = (dR[gg] - gh)
1063+ let gj = max([0, toInt((gi - f))])
1064+ let gk = cf(gj)
1065+ let fn = gk._1
1066+ let ch = gk._2
10501067 $Tuple2(nil, $Tuple2(fn, ch))
10511068 }
10521069
10531070
10541071
10551072 @Callable(dK)
1056-func getOneTknV2WithBonusREADONLY (fd,gd) = {
1073+func getOneTknV2WithBonusREADONLY (fd,ge) = {
10571074 let aS = aK()
10581075 let co = aS[u]
10591076 let cp = aS[v]
10601077 let cn = aS[t]
10611078 let cu = bx(co)
10621079 let cw = bx(cp)
1063- let gk = {
1064- let fm = invoke(this, "getOneTknV2READONLY", [fd, gd], nil)
1080+ let gl = {
1081+ let fm = invoke(this, "getOneTknV2READONLY", [fd, ge], nil)
10651082 if ($isInstanceOf(fm, "(Int, Int)"))
10661083 then fm
10671084 else throw(($getType(fm) + " couldn't be cast to (Int, Int)"))
10681085 }
1069- let fn = gk._1
1070- let ch = gk._2
1071- let dc = ci("", cn, gd, this)
1086+ let fn = gl._1
1087+ let ch = gl._2
1088+ let dc = ci("", cn, ge, this)
10721089 let cE = dc._1
10731090 let cF = dc._2
1074- let gl = (cE + cF)
1075- let fb = if ((gl == 0))
1091+ let gm = (cE + cF)
1092+ let fb = if ((gm == 0))
10761093 then if ((fn == 0))
10771094 then 0
10781095 else throw("bonus calculation error")
1079- else fraction((fn - gl), a, gl)
1096+ else fraction((fn - gm), a, gm)
10801097 $Tuple2(nil, $Tuple3(fn, ch, fb))
10811098 }
10821099
10831100
10841101
10851102 @Callable(dK)
1086-func getNoLess (gm,gn) = {
1103+func getNoLess (gn,go) = {
10871104 let dc = dJ(dK)
10881105 let cE = dc._1
10891106 let cF = dc._2
10901107 let cQ = dc._3
10911108 let ck = dc._4
10921109 let cG = dc._5
1093- if ((gm > cE))
1094- then throw(((("Failed: " + toString(cE)) + " < ") + toString(gm)))
1095- else if ((gn > cF))
1096- then throw(((("Failed: " + toString(cF)) + " < ") + toString(gn)))
1110+ if ((gn > cE))
1111+ then throw(((("Failed: " + toString(cE)) + " < ") + toString(gn)))
1112+ else if ((go > cF))
1113+ then throw(((("Failed: " + toString(cF)) + " < ") + toString(go)))
10971114 else {
1098- let go = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1099- if ((go == go))
1115+ let gp = invoke(aF, "burn", [cQ], [AttachedPayment(ck, cQ)])
1116+ if ((gp == gp))
11001117 then cG
11011118 else throw("Strict value is not equal to itself.")
11021119 }
11031120 }
11041121
11051122
11061123
11071124 @Callable(dK)
11081125 func unstakeAndGet (cg) = {
1109- let gp = if ((size(dK.payments) != 0))
1126+ let gq = if ((size(dK.payments) != 0))
11101127 then throw("No pmnts expd")
11111128 else true
1112- if ((gp == gp))
1129+ if ((gq == gq))
11131130 then {
11141131 let bW = aK()
1115- let gq = bc()
1116- let fM = fromBase58String(bW[t])
1117- let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1118- let gs = invoke(gr, "unstake", [toBase58String(fM), cg], nil)
1119- if ((gs == gs))
1132+ let gr = bc()
1133+ let fN = fromBase58String(bW[t])
1134+ let gs = valueOrErrorMessage(addressFromString(gr[A]), "Wr st addr")
1135+ let gt = invoke(gs, "unstake", [toBase58String(fN), cg], nil)
1136+ if ((gt == gt))
11201137 then {
1121- let dc = ci(toBase58String(dK.transactionId), toBase58String(fM), cg, dK.caller)
1138+ let dc = ci(toBase58String(dK.transactionId), toBase58String(fN), cg, dK.caller)
11221139 let cs = parseIntValue(dc._9)
11231140 let cG = dc._10
1124- let gt = if (if (aH())
1141+ let gu = if (if (aH())
11251142 then true
11261143 else (cs == q))
11271144 then throw(("Blocked: " + toString(cs)))
11281145 else true
1129- if ((gt == gt))
1146+ if ((gu == gu))
11301147 then {
1131- let gu = invoke(aF, "burn", [cg], [AttachedPayment(fM, cg)])
1132- if ((gu == gu))
1148+ let gv = invoke(aF, "burn", [cg], [AttachedPayment(fN, cg)])
1149+ if ((gv == gv))
11331150 then cG
11341151 else throw("Strict value is not equal to itself.")
11351152 }
11361153 else throw("Strict value is not equal to itself.")
11371154 }
11381155 else throw("Strict value is not equal to itself.")
11391156 }
11401157 else throw("Strict value is not equal to itself.")
11411158 }
11421159
11431160
11441161
11451162 @Callable(dK)
1146-func unstakeAndGetNoLess (gv,gw,gn) = {
1147- let gb = if (aH())
1163+func unstakeAndGetNoLess (gw,gx,go) = {
1164+ let gc = if (aH())
11481165 then true
11491166 else (aW == q)
1150- let fV = [if (!(gb))
1167+ let fW = [if (!(gc))
11511168 then true
11521169 else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
11531170 then true
11541171 else throw("no payments are expected")]
1155- if ((fV == fV))
1172+ if ((fW == fW))
11561173 then {
1157- let gs = invoke(be, "unstake", [toBase58String(aX), gv], nil)
1158- if ((gs == gs))
1174+ let gt = invoke(be, "unstake", [toBase58String(aX), gw], nil)
1175+ if ((gt == gt))
11591176 then {
1160- let gx = ci(toBase58String(dK.transactionId), toBase58String(aX), gv, dK.caller)
1161- let cE = gx._1
1162- let cF = gx._2
1163- let cG = gx._10
1164- let gy = [if ((cE >= gw))
1177+ let gy = ci(toBase58String(dK.transactionId), toBase58String(aX), gw, dK.caller)
1178+ let cE = gy._1
1179+ let cF = gy._2
1180+ let cG = gy._10
1181+ let gz = [if ((cE >= gx))
11651182 then true
1166- else throw(makeString(["amount asset amount to receive is less than ", toString(gw)], "")), if ((cF >= gn))
1183+ else throw(makeString(["amount asset amount to receive is less than ", toString(gx)], "")), if ((cF >= go))
11671184 then true
1168- else throw(makeString(["price asset amount to receive is less than ", toString(gn)], ""))]
1169- if ((gy == gy))
1185+ else throw(makeString(["price asset amount to receive is less than ", toString(go)], ""))]
1186+ if ((gz == gz))
11701187 then {
1171- let go = invoke(aF, "burn", [gv], [AttachedPayment(aX, gv)])
1172- if ((go == go))
1188+ let gp = invoke(aF, "burn", [gw], [AttachedPayment(aX, gw)])
1189+ if ((gp == gp))
11731190 then cG
11741191 else throw("Strict value is not equal to itself.")
11751192 }
11761193 else throw("Strict value is not equal to itself.")
11771194 }
11781195 else throw("Strict value is not equal to itself.")
11791196 }
11801197 else throw("Strict value is not equal to itself.")
11811198 }
11821199
11831200
11841201
11851202 @Callable(dK)
1186-func unstakeAndGetOneTknV2 (gv,fd,fe) = {
1187- let fT = {
1203+func unstakeAndGetOneTknV2 (gw,fd,fe) = {
1204+ let fU = if ({
11881205 let fm = invoke(aF, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11891206 if ($isInstanceOf(fm, "Boolean"))
11901207 then fm
11911208 else throw(($getType(fm) + " couldn't be cast to Boolean"))
1192- }
1193- let gb = if (if (aH())
1209+ })
1210+ then true
1211+ else fA(dK)
1212+ let gc = if (if (aH())
11941213 then true
11951214 else (aW == q))
11961215 then true
1197- else fT
1198- let fV = [if (!(gb))
1216+ else fU
1217+ let fW = [if (!(gc))
11991218 then true
12001219 else aD("get operation is blocked by admin"), if ((size(dK.payments) == 0))
12011220 then true
12021221 else aD("no payments are expected")]
1203- if ((fV == fV))
1222+ if ((fW == fW))
12041223 then {
12051224 let bW = aK()
1206- let gq = bc()
1207- let fM = fromBase58String(bW[t])
1208- let gr = valueOrErrorMessage(addressFromString(gq[A]), "Wr st addr")
1209- let gs = invoke(gr, "unstake", [toBase58String(fM), gv], nil)
1210- if ((gs == gs))
1225+ let gr = bc()
1226+ let fN = fromBase58String(bW[t])
1227+ let gs = valueOrErrorMessage(addressFromString(gr[A]), "Wr st addr")
1228+ let gt = invoke(gs, "unstake", [toBase58String(fN), gw], nil)
1229+ if ((gt == gt))
12111230 then {
1212- let gz = fc(fd, fe, [AttachedPayment(fM, gv)], dK.caller, dK.originCaller, dK.transactionId)
1213- let cG = gz._1
1214- let fo = gz._2
1231+ let gA = fc(fd, fe, [AttachedPayment(fN, gw)], dK.caller, dK.originCaller, dK.transactionId)
1232+ let cG = gA._1
1233+ let fo = gA._2
12151234 $Tuple2(cG, fo)
12161235 }
12171236 else throw("Strict value is not equal to itself.")
12181237 }
12191238 else throw("Strict value is not equal to itself.")
12201239 }
12211240
12221241
12231242
12241243 @Callable(dK)
1225-func putOneTknV2WithBonusREADONLY (gA,gB) = {
1244+func putOneTknV2WithBonusREADONLY (gB,gC) = {
12261245 let aS = aK()
12271246 let co = aS[u]
12281247 let cp = aS[v]
12291248 let cn = aS[t]
1230- let gC = eF(gA, gB, "", "", true)
1231- let eW = gC._1
1232- let cG = gC._2
1233- let ch = gC._3
1234- let fb = gC._4
1235- $Tuple2(nil, $Tuple3(eW, ch, fb))
1236- }
1237-
1238-
1239-
1240-@Callable(dK)
1241-func putOneTknV2WithoutTakeFeeREADONLY (gA,gB) = {
1242- let aS = aK()
1243- let co = aS[u]
1244- let cp = aS[v]
1245- let cn = aS[t]
1246- let gD = eF(gA, gB, "", "", false)
1249+ let gD = eF(gB, gC, "", "", true)
12471250 let eW = gD._1
12481251 let cG = gD._2
12491252 let ch = gD._3
12501253 let fb = gD._4
12511254 $Tuple2(nil, $Tuple3(eW, ch, fb))
12521255 }
12531256
12541257
12551258
12561259 @Callable(dK)
1257-func activate (gE,gF) = if ((toString(dK.caller) != toString(aF)))
1258- then throw("denied")
1259- else $Tuple2([StringEntry(ac(), gE), StringEntry(ad(), gF)], "success")
1260+func putOneTknV2WithoutTakeFeeREADONLY (gB,gC) = {
1261+ let aS = aK()
1262+ let co = aS[u]
1263+ let cp = aS[v]
1264+ let cn = aS[t]
1265+ let gE = eF(gB, gC, "", "", false)
1266+ let eW = gE._1
1267+ let cG = gE._2
1268+ let ch = gE._3
1269+ let fb = gE._4
1270+ $Tuple2(nil, $Tuple3(eW, ch, fb))
1271+ }
12601272
12611273
12621274
12631275 @Callable(dK)
1264-func setS (gG,gt) = if ((toString(dK.caller) != az(this, af())))
1265- then fz
1266- else [StringEntry(gG, gt)]
1276+func activate (gF,gG) = if ((toString(dK.caller) != toString(aF)))
1277+ then throw("denied")
1278+ else $Tuple2([StringEntry(ac(), gF), StringEntry(ad(), gG)], "success")
12671279
12681280
12691281
12701282 @Callable(dK)
1271-func setI (gG,gt) = if ((toString(dK.caller) != az(this, af())))
1283+func setS (gH,gu) = if ((toString(dK.caller) != az(this, af())))
12721284 then fz
1273- else [IntegerEntry(gG, gt)]
1285+ else [StringEntry(gH, gu)]
1286+
1287+
1288+
1289+@Callable(dK)
1290+func setI (gH,gu) = if ((toString(dK.caller) != az(this, af())))
1291+ then fz
1292+ else [IntegerEntry(gH, gu)]
12741293
12751294
12761295
12771296 @Callable(dK)
12781297 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aK())
12791298
12801299
12811300
12821301 @Callable(dK)
12831302 func getAccBalanceWrapperREADONLY (by) = $Tuple2(nil, bx(by))
12841303
12851304
12861305
12871306 @Callable(dK)
12881307 func calcPricesWrapperREADONLY (bQ,bR,bV) = {
1289- let gH = bU(bQ, bR, bV)
1290- $Tuple2(nil, [toString(gH[0]), toString(gH[1]), toString(gH[2])])
1308+ let gI = bU(bQ, bR, bV)
1309+ $Tuple2(nil, [toString(gI[0]), toString(gI[1]), toString(gI[2])])
12911310 }
12921311
12931312
12941313
12951314 @Callable(dK)
1296-func fromX18WrapperREADONLY (J,gI) = $Tuple2(nil, I(parseBigIntValue(J), gI))
1315+func fromX18WrapperREADONLY (J,gJ) = $Tuple2(nil, I(parseBigIntValue(J), gJ))
12971316
12981317
12991318
13001319 @Callable(dK)
13011320 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
13021321
13031322
13041323
13051324 @Callable(dK)
13061325 func calcPriceBigIntWrapperREADONLY (bA,bB) = $Tuple2(nil, toString(bz(parseBigIntValue(bA), parseBigIntValue(bB))))
13071326
13081327
13091328
13101329 @Callable(dK)
1311-func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gJ,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gJ, cM, cN, true, false, 0, ""))
1330+func estimatePutOperationWrapperREADONLY (cj,bF,cI,cJ,cK,cL,gK,cM,cN) = $Tuple2(nil, cH(cj, bF, cI, cJ, cK, cL, gK, cM, cN, true, false, 0, ""))
13121331
13131332
13141333
13151334 @Callable(dK)
1316-func estimateGetOperationWrapperREADONLY (cj,gK,cl,gJ) = {
1317- let dc = ci(cj, gK, cl, addressFromStringValue(gJ))
1335+func estimateGetOperationWrapperREADONLY (cj,gL,cl,gK) = {
1336+ let dc = ci(cj, gL, cl, addressFromStringValue(gK))
13181337 $Tuple2(nil, $Tuple10(dc._1, dc._2, dc._3, dc._4, dc._5, dc._6, dc._7, toString(dc._8), dc._9, dc._10))
13191338 }
13201339
13211340
13221341
13231342 @Callable(dK)
13241343 func getFeeREADONLY () = $Tuple2(nil, ah)
13251344
13261345
1327-@Verifier(gL)
1328-func gM () = {
1329- let gN = {
1346+@Verifier(gM)
1347+func gN () = {
1348+ let gO = {
13301349 let ax = fx()
13311350 if ($isInstanceOf(ax, "ByteVector"))
13321351 then {
13331352 let fB = ax
13341353 fB
13351354 }
13361355 else if ($isInstanceOf(ax, "Unit"))
1337- then gL.senderPublicKey
1356+ then gM.senderPublicKey
13381357 else throw("Match error")
13391358 }
1340- let ax = gL
1359+ let ax = gM
13411360 if ($isInstanceOf(ax, "Order"))
13421361 then {
13431362 let dx = ax
1344- let gO = aI()
1345- let gP = dw(dx)
1346- let gQ = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1347- let gR = sigVerify(dx.bodyBytes, dx.proofs[1], gO)
1348- if (if (if (gP)
1349- then gQ
1350- else false)
1363+ let gP = aI()
1364+ let gQ = dw(dx)
1365+ let gR = sigVerify(dx.bodyBytes, dx.proofs[0], dx.senderPublicKey)
1366+ let gS = sigVerify(dx.bodyBytes, dx.proofs[1], gP)
1367+ if (if (if (gQ)
13511368 then gR
13521369 else false)
1370+ then gS
1371+ else false)
13531372 then true
1354- else as(gP, gQ, gR)
1373+ else as(gQ, gR, gS)
13551374 }
13561375 else if ($isInstanceOf(ax, "SetScriptTransaction"))
13571376 then {
13581377 let dX = ax
1359- let gS = blake2b256(value(dX.script))
1360- let gT = fromBase64String(value(getString(aF, aq())))
1361- let gU = scriptHash(this)
1362- if (if ((gT == gS))
1363- then (gU != gS)
1378+ let gT = blake2b256(value(dX.script))
1379+ let gU = fromBase64String(value(getString(aF, aq())))
1380+ let gV = scriptHash(this)
1381+ if (if ((gU == gT))
1382+ then (gV != gT)
13641383 else false)
13651384 then true
1366- else sigVerify(gL.bodyBytes, gL.proofs[0], gN)
1385+ else sigVerify(gM.bodyBytes, gM.proofs[0], gO)
13671386 }
1368- else sigVerify(gL.bodyBytes, gL.proofs[0], gN)
1387+ else sigVerify(gM.bodyBytes, gM.proofs[0], gO)
13691388 }
13701389

github/deemru/w8io/3ef1775 
192.75 ms