tx · JD8Uf5NgCtxf4VwW7HqZGBFxVrm1Jhc4j3M2P6Zcibht

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03700000 Waves

2022.12.16 11:40 [2362630] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "JD8Uf5NgCtxf4VwW7HqZGBFxVrm1Jhc4j3M2P6Zcibht", "fee": 3700000, "feeAssetId": null, "timestamp": 1671180059631, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "61x9To1nG8TTz9GXq8KKHD7YoG9WYKigG64DW8VpmF2E1VS7RN7NB6dGgxwt8BFFiqwLmoY1rkG98GLxJq73GHh6" ], "script": "base64:BgL/KAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzQwNjc1OTIiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTgxMTIxODQ1NyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAzODUyMDQzMyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgdnZXRET2xkIgFuIgphUHJlY2lzaW9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiA2N1ciINJHQwMjEwNjIyMTA4MiINJHQwMjE1MDMyMTU1MCIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIyMDUwMjIwNzAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjIzNzcyMjQyNCIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0MzYzMjQ1NzUiA2RMcCINJHQwMjQ5MDUyNTAwNSINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI3MzIyMjc3ODQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzc5MDI3OTY2IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI3OTcwMjgyMDkiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMwMjg3MzAzOTgiAUAiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzA1ODgzMDg5NSIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMTY4MDMyMDMwIhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMjAzMzMyMTQxIhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzNjI5MDM2NTI5IhRscEFzc2V0RW1pc3Npb25BZnRlciIFZXJyb3IiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgZjaGVja3MiDSR0MDM4Mjk1Mzg0NTMiB2VzdGltTFAiDSR0MDM5MjY4Mzk2MTciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzOTYyMDM5NzI4IgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQwNzU4NDA4MjMiCW91dEFtdEFtdCINJHQwNDE2Mzc0MTcxOSINaXNHZXREaXNhYmxlZCINJHQwNDIzMzc0MjQ5MiIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDMwMTY0MzA4MCIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiAmR5Igt0b3RhbEdldFJhdyINJHQwNDM5ODA0NDAyOSINJHQwNDQzNzQ0NDQ4OSIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0NTY1NzQ1NzM4Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNDY4MDE0Njg4MiINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNDgxMzA0ODIxMSINJHQwNDkxNDU0OTMzMyIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDQ5NTkyNDk2OTUiDSR0MDQ5OTc0NTAwNzgiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaHsAAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEAAwABaQkAtgIBAAQAAWoJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFrAgVXQVZFUwABbAIDMTAwAAFtAgExAAFuAgJfXwABbwIAAAFwAAEAAXEAAgABcgADAAFzAAQAAXQAAQABdQACAAF2AAMAAXcABAABeAAFAAF5AAYAAXoABwABQQAIAAFCAAkAAUMAAQABRAAGAAFFAAcAAUYACgABRwkAawMACgUBYQCQTgEBSAIBSQFKCQC8AgMJALYCAQUBSQUBYwkAtgIBBQFKAQFLAgFMAU0JAKADAQkAvAIDBQFMCQC2AgEFAU0FAWMBAU4DAUwBTQFPCQCgAwEJAL0CBAUBTAkAtgIBBQFNBQFjBQFPAQFQAwFRAVIBUwkAawMFAVEFAVIFAVMBAVQBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBVQEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFWAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFYAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFZAAIRJXMlc19fcHJpY2VfX2xhc3QBAVoCAmFhAmFiCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUCYWEJAMwIAgkApAMBBQJhYgUDbmlsBQFuAQJhYwICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhZAICX18FAmFlAQJhZgICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhZAICX18FAmFlAQJhZwACDyVzX19hbW91bnRBc3NldAECYWgAAg4lc19fcHJpY2VBc3NldAECYWkAAgclc19fYW1wAQJhagACDSVzX19hZGRvbkFkZHIAAmFrAgclc19fZmVlAAJhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhawUBRwACYW0JALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYW4JALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYW8JALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYXAAAQACYXEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW8FAmFwAQJhcgACESVzX19mYWN0b3J5Q29uZmlnAQJhcwACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXQCAmF1AmF2CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhdQICX18FAmF2AghfX2NvbmZpZwECYXcBAmF4CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF4AQJheQACDCVzX19zaHV0ZG93bgECYXoAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUEAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUIDAmFDAmFEAmFFCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFDAgsgc25kclZhbGlkPQkApQMBBQJhRAIMIG10Y2hyVmFsaWQ9CQClAwEFAmFFAQJhRgEBTAQCYUcFAUwDCQABAgUCYUcCBlN0cmluZwQCYUgFAmFHBQJhSAkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmFJAgJhSgJhSwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFKBQJhSwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSgkAzAgCAgEuCQDMCAIFAmFLCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFMAgJhSgJhSwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFKBQJhSwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSgkAzAgCAgEuCQDMCAIFAmFLCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFNAQJhTgkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYU4FA25pbAIBIAECYU8BAmFOCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFOBQNuaWwCASAAAmFQCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUkCBQR0aGlzCQEBVgAAAmFRCQECYUkCBQR0aGlzCQECYWkAAQJhUgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVAJAQJheQAHAQJhUwAJANkEAQkBAmFJAgUCYVAJAQJhcwAAAmFUCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUkCBQJhUAkBAmFBAAECYVUABAJhVgkBAmFJAgUEdGhpcwkBAmFnAAQCYVcJAQJhSQIFBHRoaXMJAQJhaAAEAmFYCQECYUwCBQJhUAkBAmF3AQUCYVcEAmF1CQECYUwCBQJhUAkBAmF3AQUCYVYJALUJAgkBAmFJAgUCYVAJAQJhdAIJAKQDAQUCYXUJAKQDAQUCYVgFAW4BAmFZAQJhWgMJAAACBQJhWgUBawUEdW5pdAkA2QQBBQJhWgECYmEBAmFaAwkAAAIFAmFaBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmFaAQJiYgECYmMJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiYwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF1CQDZBAEJAJEDAgUCYmMFAXYJAQJhWQEJAJEDAgUCYmMFAXcJAQJhWQEJAJEDAgUCYmMFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6AAJiZAkBAmJiAQkBAmFVAAACYmUFAmJkAAJiZggFAmJlAl8xAAJiZwgFAmJlAl8yAAJiaAgFAmJlAl8zAAJiaQgFAmJlAl80AAJiaggFAmJlAl81AAJiawgFAmJlAl82AAJibAgFAmJlAl83AQJibQAJALUJAgkBAmFJAgUCYVAJAQJhcgAFAW4AAmJuCQECYm0AAAJibwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJicAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJicQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibgUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYnMKAmJ0AmJ1AmJ2AmJ3AmJ4AmJ5AmJ6AmJBAmJCAmJDCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFuAQJiRAYCYkUCYkYCYkcCYncCYnoCYkEJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ6CQDMCAIJAKQDAQUCYkEFA25pbAUBbgECYkgBAmJJAwkAAAIFAmJJAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiSQECYkoCAmJLAmJMCQC8AgMFAmJLBQFjBQJiTAECYk0DAmJOAmJPAmJQBAJiUQkAvAIDCQC4AgIFAmJOBQJiTwUBYgUCYk8EAmJSCQC/AgIJALgCAgUCYlAJAQFUAQUCYlEFAWQDCQEBIQEFAmJSCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJRCQCUCgIFAmJSCQCZAwEJAMwIAgUCYk4JAMwIAgUCYk8FA25pbAECYlMDAmJUAmJVAmJWBAJiUQkAvAIDBQJiVQUBYgUCYlQEAmJXCQC/AgIFAmJWBQJiUQMDBQJiVwYJAL8CAgUCYlUFAmJUCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiVQIBIAkApgMBBQJiVAIBIAkApgMBBQJiUQIBIAkApgMBBQJiVgUCYlcBAmJYBAJiWQJiWgJjYQJjYgQCY2MJAQFIAgUCY2EFAmJZBAJjZAkBAUgCBQJjYgUCYloJAQJiSgIFAmNkBQJjYwECY2UDAmNhAmNiAmNmBAJjZwkBAmFVAAQCY2gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBeQQCY2kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBegQCY2oJAQJiWAQFAmNoBQJjaQUCY2EFAmNiBAJiTAkBAUgCBQJjYQUCY2gEAmJLCQEBSAIFAmNiBQJjaQQCY2sJAQFIAgUCY2YFAWEEAmNsCQECYkoCBQJiTAUCY2sEAmNtCQECYkoCBQJiSwUCY2sJAMwIAgUCY2oJAMwIAgUCY2wJAMwIAgUCY20FA25pbAECY24DAmNhAmNiAmNmBAJjbwkBAmNlAwUCY2EFAmNiBQJjZgkAzAgCCQEBSwIJAJEDAgUCY28AAAUBYQkAzAgCCQEBSwIJAJEDAgUCY28AAQUBYQkAzAgCCQEBSwIJAJEDAgUCY28AAgUBYQUDbmlsAQJjcAECY3EEAmNyCQBrAwUCY3EFAmFsBQFhCQCUCgIJAGUCBQJjcQUCY3IFAmNyAQJjcwQCY3QCY3UCY3YCY3cEAmNnCQECYVUABAJjeAkAkQMCBQJjZwUBdgQCY3kJAJEDAgUCY2cFAXcEAmN6CQCRAwIFAmNnBQF4BAJjQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF5BAJjQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF6BAJjQwkAkQMCBQJjZwUBdQQCY0QICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjeAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJjeAUCY3UJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNFCQECYkgBBQJjeQQCY0YJAQFIAgUCY0UFAmNBBAJjRwkBAmJIAQUCY3oEAmNICQEBSAIFAmNHBQJjQgQCY0kJAQJiSgIFAmNIBQJjRgQCY0oJAQFLAgUCY0kFAWEEAmNLCQEBSAIFAmN2BQFhBAJjTAkBAUgCBQJjRAUBYQQCY00JALwCAwUCY0YFAmNLBQJjTAQCY04JALwCAwUCY0gFAmNLBQJjTAQCY08JAQFOAwUCY00FAmNBBQVGTE9PUgQCY1AJAQFOAwUCY04FAmNCBQVGTE9PUgQCY1EDCQAAAgUCY3QCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN3BQJjTwMJAAACBQJjeQIFV0FWRVMFBHVuaXQJANkEAQUCY3kJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3cFAmNQAwkAAAIFAmN6AgVXQVZFUwUEdW5pdAkA2QQBBQJjegkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN3BQJjdAkBAmJEBgUCY08FAmNQBQJjdgUCY0oFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0oFA25pbAkAnAoKBQJjTwUCY1AFAmN5BQJjegUCY0UFAmNHBQJjRAUCY0kFAmNDBQJjUQECY1INAmN0AmJQAmNTAmNUAmNVAmNWAmN3AmNXAmNYAmNZAmNaAmRhAmRiBAJjZwkBAmFVAAQCY3gJANkEAQkAkQMCBQJjZwUBdgQCZGMJAJEDAgUCY2cFAXcEAmRkCQCRAwIFAmNnBQF4BAJkZQkAkQMCBQJjZwUBQQQCZGYJAJEDAgUCY2cFAUIEAmRnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXkEAmRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXoEAmNDCQCRAwIFAmNnBQF1BAJkaQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjeAIIV3IgbHAgYXMIcXVhbnRpdHkEAmNFAwUCY1cJAQJiSAEFAmRjAwMFAmNZCQAAAgUCZGIFAmRjBwkAZQIJAQJiSAEFAmRjBQJkYQMFAmNZCQECYkgBBQJkYwkAZQIJAQJiSAEFAmRjBQJjUwQCY0cDBQJjVwkBAmJIAQUCZGQDAwUCY1kJAAACBQJkYgUCZGQHCQBlAgkBAmJIAQUCZGQFAmRhAwUCY1kJAQJiSAEFAmRkCQBlAgkBAmJIAQUCZGQFAmNVBAJkagkBAUgCBQJjUwUCZGcEAmRrCQEBSAIFAmNVBQJkaAQCZGwJAQJiSgIFAmRrBQJkagQCY0YJAQFIAgUCY0UFAmRnBAJjSAkBAUgCBQJjRwUCZGgEAmRtAwkAAAIFAmRpAAAEAmNJBQFkBAJkbgUBZAQCY2sJAHYGCQC5AgIFAmRqBQJkawAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUsCBQJjawUBYQkBAUsCBQJkagUCZGcJAQFLAgUCZGsFAmRoCQECYkoCCQC3AgIFAmNIBQJkawkAtwICBQJjRgUCZGoFAmRuBAJjSQkBAmJKAgUCY0gFAmNGBAJkbwkAvAIDCQEBVAEJALgCAgUCY0kFAmRsBQFjBQJjSQQCZG4JAQFIAgUCYlAFAWEDAwMFAmNaCQECIT0CBQJjSQUBZAcJAL8CAgUCZG8FAmRuBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkbwIDID4gCQCmAwEFAmRuBAJkcAkBAUgCBQJkaQUBYQQCZHEJALwCAwUCZGoFAmNJBQFjBAJkcgkAvAIDBQJkawUBYwUCY0kEAmRzAwkAvwICBQJkcQUCZGsJAJQKAgUCZHIFAmRrCQCUCgIFAmRqBQJkcQQCZHQIBQJkcwJfMQQCZHUIBQJkcwJfMgQCY2sJALwCAwUCZHAFAmR1BQJjSAkAlwoFCQEBTgMFAmNrBQFhBQVGTE9PUgkBAU4DBQJkdAUCZGcFB0NFSUxJTkcJAQFOAwUCZHUFAmRoBQdDRUlMSU5HBQJjSQUCZG4EAmR2CAUCZG0CXzEEAmR3CAUCZG0CXzIEAmR4CAUCZG0CXzMEAmNKCQEBSwIIBQJkbQJfNAUBYQQCZHkJAQFLAggFAmRtAl81BQFhAwkAZwIAAAUCZHYJAAIBAgdMUCA8PSAwBAJkegMJAQEhAQUCY1gAAAUCZHYEAmRBCQBlAgUCY1MFAmR3BAJkQgkAZQIFAmNVBQJkeAQCZEMDAwUCY1kJAAACBQJkYgUCZGMHCQCUCgIFAmRhAAADAwUCY1kJAAACBQJkYgUCZGQHCQCUCgIAAAUCZGEJAJQKAgUCZHcFAmR4BAJkRAgFAmRDAl8xBAJkRQgFAmRDAl8yBAJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdwUCY3QJAQJicwoFAmREBQJkRQUCZHoFAmNKBQJiUAUCZHkFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRBBQJkQgUDbmlsCQCfCg0FAmR2BQJkegUCY0oFAmNFBQJjRwUCZGkFAmN4BQJjQwUCZEYFAmRBBQJkQgUCY1QFAmNWAQJkRwECZEgEAmRJCQCRAwIFAmRIAAAEAmRKCQCRAwIFAmRIAAEEAmRLCQC3AgIFAmRJBQJkSgMJAAACBQJkSwUBZQUBZQQCZEwJAQ1wYXJzZUludFZhbHVlAQUCYVEEAmRNCQBoAgUCZEwAAgQCY28JALwCAwUCZEkFAmRKBQFmBAJkTgkAvAIDBQJjbwUBaQUBZgQCZE8JALwCAwkAtgIBBQJkTQUCZEsFAWYEAmRQCQC2AgEJAGUCBQJkTQABCgECZFEBAmRSBAJkUwkAvAIDBQJkUgUCZFIFAWYEAmRUCQC8AgMFAmRTBQJkUgUBZgQCZFUJALwCAwUCZFQFAWYFAmROCQC9AgQJALcCAgUCZE8JALwCAwUCZFUFAWcFAWYFAmRSCQC3AgIJALwCAwUCZFAFAmRSBQFmCQC8AgMFAWgFAmRVBQFmBQdDRUlMSU5HCgECZFYCAmRXAmRYAwgFAmRXAl8yBQJkVwQCZFIIBQJkVwJfMQQCZFkJAQJkUQEFAmRSBAJkWgkAoAMBCQC4AgIFAmRZCQEFdmFsdWUBBQJkUgQCZWEDCQBmAgAABQJkWgkBAS0BBQJkWgUCZFoDCQBnAgABBQJlYQkAlAoCBQJkWQYJAJQKAgUCZFkHBAJlYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlYwoAAmVkBQJlYgoAAmVlCQCQAwEFAmVkCgACZWYJAJQKAgUCZEsHCgECZWcCAmVoAmVpAwkAZwIFAmVpBQJlZQUCZWgJAQJkVgIFAmVoCQCRAwIFAmVkBQJlaQoBAmVqAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlagIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIFAmVmAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRSCAUCZWMCXzEEAmVrCAUCZWMCXzIDBQJlawUCZFIJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFIBAmVsAQJkSAQCZW0FAWcEAmRJCQCRAwIFAmRIAAAEAmRKCQCRAwIFAmRIAAEEAmVuCQCnAwEFAWwEAmRMCQC5AgIJAKcDAQUCYVEFAmVuBAJkSwkAtwICBQJkSQUCZEoDCQAAAgUCZEsFAWUFAWUEAmRNCQC5AgIFAmRMBQJlbQQCZE4JALkCAgkAuQICCQC5AgIFAmRJBQJkSgUCZW0FAmVtBAJlbwkAugICCQC5AgIFAmRNBQJkSwUCZW4EAmVwCQC4AgIFAmRNBQJlbgQCZXEJALcCAgUCZW0FAWYKAQJkVgICZFcCZXIEAmVzBQJkVwQCZFIIBQJlcwJfMQQCZWsIBQJlcwJfMgMJAQIhPQIFAmVrBQR1bml0BQJkVwQCZFUJALoCAgkAuQICCQC5AgIFAmRSBQJkUgUCZFIFAmROBAJkWQkAugICCQC5AgIJALcCAgUCZW8JALkCAgUCZFUFAmVtBQJkUgkAtwICCQC6AgIJALkCAgUCZXAFAmRSBQJlbgkAuQICBQJlcQUCZFUEAmVhCQEBVQEJALgCAgUCZFkJAQV2YWx1ZQEFAmRSAwkAwAICBQFmBQJlYQkAlAoCBQJkWQUCZXIJAJQKAgUCZFkFBHVuaXQEAmViCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmV0CgACZWQFAmViCgACZWUJAJADAQUCZWQKAAJlZgkAlAoCBQJkSwUEdW5pdAoBAmVnAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQECZFYCBQJlaAkAkQMCBQJlZAUCZWkKAQJlagICZWgCZWkDCQBnAgUCZWkFAmVlBQJlaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWoCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCBQJlZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkUggFAmV0Al8xBAJlawgFAmV0Al8yAwkBAiE9AgUCZWsFBHVuaXQFAmRSCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRSAQJldQMCZEgCZFgCZXYEAmVtBQFnBAJldwkAkQMCBQJkSAMJAAACBQJkWAAAAAEAAAQCZW4JAKcDAQUBbAQCZEwJALkCAgkApwMBBQJhUQUCZW4EAmRLBQJldwQCZE0JALkCAgUCZEwFAmVtBAJleAkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV2BQJldgkAuQICBQJldwUCZW0FAmV2BQJlbgkAuQICBQJkTQUCZW0EAmV5CQC4AgIJALcCAgUCZEsJALoCAgkAuQICBQJldgUCZW4FAmRNBQJldgoBAmRWAgJkVwJlcgQCZXoFAmRXBAJlQQgFAmV6Al8xBAJlawgFAmV6Al8yAwkBAiE9AgUCZWsFBHVuaXQFAmRXBAJlQgkAugICCQC3AgIJALkCAgUCZUEFAmVBBQJleAkAtwICCQC5AgIFAWcFAmVBBQJleQQCZUMJAQFVAQkAuAICBQJlQgkBBXZhbHVlAQUCZUEDCQDAAgIFAWYFAmVDCQCUCgIFAmVCBQJlcgkAlAoCBQJlQgUEdW5pdAQCZWIJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUQKAAJlZAUCZWIKAAJlZQkAkAMBBQJlZAoAAmVmCQCUCgIFAmV2BQR1bml0CgECZWcCAmVoAmVpAwkAZwIFAmVpBQJlZQUCZWgJAQJkVgIFAmVoCQCRAwIFAmVkBQJlaQoBAmVqAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlagIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIFAmVmAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVBCAUCZUQCXzEEAmVrCAUCZUQCXzIDCQECIT0CBQJlawUEdW5pdAUCZUEJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUEBAmVFAwJlRgJlRwJlSAQCZUkJALwCAwkBAmRHAQkAzAgCBQJlRgkAzAgCBQJlRwUDbmlsBQFjBQJlSAMJAAACBQJlSAUBZQUBZQUCZUkBAmVKAwJlSwJlTAJlTQQCZU4JALgCAgkAtgIBCQECYkgBCQECYmEBBQJiaQUCZUsEAmVPCQC4AgIJALYCAQkBAmJIAQkBAmJhAQUCYmoFAmVMBAJlUAkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5BQJlTQQCZVEJAQJlRQMFAmVOBQJlTwUCZVAFAmVRAQJlUgMCZVMCZVQCZU0EAmVOCQBkAgkBAmJIAQkBAmJhAQUCYmkFAmVTBAJlTwkAZAIJAQJiSAEJAQJiYQEFAmJqBQJlVAQCZVAJAGQCCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZU0EAmVJCQECZUUDCQC2AgEFAmVOCQC2AgEFAmVPCQC2AgEFAmVQBAJlVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYW4FBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhbQkApgMBBQJlSQUDbmlsCQCUCgIFAmVVBQJlSQECZVYCAmVXAmVJAwkAwAICBQJlSQUCZVcGCQECYU0BAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJlWAECZVkEAmVaCAUCZVkGYW1vdW50BAJmYQkAbgQIBQJlWQZhbW91bnQIBQJlWQVwcmljZQUBYQUFRkxPT1IEAmZiAwkAAAIIBQJlWQlvcmRlclR5cGUFA0J1eQkAlAoCBQJlWgkBAS0BBQJmYQkAlAoCCQEBLQEFAmVaBQJmYQQCZVMIBQJmYgJfMQQCZVQIBQJmYgJfMgMDAwkBAmFSAAYJAAACBQJiZwUBcgYJAAACBQJiZwUBcwkAAgECDUFkbWluIGJsb2NrZWQDAwkBAiE9AggIBQJlWQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJpBgkBAiE9AggIBQJlWQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmoJAAIBAglXciBhc3NldHMEAmZjCQCnAwEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAmFtBAJmZAkBAmVSAwUCZVMFAmVUAAAEAmZlCAUCZmQCXzEEAmZmCAUCZmQCXzIEAmZnCQDAAgIFAmZmBQJmYwUCZmcBAmZoAQJkWAMJAQIhPQIJAJADAQgFAmRYCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJmaQkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAQCY3UJAQV2YWx1ZQEIBQJmaQdhc3NldElkBAJkYQgFAmZpBmFtb3VudAQCZG0JAQJjcwQJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJANgEAQUCY3UFAmRhCAUCZFgGY2FsbGVyBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJjQwkBDXBhcnNlSW50VmFsdWUBCAUCZG0CXzkEAmNRCAUCZG0DXzEwAwMJAQJhUgAGCQAAAgUCY0MFAXMJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJjQwkAlwoFBQJjTwUCY1AFAmRhBQJjdQUCY1EBAmZqCgJmawJhZQJmbAJmbQJiUAJjWAJjWQJjWgJkYQJkYgQCZG0JAQJjUg0FAmFlBQJiUAgJAQV2YWx1ZQEFAmZsBmFtb3VudAgJAQV2YWx1ZQEFAmZsB2Fzc2V0SWQICQEFdmFsdWUBBQJmbQZhbW91bnQICQEFdmFsdWUBBQJmbQdhc3NldElkBQJmawkAAAIFAmFlAgAFAmNYBQJjWQUCY1oFAmRhBQJkYgQCY0MJAQ1wYXJzZUludFZhbHVlAQgFAmRtAl84AwMDCQECYVIABgkAAAIFAmNDBQFxBgkAAAIFAmNDBQFzCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJjQwUCZG0BAmZuBQJmbwJjdQJjdwJhZQJmcAQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmRnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAmVQCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjeAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZnEDCQC/AgIFAmVQBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZnEFAmZxBAJjRQkBAmJIAQUCY3kEAmNHCQECYkgBBQJjegQCZnIDCQAAAgUCYWUCAAkAlAoCBQJjRQUCY0cDCQAAAgUCY3UFAmN5AwkAZgIFAmZvBQJjRQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmNFBQJmbwUCY0cDCQAAAgUCY3UFAmN6AwkAZgIFAmZvBQJjRwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY0UJAGUCBQJjRwUCZm8JAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmcwgFAmZyAl8xBAJmdAgFAmZyAl8yBAJmdQMJAAACBQJjdQUCY3kJAJQKAgUCZm8AAAMJAAACBQJjdQUCY3oJAJQKAgAABQJmbwkAAgECD2ludmFsaWQgcGF5bWVudAQCZnYIBQJmdQJfMQQCZncIBQJmdQJfMgQCZngDBQJmcAkAlQoDCAkBAmNwAQUCZnYCXzEICQECY3ABBQJmdwJfMQgJAQJjcAEFAmZvAl8yCQCVCgMFAmZ2BQJmdwAABAJmeQgFAmZ4Al8xBAJmeggFAmZ4Al8yBAJjcggFAmZ4Al8zBAJmQQkAZAIFAmZzBQJmeQQCZkIJAGQCBQJmdAUCZnoEAmJVCQECZEcBCQDMCAIJALYCAQUCZnMJAMwIAgkAtgIBBQJmdAUDbmlsBAJiVAkBAmRHAQkAzAgCCQC2AgEFAmZBCQDMCAIJALYCAQUCZkIFA25pbAQCZkMDCQC/AgIFAmJUBQJiVQYJAQV0aHJvdwADCQAAAgUCZkMFAmZDBAJmRAkAvQIEBQJlUAkAuAICBQJiVAUCYlUFAmJVBQVGTE9PUgQCY0oJAQFLAgkBAmJKAgkBAUgCBQJmQgUCZGgJAQFIAgUCZkEFAmRnBQFhBAJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdwUCYWUJAQJicwoFAmZ2BQJmdwkAoAMBBQJmRAUCY0oAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRQkAawMFAmZ0BQFhBQJmcwQCZkYJAGsDBQJmbwUBYQkAZAIFAmZFBQFhBAJmRwkAZQIFAmZvBQJmRgQCZkgJALwCAwUCZVAJALYCAQUCZkcJALYCAQUCZnQEAmZJCQCgAwEJALwCAwkAuAICBQJmRAUCZkgFAWIFAmZICQCWCgQJAKADAQUCZkQFAmRGBQJjcgUCZkkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZKBgJmSwJmTAJmTQJmawJmTgJmTwQCYmMJAQJhVQAEAmN4CQCRAwIFAmJjBQF2BAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmZQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmZRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAmZSCQCRAwIFAmJjBQF1BAJjdwMJAAACBQJmawUCYnIFAmZOBQJmawQCZmkJAQV2YWx1ZQEJAJEDAgUCZk0AAAQCY3UJAQV2YWx1ZQEIBQJmaQdhc3NldElkBAJkYQgFAmZpBmFtb3VudAQCZVEJAQJlSgMFAWUFAWUJALYCAQUCZGEDCQAAAgUCZVEFAmVRBAJjdAkA2AQBBQJmTwMJAQIhPQIFAmN4CQDYBAEFAmN1CQACAQIIV3JvbmcgTFAEAmNFCQECYkgBBQJjeQQCY0cJAQJiSAEFAmN6BAJmUwoAAmZUCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZksJAMwIAgUCZGEFA25pbAUDbmlsAwkAAQIFAmZUAgooSW50LCBJbnQpBQJmVAkAAgEJAKwCAgkAAwEFAmZUAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmZTBQJmUwQCY3IIBQJmUwJfMgQCZlUIBQJmUwJfMQQCZlYDAwkAZgIFAmZMAAAJAGYCBQJmTAUCZlUHCQECYU0BCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZMBQNuaWwCAAUCZlUEAmZXAwkAAAIFAmZLBQJjeQkAlgoEBQJmVgAACQBlAgkAZQIFAmNFBQJmVgUCY3IFAmNHAwkAAAIFAmZLBQJjegkAlgoEAAAFAmZWBQJjRQkAZQIJAGUCBQJjRwUCZlYFAmNyCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmZYCAUCZlcCXzEEAmZZCAUCZlcCXzIEAmZBCAUCZlcCXzMEAmZCCAUCZlcCXzQEAmZaCQECYkoCCQEBSAIFAmZCBQJmUQkBAUgCBQJmQQUCZlAEAmdhCQEBSwIFAmZaBQFhBAJnYgMJAAACBQJmSwIFV0FWRVMFBHVuaXQJANkEAQUCZksEAmdjAwkAZgIFAmNyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVQFAmNyBQJnYgUDbmlsBQNuaWwEAmNRCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3cFAmZWBQJnYgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN3BQJjdAkBAmJEBgUCZlgFAmZZBQJkYQUCZ2EFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCZ2EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ2EFA25pbAUCZ2MDCQAAAgUCY1EFAmNRBAJnZAkA/AcEBQJhUAIEYnVybgkAzAgCBQJkYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdQUCZGEFA25pbAMJAAACBQJnZAUCZ2QEAmdlBAJnZgMJAAACBQR0aGlzBQJhVAAABQJjcgQCZ2cDCQAAAgkBAmFZAQUCZksFAmJpBgcDBQJnZwkAlAoCCQEBLQEJAGQCBQJmVQUCZ2YAAAkAlAoCAAAJAQEtAQkAZAIFAmZVBQJnZgQCZVMIBQJnZQJfMQQCZVQIBQJnZQJfMgQCZ2gJAQJlUgMFAmVTBQJlVAAABAJnaQgFAmdoAl8xBAJlSQgFAmdoAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAlAoCCQDOCAIFAmNRBQJnaQUCZlYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdrAAQCYUcJAKIIAQkBAVcAAwkAAQIFAmFHAgZTdHJpbmcEAmRLBQJhRwkA2QQBBQJkSwMJAAECBQJhRwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnbAAEAmFHCQCiCAEJAQFYAAMJAAECBQJhRwIGU3RyaW5nBAJkSwUCYUcJANkEAQUCZEsDCQABAgUCYUcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZ20JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZ24BAmRYBAJhRwkBAmdrAAMJAAECBQJhRwIKQnl0ZVZlY3RvcgQCZ28FAmFHCQAAAggFAmRYD2NhbGxlclB1YmxpY0tleQUCZ28DCQABAgUCYUcCBFVuaXQJAAACCAUCZFgGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdwAQJkWAQCYUcJAQJnawADCQABAgUCYUcCCkJ5dGVWZWN0b3IEAmdvBQJhRwMJAAACCAUCZFgPY2FsbGVyUHVibGljS2V5BQJnbwYFAmdtAwkAAQIFAmFHAgRVbml0AwkAAAIIBQJkWAZjYWxsZXIFBHRoaXMGBQJnbQkAAgECC01hdGNoIGVycm9yHQJkWAELY29uc3RydWN0b3IBAVYEAmV4CQECZ3ABBQJkWAMJAAACBQJleAUCZXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQFWBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBCnNldE1hbmFnZXIBAmdxBAJleAkBAmdwAQUCZFgDCQAAAgUCZXgFAmV4BAJncgkA2QQBBQJncQMJAAACBQJncgUCZ3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgABQJncQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQ5jb25maXJtTWFuYWdlcgAEAmNvCQECZ2wABAJncwMJAQlpc0RlZmluZWQBBQJjbwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3MFAmdzBAJndAMJAAACCAUCZFgPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjbwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3QFAmd0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAAkA2AQBCQEFdmFsdWUBBQJjbwkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEDcHV0AgJndQJndgQCZ3cJAQJibQAEAmd4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndwUBQwIKV3Igc3QgYWRkcgQCZ3kJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd3BQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ3UJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRYCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmd6CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABmFtb3VudAQCZ0EJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAEGYW1vdW50BAJlTgkAuAICCQC2AgEJAQJiSAEJAQJiYQEFAmJpBQJnegMJAAACBQJlTgUCZU4EAmVPCQC4AgIJALYCAQkBAmJIAQkBAmJhAQUCYmoFAmdBAwkAAAIFAmVPBQJlTwQCZVAJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkDCQAAAgUCZVAFAmVQBAJlUQkBAmVKAwUCZ3oFAmdBCQC2AgEAAAMJAAACBQJlUQUCZVEEAmdCCQECZmoKCQClCAEIBQJkWAZjYWxsZXIJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRYCHBheW1lbnRzAAEFAmd1BgcGAAACAAQCZHoIBQJnQgJfMgQCZ0MIBQJnQgJfNwQCY1EIBQJnQgJfOQQCZEEIBQJnQgNfMTAEAmRCCAUCZ0IDXzExBAJjeQgFAmdCA18xMgQCY3oIBQJnQgNfMTMEAmRtCQD8BwQFAmFQAgRlbWl0CQDMCAIFAmR6BQNuaWwFA25pbAMJAAACBQJkbQUCZG0EAmdEBAJhRwUCZG0DCQABAgUCYUcCB0FkZHJlc3MEAmdFBQJhRwkA/AcEBQJnRQIEZW1pdAkAzAgCBQJkegUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0QFAmdEBAJnRgMJAGYCBQJkQQAACQD8BwQFAmd5AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3kFAmRBBQNuaWwFA25pbAMJAAACBQJnRgUCZ0YEAmdHAwkAZgIFAmRCAAAJAPwHBAUCZ3kCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjegUCZEIFA25pbAUDbmlsAwkAAAIFAmdHBQJnRwQCZ0gDBQJndgQCZ0kJAPwHBAUCZ3gCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdDBQJkegUDbmlsAwkAAAIFAmdJBQJnSQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkWAZjYWxsZXIFAmR6BQJnQwUDbmlsBAJnSgkBAmVSAwAAAAAAAAQCZ2kIBQJnSgJfMQQCZUkIBQJnSgJfMgQCZ0sICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5AwkAAAIFAmdLBQJnSwQCZ0wJAQJhTQEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZU4JAMwIAgkApgMBBQJlTwkAzAgCCQCmAwEFAmVQCQDMCAIJAKYDAQUCZVEJAMwIAgkApgMBBQJlSQkAzAgCCQCkAwEFAmR6CQDMCAIJAKQDAQUCZEEJAMwIAgkApAMBBQJkQgkAzAgCCQCmAwEFAmVQCQDMCAIJAKQDAQUCZ0sFA25pbAIBIAMJAAACBQJnTAUCZ0wJAM4IAgkAzggCBQJjUQUCZ0gFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQtwdXRPbmVUa25WMgICZkwCZ3YEAmdNCgACZlQJAPwHBAUCYVACKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmVAIHQm9vbGVhbgUCZlQJAAIBCQCsAgIJAAMBBQJmVAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ04DAwMJAQJhUgAGCQAAAgUCYmcFAXEGCQAAAgUCYmcFAXMGBQJnTQQCZ08JAMwIAgMDCQEBIQEFAmdOBgkBAmduAQUCZFgGCQECYU0BAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWAhwYXltZW50cwABBgkBAmFNAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJiYwkBAmFVAAQCY3kJAJEDAgUCYmMFAXcEAmN6CQCRAwIFAmJjBQF4BAJjeAkA2QQBCQCRAwIFAmJjBQF2BAJmUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF5BAJmUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6BAJjdwMJAAACCAUCZFgGY2FsbGVyBQR0aGlzCAUCZFgMb3JpZ2luQ2FsbGVyCAUCZFgGY2FsbGVyBAJmaQkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAQCY3UJANgEAQkBBXZhbHVlAQgFAmZpB2Fzc2V0SWQEAmRhCAUCZmkGYW1vdW50BAJlUQMJAAACCAUCZmkHYXNzZXRJZAUCYmkJAQJlSgMJALYCAQUCZGEJALYCAQAACQC2AgEAAAkBAmVKAwkAtgIBAAAJALYCAQUCZGEJALYCAQAAAwkAAAIFAmVRBQJlUQQCZ1AJAQJmbgUFAmRhBQJjdQkApQgBBQJjdwkA2AQBCAUCZFgNdHJhbnNhY3Rpb25JZAYDCQAAAgUCZ1AFAmdQBAJjcggFAmdQAl8zBAJjUQgFAmdQAl8yBAJnUQgFAmdQAl8xBAJkegMDCQBmAgUCZkwAAAkAZgIFAmZMBQJnUQcJAQJhTQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZkwFA25pbAIABQJnUQQCZ0IJAPwHBAUCYVACBGVtaXQJAMwIAgUCZHoFA25pbAUDbmlsAwkAAAIFAmdCBQJnQgQCZ0QEAmFHBQJnQgMJAAECBQJhRwIHQWRkcmVzcwQCZ0UFAmFHCQD8BwQFAmdFAgRlbWl0CQDMCAIFAmR6BQNuaWwFA25pbAUEdW5pdAMJAAACBQJnRAUCZ0QEAmdIAwUCZ3YEAmdJCQD8BwQFAmJvAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjeAUCZHoFA25pbAMJAAACBQJnSQUCZ0kFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFgGY2FsbGVyBQJkegUCY3gFA25pbAQCZ2MDCQBmAgUCY3IAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVAUCY3IJANkEAQUCY3UFA25pbAUDbmlsBAJnUgMJAAACBQR0aGlzBQJhVAkAlAoCAAAAAAQCZ1MDCQAAAggFAmZpB2Fzc2V0SWQFAmJpBgcDBQJnUwkAlAoCCQEBLQEFAmNyAAAJAJQKAgAACQEBLQEFAmNyBAJlUwgFAmdSAl8xBAJlVAgFAmdSAl8yBAJnVAkBAmVSAwUCZVMFAmVUAAAEAmdpCAUCZ1QCXzEEAmVJCAUCZ1QCXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNRBQJnSAUCZ2MFAmdpBQJkegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEKcHV0Rm9yRnJlZQECZ1UDCQBmAgAABQJnVQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkWAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnVgkBAmZqCgkApQgBCAUCZFgGY2FsbGVyCQDYBAEIBQJkWA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkWAhwYXltZW50cwABBQJnVQcHBgAAAgAEAmNRCAUCZ1YCXzkEAmd6CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABmFtb3VudAQCZ0EJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAEGYW1vdW50BAJlUQkBAmVKAwUCZ3oFAmdBCQC2AgEAAAMJAAACBQJlUQUCZVEEAmdXCQECZVIDAAAAAAAABAJnaQgFAmdXAl8xBAJlSQgFAmdXAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAzggCBQJjUQUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBA2dldAAEAmVRCQECZUoDCQC2AgEAAAkAtgIBAAAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAGYW1vdW50AwkAAAIFAmVRBQJlUQQCZG0JAQJmaAEFAmRYBAJnWAgFAmRtAl8xBAJjUAgFAmRtAl8yBAJkYQgFAmRtAl8zBAJjdQgFAmRtAl80BAJjUQgFAmRtAl81BAJleQkA/AcEBQJhUAIEYnVybgkAzAgCBQJkYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdQUCZGEFA25pbAMJAAACBQJleQUCZXkEAmdZCQECZVIDCQEBLQEFAmdYCQEBLQEFAmNQAAAEAmdpCAUCZ1kCXzEEAmVJCAUCZ1kCXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQDOCAIFAmNRBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAELZ2V0T25lVGtuVjICAmZLAmZMBAJnTQoAAmZUCQD8BwQFAmFQAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlQCB0Jvb2xlYW4FAmZUCQACAQkArAICCQADAQUCZlQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdaAwMJAQJhUgAGCQAAAgUCYmcFAXMGBQJnTQQCZ08JAMwIAgMDCQEBIQEFAmdaBgkBAmduAQUCZFgGCQECYU0BAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWAhwYXltZW50cwABBgkBAmFNAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJoYQkBAmZKBgUCZksFAmZMCAUCZFgIcGF5bWVudHMIBQJkWAZjYWxsZXIIBQJkWAxvcmlnaW5DYWxsZXIIBQJkWA10cmFuc2FjdGlvbklkBAJjUQgFAmhhAl8xBAJmVggFAmhhAl8yCQCUCgIFAmNRBQJmVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEKcmVmcmVzaERMcAAEAmhiCQELdmFsdWVPckVsc2UCCQCfCAEFAmFuAAAEAmhjAwkAZwIJAGUCBQZoZWlnaHQFAmhiBQJhcQUEdW5pdAkBAmFNAQkAuQkCCQDMCAIJAKQDAQUCYXEJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhjBQJoYwQCZmMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFtAgEwCQECYU8BAgtpbnZhbGlkIGRMcAQCaGQJAQJlUgMAAAAAAAAEAmhlCAUCaGQCXzEEAmVJCAUCaGQCXzIEAmVVAwkBAiE9AgUCZmMFAmVJBQJoZQkBAmFNAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVVCQCmAwEFAmVJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYARNnZXRPbmVUa25WMlJFQURPTkxZAgJmSwJoZgQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmRICQDMCAIJALYCAQkBAmJIAQUCY3kJAMwIAgkAtgIBCQECYkgBBQJjegUDbmlsBAJlSAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3gCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJVCQECZEcBBQJkSAQCYlQJALgCAgUCYlUJALwCAwkAtgIBBQJoZgUCYlUFAmVIBAJoZwMJAAACBQJmSwUCY3kAAAMJAAACBQJmSwUCY3oAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJoaAkBAmV1AwUCZEgFAmhnBQJiVAQCaGkJALgCAgkAkQMCBQJkSAUCaGcFAmhoBAJoagkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCaGkFAWYFA25pbAQCaGsJAQJjcAEFAmhqBAJmVQgFAmhrAl8xBAJjcggFAmhrAl8yCQCUCgIFA25pbAkAlAoCBQJmVQUCY3ICZFgBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZLAmhmBAJiYwkBAmFVAAQCY3kJAJEDAgUCYmMFAXcEAmN6CQCRAwIFAmJjBQF4BAJjeAkAkQMCBQJiYwUBdgQCY0UJAQJiSAEFAmN5BAJjRwkBAmJIAQUCY3oEAmhsCgACZlQJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmSwkAzAgCBQJoZgUDbmlsBQNuaWwDCQABAgUCZlQCCihJbnQsIEludCkFAmZUCQACAQkArAICCQADAQUCZlQCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZVCAUCaGwCXzEEAmNyCAUCaGwCXzIEAmRtCQECY3MEAgAFAmN4BQJoZgUEdGhpcwQCY08IBQJkbQJfMQQCY1AIBQJkbQJfMgQCaG0JAGQCBQJjTwUCY1AEAmZJAwkAAAIFAmhtAAADCQAAAgUCZlUAAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUCZlUFAmhtBQFhBQJobQkAlAoCBQNuaWwJAJUKAwUCZlUFAmNyBQJmSQJkWAEJZ2V0Tm9MZXNzAgJobgJobwQCZG0JAQJmaAEFAmRYBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJkYQgFAmRtAl8zBAJjdQgFAmRtAl80BAJjUQgFAmRtAl81AwkAZgIFAmhuBQJjTwkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjTwIDIDwgCQCkAwEFAmhuAwkAZgIFAmhvBQJjUAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNQAgMgPCAJAKQDAQUCaG8EAmVRCQECZUoDCQC2AgEAAAkAtgIBAAAJALYCAQUCZGEEAmhwCQD8BwQFAmFQAgRidXJuCQDMCAIFAmRhBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN1BQJkYQUDbmlsAwkAAAIFAmhwBQJocAQCaHEJAQJlUgMJAQEtAQUCY08JAQEtAQUCY1AAAAQCZ2kIBQJocQJfMQQCZUkIBQJocQJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAM4IAgUCY1EFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQ11bnN0YWtlQW5kR2V0AQJjcQQCaHIDCQECIT0CCQCQAwEIBQJkWAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaHIFAmhyBAJjZwkBAmFVAAQCaHMJAQJibQAEAmdDCQDZBAEJAJEDAgUCY2cFAXYEAmh0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJocwUBQwIKV3Igc3QgYWRkcgQCZVEJAQJlSgMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmh1CQD8BwQFAmh0Agd1bnN0YWtlCQDMCAIJANgEAQUCZ0MJAMwIAgUCY3EFA25pbAUDbmlsAwkAAAIFAmh1BQJodQQCZG0JAQJjcwQJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJANgEAQUCZ0MFAmNxCAUCZFgGY2FsbGVyBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJjQwkBDXBhcnNlSW50VmFsdWUBCAUCZG0CXzkEAmNRCAUCZG0DXzEwBAJodgMDCQECYVIABgkAAAIFAmNDBQFzCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY0MGAwkAAAIFAmh2BQJodgQCaHcJAPwHBAUCYVACBGJ1cm4JAMwIAgUCY3EFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0MFAmNxBQNuaWwDCQAAAgUCaHcFAmh3BAJoeAkBAmVSAwkBAS0BBQJjTwkBAS0BBQJjUAAABAJnaQgFAmh4Al8xBAJlSQgFAmh4Al8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAzggCBQJjUQUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh5Amh6AmhvBAJnWgMJAQJhUgAGCQAAAgUCYmcFAXMEAmdPCQDMCAIDCQEBIQEFAmdaBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRYCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJlUQkBAmVKAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCaHUJAPwHBAUCYm8CB3Vuc3Rha2UJAMwIAgkA2AQBBQJiaAkAzAgCBQJoeQUDbmlsBQNuaWwDCQAAAgUCaHUFAmh1BAJoQQkBAmNzBAkA2AQBCAUCZFgNdHJhbnNhY3Rpb25JZAkA2AQBBQJiaAUCaHkIBQJkWAZjYWxsZXIEAmNPCAUCaEECXzEEAmNQCAUCaEECXzIEAmNRCAUCaEEDXzEwBAJoQgkAzAgCAwkAZwIFAmNPBQJoegYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoegUDbmlsAgAJAMwIAgMJAGcCBQJjUAUCaG8GCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJobwUDbmlsAgAFA25pbAMJAAACBQJoQgUCaEIEAmhwCQD8BwQFAmFQAgRidXJuCQDMCAIFAmh5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJoeQUDbmlsAwkAAAIFAmhwBQJocAQCaEMJAQJlUgMJAQEtAQUCY08JAQEtAQUCY1AAAAQCZ2kIBQJoQwJfMQQCZUkIBQJoQwJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAM4IAgUCY1EFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmh5AmZLAmZMBAJnTQoAAmZUCQD8BwQFAmFQAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlQCB0Jvb2xlYW4FAmZUCQACAQkArAICCQADAQUCZlQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdaAwMJAQJhUgAGCQAAAgUCYmcFAXMGBQJnTQQCZ08JAMwIAgMDCQEBIQEFAmdaBgkBAmduAQUCZFgGCQECYU0BAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWAhwYXltZW50cwAABgkBAmFNAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJjZwkBAmFVAAQCaHMJAQJibQAEAmdDCQDZBAEJAJEDAgUCY2cFAXYEAmh0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJocwUBQwIKV3Igc3QgYWRkcgQCaHUJAPwHBAUCaHQCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnQwkAzAgCBQJoeQUDbmlsBQNuaWwDCQAAAgUCaHUFAmh1BAJoRAkBAmZKBgUCZksFAmZMCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQwUCaHkFA25pbAgFAmRYBmNhbGxlcggFAmRYDG9yaWdpbkNhbGxlcggFAmRYDXRyYW5zYWN0aW9uSWQEAmNRCAUCaEQCXzEEAmZWCAUCaEQCXzIJAJQKAgUCY1EFAmZWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJoRQJoRgQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmhHCQECZm4FBQJoRQUCaEYCAAIABgQCZkQIBQJoRwJfMQQCY1EIBQJoRwJfMgQCY3IIBQJoRwJfMwQCZkkIBQJoRwJfNAkAlAoCBQNuaWwJAJUKAwUCZkQFAmNyBQJmSQJkWAEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJoRQJoRgQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmhICQECZm4FBQJoRQUCaEYCAAIABwQCZkQIBQJoSAJfMQQCY1EIBQJoSAJfMgQCY3IIBQJoSAJfMwQCZkkIBQJoSAJfNAkAlAoCBQNuaWwJAJUKAwUCZkQFAmNyBQJmSQJkWAEIYWN0aXZhdGUCAmhJAmhKAwkBAiE9AgkApQgBCAUCZFgGY2FsbGVyCQClCAEFAmFQCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAAUCaEkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFoAAUCaEoFA25pbAIHc3VjY2VzcwJkWAEEc2V0UwICaEsCaHYDCQECIT0CCQClCAEIBQJkWAZjYWxsZXIJAQJhSQIFBHRoaXMJAQJhagAFAmdtCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmhLBQJodgUDbmlsAmRYAQRzZXRJAgJoSwJodgMJAQIhPQIJAKUIAQgFAmRYBmNhbGxlcgkBAmFJAgUEdGhpcwkBAmFqAAUCZ20JAMwIAgkBDEludGVnZXJFbnRyeQIFAmhLBQJodgUDbmlsAmRYARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhVQACZFgBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJJCQCUCgIFA25pbAkBAmJIAQUCYkkCZFgBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmNhAmNiAmNmBAJoTAkBAmNlAwUCY2EFAmNiBQJjZgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmhMAAAJAMwIAgkApgMBCQCRAwIFAmhMAAEJAMwIAgkApgMBCQCRAwIFAmhMAAIFA25pbAJkWAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBTAJoTQkAlAoCBQNuaWwJAQFLAgkApwMBBQFMBQJoTQJkWAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAKYDAQkBAUgCBQFJBQFKAmRYAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJLAmJMCQCUCgIFA25pbAkApgMBCQECYkoCCQCnAwEFAmJLCQCnAwEFAmJMAmRYASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY3QCYlACY1MCY1QCY1UCY1YCaE4CY1cCY1gJAJQKAgUDbmlsCQECY1INBQJjdAUCYlAFAmNTBQJjVAUCY1UFAmNWBQJoTgUCY1cFAmNYBgcAAAIAAmRYASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY3QCaE8CY3YCaE4EAmRtCQECY3MEBQJjdAUCaE8FAmN2CQERQGV4dHJOYXRpdmUoMTA2MikBBQJoTgkAlAoCBQNuaWwJAJwKCggFAmRtAl8xCAUCZG0CXzIIBQJkbQJfMwgFAmRtAl80CAUCZG0CXzUIBQJkbQJfNggFAmRtAl83CQCmAwEIBQJkbQJfOAgFAmRtAl85CAUCZG0DXzEwAmRYAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhbAECaFABAmhRAAQCaFIEAmFHCQECZ2sAAwkAAQIFAmFHAgpCeXRlVmVjdG9yBAJnbwUCYUcFAmdvAwkAAQIFAmFHAgRVbml0CAUCaFAPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFHBQJoUAMJAAECBQJhRwIFT3JkZXIEAmVZBQJhRwQCaFMJAQJhUwAEAmhUCQECZVgBBQJlWQQCaFUJAPQDAwgFAmVZCWJvZHlCeXRlcwkAkQMCCAUCZVkGcHJvb2ZzAAAIBQJlWQ9zZW5kZXJQdWJsaWNLZXkEAmhWCQD0AwMIBQJlWQlib2R5Qnl0ZXMJAJEDAggFAmVZBnByb29mcwABBQJoUwMDAwUCaFQFAmhVBwUCaFYHBgkBAmFCAwUCaFQFAmhVBQJoVgMJAAECBQJhRwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRLBQJhRwQCaFcJAPYDAQkBBXZhbHVlAQgFAmRLBnNjcmlwdAQCaFgJANsEAQkBBXZhbHVlAQkAnQgCBQJhUAkBAmF6AAQCaFkJAPEHAQUEdGhpcwMDCQAAAgUCaFgFAmhXCQECIT0CBQJoWQUCaFcHBgkA9AMDCAUCaFAJYm9keUJ5dGVzCQCRAwIIBQJoUAZwcm9vZnMAAAUCaFIJAPQDAwgFAmhQCWJvZHlCeXRlcwkAkQMCCAUCaFAGcHJvb2ZzAAAFAmhSMAMULg==", "chainId": 84, "height": 2362630, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H2TWnCioPkGbiEH5A5CRkDs42iPCS86sw4T96ZdbY3Kr Next: 9MPr2oUqcQzra19X979j66nAt9tkigNqSzj3wyDjnUVP Diff:
OldNewDifferences
974974 else {
975975 let gz = toBigInt(value(dX.payments[0]).amount)
976976 let gA = toBigInt(value(dX.payments[1]).amount)
977- let eQ = eJ(gz, gA, toBigInt(0))
978- if ((eQ == eQ))
977+ let eN = (toBigInt(bH(ba(bi))) - gz)
978+ if ((eN == eN))
979979 then {
980- 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, "")
981- let dz = gB._2
982- let gC = gB._7
983- let cQ = gB._9
984- let dA = gB._10
985- let dB = gB._11
986- let cy = gB._12
987- let cz = gB._13
988- let dm = invoke(aP, "emit", [dz], nil)
989- if ((dm == dm))
980+ let eO = (toBigInt(bH(ba(bj))) - gA)
981+ if ((eO == eO))
990982 then {
991- let gD = {
992- let aG = dm
993- if ($isInstanceOf(aG, "Address"))
994- then {
995- let gE = aG
996- invoke(gE, "emit", [dz], nil)
997- }
998- else unit
999- }
1000- if ((gD == gD))
983+ let eP = toBigInt(value(assetInfo(bh)).quantity)
984+ if ((eP == eP))
1001985 then {
1002- let gF = if ((dA > 0))
1003- then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
1004- else nil
1005- if ((gF == gF))
986+ let eQ = eJ(gz, gA, toBigInt(0))
987+ if ((eQ == eQ))
1006988 then {
1007- let gG = if ((dB > 0))
1008- then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1009- else nil
1010- if ((gG == gG))
989+ 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, "")
990+ let dz = gB._2
991+ let gC = gB._7
992+ let cQ = gB._9
993+ let dA = gB._10
994+ let dB = gB._11
995+ let cy = gB._12
996+ let cz = gB._13
997+ let dm = invoke(aP, "emit", [dz], nil)
998+ if ((dm == dm))
1011999 then {
1012- let gH = if (gv)
1000+ let gD = {
1001+ let aG = dm
1002+ if ($isInstanceOf(aG, "Address"))
1003+ then {
1004+ let gE = aG
1005+ invoke(gE, "emit", [dz], nil)
1006+ }
1007+ else unit
1008+ }
1009+ if ((gD == gD))
10131010 then {
1014- let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1015- if ((gI == gI))
1016- then nil
1011+ let gF = if ((dA > 0))
1012+ then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
1013+ else nil
1014+ if ((gF == gF))
1015+ then {
1016+ let gG = if ((dB > 0))
1017+ then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1018+ else nil
1019+ if ((gG == gG))
1020+ then {
1021+ let gH = if (gv)
1022+ then {
1023+ let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1024+ if ((gI == gI))
1025+ then nil
1026+ else throw("Strict value is not equal to itself.")
1027+ }
1028+ else [ScriptTransfer(dX.caller, dz, gC)]
1029+ let gJ = eR(0, 0, 0)
1030+ let gi = gJ._1
1031+ let eI = gJ._2
1032+ let gK = value(assetInfo(bh)).quantity
1033+ if ((gK == gK))
1034+ then {
1035+ let gL = 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)], " "))
1036+ if ((gL == gL))
1037+ then ((cQ ++ gH) ++ gi)
1038+ else throw("Strict value is not equal to itself.")
1039+ }
1040+ else throw("Strict value is not equal to itself.")
1041+ }
1042+ else throw("Strict value is not equal to itself.")
1043+ }
10171044 else throw("Strict value is not equal to itself.")
10181045 }
1019- else [ScriptTransfer(dX.caller, dz, gC)]
1020- let gJ = eR(0, 0, 0)
1021- let gi = gJ._1
1022- let eI = gJ._2
1023- let gj = eV(eQ, eI)
1024- if ((gj == gj))
1025- then ((cQ ++ gH) ++ gi)
10261046 else throw("Strict value is not equal to itself.")
10271047 }
10281048 else throw("Strict value is not equal to itself.")
10411061
10421062 @Callable(dX)
10431063 func putOneTknV2 (fL,gv) = {
1044- let gK = {
1064+ let gM = {
10451065 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10461066 if ($isInstanceOf(fT, "Boolean"))
10471067 then fT
10481068 else throw(($getType(fT) + " couldn't be cast to Boolean"))
10491069 }
1050- let gL = if (if (if (aR())
1070+ let gN = if (if (if (aR())
10511071 then true
10521072 else (bg == q))
10531073 then true
10541074 else (bg == s))
10551075 then true
1056- else gK
1057- let gM = [if (if (!(gL))
1076+ else gM
1077+ let gO = [if (if (!(gN))
10581078 then true
10591079 else gn(dX))
10601080 then true
10611081 else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
10621082 then true
10631083 else aM("exactly 1 payment are expected")]
1064- if ((gM == gM))
1084+ if ((gO == gO))
10651085 then {
10661086 let bc = aU()
10671087 let cy = bc[w]
10801100 else eJ(toBigInt(0), toBigInt(da), toBigInt(0))
10811101 if ((eQ == eQ))
10821102 then {
1083- let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1084- if ((gN == gN))
1103+ let gP = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1104+ if ((gP == gP))
10851105 then {
1086- let cr = gN._3
1087- let cQ = gN._2
1088- let gO = gN._1
1106+ let cr = gP._3
1107+ let cQ = gP._2
1108+ let gQ = gP._1
10891109 let dz = if (if ((fL > 0))
1090- then (fL > gO)
1110+ then (fL > gQ)
10911111 else false)
10921112 then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1093- else gO
1113+ else gQ
10941114 let gB = invoke(aP, "emit", [dz], nil)
10951115 if ((gB == gB))
10961116 then {
11161136 let gc = if ((cr > 0))
11171137 then [ScriptTransfer(aT, cr, fromBase58String(cu))]
11181138 else nil
1119- let gP = if ((this == aT))
1139+ let gR = if ((this == aT))
11201140 then $Tuple2(0, 0)
11211141 else {
1122- let gQ = if ((fi.assetId == bi))
1142+ let gS = if ((fi.assetId == bi))
11231143 then true
11241144 else false
1125- if (gQ)
1145+ if (gS)
11261146 then $Tuple2(-(cr), 0)
11271147 else $Tuple2(0, -(cr))
11281148 }
1129- let eS = gP._1
1130- let eT = gP._2
1131- let gR = eR(eS, eT, 0)
1132- let gi = gR._1
1133- let eI = gR._2
1149+ let eS = gR._1
1150+ let eT = gR._2
1151+ let gT = eR(eS, eT, 0)
1152+ let gi = gT._1
1153+ let eI = gT._2
11341154 let gj = eV(eQ, eI)
11351155 if ((gj == gj))
11361156 then $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
11501170
11511171
11521172 @Callable(dX)
1153-func putForFree (gS) = if ((0 > gS))
1173+func putForFree (gU) = if ((0 > gU))
11541174 then throw("Wrong slpg")
11551175 else if ((size(dX.payments) != 2))
11561176 then throw("2 pmnts expd")
11571177 else {
1158- let gT = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gS, false, false, true, 0, "")
1159- let cQ = gT._9
1178+ 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, "")
1179+ let cQ = gV._9
11601180 let gz = toBigInt(value(dX.payments[0]).amount)
11611181 let gA = toBigInt(value(dX.payments[1]).amount)
11621182 let eQ = eJ(gz, gA, toBigInt(0))
11631183 if ((eQ == eQ))
11641184 then {
1165- let gU = eR(0, 0, 0)
1166- let gi = gU._1
1167- let eI = gU._2
1185+ let gW = eR(0, 0, 0)
1186+ let gi = gW._1
1187+ let eI = gW._2
11681188 let gj = eV(eQ, eI)
11691189 if ((gj == gj))
11701190 then (cQ ++ gi)
11811201 if ((eQ == eQ))
11821202 then {
11831203 let dm = fh(dX)
1184- let gV = dm._1
1204+ let gX = dm._1
11851205 let cP = dm._2
11861206 let da = dm._3
11871207 let cu = dm._4
11891209 let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
11901210 if ((ey == ey))
11911211 then {
1192- let gW = eR(-(gV), -(cP), 0)
1193- let gi = gW._1
1194- let eI = gW._2
1212+ let gY = eR(-(gX), -(cP), 0)
1213+ let gi = gY._1
1214+ let eI = gY._2
11951215 let gj = eV(eQ, eI)
11961216 if ((gj == gj))
11971217 then (cQ ++ gi)
12061226
12071227 @Callable(dX)
12081228 func getOneTknV2 (fK,fL) = {
1209- let gK = {
1229+ let gM = {
12101230 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12111231 if ($isInstanceOf(fT, "Boolean"))
12121232 then fT
12131233 else throw(($getType(fT) + " couldn't be cast to Boolean"))
12141234 }
1215- let gX = if (if (aR())
1235+ let gZ = if (if (aR())
12161236 then true
12171237 else (bg == s))
12181238 then true
1219- else gK
1220- let gM = [if (if (!(gX))
1239+ else gM
1240+ let gO = [if (if (!(gZ))
12211241 then true
12221242 else gn(dX))
12231243 then true
12241244 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
12251245 then true
12261246 else aM("exactly 1 payment are expected")]
1227- if ((gM == gM))
1247+ if ((gO == gO))
12281248 then {
1229- let gY = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1230- let cQ = gY._1
1231- let fV = gY._2
1249+ let ha = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1250+ let cQ = ha._1
1251+ let fV = ha._2
12321252 $Tuple2(cQ, fV)
12331253 }
12341254 else throw("Strict value is not equal to itself.")
12381258
12391259 @Callable(dX)
12401260 func refreshDLp () = {
1241- let gZ = valueOrElse(getInteger(an), 0)
1242- let ha = if (((height - gZ) >= aq))
1261+ let hb = valueOrElse(getInteger(an), 0)
1262+ let hc = if (((height - hb) >= aq))
12431263 then unit
12441264 else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1245- if ((ha == ha))
1265+ if ((hc == hc))
12461266 then {
12471267 let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1248- let hb = eR(0, 0, 0)
1249- let hc = hb._1
1250- let eI = hb._2
1268+ let hd = eR(0, 0, 0)
1269+ let he = hd._1
1270+ let eI = hd._2
12511271 let eU = if ((fc != eI))
1252- then hc
1272+ then he
12531273 else aM("nothing to refresh")
12541274 $Tuple2(eU, toString(eI))
12551275 }
12591279
12601280
12611281 @Callable(dX)
1262-func getOneTknV2READONLY (fK,hd) = {
1282+func getOneTknV2READONLY (fK,hf) = {
12631283 let bc = aU()
12641284 let cy = bc[w]
12651285 let cz = bc[x]
12671287 let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
12681288 let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
12691289 let bU = dG(dH)
1270- let bT = (bU - fraction(toBigInt(hd), bU, eH))
1271- let he = if ((fK == cy))
1290+ let bT = (bU - fraction(toBigInt(hf), bU, eH))
1291+ let hg = if ((fK == cy))
12721292 then 0
12731293 else if ((fK == cz))
12741294 then 1
12751295 else throw("invalid out asset id")
1276- let hf = eu(dH, he, bT)
1277- let hg = (dH[he] - hf)
1278- let hh = max([0, toInt((hg - f))])
1279- let hi = cp(hh)
1280- let fU = hi._1
1281- let cr = hi._2
1296+ let hh = eu(dH, hg, bT)
1297+ let hi = (dH[hg] - hh)
1298+ let hj = max([0, toInt((hi - f))])
1299+ let hk = cp(hj)
1300+ let fU = hk._1
1301+ let cr = hk._2
12821302 $Tuple2(nil, $Tuple2(fU, cr))
12831303 }
12841304
12851305
12861306
12871307 @Callable(dX)
1288-func getOneTknV2WithBonusREADONLY (fK,hd) = {
1308+func getOneTknV2WithBonusREADONLY (fK,hf) = {
12891309 let bc = aU()
12901310 let cy = bc[w]
12911311 let cz = bc[x]
12921312 let cx = bc[v]
12931313 let cE = bH(cy)
12941314 let cG = bH(cz)
1295- let hj = {
1296- let fT = invoke(this, "getOneTknV2READONLY", [fK, hd], nil)
1315+ let hl = {
1316+ let fT = invoke(this, "getOneTknV2READONLY", [fK, hf], nil)
12971317 if ($isInstanceOf(fT, "(Int, Int)"))
12981318 then fT
12991319 else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
13001320 }
1301- let fU = hj._1
1302- let cr = hj._2
1303- let dm = cs("", cx, hd, this)
1321+ let fU = hl._1
1322+ let cr = hl._2
1323+ let dm = cs("", cx, hf, this)
13041324 let cO = dm._1
13051325 let cP = dm._2
1306- let hk = (cO + cP)
1307- let fI = if ((hk == 0))
1326+ let hm = (cO + cP)
1327+ let fI = if ((hm == 0))
13081328 then if ((fU == 0))
13091329 then 0
13101330 else throw("bonus calculation error")
1311- else fraction((fU - hk), a, hk)
1331+ else fraction((fU - hm), a, hm)
13121332 $Tuple2(nil, $Tuple3(fU, cr, fI))
13131333 }
13141334
13151335
13161336
13171337 @Callable(dX)
1318-func getNoLess (hl,hm) = {
1338+func getNoLess (hn,ho) = {
13191339 let dm = fh(dX)
13201340 let cO = dm._1
13211341 let cP = dm._2
13221342 let da = dm._3
13231343 let cu = dm._4
13241344 let cQ = dm._5
1325- if ((hl > cO))
1326- then throw(((("Failed: " + toString(cO)) + " < ") + toString(hl)))
1327- else if ((hm > cP))
1328- then throw(((("Failed: " + toString(cP)) + " < ") + toString(hm)))
1345+ if ((hn > cO))
1346+ then throw(((("Failed: " + toString(cO)) + " < ") + toString(hn)))
1347+ else if ((ho > cP))
1348+ then throw(((("Failed: " + toString(cP)) + " < ") + toString(ho)))
13291349 else {
13301350 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1331- let hn = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1332- if ((hn == hn))
1351+ let hp = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1352+ if ((hp == hp))
13331353 then {
1334- let ho = eR(-(cO), -(cP), 0)
1335- let gi = ho._1
1336- let eI = ho._2
1354+ let hq = eR(-(cO), -(cP), 0)
1355+ let gi = hq._1
1356+ let eI = hq._2
13371357 let gj = eV(eQ, eI)
13381358 if ((gj == gj))
13391359 then (cQ ++ gi)
13471367
13481368 @Callable(dX)
13491369 func unstakeAndGet (cq) = {
1350- let hp = if ((size(dX.payments) != 0))
1370+ let hr = if ((size(dX.payments) != 0))
13511371 then throw("No pmnts expd")
13521372 else true
1353- if ((hp == hp))
1373+ if ((hr == hr))
13541374 then {
13551375 let cg = aU()
1356- let hq = bm()
1376+ let hs = bm()
13571377 let gC = fromBase58String(cg[v])
1358- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1378+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
13591379 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1360- let hs = invoke(hr, "unstake", [toBase58String(gC), cq], nil)
1361- if ((hs == hs))
1380+ let hu = invoke(ht, "unstake", [toBase58String(gC), cq], nil)
1381+ if ((hu == hu))
13621382 then {
13631383 let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
13641384 let cO = dm._1
13651385 let cP = dm._2
13661386 let cC = parseIntValue(dm._9)
13671387 let cQ = dm._10
1368- let ht = if (if (aR())
1388+ let hv = if (if (aR())
13691389 then true
13701390 else (cC == s))
13711391 then throw(("Blocked: " + toString(cC)))
13721392 else true
1373- if ((ht == ht))
1393+ if ((hv == hv))
13741394 then {
1375- let hu = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1376- if ((hu == hu))
1395+ let hw = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1396+ if ((hw == hw))
13771397 then {
1378- let hv = eR(-(cO), -(cP), 0)
1379- let gi = hv._1
1380- let eI = hv._2
1398+ let hx = eR(-(cO), -(cP), 0)
1399+ let gi = hx._1
1400+ let eI = hx._2
13811401 let gj = eV(eQ, eI)
13821402 if ((gj == gj))
13831403 then (cQ ++ gi)
13951415
13961416
13971417 @Callable(dX)
1398-func unstakeAndGetNoLess (hw,hx,hm) = {
1399- let gX = if (aR())
1418+func unstakeAndGetNoLess (hy,hz,ho) = {
1419+ let gZ = if (aR())
14001420 then true
14011421 else (bg == s)
1402- let gM = [if (!(gX))
1422+ let gO = [if (!(gZ))
14031423 then true
14041424 else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14051425 then true
14061426 else throw("no payments are expected")]
1407- if ((gM == gM))
1427+ if ((gO == gO))
14081428 then {
14091429 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1410- let hs = invoke(bo, "unstake", [toBase58String(bh), hw], nil)
1411- if ((hs == hs))
1430+ let hu = invoke(bo, "unstake", [toBase58String(bh), hy], nil)
1431+ if ((hu == hu))
14121432 then {
1413- let hy = cs(toBase58String(dX.transactionId), toBase58String(bh), hw, dX.caller)
1414- let cO = hy._1
1415- let cP = hy._2
1416- let cQ = hy._10
1417- let hz = [if ((cO >= hx))
1433+ let hA = cs(toBase58String(dX.transactionId), toBase58String(bh), hy, dX.caller)
1434+ let cO = hA._1
1435+ let cP = hA._2
1436+ let cQ = hA._10
1437+ let hB = [if ((cO >= hz))
14181438 then true
1419- else throw(makeString(["amount asset amount to receive is less than ", toString(hx)], "")), if ((cP >= hm))
1439+ else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cP >= ho))
14201440 then true
1421- else throw(makeString(["price asset amount to receive is less than ", toString(hm)], ""))]
1422- if ((hz == hz))
1441+ else throw(makeString(["price asset amount to receive is less than ", toString(ho)], ""))]
1442+ if ((hB == hB))
14231443 then {
1424- let hn = invoke(aP, "burn", [hw], [AttachedPayment(bh, hw)])
1425- if ((hn == hn))
1444+ let hp = invoke(aP, "burn", [hy], [AttachedPayment(bh, hy)])
1445+ if ((hp == hp))
14261446 then {
1427- let hA = eR(-(cO), -(cP), 0)
1428- let gi = hA._1
1429- let eI = hA._2
1447+ let hC = eR(-(cO), -(cP), 0)
1448+ let gi = hC._1
1449+ let eI = hC._2
14301450 let gj = eV(eQ, eI)
14311451 if ((gj == gj))
14321452 then (cQ ++ gi)
14441464
14451465
14461466 @Callable(dX)
1447-func unstakeAndGetOneTknV2 (hw,fK,fL) = {
1448- let gK = {
1467+func unstakeAndGetOneTknV2 (hy,fK,fL) = {
1468+ let gM = {
14491469 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14501470 if ($isInstanceOf(fT, "Boolean"))
14511471 then fT
14521472 else throw(($getType(fT) + " couldn't be cast to Boolean"))
14531473 }
1454- let gX = if (if (aR())
1474+ let gZ = if (if (aR())
14551475 then true
14561476 else (bg == s))
14571477 then true
1458- else gK
1459- let gM = [if (if (!(gX))
1478+ else gM
1479+ let gO = [if (if (!(gZ))
14601480 then true
14611481 else gn(dX))
14621482 then true
14631483 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14641484 then true
14651485 else aM("no payments are expected")]
1466- if ((gM == gM))
1486+ if ((gO == gO))
14671487 then {
14681488 let cg = aU()
1469- let hq = bm()
1489+ let hs = bm()
14701490 let gC = fromBase58String(cg[v])
1471- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1472- let hs = invoke(hr, "unstake", [toBase58String(gC), hw], nil)
1473- if ((hs == hs))
1491+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1492+ let hu = invoke(ht, "unstake", [toBase58String(gC), hy], nil)
1493+ if ((hu == hu))
14741494 then {
1475- let hB = fJ(fK, fL, [AttachedPayment(gC, hw)], dX.caller, dX.originCaller, dX.transactionId)
1476- let cQ = hB._1
1477- let fV = hB._2
1495+ let hD = fJ(fK, fL, [AttachedPayment(gC, hy)], dX.caller, dX.originCaller, dX.transactionId)
1496+ let cQ = hD._1
1497+ let fV = hD._2
14781498 $Tuple2(cQ, fV)
14791499 }
14801500 else throw("Strict value is not equal to itself.")
14851505
14861506
14871507 @Callable(dX)
1488-func putOneTknV2WithBonusREADONLY (hC,hD) = {
1508+func putOneTknV2WithBonusREADONLY (hE,hF) = {
14891509 let bc = aU()
14901510 let cy = bc[w]
14911511 let cz = bc[x]
14921512 let cx = bc[v]
1493- let hE = fn(hC, hD, "", "", true)
1494- let fD = hE._1
1495- let cQ = hE._2
1496- let cr = hE._3
1497- let fI = hE._4
1513+ let hG = fn(hE, hF, "", "", true)
1514+ let fD = hG._1
1515+ let cQ = hG._2
1516+ let cr = hG._3
1517+ let fI = hG._4
14981518 $Tuple2(nil, $Tuple3(fD, cr, fI))
14991519 }
15001520
15011521
15021522
15031523 @Callable(dX)
1504-func putOneTknV2WithoutTakeFeeREADONLY (hC,hD) = {
1524+func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
15051525 let bc = aU()
15061526 let cy = bc[w]
15071527 let cz = bc[x]
15081528 let cx = bc[v]
1509- let hF = fn(hC, hD, "", "", false)
1510- let fD = hF._1
1511- let cQ = hF._2
1512- let cr = hF._3
1513- let fI = hF._4
1529+ let hH = fn(hE, hF, "", "", false)
1530+ let fD = hH._1
1531+ let cQ = hH._2
1532+ let cr = hH._3
1533+ let fI = hH._4
15141534 $Tuple2(nil, $Tuple3(fD, cr, fI))
15151535 }
15161536
15171537
15181538
15191539 @Callable(dX)
1520-func activate (hG,hH) = if ((toString(dX.caller) != toString(aP)))
1540+func activate (hI,hJ) = if ((toString(dX.caller) != toString(aP)))
15211541 then throw("denied")
1522- else $Tuple2([StringEntry(ag(), hG), StringEntry(ah(), hH)], "success")
1542+ else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
15231543
15241544
15251545
15261546 @Callable(dX)
1527-func setS (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1547+func setS (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
15281548 then gm
1529- else [StringEntry(hI, ht)]
1549+ else [StringEntry(hK, hv)]
15301550
15311551
15321552
15331553 @Callable(dX)
1534-func setI (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1554+func setI (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
15351555 then gm
1536- else [IntegerEntry(hI, ht)]
1556+ else [IntegerEntry(hK, hv)]
15371557
15381558
15391559
15491569
15501570 @Callable(dX)
15511571 func calcPricesWrapperREADONLY (ca,cb,cf) = {
1552- let hJ = ce(ca, cb, cf)
1553- $Tuple2(nil, [toString(hJ[0]), toString(hJ[1]), toString(hJ[2])])
1572+ let hL = ce(ca, cb, cf)
1573+ $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
15541574 }
15551575
15561576
15571577
15581578 @Callable(dX)
1559-func fromX18WrapperREADONLY (L,hK) = $Tuple2(nil, K(parseBigIntValue(L), hK))
1579+func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
15601580
15611581
15621582
15711591
15721592
15731593 @Callable(dX)
1574-func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hL,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hL, cW, cX, true, false, 0, ""))
1594+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, ""))
15751595
15761596
15771597
15781598 @Callable(dX)
1579-func estimateGetOperationWrapperREADONLY (ct,hM,cv,hL) = {
1580- let dm = cs(ct, hM, cv, addressFromStringValue(hL))
1599+func estimateGetOperationWrapperREADONLY (ct,hO,cv,hN) = {
1600+ let dm = cs(ct, hO, cv, addressFromStringValue(hN))
15811601 $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
15821602 }
15831603
15871607 func getFeeREADONLY () = $Tuple2(nil, al)
15881608
15891609
1590-@Verifier(hN)
1591-func hO () = {
1592- let hP = {
1610+@Verifier(hP)
1611+func hQ () = {
1612+ let hR = {
15931613 let aG = gk()
15941614 if ($isInstanceOf(aG, "ByteVector"))
15951615 then {
15971617 go
15981618 }
15991619 else if ($isInstanceOf(aG, "Unit"))
1600- then hN.senderPublicKey
1620+ then hP.senderPublicKey
16011621 else throw("Match error")
16021622 }
1603- let aG = hN
1623+ let aG = hP
16041624 if ($isInstanceOf(aG, "Order"))
16051625 then {
16061626 let eY = aG
1607- let hQ = aS()
1608- let hR = eX(eY)
1609- let hS = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1610- let hT = sigVerify(eY.bodyBytes, eY.proofs[1], hQ)
1611- if (if (if (hR)
1612- then hS
1627+ let hS = aS()
1628+ let hT = eX(eY)
1629+ let hU = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1630+ let hV = sigVerify(eY.bodyBytes, eY.proofs[1], hS)
1631+ if (if (if (hT)
1632+ then hU
16131633 else false)
1614- then hT
1634+ then hV
16151635 else false)
16161636 then true
1617- else aB(hR, hS, hT)
1637+ else aB(hT, hU, hV)
16181638 }
16191639 else if ($isInstanceOf(aG, "SetScriptTransaction"))
16201640 then {
16211641 let dK = aG
1622- let hU = blake2b256(value(dK.script))
1623- let hV = fromBase64String(value(getString(aP, az())))
1624- let hW = scriptHash(this)
1625- if (if ((hV == hU))
1626- then (hW != hU)
1642+ let hW = blake2b256(value(dK.script))
1643+ let hX = fromBase64String(value(getString(aP, az())))
1644+ let hY = scriptHash(this)
1645+ if (if ((hX == hW))
1646+ then (hY != hW)
16271647 else false)
16281648 then true
1629- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1649+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16301650 }
1631- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1651+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16321652 }
16331653
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, toBigInt(da))
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)
977- let eQ = eJ(gz, gA, toBigInt(0))
978- if ((eQ == eQ))
977+ let eN = (toBigInt(bH(ba(bi))) - gz)
978+ if ((eN == eN))
979979 then {
980- 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, "")
981- let dz = gB._2
982- let gC = gB._7
983- let cQ = gB._9
984- let dA = gB._10
985- let dB = gB._11
986- let cy = gB._12
987- let cz = gB._13
988- let dm = invoke(aP, "emit", [dz], nil)
989- if ((dm == dm))
980+ let eO = (toBigInt(bH(ba(bj))) - gA)
981+ if ((eO == eO))
990982 then {
991- let gD = {
992- let aG = dm
993- if ($isInstanceOf(aG, "Address"))
994- then {
995- let gE = aG
996- invoke(gE, "emit", [dz], nil)
997- }
998- else unit
999- }
1000- if ((gD == gD))
983+ let eP = toBigInt(value(assetInfo(bh)).quantity)
984+ if ((eP == eP))
1001985 then {
1002- let gF = if ((dA > 0))
1003- then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
1004- else nil
1005- if ((gF == gF))
986+ let eQ = eJ(gz, gA, toBigInt(0))
987+ if ((eQ == eQ))
1006988 then {
1007- let gG = if ((dB > 0))
1008- then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1009- else nil
1010- if ((gG == gG))
989+ 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, "")
990+ let dz = gB._2
991+ let gC = gB._7
992+ let cQ = gB._9
993+ let dA = gB._10
994+ let dB = gB._11
995+ let cy = gB._12
996+ let cz = gB._13
997+ let dm = invoke(aP, "emit", [dz], nil)
998+ if ((dm == dm))
1011999 then {
1012- let gH = if (gv)
1000+ let gD = {
1001+ let aG = dm
1002+ if ($isInstanceOf(aG, "Address"))
1003+ then {
1004+ let gE = aG
1005+ invoke(gE, "emit", [dz], nil)
1006+ }
1007+ else unit
1008+ }
1009+ if ((gD == gD))
10131010 then {
1014- let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1015- if ((gI == gI))
1016- then nil
1011+ let gF = if ((dA > 0))
1012+ then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
1013+ else nil
1014+ if ((gF == gF))
1015+ then {
1016+ let gG = if ((dB > 0))
1017+ then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1018+ else nil
1019+ if ((gG == gG))
1020+ then {
1021+ let gH = if (gv)
1022+ then {
1023+ let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1024+ if ((gI == gI))
1025+ then nil
1026+ else throw("Strict value is not equal to itself.")
1027+ }
1028+ else [ScriptTransfer(dX.caller, dz, gC)]
1029+ let gJ = eR(0, 0, 0)
1030+ let gi = gJ._1
1031+ let eI = gJ._2
1032+ let gK = value(assetInfo(bh)).quantity
1033+ if ((gK == gK))
1034+ then {
1035+ let gL = 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)], " "))
1036+ if ((gL == gL))
1037+ then ((cQ ++ gH) ++ gi)
1038+ else throw("Strict value is not equal to itself.")
1039+ }
1040+ else throw("Strict value is not equal to itself.")
1041+ }
1042+ else throw("Strict value is not equal to itself.")
1043+ }
10171044 else throw("Strict value is not equal to itself.")
10181045 }
1019- else [ScriptTransfer(dX.caller, dz, gC)]
1020- let gJ = eR(0, 0, 0)
1021- let gi = gJ._1
1022- let eI = gJ._2
1023- let gj = eV(eQ, eI)
1024- if ((gj == gj))
1025- then ((cQ ++ gH) ++ gi)
10261046 else throw("Strict value is not equal to itself.")
10271047 }
10281048 else throw("Strict value is not equal to itself.")
10291049 }
10301050 else throw("Strict value is not equal to itself.")
10311051 }
10321052 else throw("Strict value is not equal to itself.")
10331053 }
10341054 else throw("Strict value is not equal to itself.")
10351055 }
10361056 else throw("Strict value is not equal to itself.")
10371057 }
10381058 }
10391059
10401060
10411061
10421062 @Callable(dX)
10431063 func putOneTknV2 (fL,gv) = {
1044- let gK = {
1064+ let gM = {
10451065 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10461066 if ($isInstanceOf(fT, "Boolean"))
10471067 then fT
10481068 else throw(($getType(fT) + " couldn't be cast to Boolean"))
10491069 }
1050- let gL = if (if (if (aR())
1070+ let gN = if (if (if (aR())
10511071 then true
10521072 else (bg == q))
10531073 then true
10541074 else (bg == s))
10551075 then true
1056- else gK
1057- let gM = [if (if (!(gL))
1076+ else gM
1077+ let gO = [if (if (!(gN))
10581078 then true
10591079 else gn(dX))
10601080 then true
10611081 else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
10621082 then true
10631083 else aM("exactly 1 payment are expected")]
1064- if ((gM == gM))
1084+ if ((gO == gO))
10651085 then {
10661086 let bc = aU()
10671087 let cy = bc[w]
10681088 let cz = bc[x]
10691089 let cx = fromBase58String(bc[v])
10701090 let fP = parseIntValue(bc[y])
10711091 let fQ = parseIntValue(bc[z])
10721092 let cw = if ((dX.caller == this))
10731093 then dX.originCaller
10741094 else dX.caller
10751095 let fi = value(dX.payments[0])
10761096 let cu = toBase58String(value(fi.assetId))
10771097 let da = fi.amount
10781098 let eQ = if ((fi.assetId == bi))
10791099 then eJ(toBigInt(da), toBigInt(0), toBigInt(0))
10801100 else eJ(toBigInt(0), toBigInt(da), toBigInt(0))
10811101 if ((eQ == eQ))
10821102 then {
1083- let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1084- if ((gN == gN))
1103+ let gP = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1104+ if ((gP == gP))
10851105 then {
1086- let cr = gN._3
1087- let cQ = gN._2
1088- let gO = gN._1
1106+ let cr = gP._3
1107+ let cQ = gP._2
1108+ let gQ = gP._1
10891109 let dz = if (if ((fL > 0))
1090- then (fL > gO)
1110+ then (fL > gQ)
10911111 else false)
10921112 then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1093- else gO
1113+ else gQ
10941114 let gB = invoke(aP, "emit", [dz], nil)
10951115 if ((gB == gB))
10961116 then {
10971117 let gD = {
10981118 let aG = gB
10991119 if ($isInstanceOf(aG, "Address"))
11001120 then {
11011121 let gE = aG
11021122 invoke(gE, "emit", [dz], nil)
11031123 }
11041124 else unit
11051125 }
11061126 if ((gD == gD))
11071127 then {
11081128 let gH = if (gv)
11091129 then {
11101130 let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
11111131 if ((gI == gI))
11121132 then nil
11131133 else throw("Strict value is not equal to itself.")
11141134 }
11151135 else [ScriptTransfer(dX.caller, dz, cx)]
11161136 let gc = if ((cr > 0))
11171137 then [ScriptTransfer(aT, cr, fromBase58String(cu))]
11181138 else nil
1119- let gP = if ((this == aT))
1139+ let gR = if ((this == aT))
11201140 then $Tuple2(0, 0)
11211141 else {
1122- let gQ = if ((fi.assetId == bi))
1142+ let gS = if ((fi.assetId == bi))
11231143 then true
11241144 else false
1125- if (gQ)
1145+ if (gS)
11261146 then $Tuple2(-(cr), 0)
11271147 else $Tuple2(0, -(cr))
11281148 }
1129- let eS = gP._1
1130- let eT = gP._2
1131- let gR = eR(eS, eT, 0)
1132- let gi = gR._1
1133- let eI = gR._2
1149+ let eS = gR._1
1150+ let eT = gR._2
1151+ let gT = eR(eS, eT, 0)
1152+ let gi = gT._1
1153+ let eI = gT._2
11341154 let gj = eV(eQ, eI)
11351155 if ((gj == gj))
11361156 then $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
11371157 else throw("Strict value is not equal to itself.")
11381158 }
11391159 else throw("Strict value is not equal to itself.")
11401160 }
11411161 else throw("Strict value is not equal to itself.")
11421162 }
11431163 else throw("Strict value is not equal to itself.")
11441164 }
11451165 else throw("Strict value is not equal to itself.")
11461166 }
11471167 else throw("Strict value is not equal to itself.")
11481168 }
11491169
11501170
11511171
11521172 @Callable(dX)
1153-func putForFree (gS) = if ((0 > gS))
1173+func putForFree (gU) = if ((0 > gU))
11541174 then throw("Wrong slpg")
11551175 else if ((size(dX.payments) != 2))
11561176 then throw("2 pmnts expd")
11571177 else {
1158- let gT = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gS, false, false, true, 0, "")
1159- let cQ = gT._9
1178+ 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, "")
1179+ let cQ = gV._9
11601180 let gz = toBigInt(value(dX.payments[0]).amount)
11611181 let gA = toBigInt(value(dX.payments[1]).amount)
11621182 let eQ = eJ(gz, gA, toBigInt(0))
11631183 if ((eQ == eQ))
11641184 then {
1165- let gU = eR(0, 0, 0)
1166- let gi = gU._1
1167- let eI = gU._2
1185+ let gW = eR(0, 0, 0)
1186+ let gi = gW._1
1187+ let eI = gW._2
11681188 let gj = eV(eQ, eI)
11691189 if ((gj == gj))
11701190 then (cQ ++ gi)
11711191 else throw("Strict value is not equal to itself.")
11721192 }
11731193 else throw("Strict value is not equal to itself.")
11741194 }
11751195
11761196
11771197
11781198 @Callable(dX)
11791199 func get () = {
11801200 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(value(dX.payments[0]).amount))
11811201 if ((eQ == eQ))
11821202 then {
11831203 let dm = fh(dX)
1184- let gV = dm._1
1204+ let gX = dm._1
11851205 let cP = dm._2
11861206 let da = dm._3
11871207 let cu = dm._4
11881208 let cQ = dm._5
11891209 let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
11901210 if ((ey == ey))
11911211 then {
1192- let gW = eR(-(gV), -(cP), 0)
1193- let gi = gW._1
1194- let eI = gW._2
1212+ let gY = eR(-(gX), -(cP), 0)
1213+ let gi = gY._1
1214+ let eI = gY._2
11951215 let gj = eV(eQ, eI)
11961216 if ((gj == gj))
11971217 then (cQ ++ gi)
11981218 else throw("Strict value is not equal to itself.")
11991219 }
12001220 else throw("Strict value is not equal to itself.")
12011221 }
12021222 else throw("Strict value is not equal to itself.")
12031223 }
12041224
12051225
12061226
12071227 @Callable(dX)
12081228 func getOneTknV2 (fK,fL) = {
1209- let gK = {
1229+ let gM = {
12101230 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12111231 if ($isInstanceOf(fT, "Boolean"))
12121232 then fT
12131233 else throw(($getType(fT) + " couldn't be cast to Boolean"))
12141234 }
1215- let gX = if (if (aR())
1235+ let gZ = if (if (aR())
12161236 then true
12171237 else (bg == s))
12181238 then true
1219- else gK
1220- let gM = [if (if (!(gX))
1239+ else gM
1240+ let gO = [if (if (!(gZ))
12211241 then true
12221242 else gn(dX))
12231243 then true
12241244 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
12251245 then true
12261246 else aM("exactly 1 payment are expected")]
1227- if ((gM == gM))
1247+ if ((gO == gO))
12281248 then {
1229- let gY = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1230- let cQ = gY._1
1231- let fV = gY._2
1249+ let ha = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1250+ let cQ = ha._1
1251+ let fV = ha._2
12321252 $Tuple2(cQ, fV)
12331253 }
12341254 else throw("Strict value is not equal to itself.")
12351255 }
12361256
12371257
12381258
12391259 @Callable(dX)
12401260 func refreshDLp () = {
1241- let gZ = valueOrElse(getInteger(an), 0)
1242- let ha = if (((height - gZ) >= aq))
1261+ let hb = valueOrElse(getInteger(an), 0)
1262+ let hc = if (((height - hb) >= aq))
12431263 then unit
12441264 else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1245- if ((ha == ha))
1265+ if ((hc == hc))
12461266 then {
12471267 let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1248- let hb = eR(0, 0, 0)
1249- let hc = hb._1
1250- let eI = hb._2
1268+ let hd = eR(0, 0, 0)
1269+ let he = hd._1
1270+ let eI = hd._2
12511271 let eU = if ((fc != eI))
1252- then hc
1272+ then he
12531273 else aM("nothing to refresh")
12541274 $Tuple2(eU, toString(eI))
12551275 }
12561276 else throw("Strict value is not equal to itself.")
12571277 }
12581278
12591279
12601280
12611281 @Callable(dX)
1262-func getOneTknV2READONLY (fK,hd) = {
1282+func getOneTknV2READONLY (fK,hf) = {
12631283 let bc = aU()
12641284 let cy = bc[w]
12651285 let cz = bc[x]
12661286 let cx = bc[v]
12671287 let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
12681288 let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
12691289 let bU = dG(dH)
1270- let bT = (bU - fraction(toBigInt(hd), bU, eH))
1271- let he = if ((fK == cy))
1290+ let bT = (bU - fraction(toBigInt(hf), bU, eH))
1291+ let hg = if ((fK == cy))
12721292 then 0
12731293 else if ((fK == cz))
12741294 then 1
12751295 else throw("invalid out asset id")
1276- let hf = eu(dH, he, bT)
1277- let hg = (dH[he] - hf)
1278- let hh = max([0, toInt((hg - f))])
1279- let hi = cp(hh)
1280- let fU = hi._1
1281- let cr = hi._2
1296+ let hh = eu(dH, hg, bT)
1297+ let hi = (dH[hg] - hh)
1298+ let hj = max([0, toInt((hi - f))])
1299+ let hk = cp(hj)
1300+ let fU = hk._1
1301+ let cr = hk._2
12821302 $Tuple2(nil, $Tuple2(fU, cr))
12831303 }
12841304
12851305
12861306
12871307 @Callable(dX)
1288-func getOneTknV2WithBonusREADONLY (fK,hd) = {
1308+func getOneTknV2WithBonusREADONLY (fK,hf) = {
12891309 let bc = aU()
12901310 let cy = bc[w]
12911311 let cz = bc[x]
12921312 let cx = bc[v]
12931313 let cE = bH(cy)
12941314 let cG = bH(cz)
1295- let hj = {
1296- let fT = invoke(this, "getOneTknV2READONLY", [fK, hd], nil)
1315+ let hl = {
1316+ let fT = invoke(this, "getOneTknV2READONLY", [fK, hf], nil)
12971317 if ($isInstanceOf(fT, "(Int, Int)"))
12981318 then fT
12991319 else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
13001320 }
1301- let fU = hj._1
1302- let cr = hj._2
1303- let dm = cs("", cx, hd, this)
1321+ let fU = hl._1
1322+ let cr = hl._2
1323+ let dm = cs("", cx, hf, this)
13041324 let cO = dm._1
13051325 let cP = dm._2
1306- let hk = (cO + cP)
1307- let fI = if ((hk == 0))
1326+ let hm = (cO + cP)
1327+ let fI = if ((hm == 0))
13081328 then if ((fU == 0))
13091329 then 0
13101330 else throw("bonus calculation error")
1311- else fraction((fU - hk), a, hk)
1331+ else fraction((fU - hm), a, hm)
13121332 $Tuple2(nil, $Tuple3(fU, cr, fI))
13131333 }
13141334
13151335
13161336
13171337 @Callable(dX)
1318-func getNoLess (hl,hm) = {
1338+func getNoLess (hn,ho) = {
13191339 let dm = fh(dX)
13201340 let cO = dm._1
13211341 let cP = dm._2
13221342 let da = dm._3
13231343 let cu = dm._4
13241344 let cQ = dm._5
1325- if ((hl > cO))
1326- then throw(((("Failed: " + toString(cO)) + " < ") + toString(hl)))
1327- else if ((hm > cP))
1328- then throw(((("Failed: " + toString(cP)) + " < ") + toString(hm)))
1345+ if ((hn > cO))
1346+ then throw(((("Failed: " + toString(cO)) + " < ") + toString(hn)))
1347+ else if ((ho > cP))
1348+ then throw(((("Failed: " + toString(cP)) + " < ") + toString(ho)))
13291349 else {
13301350 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1331- let hn = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1332- if ((hn == hn))
1351+ let hp = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1352+ if ((hp == hp))
13331353 then {
1334- let ho = eR(-(cO), -(cP), 0)
1335- let gi = ho._1
1336- let eI = ho._2
1354+ let hq = eR(-(cO), -(cP), 0)
1355+ let gi = hq._1
1356+ let eI = hq._2
13371357 let gj = eV(eQ, eI)
13381358 if ((gj == gj))
13391359 then (cQ ++ gi)
13401360 else throw("Strict value is not equal to itself.")
13411361 }
13421362 else throw("Strict value is not equal to itself.")
13431363 }
13441364 }
13451365
13461366
13471367
13481368 @Callable(dX)
13491369 func unstakeAndGet (cq) = {
1350- let hp = if ((size(dX.payments) != 0))
1370+ let hr = if ((size(dX.payments) != 0))
13511371 then throw("No pmnts expd")
13521372 else true
1353- if ((hp == hp))
1373+ if ((hr == hr))
13541374 then {
13551375 let cg = aU()
1356- let hq = bm()
1376+ let hs = bm()
13571377 let gC = fromBase58String(cg[v])
1358- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1378+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
13591379 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1360- let hs = invoke(hr, "unstake", [toBase58String(gC), cq], nil)
1361- if ((hs == hs))
1380+ let hu = invoke(ht, "unstake", [toBase58String(gC), cq], nil)
1381+ if ((hu == hu))
13621382 then {
13631383 let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
13641384 let cO = dm._1
13651385 let cP = dm._2
13661386 let cC = parseIntValue(dm._9)
13671387 let cQ = dm._10
1368- let ht = if (if (aR())
1388+ let hv = if (if (aR())
13691389 then true
13701390 else (cC == s))
13711391 then throw(("Blocked: " + toString(cC)))
13721392 else true
1373- if ((ht == ht))
1393+ if ((hv == hv))
13741394 then {
1375- let hu = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1376- if ((hu == hu))
1395+ let hw = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1396+ if ((hw == hw))
13771397 then {
1378- let hv = eR(-(cO), -(cP), 0)
1379- let gi = hv._1
1380- let eI = hv._2
1398+ let hx = eR(-(cO), -(cP), 0)
1399+ let gi = hx._1
1400+ let eI = hx._2
13811401 let gj = eV(eQ, eI)
13821402 if ((gj == gj))
13831403 then (cQ ++ gi)
13841404 else throw("Strict value is not equal to itself.")
13851405 }
13861406 else throw("Strict value is not equal to itself.")
13871407 }
13881408 else throw("Strict value is not equal to itself.")
13891409 }
13901410 else throw("Strict value is not equal to itself.")
13911411 }
13921412 else throw("Strict value is not equal to itself.")
13931413 }
13941414
13951415
13961416
13971417 @Callable(dX)
1398-func unstakeAndGetNoLess (hw,hx,hm) = {
1399- let gX = if (aR())
1418+func unstakeAndGetNoLess (hy,hz,ho) = {
1419+ let gZ = if (aR())
14001420 then true
14011421 else (bg == s)
1402- let gM = [if (!(gX))
1422+ let gO = [if (!(gZ))
14031423 then true
14041424 else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14051425 then true
14061426 else throw("no payments are expected")]
1407- if ((gM == gM))
1427+ if ((gO == gO))
14081428 then {
14091429 let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1410- let hs = invoke(bo, "unstake", [toBase58String(bh), hw], nil)
1411- if ((hs == hs))
1430+ let hu = invoke(bo, "unstake", [toBase58String(bh), hy], nil)
1431+ if ((hu == hu))
14121432 then {
1413- let hy = cs(toBase58String(dX.transactionId), toBase58String(bh), hw, dX.caller)
1414- let cO = hy._1
1415- let cP = hy._2
1416- let cQ = hy._10
1417- let hz = [if ((cO >= hx))
1433+ let hA = cs(toBase58String(dX.transactionId), toBase58String(bh), hy, dX.caller)
1434+ let cO = hA._1
1435+ let cP = hA._2
1436+ let cQ = hA._10
1437+ let hB = [if ((cO >= hz))
14181438 then true
1419- else throw(makeString(["amount asset amount to receive is less than ", toString(hx)], "")), if ((cP >= hm))
1439+ else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cP >= ho))
14201440 then true
1421- else throw(makeString(["price asset amount to receive is less than ", toString(hm)], ""))]
1422- if ((hz == hz))
1441+ else throw(makeString(["price asset amount to receive is less than ", toString(ho)], ""))]
1442+ if ((hB == hB))
14231443 then {
1424- let hn = invoke(aP, "burn", [hw], [AttachedPayment(bh, hw)])
1425- if ((hn == hn))
1444+ let hp = invoke(aP, "burn", [hy], [AttachedPayment(bh, hy)])
1445+ if ((hp == hp))
14261446 then {
1427- let hA = eR(-(cO), -(cP), 0)
1428- let gi = hA._1
1429- let eI = hA._2
1447+ let hC = eR(-(cO), -(cP), 0)
1448+ let gi = hC._1
1449+ let eI = hC._2
14301450 let gj = eV(eQ, eI)
14311451 if ((gj == gj))
14321452 then (cQ ++ gi)
14331453 else throw("Strict value is not equal to itself.")
14341454 }
14351455 else throw("Strict value is not equal to itself.")
14361456 }
14371457 else throw("Strict value is not equal to itself.")
14381458 }
14391459 else throw("Strict value is not equal to itself.")
14401460 }
14411461 else throw("Strict value is not equal to itself.")
14421462 }
14431463
14441464
14451465
14461466 @Callable(dX)
1447-func unstakeAndGetOneTknV2 (hw,fK,fL) = {
1448- let gK = {
1467+func unstakeAndGetOneTknV2 (hy,fK,fL) = {
1468+ let gM = {
14491469 let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14501470 if ($isInstanceOf(fT, "Boolean"))
14511471 then fT
14521472 else throw(($getType(fT) + " couldn't be cast to Boolean"))
14531473 }
1454- let gX = if (if (aR())
1474+ let gZ = if (if (aR())
14551475 then true
14561476 else (bg == s))
14571477 then true
1458- else gK
1459- let gM = [if (if (!(gX))
1478+ else gM
1479+ let gO = [if (if (!(gZ))
14601480 then true
14611481 else gn(dX))
14621482 then true
14631483 else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
14641484 then true
14651485 else aM("no payments are expected")]
1466- if ((gM == gM))
1486+ if ((gO == gO))
14671487 then {
14681488 let cg = aU()
1469- let hq = bm()
1489+ let hs = bm()
14701490 let gC = fromBase58String(cg[v])
1471- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1472- let hs = invoke(hr, "unstake", [toBase58String(gC), hw], nil)
1473- if ((hs == hs))
1491+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1492+ let hu = invoke(ht, "unstake", [toBase58String(gC), hy], nil)
1493+ if ((hu == hu))
14741494 then {
1475- let hB = fJ(fK, fL, [AttachedPayment(gC, hw)], dX.caller, dX.originCaller, dX.transactionId)
1476- let cQ = hB._1
1477- let fV = hB._2
1495+ let hD = fJ(fK, fL, [AttachedPayment(gC, hy)], dX.caller, dX.originCaller, dX.transactionId)
1496+ let cQ = hD._1
1497+ let fV = hD._2
14781498 $Tuple2(cQ, fV)
14791499 }
14801500 else throw("Strict value is not equal to itself.")
14811501 }
14821502 else throw("Strict value is not equal to itself.")
14831503 }
14841504
14851505
14861506
14871507 @Callable(dX)
1488-func putOneTknV2WithBonusREADONLY (hC,hD) = {
1508+func putOneTknV2WithBonusREADONLY (hE,hF) = {
14891509 let bc = aU()
14901510 let cy = bc[w]
14911511 let cz = bc[x]
14921512 let cx = bc[v]
1493- let hE = fn(hC, hD, "", "", true)
1494- let fD = hE._1
1495- let cQ = hE._2
1496- let cr = hE._3
1497- let fI = hE._4
1513+ let hG = fn(hE, hF, "", "", true)
1514+ let fD = hG._1
1515+ let cQ = hG._2
1516+ let cr = hG._3
1517+ let fI = hG._4
14981518 $Tuple2(nil, $Tuple3(fD, cr, fI))
14991519 }
15001520
15011521
15021522
15031523 @Callable(dX)
1504-func putOneTknV2WithoutTakeFeeREADONLY (hC,hD) = {
1524+func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
15051525 let bc = aU()
15061526 let cy = bc[w]
15071527 let cz = bc[x]
15081528 let cx = bc[v]
1509- let hF = fn(hC, hD, "", "", false)
1510- let fD = hF._1
1511- let cQ = hF._2
1512- let cr = hF._3
1513- let fI = hF._4
1529+ let hH = fn(hE, hF, "", "", false)
1530+ let fD = hH._1
1531+ let cQ = hH._2
1532+ let cr = hH._3
1533+ let fI = hH._4
15141534 $Tuple2(nil, $Tuple3(fD, cr, fI))
15151535 }
15161536
15171537
15181538
15191539 @Callable(dX)
1520-func activate (hG,hH) = if ((toString(dX.caller) != toString(aP)))
1540+func activate (hI,hJ) = if ((toString(dX.caller) != toString(aP)))
15211541 then throw("denied")
1522- else $Tuple2([StringEntry(ag(), hG), StringEntry(ah(), hH)], "success")
1542+ else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
15231543
15241544
15251545
15261546 @Callable(dX)
1527-func setS (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1547+func setS (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
15281548 then gm
1529- else [StringEntry(hI, ht)]
1549+ else [StringEntry(hK, hv)]
15301550
15311551
15321552
15331553 @Callable(dX)
1534-func setI (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1554+func setI (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
15351555 then gm
1536- else [IntegerEntry(hI, ht)]
1556+ else [IntegerEntry(hK, hv)]
15371557
15381558
15391559
15401560 @Callable(dX)
15411561 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
15421562
15431563
15441564
15451565 @Callable(dX)
15461566 func getAccBalanceWrapperREADONLY (bI) = $Tuple2(nil, bH(bI))
15471567
15481568
15491569
15501570 @Callable(dX)
15511571 func calcPricesWrapperREADONLY (ca,cb,cf) = {
1552- let hJ = ce(ca, cb, cf)
1553- $Tuple2(nil, [toString(hJ[0]), toString(hJ[1]), toString(hJ[2])])
1572+ let hL = ce(ca, cb, cf)
1573+ $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
15541574 }
15551575
15561576
15571577
15581578 @Callable(dX)
1559-func fromX18WrapperREADONLY (L,hK) = $Tuple2(nil, K(parseBigIntValue(L), hK))
1579+func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
15601580
15611581
15621582
15631583 @Callable(dX)
15641584 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15651585
15661586
15671587
15681588 @Callable(dX)
15691589 func calcPriceBigIntWrapperREADONLY (bK,bL) = $Tuple2(nil, toString(bJ(parseBigIntValue(bK), parseBigIntValue(bL))))
15701590
15711591
15721592
15731593 @Callable(dX)
1574-func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hL,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hL, cW, cX, true, false, 0, ""))
1594+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, ""))
15751595
15761596
15771597
15781598 @Callable(dX)
1579-func estimateGetOperationWrapperREADONLY (ct,hM,cv,hL) = {
1580- let dm = cs(ct, hM, cv, addressFromStringValue(hL))
1599+func estimateGetOperationWrapperREADONLY (ct,hO,cv,hN) = {
1600+ let dm = cs(ct, hO, cv, addressFromStringValue(hN))
15811601 $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
15821602 }
15831603
15841604
15851605
15861606 @Callable(dX)
15871607 func getFeeREADONLY () = $Tuple2(nil, al)
15881608
15891609
1590-@Verifier(hN)
1591-func hO () = {
1592- let hP = {
1610+@Verifier(hP)
1611+func hQ () = {
1612+ let hR = {
15931613 let aG = gk()
15941614 if ($isInstanceOf(aG, "ByteVector"))
15951615 then {
15961616 let go = aG
15971617 go
15981618 }
15991619 else if ($isInstanceOf(aG, "Unit"))
1600- then hN.senderPublicKey
1620+ then hP.senderPublicKey
16011621 else throw("Match error")
16021622 }
1603- let aG = hN
1623+ let aG = hP
16041624 if ($isInstanceOf(aG, "Order"))
16051625 then {
16061626 let eY = aG
1607- let hQ = aS()
1608- let hR = eX(eY)
1609- let hS = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1610- let hT = sigVerify(eY.bodyBytes, eY.proofs[1], hQ)
1611- if (if (if (hR)
1612- then hS
1627+ let hS = aS()
1628+ let hT = eX(eY)
1629+ let hU = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1630+ let hV = sigVerify(eY.bodyBytes, eY.proofs[1], hS)
1631+ if (if (if (hT)
1632+ then hU
16131633 else false)
1614- then hT
1634+ then hV
16151635 else false)
16161636 then true
1617- else aB(hR, hS, hT)
1637+ else aB(hT, hU, hV)
16181638 }
16191639 else if ($isInstanceOf(aG, "SetScriptTransaction"))
16201640 then {
16211641 let dK = aG
1622- let hU = blake2b256(value(dK.script))
1623- let hV = fromBase64String(value(getString(aP, az())))
1624- let hW = scriptHash(this)
1625- if (if ((hV == hU))
1626- then (hW != hU)
1642+ let hW = blake2b256(value(dK.script))
1643+ let hX = fromBase64String(value(getString(aP, az())))
1644+ let hY = scriptHash(this)
1645+ if (if ((hX == hW))
1646+ then (hY != hW)
16271647 else false)
16281648 then true
1629- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1649+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16301650 }
1631- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1651+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
16321652 }
16331653

github/deemru/w8io/169f3d6 
290.25 ms