tx · 4fqMMhfmDYkLB5AgNKBfUefnLTX5cmRyGZJyGErAz2aF

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03700000 Waves

2022.12.20 11:05 [2368350] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "4fqMMhfmDYkLB5AgNKBfUefnLTX5cmRyGZJyGErAz2aF", "fee": 3700000, "feeAssetId": null, "timestamp": 1671523535034, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "2cz5tJYYRYBTpWBgCGecERtLNhe3sYEUoPRbwfQ9DEPHWRPjHA9Jc3zfCMqpvwxv42zKB3R2tunAduMUYZUBr5pm" ], "script": "base64:BgL2KAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIDZmNhIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc0MDY3NTkyIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIDZWdvIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10Igt1c2VyQWRkcmVzcyIEbHBJZCIEYW1JZCIEcHJJZCIFYW1EY20iBXByRGNtIgNzdHMiB2xwRW1pc3MiCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCIKbHBFbWlzc1gxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIgNlcG8iB2luQW1BbXQiBmluQW1JZCIHaW5QckFtdCIGaW5QcklkIgZpc0V2YWwiBmVtaXRMcCIKaXNPbmVBc3NldCIQdmFsaWRhdGVTbGlwcGFnZSIGcG10QW10IgVwbXRJZCIHYW1JZFN0ciIHcHJJZFN0ciIJaW5BbUlkU3RyIglpblBySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDE4MTEyMTg0NTciCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgRnZXREIgJ4cCIDeHAwIgN4cDEiAXMiAWEiA2FubiILeHAwX3hwMV9uX24iBWFubl9zIgVhbm5fMSIJY2FsY0ROZXh0IgFkIgJkZCIDZGRkIgJkcCIEY2FsYyIDYWNjIgFpIgVkTmV4dCIIZERpZmZSYXciBWREaWZmIgNhcnIiDSR0MDIwMzg1MjA0MzMiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVmb3VuZCIHZ2V0RE9sZCIBbiIKYVByZWNpc2lvbiIQYW5uX3NfYVByZWNpc2lvbiIOYW5uX2FQcmVjaXNpb24iAm4xIgNjdXIiDSR0MDIxMDYyMjEwODIiDSR0MDIxNTAzMjE1NTAiBWdldFlEIgFEIgF4IgFjIgFiIg0kdDAyMjA1MDIyMDcwIgF5IgV5TmV4dCIFeURpZmYiDSR0MDIyMzc3MjI0MjQiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNDM2MzI0NTc1IgNkTHAiDSR0MDI0OTA1MjUwMDUiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyNzMyMjI3Nzg0IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjc3OTAyNzk2NiILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNzk3MDI4MjA5IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMDI3NDMwMzg1IgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMwNTc1MzA4ODIiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzE2NjczMjAxNyIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzIwMjAzMjEyOCIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwMzYyNzczNjM0MiIFY2hlY2siFGxwQXNzZXRFbWlzc2lvbkFmdGVyIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzNzg2NDM4MDIyIgdlc3RpbUxQIg0kdDAzODgzNzM5MTg2IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzkxODkzOTI5NyIDYWFiIgNwYWIiA2xhZSIEbGFlYSIJb3V0QW10QW10Ig0kdDA0MTU5NTQxNzUyIgVlcnJvciINaXNHZXREaXNhYmxlZCINJHQwNDI1NTE0MjcwNiIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDMyMzA0MzI5NCIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiAmR5Igt0b3RhbEdldFJhdyINJHQwNDQxOTQ0NDI0MyINJHQwNDQ1ODg0NDcwMyIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0NTg3MTQ1OTUyIg1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNDcwMTU0NzA5NiINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNDgzNDQ0ODQyNSINJHQwNDkzNTk0OTU0NyIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDQ5ODA2NDk5MDkiDSR0MDUwMTg4NTAyOTIiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaHsAAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEAAwABaQkAtgIBAAQAAWoJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFrAgVXQVZFUwABbAIDMTAwAAFtAgExAAFuAgJfXwABbwIAAAFwAAEAAXEAAgABcgADAAFzAAQAAXQAAQABdQACAAF2AAMAAXcABAABeAAFAAF5AAYAAXoABwABQQAIAAFCAAkAAUMAAQABRAAGAAFFAAcAAUYACgABRwkAawMACgUBYQCQTgEBSAIBSQFKCQC8AgMJALYCAQUBSQUBYwkAtgIBBQFKAQFLAgFMAU0JAKADAQkAvAIDBQFMCQC2AgEFAU0FAWMBAU4DAUwBTQFPCQCgAwEJAL0CBAUBTAkAtgIBBQFNBQFjBQFPAQFQAwFRAVIBUwkAawMFAVEFAVIFAVMBAVQBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBVQEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFWAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFYAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFZAAIRJXMlc19fcHJpY2VfX2xhc3QBAVoCAmFhAmFiCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUCYWEJAMwIAgkApAMBBQJhYgUDbmlsBQFuAQJhYwICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhZAICX18FAmFlAQJhZgICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhZAICX18FAmFlAQJhZwACDyVzX19hbW91bnRBc3NldAECYWgAAg4lc19fcHJpY2VBc3NldAECYWkAAgclc19fYW1wAQJhagACDSVzX19hZGRvbkFkZHIAAmFrAgclc19fZmVlAAJhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhawUBRwACYW0JALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYW4JALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYW8JALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYXAAAQACYXEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW8FAmFwAQJhcgACESVzX19mYWN0b3J5Q29uZmlnAQJhcwACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXQCAmF1AmF2CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhdQICX18FAmF2AghfX2NvbmZpZwECYXcBAmF4CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF4AQJheQACDCVzX19zaHV0ZG93bgECYXoAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUEAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUIDAmFDAmFEAmFFCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFDAgsgc25kclZhbGlkPQkApQMBBQJhRAIMIG10Y2hyVmFsaWQ9CQClAwEFAmFFAQJhRgEBTAQCYUcFAUwDCQABAgUCYUcCBlN0cmluZwQCYUgFAmFHBQJhSAkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmFJAgJhSgJhSwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFKBQJhSwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSgkAzAgCAgEuCQDMCAIFAmFLCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFMAgJhSgJhSwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFKBQJhSwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSgkAzAgCAgEuCQDMCAIFAmFLCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFNAQJhTgkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYU4FA25pbAIBIAECYU8BAmFOCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFOBQNuaWwCASAAAmFQCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUkCBQR0aGlzCQEBVgAAAmFRCQECYUkCBQR0aGlzCQECYWkAAQJhUgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVAJAQJheQAHAQJhUwAJANkEAQkBAmFJAgUCYVAJAQJhcwAAAmFUCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUkCBQJhUAkBAmFBAAECYVUABAJhVgkBAmFJAgUEdGhpcwkBAmFnAAQCYVcJAQJhSQIFBHRoaXMJAQJhaAAEAmFYCQECYUwCBQJhUAkBAmF3AQUCYVcEAmF1CQECYUwCBQJhUAkBAmF3AQUCYVYJALUJAgkBAmFJAgUCYVAJAQJhdAIJAKQDAQUCYXUJAKQDAQUCYVgFAW4BAmFZAQJhWgMJAAACBQJhWgUBawUEdW5pdAkA2QQBBQJhWgECYmEBAmFaAwkAAAIFAmFaBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmFaAQJiYgECYmMJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiYwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF1CQDZBAEJAJEDAgUCYmMFAXYJAQJhWQEJAJEDAgUCYmMFAXcJAQJhWQEJAJEDAgUCYmMFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6AAJiZAkBAmJiAQkBAmFVAAACYmUFAmJkAAJiZggFAmJlAl8xAAJiZwgFAmJlAl8yAAJiaAgFAmJlAl8zAAJiaQgFAmJlAl80AAJiaggFAmJlAl81AAJiawgFAmJlAl82AAJibAgFAmJlAl83AQJibQAJALUJAgkBAmFJAgUCYVAJAQJhcgAFAW4AAmJuCQECYm0AAAJibwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJicAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJicQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibgUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYnMKAmJ0AmJ1AmJ2AmJ3AmJ4AmJ5AmJ6AmJBAmJCAmJDCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFuAQJiRAYCYkUCYkYCYkcCYncCYnoCYkEJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ6CQDMCAIJAKQDAQUCYkEFA25pbAUBbgECYkgBAmJJAwkAAAIFAmJJAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiSQECYkoCAmJLAmJMCQC8AgMFAmJLBQFjBQJiTAECYk0DAmJOAmJPAmJQBAJiUQkAvAIDCQC4AgIFAmJOBQJiTwUBYgUCYk8EAmJSCQC/AgIJALgCAgUCYlAJAQFUAQUCYlEFAWQDCQEBIQEFAmJSCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJRCQCUCgIFAmJSCQCZAwEJAMwIAgUCYk4JAMwIAgUCYk8FA25pbAECYlMDAmJUAmJVAmJWBAJiUQkAvAIDBQJiVQUBYgUCYlQEAmJXCQC/AgIFAmJWBQJiUQMDBQJiVwYJAL8CAgUCYlUFAmJUCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiVQIBIAkApgMBBQJiVAIBIAkApgMBBQJiUQIBIAkApgMBBQJiVgUCYlcBAmJYBAJiWQJiWgJjYQJjYgQCY2MJAQFIAgUCY2EFAmJZBAJjZAkBAUgCBQJjYgUCYloJAQJiSgIFAmNkBQJjYwECY2UDAmNhAmNiAmNmBAJjZwkBAmFVAAQCY2gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBeQQCY2kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBegQCY2oJAQJiWAQFAmNoBQJjaQUCY2EFAmNiBAJiTAkBAUgCBQJjYQUCY2gEAmJLCQEBSAIFAmNiBQJjaQQCY2sJAQFIAgUCY2YFAWEEAmNsCQECYkoCBQJiTAUCY2sEAmNtCQECYkoCBQJiSwUCY2sJAMwIAgUCY2oJAMwIAgUCY2wJAMwIAgUCY20FA25pbAECY24DAmNhAmNiAmNmBAJjbwkBAmNlAwUCY2EFAmNiBQJjZgkAzAgCCQEBSwIJAJEDAgUCY28AAAUBYQkAzAgCCQEBSwIJAJEDAgUCY28AAQUBYQkAzAgCCQEBSwIJAJEDAgUCY28AAgUBYQUDbmlsAQJjcAECY3EEAmNyCQBrAwUCY3EFAmFsBQFhCQCUCgIJAGUCBQJjcQUCY3IFAmNyAQJjcwQCY3QCY3UCY3YCY3cEAmNnCQECYVUABAJjeAkAkQMCBQJjZwUBdgQCY3kJAJEDAgUCY2cFAXcEAmN6CQCRAwIFAmNnBQF4BAJjQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF5BAJjQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF6BAJjQwkAkQMCBQJjZwUBdQQCY0QICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjeAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJjeAUCY3UJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNFCQECYkgBBQJjeQQCY0YJAQFIAgUCY0UFAmNBBAJjRwkBAmJIAQUCY3oEAmNICQEBSAIFAmNHBQJjQgQCY0kJAQJiSgIFAmNIBQJjRgQCY0oJAQFLAgUCY0kFAWEEAmNLCQEBSAIFAmN2BQFhBAJjTAkBAUgCBQJjRAUBYQQCY00JALwCAwUCY0YFAmNLBQJjTAQCY04JALwCAwUCY0gFAmNLBQJjTAQCY08JAQFOAwUCY00FAmNBBQVGTE9PUgQCY1AJAQFOAwUCY04FAmNCBQVGTE9PUgQCY1EDCQAAAgUCY3QCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN3BQJjTwMJAAACBQJjeQIFV0FWRVMFBHVuaXQJANkEAQUCY3kJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3cFAmNQAwkAAAIFAmN6AgVXQVZFUwUEdW5pdAkA2QQBBQJjegkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN3BQJjdAkBAmJEBgUCY08FAmNQBQJjdgUCY0oFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0oFA25pbAkAnAoKBQJjTwUCY1AFAmN5BQJjegUCY0UFAmNHBQJjRAUCY0kFAmNDBQJjUQECY1INAmN0AmJQAmNTAmNUAmNVAmNWAmN3AmNXAmNYAmNZAmNaAmRhAmRiBAJjZwkBAmFVAAQCY3gJANkEAQkAkQMCBQJjZwUBdgQCZGMJAJEDAgUCY2cFAXcEAmRkCQCRAwIFAmNnBQF4BAJkZQkAkQMCBQJjZwUBQQQCZGYJAJEDAgUCY2cFAUIEAmRnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXkEAmRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXoEAmNDCQCRAwIFAmNnBQF1BAJkaQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjeAIIV3IgbHAgYXMIcXVhbnRpdHkEAmNFAwUCY1cJAQJiSAEFAmRjAwMFAmNZCQAAAgUCZGIFAmRjBwkAZQIJAQJiSAEFAmRjBQJkYQMFAmNZCQECYkgBBQJkYwkAZQIJAQJiSAEFAmRjBQJjUwQCY0cDBQJjVwkBAmJIAQUCZGQDAwUCY1kJAAACBQJkYgUCZGQHCQBlAgkBAmJIAQUCZGQFAmRhAwUCY1kJAQJiSAEFAmRkCQBlAgkBAmJIAQUCZGQFAmNVBAJkagkBAUgCBQJjUwUCZGcEAmRrCQEBSAIFAmNVBQJkaAQCZGwJAQJiSgIFAmRrBQJkagQCY0YJAQFIAgUCY0UFAmRnBAJjSAkBAUgCBQJjRwUCZGgEAmRtAwkAAAIFAmRpAAAEAmNJBQFkBAJkbgUBZAQCY2sJAHYGCQC5AgIFAmRqBQJkawAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUsCBQJjawUBYQkBAUsCBQJkagUCZGcJAQFLAgUCZGsFAmRoCQECYkoCCQC3AgIFAmNIBQJkawkAtwICBQJjRgUCZGoFAmRuBAJjSQkBAmJKAgUCY0gFAmNGBAJkbwkAvAIDCQEBVAEJALgCAgUCY0kFAmRsBQFjBQJjSQQCZG4JAQFIAgUCYlAFAWEDAwMFAmNaCQECIT0CBQJjSQUBZAcJAL8CAgUCZG8FAmRuBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkbwIDID4gCQCmAwEFAmRuBAJkcAkBAUgCBQJkaQUBYQQCZHEJALwCAwUCZGoFAmNJBQFjBAJkcgkAvAIDBQJkawUBYwUCY0kEAmRzAwkAvwICBQJkcQUCZGsJAJQKAgUCZHIFAmRrCQCUCgIFAmRqBQJkcQQCZHQIBQJkcwJfMQQCZHUIBQJkcwJfMgQCY2sJALwCAwUCZHAFAmR1BQJjSAkAlwoFCQEBTgMFAmNrBQFhBQVGTE9PUgkBAU4DBQJkdAUCZGcFB0NFSUxJTkcJAQFOAwUCZHUFAmRoBQdDRUlMSU5HBQJjSQUCZG4EAmR2CAUCZG0CXzEEAmR3CAUCZG0CXzIEAmR4CAUCZG0CXzMEAmNKCQEBSwIIBQJkbQJfNAUBYQQCZHkJAQFLAggFAmRtAl81BQFhAwkAZwIAAAUCZHYJAAIBAgdMUCA8PSAwBAJkegMJAQEhAQUCY1gAAAUCZHYEAmRBCQBlAgUCY1MFAmR3BAJkQgkAZQIFAmNVBQJkeAQCZEMDAwUCY1kJAAACBQJkYgUCZGMHCQCUCgIFAmRhAAADAwUCY1kJAAACBQJkYgUCZGQHCQCUCgIAAAUCZGEJAJQKAgUCZHcFAmR4BAJkRAgFAmRDAl8xBAJkRQgFAmRDAl8yBAJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdwUCY3QJAQJicwoFAmREBQJkRQUCZHoFAmNKBQJiUAUCZHkFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRBBQJkQgUDbmlsCQCfCg0FAmR2BQJkegUCY0oFAmNFBQJjRwUCZGkFAmN4BQJjQwUCZEYFAmRBBQJkQgUCY1QFAmNWAQJkRwECZEgEAmRJCQCRAwIFAmRIAAAEAmRKCQCRAwIFAmRIAAEEAmRLCQC3AgIFAmRJBQJkSgMJAAACBQJkSwUBZQUBZQQCZEwJAQ1wYXJzZUludFZhbHVlAQUCYVEEAmRNCQBoAgUCZEwAAgQCY28JALwCAwUCZEkFAmRKBQFmBAJkTgkAvAIDBQJjbwUBaQUBZgQCZE8JALwCAwkAtgIBBQJkTQUCZEsFAWYEAmRQCQC2AgEJAGUCBQJkTQABCgECZFEBAmRSBAJkUwkAvAIDBQJkUgUCZFIFAWYEAmRUCQC8AgMFAmRTBQJkUgUBZgQCZFUJALwCAwUCZFQFAWYFAmROCQC9AgQJALcCAgUCZE8JALwCAwUCZFUFAWcFAWYFAmRSCQC3AgIJALwCAwUCZFAFAmRSBQFmCQC8AgMFAWgFAmRVBQFmBQdDRUlMSU5HCgECZFYCAmRXAmRYAwgFAmRXAl8yBQJkVwQCZFIIBQJkVwJfMQQCZFkJAQJkUQEFAmRSBAJkWgkAoAMBCQC4AgIFAmRZCQEFdmFsdWUBBQJkUgQCZWEDCQBmAgAABQJkWgkBAS0BBQJkWgUCZFoDCQBnAgABBQJlYQkAlAoCBQJkWQYJAJQKAgUCZFkHBAJlYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlYwoAAmVkBQJlYgoAAmVlCQCQAwEFAmVkCgACZWYJAJQKAgUCZEsHCgECZWcCAmVoAmVpAwkAZwIFAmVpBQJlZQUCZWgJAQJkVgIFAmVoCQCRAwIFAmVkBQJlaQoBAmVqAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlagIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIFAmVmAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRSCAUCZWMCXzEEAmVrCAUCZWMCXzIDBQJlawUCZFIJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFIBAmVsAQJkSAQCZW0FAWcEAmRJCQCRAwIFAmRIAAAEAmRKCQCRAwIFAmRIAAEEAmVuCQCnAwEFAWwEAmRMCQC5AgIJAKcDAQUCYVEFAmVuBAJkSwkAtwICBQJkSQUCZEoDCQAAAgUCZEsFAWUFAWUEAmRNCQC5AgIFAmRMBQJlbQQCZE4JALkCAgkAuQICCQC5AgIFAmRJBQJkSgUCZW0FAmVtBAJlbwkAugICCQC5AgIFAmRNBQJkSwUCZW4EAmVwCQC4AgIFAmRNBQJlbgQCZXEJALcCAgUCZW0FAWYKAQJkVgICZFcCZXIEAmVzBQJkVwQCZFIIBQJlcwJfMQQCZWsIBQJlcwJfMgMJAQIhPQIFAmVrBQR1bml0BQJkVwQCZFUJALoCAgkAuQICCQC5AgIFAmRSBQJkUgUCZFIFAmROBAJkWQkAugICCQC5AgIJALcCAgUCZW8JALkCAgUCZFUFAmVtBQJkUgkAtwICCQC6AgIJALkCAgUCZXAFAmRSBQJlbgkAuQICBQJlcQUCZFUEAmVhCQEBVQEJALgCAgUCZFkJAQV2YWx1ZQEFAmRSAwkAwAICBQFmBQJlYQkAlAoCBQJkWQUCZXIJAJQKAgUCZFkFBHVuaXQEAmViCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmV0CgACZWQFAmViCgACZWUJAJADAQUCZWQKAAJlZgkAlAoCBQJkSwUEdW5pdAoBAmVnAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQECZFYCBQJlaAkAkQMCBQJlZAUCZWkKAQJlagICZWgCZWkDCQBnAgUCZWkFAmVlBQJlaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWoCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCBQJlZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkUggFAmV0Al8xBAJlawgFAmV0Al8yAwkBAiE9AgUCZWsFBHVuaXQFAmRSCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRSAQJldQMCZEgCZFgCZXYEAmVtBQFnBAJldwkAkQMCBQJkSAMJAAACBQJkWAAAAAEAAAQCZW4JAKcDAQUBbAQCZEwJALkCAgkApwMBBQJhUQUCZW4EAmRLBQJldwQCZE0JALkCAgUCZEwFAmVtBAJleAkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV2BQJldgkAuQICBQJldwUCZW0FAmV2BQJlbgkAuQICBQJkTQUCZW0EAmV5CQC4AgIJALcCAgUCZEsJALoCAgkAuQICBQJldgUCZW4FAmRNBQJldgoBAmRWAgJkVwJlcgQCZXoFAmRXBAJlQQgFAmV6Al8xBAJlawgFAmV6Al8yAwkBAiE9AgUCZWsFBHVuaXQFAmRXBAJlQgkAugICCQC3AgIJALkCAgUCZUEFAmVBBQJleAkAtwICCQC5AgIFAWcFAmVBBQJleQQCZUMJAQFVAQkAuAICBQJlQgkBBXZhbHVlAQUCZUEDCQDAAgIFAWYFAmVDCQCUCgIFAmVCBQJlcgkAlAoCBQJlQgUEdW5pdAQCZWIJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUQKAAJlZAUCZWIKAAJlZQkAkAMBBQJlZAoAAmVmCQCUCgIFAmV2BQR1bml0CgECZWcCAmVoAmVpAwkAZwIFAmVpBQJlZQUCZWgJAQJkVgIFAmVoCQCRAwIFAmVkBQJlaQoBAmVqAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlagIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIFAmVmAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVBCAUCZUQCXzEEAmVrCAUCZUQCXzIDCQECIT0CBQJlawUEdW5pdAUCZUEJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUEBAmVFAwJlRgJlRwJlSAQCZUkJALwCAwkBAmRHAQkAzAgCBQJlRgkAzAgCBQJlRwUDbmlsBQFjBQJlSAMJAAACBQJlSAUBZQUBZQUCZUkBAmVKAwJlSwJlTAJlTQQCZU4JALgCAgkAtgIBCQECYkgBCQECYmEBBQJiaQUCZUsEAmVPCQC4AgIJALYCAQkBAmJIAQkBAmJhAQUCYmoFAmVMBAJlUAkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5BQJlTQQCZVEJAQJlRQMFAmVOBQJlTwUCZVAFAmVRAQJlUgMCZVMCZVQCZU0EAmVOCQBkAgkBAmJIAQkBAmJhAQUCYmkFAmVTBAJlTwkAZAIJAQJiSAEJAQJiYQEFAmJqBQJlVAQCZVAJAGQCCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZU0EAmVJCQECZUUDCQC2AgEFAmVOCQC2AgEFAmVPCQC2AgEFAmVQBAJlVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYW4FBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhbQkApgMBBQJlSQUDbmlsCQCUCgIFAmVVBQJlSQECZVYCAmVXAmVJAwkAwAICBQJlSQUCZVcGCQECYU0BAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJlWAECZVkEAmVaCAUCZVkGYW1vdW50BAJmYQkAbgQIBQJlWQZhbW91bnQIBQJlWQVwcmljZQUBYQUFRkxPT1IEAmZiAwkAAAIIBQJlWQlvcmRlclR5cGUFA0J1eQkAlAoCBQJlWgkBAS0BBQJmYQkAlAoCCQEBLQEFAmVaBQJmYQQCZVMIBQJmYgJfMQQCZVQIBQJmYgJfMgMDAwkBAmFSAAYJAAACBQJiZwUBcgYJAAACBQJiZwUBcwkAAgECDUFkbWluIGJsb2NrZWQDAwkBAiE9AggIBQJlWQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJpBgkBAiE9AggIBQJlWQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmoJAAIBAglXciBhc3NldHMEAmZjCQCnAwEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAmFtBAJmZAkBAmVSAwUCZVMFAmVUAAAEAmZlCAUCZmQCXzEEAmZmCAUCZmQCXzIEAmZnCQDAAgIFAmZmBQJmYwUCZmcBAmZoAQJkWAMJAQIhPQIJAJADAQgFAmRYCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJmaQkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAQCY3UJAQV2YWx1ZQEIBQJmaQdhc3NldElkBAJkYQgFAmZpBmFtb3VudAQCZG0JAQJjcwQJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJANgEAQUCY3UFAmRhCAUCZFgGY2FsbGVyBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJjQwkBDXBhcnNlSW50VmFsdWUBCAUCZG0CXzkEAmNRCAUCZG0DXzEwAwMJAQJhUgAGCQAAAgUCY0MFAXMJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJjQwkAlwoFBQJjTwUCY1AFAmRhBQJjdQUCY1EBAmZqCgJmawJhZQJmbAJmbQJiUAJjWAJjWQJjWgJkYQJkYgQCZG0JAQJjUg0FAmFlBQJiUAgJAQV2YWx1ZQEFAmZsBmFtb3VudAgJAQV2YWx1ZQEFAmZsB2Fzc2V0SWQICQEFdmFsdWUBBQJmbQZhbW91bnQICQEFdmFsdWUBBQJmbQdhc3NldElkBQJmawkAAAIFAmFlAgAFAmNYBQJjWQUCY1oFAmRhBQJkYgQCY0MJAQ1wYXJzZUludFZhbHVlAQgFAmRtAl84AwMDCQECYVIABgkAAAIFAmNDBQFxBgkAAAIFAmNDBQFzCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJjQwUCZG0BAmZuBQJmbwJjdQJjdwJhZQJmcAQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmRnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAmVQCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjeAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZnEDCQC/AgIFAmVQBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZnEFAmZxBAJjRQkBAmJIAQUCY3kEAmNHCQECYkgBBQJjegQCZnIDCQAAAgUCYWUCAAkAlAoCBQJjRQUCY0cDCQAAAgUCY3UFAmN5AwkAZgIFAmZvBQJjRQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmNFBQJmbwUCY0cDCQAAAgUCY3UFAmN6AwkAZgIFAmZvBQJjRwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY0UJAGUCBQJjRwUCZm8JAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmcwgFAmZyAl8xBAJmdAgFAmZyAl8yBAJmdQMJAAACBQJjdQUCY3kJAJQKAgUCZm8AAAMJAAACBQJjdQUCY3oJAJQKAgAABQJmbwkAAgECD2ludmFsaWQgcGF5bWVudAQCZnYIBQJmdQJfMQQCZncIBQJmdQJfMgQCZngDBQJmcAkAlQoDCAkBAmNwAQUCZnYCXzEICQECY3ABBQJmdwJfMQgJAQJjcAEFAmZvAl8yCQCVCgMFAmZ2BQJmdwAABAJmeQgFAmZ4Al8xBAJmeggFAmZ4Al8yBAJjcggFAmZ4Al8zBAJmQQkAZAIFAmZzBQJmeQQCZkIJAGQCBQJmdAUCZnoEAmJVCQECZEcBCQDMCAIJALYCAQUCZnMJAMwIAgkAtgIBBQJmdAUDbmlsBAJiVAkBAmRHAQkAzAgCCQC2AgEFAmZBCQDMCAIJALYCAQUCZkIFA25pbAQCZkMDCQC/AgIFAmJUBQJiVQYJAQV0aHJvdwADCQAAAgUCZkMFAmZDBAJmRAkAvQIEBQJlUAkAuAICBQJiVAUCYlUFAmJVBQVGTE9PUgQCY0oJAQFLAgkBAmJKAgkBAUgCBQJmQgUCZGgJAQFIAgUCZkEFAmRnBQFhBAJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdwUCYWUJAQJicwoFAmZ2BQJmdwkAoAMBBQJmRAUCY0oAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRQkAawMFAmZ0BQFhBQJmcwQCZkYJAGsDBQJmbwUBYQkAZAIFAmZFBQFhBAJmRwkAZQIFAmZvBQJmRgQCZkgJALwCAwUCZVAJALYCAQUCZkcJALYCAQUCZnQEAmZJCQCgAwEJALwCAwkAuAICBQJmRAUCZkgFAWIFAmZICQCWCgQJAKADAQUCZkQFAmRGBQJjcgUCZkkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZKBgJmSwJmTAJmTQJmawJmTgJmTwQCYmMJAQJhVQAEAmN4CQCRAwIFAmJjBQF2BAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmZQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmZRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAmZSCQCRAwIFAmJjBQF1BAJjdwMJAAACBQJmawUCYnIFAmZOBQJmawQCZmkJAQV2YWx1ZQEJAJEDAgUCZk0AAAQCY3UJAQV2YWx1ZQEIBQJmaQdhc3NldElkBAJkYQgFAmZpBmFtb3VudAQCZVEJAQJlSgMFAWUFAWUFAWUDCQAAAgUCZVEFAmVRBAJjdAkA2AQBBQJmTwMJAQIhPQIFAmN4CQDYBAEFAmN1CQACAQIIV3JvbmcgTFAEAmNFCQECYkgBBQJjeQQCY0cJAQJiSAEFAmN6BAJmUwoAAmZUCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZksJAMwIAgUCZGEFA25pbAUDbmlsAwkAAQIFAmZUAgooSW50LCBJbnQpBQJmVAkAAgEJAKwCAgkAAwEFAmZUAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmZTBQJmUwQCY3IIBQJmUwJfMgQCZlUIBQJmUwJfMQQCZlYDAwkAZgIFAmZMAAAJAGYCBQJmTAUCZlUHCQECYU0BCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZMBQNuaWwCAAUCZlUEAmZXAwkAAAIFAmZLBQJjeQkAlgoEBQJmVgAACQBlAgkAZQIFAmNFBQJmVgUCY3IFAmNHAwkAAAIFAmZLBQJjegkAlgoEAAAFAmZWBQJjRQkAZQIJAGUCBQJjRwUCZlYFAmNyCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmZYCAUCZlcCXzEEAmZZCAUCZlcCXzIEAmZBCAUCZlcCXzMEAmZCCAUCZlcCXzQEAmZaCQECYkoCCQEBSAIFAmZCBQJmUQkBAUgCBQJmQQUCZlAEAmdhCQEBSwIFAmZaBQFhBAJnYgMJAAACBQJmSwIFV0FWRVMFBHVuaXQJANkEAQUCZksEAmdjAwkAZgIFAmNyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVQFAmNyBQJnYgUDbmlsBQNuaWwEAmNRCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3cFAmZWBQJnYgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN3BQJjdAkBAmJEBgUCZlgFAmZZBQJkYQUCZ2EFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCZ2EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ2EFA25pbAUCZ2MDCQAAAgUCY1EFAmNRBAJnZAkA/AcEBQJhUAIEYnVybgkAzAgCBQJkYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdQUCZGEFA25pbAMJAAACBQJnZAUCZ2QEAmdlBAJnZgMJAAACBQR0aGlzBQJhVAAABQJjcgQCZ2cDCQAAAgkBAmFZAQUCZksFAmJpBgcDBQJnZwkAlAoCCQEBLQEJAGQCBQJmVQUCZ2YAAAkAlAoCAAAJAQEtAQkAZAIFAmZVBQJnZgQCZVMIBQJnZQJfMQQCZVQIBQJnZQJfMgQCZ2gJAQJlUgMFAmVTBQJlVAAABAJnaQgFAmdoAl8xBAJlSQgFAmdoAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAlAoCCQDOCAIFAmNRBQJnaQUCZlYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdrAAQCYUcJAKIIAQkBAVcAAwkAAQIFAmFHAgZTdHJpbmcEAmRLBQJhRwkA2QQBBQJkSwMJAAECBQJhRwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnbAAEAmFHCQCiCAEJAQFYAAMJAAECBQJhRwIGU3RyaW5nBAJkSwUCYUcJANkEAQUCZEsDCQABAgUCYUcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZ20JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZ24BAmRYBAJhRwkBAmdrAAMJAAECBQJhRwIKQnl0ZVZlY3RvcgQCZ28FAmFHCQAAAggFAmRYD2NhbGxlclB1YmxpY0tleQUCZ28DCQABAgUCYUcCBFVuaXQJAAACCAUCZFgGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdwAQJkWAQCYUcJAQJnawADCQABAgUCYUcCCkJ5dGVWZWN0b3IEAmdvBQJhRwMJAAACCAUCZFgPY2FsbGVyUHVibGljS2V5BQJnbwYFAmdtAwkAAQIFAmFHAgRVbml0AwkAAAIIBQJkWAZjYWxsZXIFBHRoaXMGBQJnbQkAAgECC01hdGNoIGVycm9yHAJkWAELY29uc3RydWN0b3IBAVYEAmV4CQECZ3ABBQJkWAMJAAACBQJleAUCZXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQFWBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBCnNldE1hbmFnZXIBAmdxBAJleAkBAmdwAQUCZFgDCQAAAgUCZXgFAmV4BAJncgkA2QQBBQJncQMJAAACBQJncgUCZ3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgABQJncQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQ5jb25maXJtTWFuYWdlcgAEAmNvCQECZ2wABAJncwMJAQlpc0RlZmluZWQBBQJjbwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3MFAmdzBAJndAMJAAACCAUCZFgPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjbwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3QFAmd0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAAkA2AQBCQEFdmFsdWUBBQJjbwkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEDcHV0AgJndQJndgQCZ3cJAQJibQAEAmd4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndwUBQwIKV3Igc3QgYWRkcgQCZ3kJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd3BQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ3UJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRYCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmd6CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABmFtb3VudAQCZ0EJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAEGYW1vdW50BAJlTgkAuAICCQC2AgEJAQJiSAEJAQJiYQEFAmJpBQJnegMJAAACBQJlTgUCZU4EAmVPCQC4AgIJALYCAQkBAmJIAQkBAmJhAQUCYmoFAmdBAwkAAAIFAmVPBQJlTwQCZVAJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkDCQAAAgUCZVAFAmVQBAJlUQkBAmVKAwUCZ3oFAmdBCQC2AgEAAAMJAAACBQJlUQUCZVEEAmdCCQECZmoKCQClCAEIBQJkWAZjYWxsZXIJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRYCHBheW1lbnRzAAEFAmd1BgcGAAACAAQCZHoIBQJnQgJfMgQCZ0MIBQJnQgJfNwQCY1EIBQJnQgJfOQQCZEEIBQJnQgNfMTAEAmRCCAUCZ0IDXzExBAJjeQgFAmdCA18xMgQCY3oIBQJnQgNfMTMEAmRtCQD8BwQFAmFQAgRlbWl0CQDMCAIFAmR6BQNuaWwFA25pbAMJAAACBQJkbQUCZG0EAmdEBAJhRwUCZG0DCQABAgUCYUcCB0FkZHJlc3MEAmdFBQJhRwkA/AcEBQJnRQIEZW1pdAkAzAgCBQJkegUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0QFAmdEBAJnRgMJAGYCBQJkQQAACQD8BwQFAmd5AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3kFAmRBBQNuaWwFA25pbAMJAAACBQJnRgUCZ0YEAmdHAwkAZgIFAmRCAAAJAPwHBAUCZ3kCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjegUCZEIFA25pbAUDbmlsAwkAAAIFAmdHBQJnRwQCZ0gDBQJndgQCZ0kJAPwHBAUCZ3gCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdDBQJkegUDbmlsAwkAAAIFAmdJBQJnSQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkWAZjYWxsZXIFAmR6BQJnQwUDbmlsBAJnSgkBAmVSAwAAAAAAAAQCZ2kIBQJnSgJfMQQCZUkIBQJnSgJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oEAmdLAwkAwAICBQJlSQUCZVEGCQECYU0BAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAwkAAAIFAmdLBQJnSwQCZ0wICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5AwkAAAIFAmdMBQJnTAkAzggCCQDOCAIFAmNRBQJnSAUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBC3B1dE9uZVRrblYyAgJmTAJndgQCZ00KAAJmVAkA/AcEBQJhUAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZUAgdCb29sZWFuBQJmVAkAAgEJAKwCAgkAAwEFAmZUAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnTgMDAwkBAmFSAAYJAAACBQJiZwUBcQYJAAACBQJiZwUBcwYFAmdNBAJnTwkAzAgCAwMJAQEhAQUCZ04GCQECZ24BBQJkWAYJAQJhTQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRYCHBheW1lbnRzAAEGCQECYU0BAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTwUCZ08EAmJjCQECYVUABAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmN4CQDZBAEJAJEDAgUCYmMFAXYEAmZQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmZRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAmN3AwkAAAIIBQJkWAZjYWxsZXIFBHRoaXMIBQJkWAxvcmlnaW5DYWxsZXIIBQJkWAZjYWxsZXIEAmZpCQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABAJjdQkA2AQBCQEFdmFsdWUBCAUCZmkHYXNzZXRJZAQCZGEIBQJmaQZhbW91bnQEAmVRAwkAAAIIBQJmaQdhc3NldElkBQJiaQkBAmVKAwkAtgIBBQJkYQkAtgIBAAAJALYCAQAACQECZUoDCQC2AgEAAAkAtgIBBQJkYQkAtgIBAAADCQAAAgUCZVEFAmVRBAJnUAkBAmZuBQUCZGEFAmN1CQClCAEFAmN3CQDYBAEIBQJkWA10cmFuc2FjdGlvbklkBgMJAAACBQJnUAUCZ1AEAmNyCAUCZ1ACXzMEAmNRCAUCZ1ACXzIEAmdRCAUCZ1ACXzEEAmR6AwMJAGYCBQJmTAAACQBmAgUCZkwFAmdRBwkBAmFNAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmTAUDbmlsAgAFAmdRBAJnQgkA/AcEBQJhUAIEZW1pdAkAzAgCBQJkegUDbmlsBQNuaWwDCQAAAgUCZ0IFAmdCBAJnRAQCYUcFAmdCAwkAAQIFAmFHAgdBZGRyZXNzBAJnRQUCYUcJAPwHBAUCZ0UCBGVtaXQJAMwIAgUCZHoFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdEBQJnRAQCZ0gDBQJndgQCZ0kJAPwHBAUCYm8CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN4BQJkegUDbmlsAwkAAAIFAmdJBQJnSQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkWAZjYWxsZXIFAmR6BQJjeAUDbmlsBAJnYwMJAGYCBQJjcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFUBQJjcgkA2QQBBQJjdQUDbmlsBQNuaWwEAmdSAwkAAAIFBHRoaXMFAmFUCQCUCgIAAAAABAJnUwMJAAACCAUCZmkHYXNzZXRJZAUCYmkGBwMFAmdTCQCUCgIJAQEtAQUCY3IAAAkAlAoCAAAJAQEtAQUCY3IEAmVTCAUCZ1ICXzEEAmVUCAUCZ1ICXzIEAmdUCQECZVIDBQJlUwUCZVQAAAQCZ2kIBQJnVAJfMQQCZUkIBQJnVAJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAJQKAgkAzggCCQDOCAIJAM4IAgUCY1EFAmdIBQJnYwUCZ2kFAmR6CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQNnZXQABAJnVQkAtgIBCQECYkgBCQECYmEBBQJiaQMJAAACBQJnVQUCZ1UEAmdWCQC2AgEJAQJiSAEJAQJiYQEFAmJqAwkAAAIFAmdWBQJnVgQCZ1cJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkDCQAAAgUCZ1cFAmdXBAJnWAkAuAICBQJnVwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAZhbW91bnQDCQAAAgUCZ1gFAmdYBAJlUQkBAmVKAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlUQUCZVEEAmRtCQECZmgBBQJkWAQCZ1kIBQJkbQJfMQQCY1AIBQJkbQJfMgQCZGEIBQJkbQJfMwQCY3UIBQJkbQJfNAQCY1EIBQJkbQJfNQQCZXkJAPwHBAUCYVACBGJ1cm4JAMwIAgUCZGEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3UFAmRhBQNuaWwDCQAAAgUCZXkFAmV5BAJnWgkBAmVSAwkBAS0BBQJnWQkBAS0BBQJjUAAABAJnaQgFAmdaAl8xBAJlSQgFAmdaAl8yBAJoYQMJAMACAgUCZUkFAmVRBgkBAmFNAQkAuQkCCQDMCAICInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHAJAMwIAgkApgMBBQJnVQkAzAgCCQCmAwEFAmdWCQDMCAIJAKYDAQUCZVEJAMwIAgkApgMBBQJlSQkAzAgCCQCmAwEFAmdXCQDMCAIJAKYDAQUCZ1gFA25pbAIBIAMJAAACBQJoYQUCaGEJAM4IAgUCY1EFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQtnZXRPbmVUa25WMgICZksCZkwEAmdNCgACZlQJAPwHBAUCYVACKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmVAIHQm9vbGVhbgUCZlQJAAIBCQCsAgIJAAMBBQJmVAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGIDAwkBAmFSAAYJAAACBQJiZwUBcwYFAmdNBAJnTwkAzAgCAwMJAQEhAQUCaGIGCQECZ24BBQJkWAYJAQJhTQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRYCHBheW1lbnRzAAEGCQECYU0BAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTwUCZ08EAmhjCQECZkoGBQJmSwUCZkwIBQJkWAhwYXltZW50cwgFAmRYBmNhbGxlcggFAmRYDG9yaWdpbkNhbGxlcggFAmRYDXRyYW5zYWN0aW9uSWQEAmNRCAUCaGMCXzEEAmZWCAUCaGMCXzIJAJQKAgUCY1EFAmZWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQpyZWZyZXNoRExwAAQCaGQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYW4AAAQCaGUDCQBnAgkAZQIFBmhlaWdodAUCaGQFAmFxBQR1bml0CQECYU0BCQC5CQIJAMwIAgkApAMBBQJhcQkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaGUFAmhlBAJmYwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYW0CATAJAQJhTwECC2ludmFsaWQgZExwBAJoZgkBAmVSAwAAAAAAAAQCaGcIBQJoZgJfMQQCZUkIBQJoZgJfMgQCZVUDCQECIT0CBQJmYwUCZUkFAmhnCQECYU0BAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZVUJAKYDAQUCZUkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZLAmhoBAJiYwkBAmFVAAQCY3kJAJEDAgUCYmMFAXcEAmN6CQCRAwIFAmJjBQF4BAJjeAkAkQMCBQJiYwUBdgQCZEgJAMwIAgkAtgIBCQECYkgBBQJjeQkAzAgCCQC2AgEJAQJiSAEFAmN6BQNuaWwEAmVICQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjeAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYlUJAQJkRwEFAmRIBAJiVAkAuAICBQJiVQkAvAIDCQC2AgEFAmhoBQJiVQUCZUgEAmhpAwkAAAIFAmZLBQJjeQAAAwkAAAIFAmZLBQJjegABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmhqCQECZXUDBQJkSAUCaGkFAmJUBAJoawkAuAICCQCRAwIFAmRIBQJoaQUCaGoEAmhsCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJoawUBZgUDbmlsBAJobQkBAmNwAQUCaGwEAmZVCAUCaG0CXzEEAmNyCAUCaG0CXzIJAJQKAgUDbmlsCQCUCgIFAmZVBQJjcgJkWAEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZksCaGgEAmJjCQECYVUABAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmN4CQCRAwIFAmJjBQF2BAJjRQkBAmJIAQUCY3kEAmNHCQECYkgBBQJjegQCaG4KAAJmVAkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZLCQDMCAIFAmhoBQNuaWwFA25pbAMJAAECBQJmVAIKKEludCwgSW50KQUCZlQJAAIBCQCsAgIJAAMBBQJmVAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZlUIBQJobgJfMQQCY3IIBQJobgJfMgQCZG0JAQJjcwQCAAUCY3gFAmhoBQR0aGlzBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJobwkAZAIFAmNPBQJjUAQCZkkDCQAAAgUCaG8AAAMJAAACBQJmVQAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJmVQUCaG8FAWEFAmhvCQCUCgIFA25pbAkAlQoDBQJmVQUCY3IFAmZJAmRYAQlnZXROb0xlc3MCAmhwAmhxBAJkbQkBAmZoAQUCZFgEAmNPCAUCZG0CXzEEAmNQCAUCZG0CXzIEAmRhCAUCZG0CXzMEAmN1CAUCZG0CXzQEAmNRCAUCZG0CXzUDCQBmAgUCaHAFAmNPCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNPAgMgPCAJAKQDAQUCaHADCQBmAgUCaHEFAmNQCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCY1ACAyA8IAkApAMBBQJocQQCZVEJAQJlSgMJALYCAQAACQC2AgEAAAkAtgIBBQJkYQQCaHIJAPwHBAUCYVACBGJ1cm4JAMwIAgUCZGEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3UFAmRhBQNuaWwDCQAAAgUCaHIFAmhyBAJocwkBAmVSAwkBAS0BBQJjTwkBAS0BBQJjUAAABAJnaQgFAmhzAl8xBAJlSQgFAmhzAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAzggCBQJjUQUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBDXVuc3Rha2VBbmRHZXQBAmNxBAJodAMJAQIhPQIJAJADAQgFAmRYCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJodAUCaHQEAmNnCQECYVUABAJodQkBAmJtAAQCZ0MJANkEAQkAkQMCBQJjZwUBdgQCaHYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmh1BQFDAgpXciBzdCBhZGRyBAJlUQkBAmVKAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCaHcJAPwHBAUCaHYCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnQwkAzAgCBQJjcQUDbmlsBQNuaWwDCQAAAgUCaHcFAmh3BAJkbQkBAmNzBAkA2AQBCAUCZFgNdHJhbnNhY3Rpb25JZAkA2AQBBQJnQwUCY3EIBQJkWAZjYWxsZXIEAmNPCAUCZG0CXzEEAmNQCAUCZG0CXzIEAmNDCQENcGFyc2VJbnRWYWx1ZQEIBQJkbQJfOQQCY1EIBQJkbQNfMTAEAmh4AwMJAQJhUgAGCQAAAgUCY0MFAXMJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjQwYDCQAAAgUCaHgFAmh4BAJoeQkA/AcEBQJhUAIEYnVybgkAzAgCBQJjcQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQwUCY3EFA25pbAMJAAACBQJoeQUCaHkEAmh6CQECZVIDCQEBLQEFAmNPCQEBLQEFAmNQAAAEAmdpCAUCaHoCXzEEAmVJCAUCaHoCXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQDOCAIFAmNRBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAETdW5zdGFrZUFuZEdldE5vTGVzcwMCaEECaEICaHEEAmhiAwkBAmFSAAYJAAACBQJiZwUBcwQCZ08JAMwIAgMJAQEhAQUCaGIGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFgIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnTwUCZ08EAmVRCQECZUoDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJodwkA/AcEBQJibwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJoCQDMCAIFAmhBBQNuaWwFA25pbAMJAAACBQJodwUCaHcEAmhDCQECY3MECQDYBAEIBQJkWA10cmFuc2FjdGlvbklkCQDYBAEFAmJoBQJoQQgFAmRYBmNhbGxlcgQCY08IBQJoQwJfMQQCY1AIBQJoQwJfMgQCY1EIBQJoQwNfMTAEAmhECQDMCAIDCQBnAgUCY08FAmhCBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhCBQNuaWwCAAkAzAgCAwkAZwIFAmNQBQJocQYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhxBQNuaWwCAAUDbmlsAwkAAAIFAmhEBQJoRAQCaHIJAPwHBAUCYVACBGJ1cm4JAMwIAgUCaEEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmgFAmhBBQNuaWwDCQAAAgUCaHIFAmhyBAJoRQkBAmVSAwkBAS0BBQJjTwkBAS0BBQJjUAAABAJnaQgFAmhFAl8xBAJlSQgFAmhFAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAzggCBQJjUQUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCaEECZksCZkwEAmdNCgACZlQJAPwHBAUCYVACKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmVAIHQm9vbGVhbgUCZlQJAAIBCQCsAgIJAAMBBQJmVAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGIDAwkBAmFSAAYJAAACBQJiZwUBcwYFAmdNBAJnTwkAzAgCAwMJAQEhAQUCaGIGCQECZ24BBQJkWAYJAQJhTQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRYCHBheW1lbnRzAAAGCQECYU0BAhhu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BQJoUQUCY3YJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmhQCQCUCgIFA25pbAkAnAoKCAUCZG0CXzEIBQJkbQJfMggFAmRtAl8zCAUCZG0CXzQIBQJkbQJfNQgFAmRtAl82CAUCZG0CXzcJAKYDAQgFAmRtAl84CAUCZG0CXzkIBQJkbQNfMTACZFgBDmdldEZlZVJFQURPTkxZAAkAlAoCBQNuaWwFAmFsAQJoUgECaFMABAJoVAQCYUcJAQJnawADCQABAgUCYUcCCkJ5dGVWZWN0b3IEAmdvBQJhRwUCZ28DCQABAgUCYUcCBFVuaXQIBQJoUg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYUcFAmhSAwkAAQIFAmFHAgVPcmRlcgQCZVkFAmFHBAJoVQkBAmFTAAQCaFYJAQJlWAEFAmVZBAJoVwkA9AMDCAUCZVkJYm9keUJ5dGVzCQCRAwIIBQJlWQZwcm9vZnMAAAgFAmVZD3NlbmRlclB1YmxpY0tleQQCaFgJAPQDAwgFAmVZCWJvZHlCeXRlcwkAkQMCCAUCZVkGcHJvb2ZzAAEFAmhVAwMDBQJoVgUCaFcHBQJoWAcGCQECYUIDBQJoVgUCaFcFAmhYAwkAAQIFAmFHAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZEsFAmFHBAJoWQkA9gMBCQEFdmFsdWUBCAUCZEsGc2NyaXB0BAJoWgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFQCQECYXoABAJpYQkA8QcBBQR0aGlzAwMJAAACBQJoWgUCaFkJAQIhPQIFAmlhBQJoWQcGCQD0AwMIBQJoUglib2R5Qnl0ZXMJAJEDAggFAmhSBnByb29mcwAABQJoVAkA9AMDCAUCaFIJYm9keUJ5dGVzCQCRAwIIBQJoUgZwcm9vZnMAAAUCaFQ05ceo", "chainId": 84, "height": 2368350, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5YqmQs9LJgvf7CqAUrmjmKwzHDu7sfBp3M44qepzouva Next: 5gCUdNqJQU8GRpiae2f7s2UiZDKZ84GKZTGScAVf3Dti Diff:
OldNewDifferences
10291029 let gJ = eR(0, 0, 0)
10301030 let gi = gJ._1
10311031 let eI = gJ._2
1032- let gK = value(assetInfo(bh)).quantity
1033- if ((gK == gK))
1032+ let gj = eV(eQ, eI)
1033+ if ((gj == gj))
10341034 then {
1035- let gL = if ((eI >= eQ))
1035+ let gK = if ((eI >= eQ))
10361036 then true
1037- else aM(makeString(["updated DLp lower than current DLp", toString(eN), toString(eO), toString(eP), toString(eQ), toString(eI), toString(dz), toString(dA), toString(dB), toString(eP), toString(gK)], " "))
1038- if ((gL == gL))
1039- then ((cQ ++ gH) ++ gi)
1037+ else aM("updated DLp lower than current DLp")
1038+ if ((gK == gK))
1039+ then {
1040+ let gL = value(assetInfo(bh)).quantity
1041+ if ((gL == gL))
1042+ then ((cQ ++ gH) ++ gi)
1043+ else throw("Strict value is not equal to itself.")
1044+ }
10401045 else throw("Strict value is not equal to itself.")
10411046 }
10421047 else throw("Strict value is not equal to itself.")
11721177
11731178
11741179 @Callable(dX)
1175-func putForFree (gU) = if ((0 > gU))
1176- then throw("Wrong slpg")
1177- else if ((size(dX.payments) != 2))
1178- then throw("2 pmnts expd")
1179- else {
1180- let gV = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gU, false, false, true, 0, "")
1181- let cQ = gV._9
1182- let gz = toBigInt(value(dX.payments[0]).amount)
1183- let gA = toBigInt(value(dX.payments[1]).amount)
1184- let eQ = eJ(gz, gA, toBigInt(0))
1185- if ((eQ == eQ))
1180+func get () = {
1181+ let gU = toBigInt(bH(ba(bi)))
1182+ if ((gU == gU))
1183+ then {
1184+ let gV = toBigInt(bH(ba(bj)))
1185+ if ((gV == gV))
11861186 then {
1187- let gW = eR(0, 0, 0)
1188- let gi = gW._1
1189- let eI = gW._2
1190- let gj = eV(eQ, eI)
1191- if ((gj == gj))
1192- then (cQ ++ gi)
1193- else throw("Strict value is not equal to itself.")
1194- }
1195- else throw("Strict value is not equal to itself.")
1196- }
1197-
1198-
1199-
1200-@Callable(dX)
1201-func get () = {
1202- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1203- if ((eQ == eQ))
1204- then {
1205- let dm = fh(dX)
1206- let gX = dm._1
1207- let cP = dm._2
1208- let da = dm._3
1209- let cu = dm._4
1210- let cQ = dm._5
1211- let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1212- if ((ey == ey))
1213- then {
1214- let gY = eR(-(gX), -(cP), 0)
1215- let gi = gY._1
1216- let eI = gY._2
1217- let gj = eV(eQ, eI)
1218- if ((gj == gj))
1219- then (cQ ++ gi)
1187+ let gW = toBigInt(value(assetInfo(bh)).quantity)
1188+ if ((gW == gW))
1189+ then {
1190+ let gX = (gW - toBigInt(value(dX.payments[0]).amount))
1191+ if ((gX == gX))
1192+ then {
1193+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1194+ if ((eQ == eQ))
1195+ then {
1196+ let dm = fh(dX)
1197+ let gY = dm._1
1198+ let cP = dm._2
1199+ let da = dm._3
1200+ let cu = dm._4
1201+ let cQ = dm._5
1202+ let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1203+ if ((ey == ey))
1204+ then {
1205+ let gZ = eR(-(gY), -(cP), 0)
1206+ let gi = gZ._1
1207+ let eI = gZ._2
1208+ let ha = if ((eI >= eQ))
1209+ then true
1210+ else aM(makeString(["updated DLp lower than current DLp", toString(gU), toString(gV), toString(eQ), toString(eI), toString(gW), toString(gX)], " "))
1211+ if ((ha == ha))
1212+ then (cQ ++ gi)
1213+ else throw("Strict value is not equal to itself.")
1214+ }
1215+ else throw("Strict value is not equal to itself.")
1216+ }
1217+ else throw("Strict value is not equal to itself.")
1218+ }
1219+ else throw("Strict value is not equal to itself.")
1220+ }
12201221 else throw("Strict value is not equal to itself.")
12211222 }
12221223 else throw("Strict value is not equal to itself.")
12341235 then fT
12351236 else throw(($getType(fT) + " couldn't be cast to Boolean"))
12361237 }
1237- let gZ = if (if (aR())
1238+ let hb = if (if (aR())
12381239 then true
12391240 else (bg == s))
12401241 then true
12411242 else gM
1242- let gO = [if (if (!(gZ))
1243+ let gO = [if (if (!(hb))
12431244 then true
12441245 else gn(dX))
12451246 then true
12481249 else aM("exactly 1 payment are expected")]
12491250 if ((gO == gO))
12501251 then {
1251- let ha = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1252- let cQ = ha._1
1253- let fV = ha._2
1252+ let hc = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1253+ let cQ = hc._1
1254+ let fV = hc._2
12541255 $Tuple2(cQ, fV)
12551256 }
12561257 else throw("Strict value is not equal to itself.")
12601261
12611262 @Callable(dX)
12621263 func refreshDLp () = {
1263- let hb = valueOrElse(getInteger(an), 0)
1264- let hc = if (((height - hb) >= aq))
1264+ let hd = valueOrElse(getInteger(an), 0)
1265+ let he = if (((height - hd) >= aq))
12651266 then unit
12661267 else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1267- if ((hc == hc))
1268+ if ((he == he))
12681269 then {
12691270 let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1270- let hd = eR(0, 0, 0)
1271- let he = hd._1
1272- let eI = hd._2
1271+ let hf = eR(0, 0, 0)
1272+ let hg = hf._1
1273+ let eI = hf._2
12731274 let eU = if ((fc != eI))
1274- then he
1275+ then hg
12751276 else aM("nothing to refresh")
12761277 $Tuple2(eU, toString(eI))
12771278 }
12811282
12821283
12831284 @Callable(dX)
1284-func getOneTknV2READONLY (fK,hf) = {
1285+func getOneTknV2READONLY (fK,hh) = {
12851286 let bc = aU()
12861287 let cy = bc[w]
12871288 let cz = bc[x]
12891290 let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
12901291 let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
12911292 let bU = dG(dH)
1292- let bT = (bU - fraction(toBigInt(hf), bU, eH))
1293- let hg = if ((fK == cy))
1293+ let bT = (bU - fraction(toBigInt(hh), bU, eH))
1294+ let hi = if ((fK == cy))
12941295 then 0
12951296 else if ((fK == cz))
12961297 then 1
12971298 else throw("invalid out asset id")
1298- let hh = eu(dH, hg, bT)
1299- let hi = (dH[hg] - hh)
1300- let hj = max([0, toInt((hi - f))])
1301- let hk = cp(hj)
1302- let fU = hk._1
1303- let cr = hk._2
1299+ let hj = eu(dH, hi, bT)
1300+ let hk = (dH[hi] - hj)
1301+ let hl = max([0, toInt((hk - f))])
1302+ let hm = cp(hl)
1303+ let fU = hm._1
1304+ let cr = hm._2
13041305 $Tuple2(nil, $Tuple2(fU, cr))
13051306 }
13061307
13071308
13081309
13091310 @Callable(dX)
1310-func getOneTknV2WithBonusREADONLY (fK,hf) = {
1311+func getOneTknV2WithBonusREADONLY (fK,hh) = {
13111312 let bc = aU()
13121313 let cy = bc[w]
13131314 let cz = bc[x]
13141315 let cx = bc[v]
13151316 let cE = bH(cy)
13161317 let cG = bH(cz)
1317- let hl = {
1318- let fT = invoke(this, "getOneTknV2READONLY", [fK, hf], nil)
1318+ let hn = {
1319+ let fT = invoke(this, "getOneTknV2READONLY", [fK, hh], nil)
13191320 if ($isInstanceOf(fT, "(Int, Int)"))
13201321 then fT
13211322 else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
13221323 }
1323- let fU = hl._1
1324- let cr = hl._2
1325- let dm = cs("", cx, hf, this)
1324+ let fU = hn._1
1325+ let cr = hn._2
1326+ let dm = cs("", cx, hh, this)
13261327 let cO = dm._1
13271328 let cP = dm._2
1328- let hm = (cO + cP)
1329- let fI = if ((hm == 0))
1329+ let ho = (cO + cP)
1330+ let fI = if ((ho == 0))
13301331 then if ((fU == 0))
13311332 then 0
13321333 else throw("bonus calculation error")
1333- else fraction((fU - hm), a, hm)
1334+ else fraction((fU - ho), a, ho)
13341335 $Tuple2(nil, $Tuple3(fU, cr, fI))
13351336 }
13361337
13371338
13381339
13391340 @Callable(dX)
1340-func getNoLess (hn,ho) = {
1341+func getNoLess (hp,hq) = {
13411342 let dm = fh(dX)
13421343 let cO = dm._1
13431344 let cP = dm._2
13441345 let da = dm._3
13451346 let cu = dm._4
13461347 let cQ = dm._5
1347- if ((hn > cO))
1348- then throw(((("Failed: " + toString(cO)) + " < ") + toString(hn)))
1349- else if ((ho > cP))
1350- then throw(((("Failed: " + toString(cP)) + " < ") + toString(ho)))
1348+ if ((hp > cO))
1349+ then throw(((("Failed: " + toString(cO)) + " < ") + toString(hp)))
1350+ else if ((hq > cP))
1351+ then throw(((("Failed: " + toString(cP)) + " < ") + toString(hq)))
13511352 else {
13521353 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1353- let hp = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1354- if ((hp == hp))
1354+ let hr = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1355+ if ((hr == hr))
13551356 then {
1356- let hq = eR(-(cO), -(cP), 0)
1357- let gi = hq._1
1358- let eI = hq._2
1357+ let hs = eR(-(cO), -(cP), 0)
1358+ let gi = hs._1
1359+ let eI = hs._2
13591360 let gj = eV(eQ, eI)
13601361 if ((gj == gj))
13611362 then (cQ ++ gi)
13691370
13701371 @Callable(dX)
13711372 func unstakeAndGet (cq) = {
1372- let hr = if ((size(dX.payments) != 0))
1373+ let ht = if ((size(dX.payments) != 0))
13731374 then throw("No pmnts expd")
13741375 else true
1375- if ((hr == hr))
1376+ if ((ht == ht))
13761377 then {
13771378 let cg = aU()
1378- let hs = bm()
1379+ let hu = bm()
13791380 let gC = fromBase58String(cg[v])
1380- let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1381+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
13811382 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1382- let hu = invoke(ht, "unstake", [toBase58String(gC), cq], nil)
1383- if ((hu == hu))
1383+ let hw = invoke(hv, "unstake", [toBase58String(gC), cq], nil)
1384+ if ((hw == hw))
13841385 then {
13851386 let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
13861387 let cO = dm._1
13871388 let cP = dm._2
13881389 let cC = parseIntValue(dm._9)
13891390 let cQ = dm._10
1390- let hv = if (if (aR())
1391+ let hx = if (if (aR())
13911392 then true
13921393 else (cC == s))
13931394 then throw(("Blocked: " + toString(cC)))
13941395 else true
1395- if ((hv == hv))
1396+ if ((hx == hx))
13961397 then {
1397- let hw = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1398- if ((hw == hw))
1398+ let hy = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1399+ if ((hy == hy))
13991400 then {
1400- let hx = eR(-(cO), -(cP), 0)
1401- let gi = hx._1
1402- let eI = hx._2
1401+ let hz = eR(-(cO), -(cP), 0)
1402+ let gi = hz._1
1403+ let eI = hz._2
14031404 let gj = eV(eQ, eI)
14041405 if ((gj == gj))
14051406 then (cQ ++ gi)
14171418
14181419
14191420 @Callable(dX)
1420-func unstakeAndGetNoLess (hy,hz,ho) = {
1421- let gZ = if (aR())
1421+func unstakeAndGetNoLess (hA,hB,hq) = {
1422+ let hb = if (aR())
14221423 then true
14231424 else (bg == s)
1424- let gO = [if (!(gZ))
1425+ let gO = [if (!(hb))
14251426 then true
14261427 else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14271428 then true
14291430 if ((gO == gO))
14301431 then {
14311432 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1432- let hu = invoke(bo, "unstake", [toBase58String(bh), hy], nil)
1433- if ((hu == hu))
1433+ let hw = invoke(bo, "unstake", [toBase58String(bh), hA], nil)
1434+ if ((hw == hw))
14341435 then {
1435- let hA = cs(toBase58String(dX.transactionId), toBase58String(bh), hy, dX.caller)
1436- let cO = hA._1
1437- let cP = hA._2
1438- let cQ = hA._10
1439- let hB = [if ((cO >= hz))
1436+ let hC = cs(toBase58String(dX.transactionId), toBase58String(bh), hA, dX.caller)
1437+ let cO = hC._1
1438+ let cP = hC._2
1439+ let cQ = hC._10
1440+ let hD = [if ((cO >= hB))
14401441 then true
1441- else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cP >= ho))
1442+ else throw(makeString(["amount asset amount to receive is less than ", toString(hB)], "")), if ((cP >= hq))
14421443 then true
1443- else throw(makeString(["price asset amount to receive is less than ", toString(ho)], ""))]
1444- if ((hB == hB))
1444+ else throw(makeString(["price asset amount to receive is less than ", toString(hq)], ""))]
1445+ if ((hD == hD))
14451446 then {
1446- let hp = invoke(aP, "burn", [hy], [AttachedPayment(bh, hy)])
1447- if ((hp == hp))
1447+ let hr = invoke(aP, "burn", [hA], [AttachedPayment(bh, hA)])
1448+ if ((hr == hr))
14481449 then {
1449- let hC = eR(-(cO), -(cP), 0)
1450- let gi = hC._1
1451- let eI = hC._2
1450+ let hE = eR(-(cO), -(cP), 0)
1451+ let gi = hE._1
1452+ let eI = hE._2
14521453 let gj = eV(eQ, eI)
14531454 if ((gj == gj))
14541455 then (cQ ++ gi)
14661467
14671468
14681469 @Callable(dX)
1469-func unstakeAndGetOneTknV2 (hy,fK,fL) = {
1470+func unstakeAndGetOneTknV2 (hA,fK,fL) = {
14701471 let gM = {
14711472 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14721473 if ($isInstanceOf(fT, "Boolean"))
14731474 then fT
14741475 else throw(($getType(fT) + " couldn't be cast to Boolean"))
14751476 }
1476- let gZ = if (if (aR())
1477+ let hb = if (if (aR())
14771478 then true
14781479 else (bg == s))
14791480 then true
14801481 else gM
1481- let gO = [if (if (!(gZ))
1482+ let gO = [if (if (!(hb))
14821483 then true
14831484 else gn(dX))
14841485 then true
14881489 if ((gO == gO))
14891490 then {
14901491 let cg = aU()
1491- let hs = bm()
1492+ let hu = bm()
14921493 let gC = fromBase58String(cg[v])
1493- let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1494- let hu = invoke(ht, "unstake", [toBase58String(gC), hy], nil)
1495- if ((hu == hu))
1494+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1495+ let hw = invoke(hv, "unstake", [toBase58String(gC), hA], nil)
1496+ if ((hw == hw))
14961497 then {
1497- let hD = fJ(fK, fL, [AttachedPayment(gC, hy)], dX.caller, dX.originCaller, dX.transactionId)
1498- let cQ = hD._1
1499- let fV = hD._2
1498+ let hF = fJ(fK, fL, [AttachedPayment(gC, hA)], dX.caller, dX.originCaller, dX.transactionId)
1499+ let cQ = hF._1
1500+ let fV = hF._2
15001501 $Tuple2(cQ, fV)
15011502 }
15021503 else throw("Strict value is not equal to itself.")
15071508
15081509
15091510 @Callable(dX)
1510-func putOneTknV2WithBonusREADONLY (hE,hF) = {
1511+func putOneTknV2WithBonusREADONLY (hG,hH) = {
15111512 let bc = aU()
15121513 let cy = bc[w]
15131514 let cz = bc[x]
15141515 let cx = bc[v]
1515- let hG = fn(hE, hF, "", "", true)
1516- let fD = hG._1
1517- let cQ = hG._2
1518- let cr = hG._3
1519- let fI = hG._4
1516+ let hI = fn(hG, hH, "", "", true)
1517+ let fD = hI._1
1518+ let cQ = hI._2
1519+ let cr = hI._3
1520+ let fI = hI._4
15201521 $Tuple2(nil, $Tuple3(fD, cr, fI))
15211522 }
15221523
15231524
15241525
15251526 @Callable(dX)
1526-func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
1527+func putOneTknV2WithoutTakeFeeREADONLY (hG,hH) = {
15271528 let bc = aU()
15281529 let cy = bc[w]
15291530 let cz = bc[x]
15301531 let cx = bc[v]
1531- let hH = fn(hE, hF, "", "", false)
1532- let fD = hH._1
1533- let cQ = hH._2
1534- let cr = hH._3
1535- let fI = hH._4
1532+ let hJ = fn(hG, hH, "", "", false)
1533+ let fD = hJ._1
1534+ let cQ = hJ._2
1535+ let cr = hJ._3
1536+ let fI = hJ._4
15361537 $Tuple2(nil, $Tuple3(fD, cr, fI))
15371538 }
15381539
15391540
15401541
15411542 @Callable(dX)
1542-func activate (hI,hJ) = if ((toString(dX.caller) != toString(aP)))
1543+func activate (hK,hL) = if ((toString(dX.caller) != toString(aP)))
15431544 then throw("denied")
1544- else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
1545+ else $Tuple2([StringEntry(ag(), hK), StringEntry(ah(), hL)], "success")
15451546
15461547
15471548
15481549 @Callable(dX)
1549-func setS (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1550+func setS (hM,hx) = if ((toString(dX.caller) != aI(this, aj())))
15501551 then gm
1551- else [StringEntry(hK, hv)]
1552+ else [StringEntry(hM, hx)]
15521553
15531554
15541555
15551556 @Callable(dX)
1556-func setI (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1557+func setI (hM,hx) = if ((toString(dX.caller) != aI(this, aj())))
15571558 then gm
1558- else [IntegerEntry(hK, hv)]
1559+ else [IntegerEntry(hM, hx)]
15591560
15601561
15611562
15711572
15721573 @Callable(dX)
15731574 func calcPricesWrapperREADONLY (ca,cb,cf) = {
1574- let hL = ce(ca, cb, cf)
1575- $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
1575+ let hN = ce(ca, cb, cf)
1576+ $Tuple2(nil, [toString(hN[0]), toString(hN[1]), toString(hN[2])])
15761577 }
15771578
15781579
15791580
15801581 @Callable(dX)
1581-func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
1582+func fromX18WrapperREADONLY (L,hO) = $Tuple2(nil, K(parseBigIntValue(L), hO))
15821583
15831584
15841585
15931594
15941595
15951596 @Callable(dX)
1596-func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hN,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hN, cW, cX, true, false, 0, ""))
1597+func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hP,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hP, cW, cX, true, false, 0, ""))
15971598
15981599
15991600
16001601 @Callable(dX)
1601-func estimateGetOperationWrapperREADONLY (ct,hO,cv,hN) = {
1602- let dm = cs(ct, hO, cv, addressFromStringValue(hN))
1602+func estimateGetOperationWrapperREADONLY (ct,hQ,cv,hP) = {
1603+ let dm = cs(ct, hQ, cv, addressFromStringValue(hP))
16031604 $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
16041605 }
16051606
16091610 func getFeeREADONLY () = $Tuple2(nil, al)
16101611
16111612
1612-@Verifier(hP)
1613-func hQ () = {
1614- let hR = {
1613+@Verifier(hR)
1614+func hS () = {
1615+ let hT = {
16151616 let aG = gk()
16161617 if ($isInstanceOf(aG, "ByteVector"))
16171618 then {
16191620 go
16201621 }
16211622 else if ($isInstanceOf(aG, "Unit"))
1622- then hP.senderPublicKey
1623+ then hR.senderPublicKey
16231624 else throw("Match error")
16241625 }
1625- let aG = hP
1626+ let aG = hR
16261627 if ($isInstanceOf(aG, "Order"))
16271628 then {
16281629 let eY = aG
1629- let hS = aS()
1630- let hT = eX(eY)
1631- let hU = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1632- let hV = sigVerify(eY.bodyBytes, eY.proofs[1], hS)
1633- if (if (if (hT)
1634- then hU
1630+ let hU = aS()
1631+ let hV = eX(eY)
1632+ let hW = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1633+ let hX = sigVerify(eY.bodyBytes, eY.proofs[1], hU)
1634+ if (if (if (hV)
1635+ then hW
16351636 else false)
1636- then hV
1637+ then hX
16371638 else false)
16381639 then true
1639- else aB(hT, hU, hV)
1640+ else aB(hV, hW, hX)
16401641 }
16411642 else if ($isInstanceOf(aG, "SetScriptTransaction"))
16421643 then {
16431644 let dK = aG
1644- let hW = blake2b256(value(dK.script))
1645- let hX = fromBase64String(value(getString(aP, az())))
1646- let hY = scriptHash(this)
1647- if (if ((hX == hW))
1648- then (hY != hW)
1645+ let hY = blake2b256(value(dK.script))
1646+ let hZ = fromBase64String(value(getString(aP, az())))
1647+ let ia = scriptHash(this)
1648+ if (if ((hZ == hY))
1649+ then (ia != hY)
16491650 else false)
16501651 then true
1651- else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
1652+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
16521653 }
1653- else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
1654+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
16541655 }
16551656
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(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
7676 func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7777
7878
7979 func P (Q,R,S) = fraction(Q, R, S)
8080
8181
8282 func T (L) = if ((d > L))
8383 then -(L)
8484 else L
8585
8686
8787 func U (L) = if ((d > L))
8888 then -(L)
8989 else L
9090
9191
9292 func V () = "%s__factoryContract"
9393
9494
9595 func W () = "%s__managerPublicKey"
9696
9797
9898 func X () = "%s__pendingManagerPublicKey"
9999
100100
101101 func Y () = "%s%s__price__last"
102102
103103
104104 func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
105105
106106
107107 func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
108108
109109
110110 func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
111111
112112
113113 func ag () = "%s__amountAsset"
114114
115115
116116 func ah () = "%s__priceAsset"
117117
118118
119119 func ai () = "%s__amp"
120120
121121
122122 func aj () = "%s__addonAddr"
123123
124124
125125 let ak = "%s__fee"
126126
127127 let al = valueOrElse(getInteger(this, ak), G)
128128
129129 let am = makeString(["%s", "dLp"], n)
130130
131131 let an = makeString(["%s", "dLpRefreshedHeight"], n)
132132
133133 let ao = makeString(["%s", "refreshDLpDelay"], n)
134134
135135 let ap = 1
136136
137137 let aq = valueOrElse(getInteger(this, ao), ap)
138138
139139 func ar () = "%s__factoryConfig"
140140
141141
142142 func as () = "%s%s__matcher__publicKey"
143143
144144
145145 func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
146146
147147
148148 func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
149149
150150
151151 func ay () = "%s__shutdown"
152152
153153
154154 func az () = "%s__allowedLpStableScriptHash"
155155
156156
157157 func aA () = "%s__feeCollectorAddress"
158158
159159
160160 func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161161
162162
163163 func aF (L) = {
164164 let aG = L
165165 if ($isInstanceOf(aG, "String"))
166166 then {
167167 let aH = aG
168168 aH
169169 }
170170 else throw("fail cast to String")
171171 }
172172
173173
174174 func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
175175
176176
177177 func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
178178
179179
180180 func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
181181
182182
183183 func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
184184
185185
186186 let aP = addressFromStringValue(aI(this, V()))
187187
188188 let aQ = aI(this, ai())
189189
190190 func aR () = valueOrElse(getBoolean(aP, ay()), false)
191191
192192
193193 func aS () = fromBase58String(aI(aP, as()))
194194
195195
196196 let aT = addressFromStringValue(aI(aP, aA()))
197197
198198 func aU () = {
199199 let aV = aI(this, ag())
200200 let aW = aI(this, ah())
201201 let aX = aL(aP, aw(aW))
202202 let au = aL(aP, aw(aV))
203203 split(aI(aP, at(toString(au), toString(aX))), n)
204204 }
205205
206206
207207 func aY (aZ) = if ((aZ == k))
208208 then unit
209209 else fromBase58String(aZ)
210210
211211
212212 func ba (aZ) = if ((aZ == unit))
213213 then k
214214 else toBase58String(value(aZ))
215215
216216
217217 func bb (bc) = $Tuple7(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]))
218218
219219
220220 let bd = bb(aU())
221221
222222 let be = bd
223223
224224 let bf = be._1
225225
226226 let bg = be._2
227227
228228 let bh = be._3
229229
230230 let bi = be._4
231231
232232 let bj = be._5
233233
234234 let bk = be._6
235235
236236 let bl = be._7
237237
238238 func bm () = split(aI(aP, ar()), n)
239239
240240
241241 let bn = bm()
242242
243243 let bo = valueOrErrorMessage(addressFromString(bn[C]), "Invalid staking contract address")
244244
245245 let bp = valueOrErrorMessage(addressFromString(bn[E]), "Invalid slipage contract address")
246246
247247 let bq = valueOrErrorMessage(addressFromString(bn[F]), "Invalid gwx contract address")
248248
249249 let br = valueOrErrorMessage(addressFromString(bn[D]), "Invalid gwx contract address")
250250
251251 func bs (bt,bu,bv,bw,bx,by,bz,bA,bB,bC) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC)], n)
252252
253253
254254 func bD (bE,bF,bG,bw,bz,bA) = makeString(["%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bw), toString(bz), toString(bA)], n)
255255
256256
257257 func bH (bI) = if ((bI == "WAVES"))
258258 then wavesBalance(this).available
259259 else assetBalance(this, fromBase58String(bI))
260260
261261
262262 func bJ (bK,bL) = fraction(bK, c, bL)
263263
264264
265265 func bM (bN,bO,bP) = {
266266 let bQ = fraction((bN - bO), b, bO)
267267 let bR = ((bP - T(bQ)) > d)
268268 if (!(bR))
269269 then throw(("Big slpg: " + toString(bQ)))
270270 else $Tuple2(bR, min([bN, bO]))
271271 }
272272
273273
274274 func bS (bT,bU,bV) = {
275275 let bQ = fraction(bU, b, bT)
276276 let bW = (bV > bQ)
277277 if (if (bW)
278278 then true
279279 else (bU > bT))
280280 then throw(((((((toString(bU) + " ") + toString(bT)) + " ") + toString(bQ)) + " ") + toString(bV)))
281281 else bW
282282 }
283283
284284
285285 func bX (bY,bZ,ca,cb) = {
286286 let cc = H(ca, bY)
287287 let cd = H(cb, bZ)
288288 bJ(cd, cc)
289289 }
290290
291291
292292 func ce (ca,cb,cf) = {
293293 let cg = aU()
294294 let ch = parseIntValue(cg[y])
295295 let ci = parseIntValue(cg[z])
296296 let cj = bX(ch, ci, ca, cb)
297297 let bL = H(ca, ch)
298298 let bK = H(cb, ci)
299299 let ck = H(cf, a)
300300 let cl = bJ(bL, ck)
301301 let cm = bJ(bK, ck)
302302 [cj, cl, cm]
303303 }
304304
305305
306306 func cn (ca,cb,cf) = {
307307 let co = ce(ca, cb, cf)
308308 [K(co[0], a), K(co[1], a), K(co[2], a)]
309309 }
310310
311311
312312 func cp (cq) = {
313313 let cr = fraction(cq, al, a)
314314 $Tuple2((cq - cr), cr)
315315 }
316316
317317
318318 func cs (ct,cu,cv,cw) = {
319319 let cg = aU()
320320 let cx = cg[v]
321321 let cy = cg[w]
322322 let cz = cg[x]
323323 let cA = parseIntValue(cg[y])
324324 let cB = parseIntValue(cg[z])
325325 let cC = cg[u]
326326 let cD = valueOrErrorMessage(assetInfo(fromBase58String(cx)), "Wrong LP id").quantity
327327 if ((cx != cu))
328328 then throw("Wrong pmt asset")
329329 else {
330330 let cE = bH(cy)
331331 let cF = H(cE, cA)
332332 let cG = bH(cz)
333333 let cH = H(cG, cB)
334334 let cI = bJ(cH, cF)
335335 let cJ = K(cI, a)
336336 let cK = H(cv, a)
337337 let cL = H(cD, a)
338338 let cM = fraction(cF, cK, cL)
339339 let cN = fraction(cH, cK, cL)
340340 let cO = N(cM, cA, FLOOR)
341341 let cP = N(cN, cB, FLOOR)
342342 let cQ = if ((ct == ""))
343343 then nil
344344 else [ScriptTransfer(cw, cO, if ((cy == "WAVES"))
345345 then unit
346346 else fromBase58String(cy)), ScriptTransfer(cw, cP, if ((cz == "WAVES"))
347347 then unit
348348 else fromBase58String(cz)), StringEntry(af(toString(cw), ct), bD(cO, cP, cv, cJ, height, lastBlock.timestamp)), IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ)]
349349 $Tuple10(cO, cP, cy, cz, cE, cG, cD, cI, cC, cQ)
350350 }
351351 }
352352
353353
354354 func cR (ct,bP,cS,cT,cU,cV,cw,cW,cX,cY,cZ,da,db) = {
355355 let cg = aU()
356356 let cx = fromBase58String(cg[v])
357357 let dc = cg[w]
358358 let dd = cg[x]
359359 let de = cg[A]
360360 let df = cg[B]
361361 let dg = parseIntValue(cg[y])
362362 let dh = parseIntValue(cg[z])
363363 let cC = cg[u]
364364 let di = valueOrErrorMessage(assetInfo(cx), "Wr lp as").quantity
365365 let cE = if (cW)
366366 then bH(dc)
367367 else if (if (cY)
368368 then (db == dc)
369369 else false)
370370 then (bH(dc) - da)
371371 else if (cY)
372372 then bH(dc)
373373 else (bH(dc) - cS)
374374 let cG = if (cW)
375375 then bH(dd)
376376 else if (if (cY)
377377 then (db == dd)
378378 else false)
379379 then (bH(dd) - da)
380380 else if (cY)
381381 then bH(dd)
382382 else (bH(dd) - cU)
383383 let dj = H(cS, dg)
384384 let dk = H(cU, dh)
385385 let dl = bJ(dk, dj)
386386 let cF = H(cE, dg)
387387 let cH = H(cG, dh)
388388 let dm = if ((di == 0))
389389 then {
390390 let cI = d
391391 let dn = d
392392 let ck = pow((dj * dk), 0, toBigInt(5), 1, 0, DOWN)
393393 $Tuple5(K(ck, a), K(dj, dg), K(dk, dh), bJ((cH + dk), (cF + dj)), dn)
394394 }
395395 else {
396396 let cI = bJ(cH, cF)
397397 let do = fraction(T((cI - dl)), c, cI)
398398 let dn = H(bP, a)
399399 if (if (if (cZ)
400400 then (cI != d)
401401 else false)
402402 then (do > dn)
403403 else false)
404404 then throw(((("Price slippage " + toString(do)) + " > ") + toString(dn)))
405405 else {
406406 let dp = H(di, a)
407407 let dq = fraction(dj, cI, c)
408408 let dr = fraction(dk, c, cI)
409409 let ds = if ((dq > dk))
410410 then $Tuple2(dr, dk)
411411 else $Tuple2(dj, dq)
412412 let dt = ds._1
413413 let du = ds._2
414414 let ck = fraction(dp, du, cH)
415415 $Tuple5(N(ck, a, FLOOR), N(dt, dg, CEILING), N(du, dh, CEILING), cI, dn)
416416 }
417417 }
418418 let dv = dm._1
419419 let dw = dm._2
420420 let dx = dm._3
421421 let cJ = K(dm._4, a)
422422 let dy = K(dm._5, a)
423423 if ((0 >= dv))
424424 then throw("LP <= 0")
425425 else {
426426 let dz = if (!(cX))
427427 then 0
428428 else dv
429429 let dA = (cS - dw)
430430 let dB = (cU - dx)
431431 let dC = if (if (cY)
432432 then (db == dc)
433433 else false)
434434 then $Tuple2(da, 0)
435435 else if (if (cY)
436436 then (db == dd)
437437 else false)
438438 then $Tuple2(0, da)
439439 else $Tuple2(dw, dx)
440440 let dD = dC._1
441441 let dE = dC._2
442442 let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ct), bs(dD, dE, dz, cJ, bP, dy, height, lastBlock.timestamp, dA, dB))]
443443 $Tuple13(dv, dz, cJ, cE, cG, di, cx, cC, dF, dA, dB, cT, cV)
444444 }
445445 }
446446
447447
448448 func dG (dH) = {
449449 let dI = dH[0]
450450 let dJ = dH[1]
451451 let dK = (dI + dJ)
452452 if ((dK == e))
453453 then e
454454 else {
455455 let dL = parseIntValue(aQ)
456456 let dM = (dL * 2)
457457 let co = fraction(dI, dJ, f)
458458 let dN = fraction(co, i, f)
459459 let dO = fraction(toBigInt(dM), dK, f)
460460 let dP = toBigInt((dM - 1))
461461 func dQ (dR) = {
462462 let dS = fraction(dR, dR, f)
463463 let dT = fraction(dS, dR, f)
464464 let dU = fraction(dT, f, dN)
465465 fraction((dO + fraction(dU, g, f)), dR, (fraction(dP, dR, f) + fraction(h, dU, f)), CEILING)
466466 }
467467
468468 func dV (dW,dX) = if (dW._2)
469469 then dW
470470 else {
471471 let dR = dW._1
472472 let dY = dQ(dR)
473473 let dZ = toInt((dY - value(dR)))
474474 let ea = if ((0 > dZ))
475475 then -(dZ)
476476 else dZ
477477 if ((1 >= ea))
478478 then $Tuple2(dY, true)
479479 else $Tuple2(dY, false)
480480 }
481481
482482 let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
483483 let ec = {
484484 let ed = eb
485485 let ee = size(ed)
486486 let ef = $Tuple2(dK, false)
487487 func eg (eh,ei) = if ((ei >= ee))
488488 then eh
489489 else dV(eh, ed[ei])
490490
491491 func ej (eh,ei) = if ((ei >= ee))
492492 then eh
493493 else throw("List size exceeds 15")
494494
495495 ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
496496 }
497497 let dR = ec._1
498498 let ek = ec._2
499499 if (ek)
500500 then dR
501501 else throw(("D calculation error, D = " + toString(dR)))
502502 }
503503 }
504504
505505
506506 func el (dH) = {
507507 let em = g
508508 let dI = dH[0]
509509 let dJ = dH[1]
510510 let en = parseBigIntValue(l)
511511 let dL = (parseBigIntValue(aQ) * en)
512512 let dK = (dI + dJ)
513513 if ((dK == e))
514514 then e
515515 else {
516516 let dM = (dL * em)
517517 let dN = (((dI * dJ) * em) * em)
518518 let eo = ((dM * dK) / en)
519519 let ep = (dM - en)
520520 let eq = (em + f)
521521 func dV (dW,er) = {
522522 let es = dW
523523 let dR = es._1
524524 let ek = es._2
525525 if ((ek != unit))
526526 then dW
527527 else {
528528 let dU = (((dR * dR) * dR) / dN)
529529 let dY = (((eo + (dU * em)) * dR) / (((ep * dR) / en) + (eq * dU)))
530530 let ea = U((dY - value(dR)))
531531 if ((f >= ea))
532532 then $Tuple2(dY, er)
533533 else $Tuple2(dY, unit)
534534 }
535535 }
536536
537537 let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
538538 let et = {
539539 let ed = eb
540540 let ee = size(ed)
541541 let ef = $Tuple2(dK, unit)
542542 func eg (eh,ei) = if ((ei >= ee))
543543 then eh
544544 else dV(eh, ed[ei])
545545
546546 func ej (eh,ei) = if ((ei >= ee))
547547 then eh
548548 else throw("List size exceeds 15")
549549
550550 ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
551551 }
552552 let dR = et._1
553553 let ek = et._2
554554 if ((ek != unit))
555555 then dR
556556 else throw(("D calculation error, D = " + toString(dR)))
557557 }
558558 }
559559
560560
561561 func eu (dH,dX,ev) = {
562562 let em = g
563563 let ew = dH[if ((dX == 0))
564564 then 1
565565 else 0]
566566 let en = parseBigIntValue(l)
567567 let dL = (parseBigIntValue(aQ) * en)
568568 let dK = ew
569569 let dM = (dL * em)
570570 let ex = (((((ev * ev) / (ew * em)) * ev) * en) / (dM * em))
571571 let ey = ((dK + ((ev * en) / dM)) - ev)
572572 func dV (dW,er) = {
573573 let ez = dW
574574 let eA = ez._1
575575 let ek = ez._2
576576 if ((ek != unit))
577577 then dW
578578 else {
579579 let eB = (((eA * eA) + ex) / ((g * eA) + ey))
580580 let eC = U((eB - value(eA)))
581581 if ((f >= eC))
582582 then $Tuple2(eB, er)
583583 else $Tuple2(eB, unit)
584584 }
585585 }
586586
587587 let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
588588 let eD = {
589589 let ed = eb
590590 let ee = size(ed)
591591 let ef = $Tuple2(ev, unit)
592592 func eg (eh,ei) = if ((ei >= ee))
593593 then eh
594594 else dV(eh, ed[ei])
595595
596596 func ej (eh,ei) = if ((ei >= ee))
597597 then eh
598598 else throw("List size exceeds 15")
599599
600600 ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
601601 }
602602 let eA = eD._1
603603 let ek = eD._2
604604 if ((ek != unit))
605605 then eA
606606 else throw(("Y calculation error, Y = " + toString(eA)))
607607 }
608608
609609
610610 func eE (eF,eG,eH) = {
611611 let eI = fraction(dG([eF, eG]), c, eH)
612612 if ((eH == e))
613613 then e
614614 else eI
615615 }
616616
617617
618618 func eJ (eK,eL,eM) = {
619619 let eN = (toBigInt(bH(ba(bi))) - eK)
620620 let eO = (toBigInt(bH(ba(bj))) - eL)
621621 let eP = (toBigInt(value(assetInfo(bh)).quantity) - eM)
622622 let eQ = eE(eN, eO, eP)
623623 eQ
624624 }
625625
626626
627627 func eR (eS,eT,eM) = {
628628 let eN = (bH(ba(bi)) + eS)
629629 let eO = (bH(ba(bj)) + eT)
630630 let eP = (value(assetInfo(bh)).quantity + eM)
631631 let eI = eE(toBigInt(eN), toBigInt(eO), toBigInt(eP))
632632 let eU = [IntegerEntry(an, height), StringEntry(am, toString(eI))]
633633 $Tuple2(eU, eI)
634634 }
635635
636636
637637 func eV (eW,eI) = if ((eI >= eW))
638638 then true
639639 else aM("updated DLp lower than current DLp")
640640
641641
642642 func eX (eY) = {
643643 let eZ = eY.amount
644644 let fa = fraction(eY.amount, eY.price, a, FLOOR)
645645 let fb = if ((eY.orderType == Buy))
646646 then $Tuple2(eZ, -(fa))
647647 else $Tuple2(-(eZ), fa)
648648 let eS = fb._1
649649 let eT = fb._2
650650 if (if (if (aR())
651651 then true
652652 else (bg == r))
653653 then true
654654 else (bg == s))
655655 then throw("Admin blocked")
656656 else if (if ((eY.assetPair.amountAsset != bi))
657657 then true
658658 else (eY.assetPair.priceAsset != bj))
659659 then throw("Wr assets")
660660 else {
661661 let fc = parseBigIntValue(getStringValue(this, am))
662662 let fd = eR(eS, eT, 0)
663663 let fe = fd._1
664664 let ff = fd._2
665665 let fg = (ff >= fc)
666666 fg
667667 }
668668 }
669669
670670
671671 func fh (dX) = if ((size(dX.payments) != 1))
672672 then throw("1 pmnt exp")
673673 else {
674674 let fi = value(dX.payments[0])
675675 let cu = value(fi.assetId)
676676 let da = fi.amount
677677 let dm = cs(toBase58String(dX.transactionId), toBase58String(cu), da, dX.caller)
678678 let cO = dm._1
679679 let cP = dm._2
680680 let cC = parseIntValue(dm._9)
681681 let cQ = dm._10
682682 if (if (aR())
683683 then true
684684 else (cC == s))
685685 then throw(("Admin blocked: " + toString(cC)))
686686 else $Tuple5(cO, cP, da, cu, cQ)
687687 }
688688
689689
690690 func fj (fk,ae,fl,fm,bP,cX,cY,cZ,da,db) = {
691691 let dm = cR(ae, bP, value(fl).amount, value(fl).assetId, value(fm).amount, value(fm).assetId, fk, (ae == ""), cX, cY, cZ, da, db)
692692 let cC = parseIntValue(dm._8)
693693 if (if (if (aR())
694694 then true
695695 else (cC == q))
696696 then true
697697 else (cC == s))
698698 then throw(("Blocked:" + toString(cC)))
699699 else dm
700700 }
701701
702702
703703 func fn (fo,cu,cw,ae,fp) = {
704704 let bc = aU()
705705 let cy = bc[w]
706706 let cz = bc[x]
707707 let cx = bc[v]
708708 let dg = parseIntValue(bc[y])
709709 let dh = parseIntValue(bc[z])
710710 let eP = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
711711 let fq = if ((eP > e))
712712 then true
713713 else throw("initial deposit requires all coins")
714714 if ((fq == fq))
715715 then {
716716 let cE = bH(cy)
717717 let cG = bH(cz)
718718 let fr = if ((ae == ""))
719719 then $Tuple2(cE, cG)
720720 else if ((cu == cy))
721721 then if ((fo > cE))
722722 then throw("invalid payment amount")
723723 else $Tuple2((cE - fo), cG)
724724 else if ((cu == cz))
725725 then if ((fo > cG))
726726 then throw("invalid payment amount")
727727 else $Tuple2(cE, (cG - fo))
728728 else throw("wrong pmtAssetId")
729729 let fs = fr._1
730730 let ft = fr._2
731731 let fu = if ((cu == cy))
732732 then $Tuple2(fo, 0)
733733 else if ((cu == cz))
734734 then $Tuple2(0, fo)
735735 else throw("invalid payment")
736736 let fv = fu._1
737737 let fw = fu._2
738738 let fx = if (fp)
739739 then $Tuple3(cp(fv)._1, cp(fw)._1, cp(fo)._2)
740740 else $Tuple3(fv, fw, 0)
741741 let fy = fx._1
742742 let fz = fx._2
743743 let cr = fx._3
744744 let fA = (fs + fy)
745745 let fB = (ft + fz)
746746 let bU = dG([toBigInt(fs), toBigInt(ft)])
747747 let bT = dG([toBigInt(fA), toBigInt(fB)])
748748 let fC = if ((bT > bU))
749749 then true
750750 else throw()
751751 if ((fC == fC))
752752 then {
753753 let fD = fraction(eP, (bT - bU), bU, FLOOR)
754754 let cJ = K(bJ(H(fB, dh), H(fA, dg)), a)
755755 let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ae), bs(fv, fw, toInt(fD), cJ, 0, 0, height, lastBlock.timestamp, 0, 0))]
756756 let fE = fraction(ft, a, fs)
757757 let fF = fraction(fo, a, (fE + a))
758758 let fG = (fo - fF)
759759 let fH = fraction(eP, toBigInt(fG), toBigInt(ft))
760760 let fI = toInt(fraction((fD - fH), b, fH))
761761 $Tuple4(toInt(fD), dF, cr, fI)
762762 }
763763 else throw("Strict value is not equal to itself.")
764764 }
765765 else throw("Strict value is not equal to itself.")
766766 }
767767
768768
769769 func fJ (fK,fL,fM,fk,fN,fO) = {
770770 let bc = aU()
771771 let cx = bc[v]
772772 let cy = bc[w]
773773 let cz = bc[x]
774774 let fP = parseIntValue(bc[y])
775775 let fQ = parseIntValue(bc[z])
776776 let fR = bc[u]
777777 let cw = if ((fk == br))
778778 then fN
779779 else fk
780780 let fi = value(fM[0])
781781 let cu = value(fi.assetId)
782782 let da = fi.amount
783783 let eQ = eJ(e, e, e)
784784 if ((eQ == eQ))
785785 then {
786786 let ct = toBase58String(fO)
787787 if ((cx != toBase58String(cu)))
788788 then throw("Wrong LP")
789789 else {
790790 let cE = bH(cy)
791791 let cG = bH(cz)
792792 let fS = {
793793 let fT = invoke(this, "getOneTknV2READONLY", [fK, da], nil)
794794 if ($isInstanceOf(fT, "(Int, Int)"))
795795 then fT
796796 else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
797797 }
798798 if ((fS == fS))
799799 then {
800800 let cr = fS._2
801801 let fU = fS._1
802802 let fV = if (if ((fL > 0))
803803 then (fL > fU)
804804 else false)
805805 then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
806806 else fU
807807 let fW = if ((fK == cy))
808808 then $Tuple4(fV, 0, ((cE - fV) - cr), cG)
809809 else if ((fK == cz))
810810 then $Tuple4(0, fV, cE, ((cG - fV) - cr))
811811 else throw("invalid out asset id")
812812 let fX = fW._1
813813 let fY = fW._2
814814 let fA = fW._3
815815 let fB = fW._4
816816 let fZ = bJ(H(fB, fQ), H(fA, fP))
817817 let ga = K(fZ, a)
818818 let gb = if ((fK == "WAVES"))
819819 then unit
820820 else fromBase58String(fK)
821821 let gc = if ((cr > 0))
822822 then [ScriptTransfer(aT, cr, gb)]
823823 else nil
824824 let cQ = ([ScriptTransfer(cw, fV, gb), StringEntry(af(toString(cw), ct), bD(fX, fY, da, ga, height, lastBlock.timestamp)), IntegerEntry(Y(), ga), IntegerEntry(Z(height, lastBlock.timestamp), ga)] ++ gc)
825825 if ((cQ == cQ))
826826 then {
827827 let gd = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
828828 if ((gd == gd))
829829 then {
830830 let ge = {
831831 let gf = if ((this == aT))
832832 then 0
833833 else cr
834834 let gg = if ((aY(fK) == bi))
835835 then true
836836 else false
837837 if (gg)
838838 then $Tuple2(-((fU + gf)), 0)
839839 else $Tuple2(0, -((fU + gf)))
840840 }
841841 let eS = ge._1
842842 let eT = ge._2
843843 let gh = eR(eS, eT, 0)
844844 let gi = gh._1
845845 let eI = gh._2
846846 let gj = eV(eQ, eI)
847847 if ((gj == gj))
848848 then $Tuple2((cQ ++ gi), fV)
849849 else throw("Strict value is not equal to itself.")
850850 }
851851 else throw("Strict value is not equal to itself.")
852852 }
853853 else throw("Strict value is not equal to itself.")
854854 }
855855 else throw("Strict value is not equal to itself.")
856856 }
857857 }
858858 else throw("Strict value is not equal to itself.")
859859 }
860860
861861
862862 func gk () = {
863863 let aG = getString(W())
864864 if ($isInstanceOf(aG, "String"))
865865 then {
866866 let dK = aG
867867 fromBase58String(dK)
868868 }
869869 else if ($isInstanceOf(aG, "Unit"))
870870 then unit
871871 else throw("Match error")
872872 }
873873
874874
875875 func gl () = {
876876 let aG = getString(X())
877877 if ($isInstanceOf(aG, "String"))
878878 then {
879879 let dK = aG
880880 fromBase58String(dK)
881881 }
882882 else if ($isInstanceOf(aG, "Unit"))
883883 then unit
884884 else throw("Match error")
885885 }
886886
887887
888888 let gm = throw("Permission denied")
889889
890890 func gn (dX) = {
891891 let aG = gk()
892892 if ($isInstanceOf(aG, "ByteVector"))
893893 then {
894894 let go = aG
895895 (dX.callerPublicKey == go)
896896 }
897897 else if ($isInstanceOf(aG, "Unit"))
898898 then (dX.caller == this)
899899 else throw("Match error")
900900 }
901901
902902
903903 func gp (dX) = {
904904 let aG = gk()
905905 if ($isInstanceOf(aG, "ByteVector"))
906906 then {
907907 let go = aG
908908 if ((dX.callerPublicKey == go))
909909 then true
910910 else gm
911911 }
912912 else if ($isInstanceOf(aG, "Unit"))
913913 then if ((dX.caller == this))
914914 then true
915915 else gm
916916 else throw("Match error")
917917 }
918918
919919
920920 @Callable(dX)
921921 func constructor (V) = {
922922 let ex = gp(dX)
923923 if ((ex == ex))
924924 then [StringEntry(V(), V)]
925925 else throw("Strict value is not equal to itself.")
926926 }
927927
928928
929929
930930 @Callable(dX)
931931 func setManager (gq) = {
932932 let ex = gp(dX)
933933 if ((ex == ex))
934934 then {
935935 let gr = fromBase58String(gq)
936936 if ((gr == gr))
937937 then [StringEntry(X(), gq)]
938938 else throw("Strict value is not equal to itself.")
939939 }
940940 else throw("Strict value is not equal to itself.")
941941 }
942942
943943
944944
945945 @Callable(dX)
946946 func confirmManager () = {
947947 let co = gl()
948948 let gs = if (isDefined(co))
949949 then true
950950 else throw("No pending manager")
951951 if ((gs == gs))
952952 then {
953953 let gt = if ((dX.callerPublicKey == value(co)))
954954 then true
955955 else throw("You are not pending manager")
956956 if ((gt == gt))
957957 then [StringEntry(W(), toBase58String(value(co))), DeleteEntry(X())]
958958 else throw("Strict value is not equal to itself.")
959959 }
960960 else throw("Strict value is not equal to itself.")
961961 }
962962
963963
964964
965965 @Callable(dX)
966966 func put (gu,gv) = {
967967 let gw = bm()
968968 let gx = valueOrErrorMessage(addressFromString(gw[C]), "Wr st addr")
969969 let gy = valueOrErrorMessage(addressFromString(gw[E]), "Wr sl addr")
970970 if ((0 > gu))
971971 then throw("Wrong slippage")
972972 else if ((size(dX.payments) != 2))
973973 then throw("2 pmnts expd")
974974 else {
975975 let gz = toBigInt(value(dX.payments[0]).amount)
976976 let gA = toBigInt(value(dX.payments[1]).amount)
977977 let eN = (toBigInt(bH(ba(bi))) - gz)
978978 if ((eN == eN))
979979 then {
980980 let eO = (toBigInt(bH(ba(bj))) - gA)
981981 if ((eO == eO))
982982 then {
983983 let eP = toBigInt(value(assetInfo(bh)).quantity)
984984 if ((eP == eP))
985985 then {
986986 let eQ = eJ(gz, gA, toBigInt(0))
987987 if ((eQ == eQ))
988988 then {
989989 let gB = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gu, true, false, true, 0, "")
990990 let dz = gB._2
991991 let gC = gB._7
992992 let cQ = gB._9
993993 let dA = gB._10
994994 let dB = gB._11
995995 let cy = gB._12
996996 let cz = gB._13
997997 let dm = invoke(aP, "emit", [dz], nil)
998998 if ((dm == dm))
999999 then {
10001000 let gD = {
10011001 let aG = dm
10021002 if ($isInstanceOf(aG, "Address"))
10031003 then {
10041004 let gE = aG
10051005 invoke(gE, "emit", [dz], nil)
10061006 }
10071007 else unit
10081008 }
10091009 if ((gD == gD))
10101010 then {
10111011 let gF = if ((dA > 0))
10121012 then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
10131013 else nil
10141014 if ((gF == gF))
10151015 then {
10161016 let gG = if ((dB > 0))
10171017 then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
10181018 else nil
10191019 if ((gG == gG))
10201020 then {
10211021 let gH = if (gv)
10221022 then {
10231023 let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
10241024 if ((gI == gI))
10251025 then nil
10261026 else throw("Strict value is not equal to itself.")
10271027 }
10281028 else [ScriptTransfer(dX.caller, dz, gC)]
10291029 let gJ = eR(0, 0, 0)
10301030 let gi = gJ._1
10311031 let eI = gJ._2
1032- let gK = value(assetInfo(bh)).quantity
1033- if ((gK == gK))
1032+ let gj = eV(eQ, eI)
1033+ if ((gj == gj))
10341034 then {
1035- let gL = if ((eI >= eQ))
1035+ let gK = if ((eI >= eQ))
10361036 then true
1037- else aM(makeString(["updated DLp lower than current DLp", toString(eN), toString(eO), toString(eP), toString(eQ), toString(eI), toString(dz), toString(dA), toString(dB), toString(eP), toString(gK)], " "))
1038- if ((gL == gL))
1039- then ((cQ ++ gH) ++ gi)
1037+ else aM("updated DLp lower than current DLp")
1038+ if ((gK == gK))
1039+ then {
1040+ let gL = value(assetInfo(bh)).quantity
1041+ if ((gL == gL))
1042+ then ((cQ ++ gH) ++ gi)
1043+ else throw("Strict value is not equal to itself.")
1044+ }
10401045 else throw("Strict value is not equal to itself.")
10411046 }
10421047 else throw("Strict value is not equal to itself.")
10431048 }
10441049 else throw("Strict value is not equal to itself.")
10451050 }
10461051 else throw("Strict value is not equal to itself.")
10471052 }
10481053 else throw("Strict value is not equal to itself.")
10491054 }
10501055 else throw("Strict value is not equal to itself.")
10511056 }
10521057 else throw("Strict value is not equal to itself.")
10531058 }
10541059 else throw("Strict value is not equal to itself.")
10551060 }
10561061 else throw("Strict value is not equal to itself.")
10571062 }
10581063 else throw("Strict value is not equal to itself.")
10591064 }
10601065 }
10611066
10621067
10631068
10641069 @Callable(dX)
10651070 func putOneTknV2 (fL,gv) = {
10661071 let gM = {
10671072 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10681073 if ($isInstanceOf(fT, "Boolean"))
10691074 then fT
10701075 else throw(($getType(fT) + " couldn't be cast to Boolean"))
10711076 }
10721077 let gN = if (if (if (aR())
10731078 then true
10741079 else (bg == q))
10751080 then true
10761081 else (bg == s))
10771082 then true
10781083 else gM
10791084 let gO = [if (if (!(gN))
10801085 then true
10811086 else gn(dX))
10821087 then true
10831088 else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
10841089 then true
10851090 else aM("exactly 1 payment are expected")]
10861091 if ((gO == gO))
10871092 then {
10881093 let bc = aU()
10891094 let cy = bc[w]
10901095 let cz = bc[x]
10911096 let cx = fromBase58String(bc[v])
10921097 let fP = parseIntValue(bc[y])
10931098 let fQ = parseIntValue(bc[z])
10941099 let cw = if ((dX.caller == this))
10951100 then dX.originCaller
10961101 else dX.caller
10971102 let fi = value(dX.payments[0])
10981103 let cu = toBase58String(value(fi.assetId))
10991104 let da = fi.amount
11001105 let eQ = if ((fi.assetId == bi))
11011106 then eJ(toBigInt(da), toBigInt(0), toBigInt(0))
11021107 else eJ(toBigInt(0), toBigInt(da), toBigInt(0))
11031108 if ((eQ == eQ))
11041109 then {
11051110 let gP = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
11061111 if ((gP == gP))
11071112 then {
11081113 let cr = gP._3
11091114 let cQ = gP._2
11101115 let gQ = gP._1
11111116 let dz = if (if ((fL > 0))
11121117 then (fL > gQ)
11131118 else false)
11141119 then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
11151120 else gQ
11161121 let gB = invoke(aP, "emit", [dz], nil)
11171122 if ((gB == gB))
11181123 then {
11191124 let gD = {
11201125 let aG = gB
11211126 if ($isInstanceOf(aG, "Address"))
11221127 then {
11231128 let gE = aG
11241129 invoke(gE, "emit", [dz], nil)
11251130 }
11261131 else unit
11271132 }
11281133 if ((gD == gD))
11291134 then {
11301135 let gH = if (gv)
11311136 then {
11321137 let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
11331138 if ((gI == gI))
11341139 then nil
11351140 else throw("Strict value is not equal to itself.")
11361141 }
11371142 else [ScriptTransfer(dX.caller, dz, cx)]
11381143 let gc = if ((cr > 0))
11391144 then [ScriptTransfer(aT, cr, fromBase58String(cu))]
11401145 else nil
11411146 let gR = if ((this == aT))
11421147 then $Tuple2(0, 0)
11431148 else {
11441149 let gS = if ((fi.assetId == bi))
11451150 then true
11461151 else false
11471152 if (gS)
11481153 then $Tuple2(-(cr), 0)
11491154 else $Tuple2(0, -(cr))
11501155 }
11511156 let eS = gR._1
11521157 let eT = gR._2
11531158 let gT = eR(eS, eT, 0)
11541159 let gi = gT._1
11551160 let eI = gT._2
11561161 let gj = eV(eQ, eI)
11571162 if ((gj == gj))
11581163 then $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
11591164 else throw("Strict value is not equal to itself.")
11601165 }
11611166 else throw("Strict value is not equal to itself.")
11621167 }
11631168 else throw("Strict value is not equal to itself.")
11641169 }
11651170 else throw("Strict value is not equal to itself.")
11661171 }
11671172 else throw("Strict value is not equal to itself.")
11681173 }
11691174 else throw("Strict value is not equal to itself.")
11701175 }
11711176
11721177
11731178
11741179 @Callable(dX)
1175-func putForFree (gU) = if ((0 > gU))
1176- then throw("Wrong slpg")
1177- else if ((size(dX.payments) != 2))
1178- then throw("2 pmnts expd")
1179- else {
1180- let gV = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gU, false, false, true, 0, "")
1181- let cQ = gV._9
1182- let gz = toBigInt(value(dX.payments[0]).amount)
1183- let gA = toBigInt(value(dX.payments[1]).amount)
1184- let eQ = eJ(gz, gA, toBigInt(0))
1185- if ((eQ == eQ))
1180+func get () = {
1181+ let gU = toBigInt(bH(ba(bi)))
1182+ if ((gU == gU))
1183+ then {
1184+ let gV = toBigInt(bH(ba(bj)))
1185+ if ((gV == gV))
11861186 then {
1187- let gW = eR(0, 0, 0)
1188- let gi = gW._1
1189- let eI = gW._2
1190- let gj = eV(eQ, eI)
1191- if ((gj == gj))
1192- then (cQ ++ gi)
1193- else throw("Strict value is not equal to itself.")
1194- }
1195- else throw("Strict value is not equal to itself.")
1196- }
1197-
1198-
1199-
1200-@Callable(dX)
1201-func get () = {
1202- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1203- if ((eQ == eQ))
1204- then {
1205- let dm = fh(dX)
1206- let gX = dm._1
1207- let cP = dm._2
1208- let da = dm._3
1209- let cu = dm._4
1210- let cQ = dm._5
1211- let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1212- if ((ey == ey))
1213- then {
1214- let gY = eR(-(gX), -(cP), 0)
1215- let gi = gY._1
1216- let eI = gY._2
1217- let gj = eV(eQ, eI)
1218- if ((gj == gj))
1219- then (cQ ++ gi)
1187+ let gW = toBigInt(value(assetInfo(bh)).quantity)
1188+ if ((gW == gW))
1189+ then {
1190+ let gX = (gW - toBigInt(value(dX.payments[0]).amount))
1191+ if ((gX == gX))
1192+ then {
1193+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1194+ if ((eQ == eQ))
1195+ then {
1196+ let dm = fh(dX)
1197+ let gY = dm._1
1198+ let cP = dm._2
1199+ let da = dm._3
1200+ let cu = dm._4
1201+ let cQ = dm._5
1202+ let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1203+ if ((ey == ey))
1204+ then {
1205+ let gZ = eR(-(gY), -(cP), 0)
1206+ let gi = gZ._1
1207+ let eI = gZ._2
1208+ let ha = if ((eI >= eQ))
1209+ then true
1210+ else aM(makeString(["updated DLp lower than current DLp", toString(gU), toString(gV), toString(eQ), toString(eI), toString(gW), toString(gX)], " "))
1211+ if ((ha == ha))
1212+ then (cQ ++ gi)
1213+ else throw("Strict value is not equal to itself.")
1214+ }
1215+ else throw("Strict value is not equal to itself.")
1216+ }
1217+ else throw("Strict value is not equal to itself.")
1218+ }
1219+ else throw("Strict value is not equal to itself.")
1220+ }
12201221 else throw("Strict value is not equal to itself.")
12211222 }
12221223 else throw("Strict value is not equal to itself.")
12231224 }
12241225 else throw("Strict value is not equal to itself.")
12251226 }
12261227
12271228
12281229
12291230 @Callable(dX)
12301231 func getOneTknV2 (fK,fL) = {
12311232 let gM = {
12321233 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12331234 if ($isInstanceOf(fT, "Boolean"))
12341235 then fT
12351236 else throw(($getType(fT) + " couldn't be cast to Boolean"))
12361237 }
1237- let gZ = if (if (aR())
1238+ let hb = if (if (aR())
12381239 then true
12391240 else (bg == s))
12401241 then true
12411242 else gM
1242- let gO = [if (if (!(gZ))
1243+ let gO = [if (if (!(hb))
12431244 then true
12441245 else gn(dX))
12451246 then true
12461247 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
12471248 then true
12481249 else aM("exactly 1 payment are expected")]
12491250 if ((gO == gO))
12501251 then {
1251- let ha = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1252- let cQ = ha._1
1253- let fV = ha._2
1252+ let hc = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1253+ let cQ = hc._1
1254+ let fV = hc._2
12541255 $Tuple2(cQ, fV)
12551256 }
12561257 else throw("Strict value is not equal to itself.")
12571258 }
12581259
12591260
12601261
12611262 @Callable(dX)
12621263 func refreshDLp () = {
1263- let hb = valueOrElse(getInteger(an), 0)
1264- let hc = if (((height - hb) >= aq))
1264+ let hd = valueOrElse(getInteger(an), 0)
1265+ let he = if (((height - hd) >= aq))
12651266 then unit
12661267 else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1267- if ((hc == hc))
1268+ if ((he == he))
12681269 then {
12691270 let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1270- let hd = eR(0, 0, 0)
1271- let he = hd._1
1272- let eI = hd._2
1271+ let hf = eR(0, 0, 0)
1272+ let hg = hf._1
1273+ let eI = hf._2
12731274 let eU = if ((fc != eI))
1274- then he
1275+ then hg
12751276 else aM("nothing to refresh")
12761277 $Tuple2(eU, toString(eI))
12771278 }
12781279 else throw("Strict value is not equal to itself.")
12791280 }
12801281
12811282
12821283
12831284 @Callable(dX)
1284-func getOneTknV2READONLY (fK,hf) = {
1285+func getOneTknV2READONLY (fK,hh) = {
12851286 let bc = aU()
12861287 let cy = bc[w]
12871288 let cz = bc[x]
12881289 let cx = bc[v]
12891290 let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
12901291 let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
12911292 let bU = dG(dH)
1292- let bT = (bU - fraction(toBigInt(hf), bU, eH))
1293- let hg = if ((fK == cy))
1293+ let bT = (bU - fraction(toBigInt(hh), bU, eH))
1294+ let hi = if ((fK == cy))
12941295 then 0
12951296 else if ((fK == cz))
12961297 then 1
12971298 else throw("invalid out asset id")
1298- let hh = eu(dH, hg, bT)
1299- let hi = (dH[hg] - hh)
1300- let hj = max([0, toInt((hi - f))])
1301- let hk = cp(hj)
1302- let fU = hk._1
1303- let cr = hk._2
1299+ let hj = eu(dH, hi, bT)
1300+ let hk = (dH[hi] - hj)
1301+ let hl = max([0, toInt((hk - f))])
1302+ let hm = cp(hl)
1303+ let fU = hm._1
1304+ let cr = hm._2
13041305 $Tuple2(nil, $Tuple2(fU, cr))
13051306 }
13061307
13071308
13081309
13091310 @Callable(dX)
1310-func getOneTknV2WithBonusREADONLY (fK,hf) = {
1311+func getOneTknV2WithBonusREADONLY (fK,hh) = {
13111312 let bc = aU()
13121313 let cy = bc[w]
13131314 let cz = bc[x]
13141315 let cx = bc[v]
13151316 let cE = bH(cy)
13161317 let cG = bH(cz)
1317- let hl = {
1318- let fT = invoke(this, "getOneTknV2READONLY", [fK, hf], nil)
1318+ let hn = {
1319+ let fT = invoke(this, "getOneTknV2READONLY", [fK, hh], nil)
13191320 if ($isInstanceOf(fT, "(Int, Int)"))
13201321 then fT
13211322 else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
13221323 }
1323- let fU = hl._1
1324- let cr = hl._2
1325- let dm = cs("", cx, hf, this)
1324+ let fU = hn._1
1325+ let cr = hn._2
1326+ let dm = cs("", cx, hh, this)
13261327 let cO = dm._1
13271328 let cP = dm._2
1328- let hm = (cO + cP)
1329- let fI = if ((hm == 0))
1329+ let ho = (cO + cP)
1330+ let fI = if ((ho == 0))
13301331 then if ((fU == 0))
13311332 then 0
13321333 else throw("bonus calculation error")
1333- else fraction((fU - hm), a, hm)
1334+ else fraction((fU - ho), a, ho)
13341335 $Tuple2(nil, $Tuple3(fU, cr, fI))
13351336 }
13361337
13371338
13381339
13391340 @Callable(dX)
1340-func getNoLess (hn,ho) = {
1341+func getNoLess (hp,hq) = {
13411342 let dm = fh(dX)
13421343 let cO = dm._1
13431344 let cP = dm._2
13441345 let da = dm._3
13451346 let cu = dm._4
13461347 let cQ = dm._5
1347- if ((hn > cO))
1348- then throw(((("Failed: " + toString(cO)) + " < ") + toString(hn)))
1349- else if ((ho > cP))
1350- then throw(((("Failed: " + toString(cP)) + " < ") + toString(ho)))
1348+ if ((hp > cO))
1349+ then throw(((("Failed: " + toString(cO)) + " < ") + toString(hp)))
1350+ else if ((hq > cP))
1351+ then throw(((("Failed: " + toString(cP)) + " < ") + toString(hq)))
13511352 else {
13521353 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1353- let hp = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1354- if ((hp == hp))
1354+ let hr = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1355+ if ((hr == hr))
13551356 then {
1356- let hq = eR(-(cO), -(cP), 0)
1357- let gi = hq._1
1358- let eI = hq._2
1357+ let hs = eR(-(cO), -(cP), 0)
1358+ let gi = hs._1
1359+ let eI = hs._2
13591360 let gj = eV(eQ, eI)
13601361 if ((gj == gj))
13611362 then (cQ ++ gi)
13621363 else throw("Strict value is not equal to itself.")
13631364 }
13641365 else throw("Strict value is not equal to itself.")
13651366 }
13661367 }
13671368
13681369
13691370
13701371 @Callable(dX)
13711372 func unstakeAndGet (cq) = {
1372- let hr = if ((size(dX.payments) != 0))
1373+ let ht = if ((size(dX.payments) != 0))
13731374 then throw("No pmnts expd")
13741375 else true
1375- if ((hr == hr))
1376+ if ((ht == ht))
13761377 then {
13771378 let cg = aU()
1378- let hs = bm()
1379+ let hu = bm()
13791380 let gC = fromBase58String(cg[v])
1380- let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1381+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
13811382 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1382- let hu = invoke(ht, "unstake", [toBase58String(gC), cq], nil)
1383- if ((hu == hu))
1383+ let hw = invoke(hv, "unstake", [toBase58String(gC), cq], nil)
1384+ if ((hw == hw))
13841385 then {
13851386 let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
13861387 let cO = dm._1
13871388 let cP = dm._2
13881389 let cC = parseIntValue(dm._9)
13891390 let cQ = dm._10
1390- let hv = if (if (aR())
1391+ let hx = if (if (aR())
13911392 then true
13921393 else (cC == s))
13931394 then throw(("Blocked: " + toString(cC)))
13941395 else true
1395- if ((hv == hv))
1396+ if ((hx == hx))
13961397 then {
1397- let hw = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1398- if ((hw == hw))
1398+ let hy = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1399+ if ((hy == hy))
13991400 then {
1400- let hx = eR(-(cO), -(cP), 0)
1401- let gi = hx._1
1402- let eI = hx._2
1401+ let hz = eR(-(cO), -(cP), 0)
1402+ let gi = hz._1
1403+ let eI = hz._2
14031404 let gj = eV(eQ, eI)
14041405 if ((gj == gj))
14051406 then (cQ ++ gi)
14061407 else throw("Strict value is not equal to itself.")
14071408 }
14081409 else throw("Strict value is not equal to itself.")
14091410 }
14101411 else throw("Strict value is not equal to itself.")
14111412 }
14121413 else throw("Strict value is not equal to itself.")
14131414 }
14141415 else throw("Strict value is not equal to itself.")
14151416 }
14161417
14171418
14181419
14191420 @Callable(dX)
1420-func unstakeAndGetNoLess (hy,hz,ho) = {
1421- let gZ = if (aR())
1421+func unstakeAndGetNoLess (hA,hB,hq) = {
1422+ let hb = if (aR())
14221423 then true
14231424 else (bg == s)
1424- let gO = [if (!(gZ))
1425+ let gO = [if (!(hb))
14251426 then true
14261427 else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14271428 then true
14281429 else throw("no payments are expected")]
14291430 if ((gO == gO))
14301431 then {
14311432 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1432- let hu = invoke(bo, "unstake", [toBase58String(bh), hy], nil)
1433- if ((hu == hu))
1433+ let hw = invoke(bo, "unstake", [toBase58String(bh), hA], nil)
1434+ if ((hw == hw))
14341435 then {
1435- let hA = cs(toBase58String(dX.transactionId), toBase58String(bh), hy, dX.caller)
1436- let cO = hA._1
1437- let cP = hA._2
1438- let cQ = hA._10
1439- let hB = [if ((cO >= hz))
1436+ let hC = cs(toBase58String(dX.transactionId), toBase58String(bh), hA, dX.caller)
1437+ let cO = hC._1
1438+ let cP = hC._2
1439+ let cQ = hC._10
1440+ let hD = [if ((cO >= hB))
14401441 then true
1441- else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cP >= ho))
1442+ else throw(makeString(["amount asset amount to receive is less than ", toString(hB)], "")), if ((cP >= hq))
14421443 then true
1443- else throw(makeString(["price asset amount to receive is less than ", toString(ho)], ""))]
1444- if ((hB == hB))
1444+ else throw(makeString(["price asset amount to receive is less than ", toString(hq)], ""))]
1445+ if ((hD == hD))
14451446 then {
1446- let hp = invoke(aP, "burn", [hy], [AttachedPayment(bh, hy)])
1447- if ((hp == hp))
1447+ let hr = invoke(aP, "burn", [hA], [AttachedPayment(bh, hA)])
1448+ if ((hr == hr))
14481449 then {
1449- let hC = eR(-(cO), -(cP), 0)
1450- let gi = hC._1
1451- let eI = hC._2
1450+ let hE = eR(-(cO), -(cP), 0)
1451+ let gi = hE._1
1452+ let eI = hE._2
14521453 let gj = eV(eQ, eI)
14531454 if ((gj == gj))
14541455 then (cQ ++ gi)
14551456 else throw("Strict value is not equal to itself.")
14561457 }
14571458 else throw("Strict value is not equal to itself.")
14581459 }
14591460 else throw("Strict value is not equal to itself.")
14601461 }
14611462 else throw("Strict value is not equal to itself.")
14621463 }
14631464 else throw("Strict value is not equal to itself.")
14641465 }
14651466
14661467
14671468
14681469 @Callable(dX)
1469-func unstakeAndGetOneTknV2 (hy,fK,fL) = {
1470+func unstakeAndGetOneTknV2 (hA,fK,fL) = {
14701471 let gM = {
14711472 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14721473 if ($isInstanceOf(fT, "Boolean"))
14731474 then fT
14741475 else throw(($getType(fT) + " couldn't be cast to Boolean"))
14751476 }
1476- let gZ = if (if (aR())
1477+ let hb = if (if (aR())
14771478 then true
14781479 else (bg == s))
14791480 then true
14801481 else gM
1481- let gO = [if (if (!(gZ))
1482+ let gO = [if (if (!(hb))
14821483 then true
14831484 else gn(dX))
14841485 then true
14851486 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14861487 then true
14871488 else aM("no payments are expected")]
14881489 if ((gO == gO))
14891490 then {
14901491 let cg = aU()
1491- let hs = bm()
1492+ let hu = bm()
14921493 let gC = fromBase58String(cg[v])
1493- let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1494- let hu = invoke(ht, "unstake", [toBase58String(gC), hy], nil)
1495- if ((hu == hu))
1494+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1495+ let hw = invoke(hv, "unstake", [toBase58String(gC), hA], nil)
1496+ if ((hw == hw))
14961497 then {
1497- let hD = fJ(fK, fL, [AttachedPayment(gC, hy)], dX.caller, dX.originCaller, dX.transactionId)
1498- let cQ = hD._1
1499- let fV = hD._2
1498+ let hF = fJ(fK, fL, [AttachedPayment(gC, hA)], dX.caller, dX.originCaller, dX.transactionId)
1499+ let cQ = hF._1
1500+ let fV = hF._2
15001501 $Tuple2(cQ, fV)
15011502 }
15021503 else throw("Strict value is not equal to itself.")
15031504 }
15041505 else throw("Strict value is not equal to itself.")
15051506 }
15061507
15071508
15081509
15091510 @Callable(dX)
1510-func putOneTknV2WithBonusREADONLY (hE,hF) = {
1511+func putOneTknV2WithBonusREADONLY (hG,hH) = {
15111512 let bc = aU()
15121513 let cy = bc[w]
15131514 let cz = bc[x]
15141515 let cx = bc[v]
1515- let hG = fn(hE, hF, "", "", true)
1516- let fD = hG._1
1517- let cQ = hG._2
1518- let cr = hG._3
1519- let fI = hG._4
1516+ let hI = fn(hG, hH, "", "", true)
1517+ let fD = hI._1
1518+ let cQ = hI._2
1519+ let cr = hI._3
1520+ let fI = hI._4
15201521 $Tuple2(nil, $Tuple3(fD, cr, fI))
15211522 }
15221523
15231524
15241525
15251526 @Callable(dX)
1526-func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
1527+func putOneTknV2WithoutTakeFeeREADONLY (hG,hH) = {
15271528 let bc = aU()
15281529 let cy = bc[w]
15291530 let cz = bc[x]
15301531 let cx = bc[v]
1531- let hH = fn(hE, hF, "", "", false)
1532- let fD = hH._1
1533- let cQ = hH._2
1534- let cr = hH._3
1535- let fI = hH._4
1532+ let hJ = fn(hG, hH, "", "", false)
1533+ let fD = hJ._1
1534+ let cQ = hJ._2
1535+ let cr = hJ._3
1536+ let fI = hJ._4
15361537 $Tuple2(nil, $Tuple3(fD, cr, fI))
15371538 }
15381539
15391540
15401541
15411542 @Callable(dX)
1542-func activate (hI,hJ) = if ((toString(dX.caller) != toString(aP)))
1543+func activate (hK,hL) = if ((toString(dX.caller) != toString(aP)))
15431544 then throw("denied")
1544- else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
1545+ else $Tuple2([StringEntry(ag(), hK), StringEntry(ah(), hL)], "success")
15451546
15461547
15471548
15481549 @Callable(dX)
1549-func setS (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1550+func setS (hM,hx) = if ((toString(dX.caller) != aI(this, aj())))
15501551 then gm
1551- else [StringEntry(hK, hv)]
1552+ else [StringEntry(hM, hx)]
15521553
15531554
15541555
15551556 @Callable(dX)
1556-func setI (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1557+func setI (hM,hx) = if ((toString(dX.caller) != aI(this, aj())))
15571558 then gm
1558- else [IntegerEntry(hK, hv)]
1559+ else [IntegerEntry(hM, hx)]
15591560
15601561
15611562
15621563 @Callable(dX)
15631564 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
15641565
15651566
15661567
15671568 @Callable(dX)
15681569 func getAccBalanceWrapperREADONLY (bI) = $Tuple2(nil, bH(bI))
15691570
15701571
15711572
15721573 @Callable(dX)
15731574 func calcPricesWrapperREADONLY (ca,cb,cf) = {
1574- let hL = ce(ca, cb, cf)
1575- $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
1575+ let hN = ce(ca, cb, cf)
1576+ $Tuple2(nil, [toString(hN[0]), toString(hN[1]), toString(hN[2])])
15761577 }
15771578
15781579
15791580
15801581 @Callable(dX)
1581-func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
1582+func fromX18WrapperREADONLY (L,hO) = $Tuple2(nil, K(parseBigIntValue(L), hO))
15821583
15831584
15841585
15851586 @Callable(dX)
15861587 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15871588
15881589
15891590
15901591 @Callable(dX)
15911592 func calcPriceBigIntWrapperREADONLY (bK,bL) = $Tuple2(nil, toString(bJ(parseBigIntValue(bK), parseBigIntValue(bL))))
15921593
15931594
15941595
15951596 @Callable(dX)
1596-func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hN,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hN, cW, cX, true, false, 0, ""))
1597+func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hP,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hP, cW, cX, true, false, 0, ""))
15971598
15981599
15991600
16001601 @Callable(dX)
1601-func estimateGetOperationWrapperREADONLY (ct,hO,cv,hN) = {
1602- let dm = cs(ct, hO, cv, addressFromStringValue(hN))
1602+func estimateGetOperationWrapperREADONLY (ct,hQ,cv,hP) = {
1603+ let dm = cs(ct, hQ, cv, addressFromStringValue(hP))
16031604 $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
16041605 }
16051606
16061607
16071608
16081609 @Callable(dX)
16091610 func getFeeREADONLY () = $Tuple2(nil, al)
16101611
16111612
1612-@Verifier(hP)
1613-func hQ () = {
1614- let hR = {
1613+@Verifier(hR)
1614+func hS () = {
1615+ let hT = {
16151616 let aG = gk()
16161617 if ($isInstanceOf(aG, "ByteVector"))
16171618 then {
16181619 let go = aG
16191620 go
16201621 }
16211622 else if ($isInstanceOf(aG, "Unit"))
1622- then hP.senderPublicKey
1623+ then hR.senderPublicKey
16231624 else throw("Match error")
16241625 }
1625- let aG = hP
1626+ let aG = hR
16261627 if ($isInstanceOf(aG, "Order"))
16271628 then {
16281629 let eY = aG
1629- let hS = aS()
1630- let hT = eX(eY)
1631- let hU = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1632- let hV = sigVerify(eY.bodyBytes, eY.proofs[1], hS)
1633- if (if (if (hT)
1634- then hU
1630+ let hU = aS()
1631+ let hV = eX(eY)
1632+ let hW = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1633+ let hX = sigVerify(eY.bodyBytes, eY.proofs[1], hU)
1634+ if (if (if (hV)
1635+ then hW
16351636 else false)
1636- then hV
1637+ then hX
16371638 else false)
16381639 then true
1639- else aB(hT, hU, hV)
1640+ else aB(hV, hW, hX)
16401641 }
16411642 else if ($isInstanceOf(aG, "SetScriptTransaction"))
16421643 then {
16431644 let dK = aG
1644- let hW = blake2b256(value(dK.script))
1645- let hX = fromBase64String(value(getString(aP, az())))
1646- let hY = scriptHash(this)
1647- if (if ((hX == hW))
1648- then (hY != hW)
1645+ let hY = blake2b256(value(dK.script))
1646+ let hZ = fromBase64String(value(getString(aP, az())))
1647+ let ia = scriptHash(this)
1648+ if (if ((hZ == hY))
1649+ then (ia != hY)
16491650 else false)
16501651 then true
1651- else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
1652+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
16521653 }
1653- else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
1654+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
16541655 }
16551656

github/deemru/w8io/169f3d6 
230.05 ms