tx · 4Z8oeqecHpe5bwSBnSwLaJzfKZbboCL9EcFgZRVS9NPx

3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g:  -0.03600000 Waves

2023.01.23 13:23 [3482978] smart account 3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g > SELF 0.00000000 Waves

{ "type": 13, "id": "4Z8oeqecHpe5bwSBnSwLaJzfKZbboCL9EcFgZRVS9NPx", "fee": 3600000, "feeAssetId": null, "timestamp": 1674469419300, "version": 1, "sender": "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g", "senderPublicKey": "7JeravxHejNM5QqFiU1URLXYHueuDGzjdGucMBFJe5nz", "proofs": [ "2ZE71z4ChVYodiJvBCFHY8eLGeKm2iZ6Kg1FCAGtDeqknzu9G3ngFChmQVzzyGd8KhnPhwq5EozSqoG4QF2vMQw5" ], "script": "base64:BgKBLggCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIgZrZXlLTHAiFWtleUtMcFJlZnJlc2hlZEhlaWdodCISa2V5S0xwUmVmcmVzaERlbGF5IhZrTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9rTHBSZWZyZXNoRGVsYXkiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwODQwODg1NzQiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhRjYWxjUHJpY2VCaWdJbnRSb3VuZCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIxMzI2MjE1MzgiA2tMcCINJHQwMjIwMDkyMjEwOSINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgZhbW91bnQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiByRtYXRjaDAiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDI0OTE2MjUyMDkiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMjUyMTMyNTM2MiIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDI1NDk0MjU1NTgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI3MjM5Mjc0MDYiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI5NDg0Mjk1NDAiC3RvdGFsQW1vdW50Ig0kdDAyOTU0NDI5NzcwIgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzNDI5ODM0NzYwIhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDAzNTMyMjM1Mzg3IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDM2NTc1MzY3MjciBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzczMTMzNzUxMCINJHQwMzc1MTMzNzYyMSINJHQwMzc5MjczODA4NCINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzg5NjkzOTEyMiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzOTYyMjM5ODY5IhBmZWVBbW91bnRGb3JDYWxjIg0kdDAzOTg3MjM5OTgwIg0kdDA0MDIzNzQwMzkzIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA0MTI5ODQxNDQ5Ig0kdDA0MTk0NDQyMTkxIg0kdDA0MjE5NDQyMzAyIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0MzI0ODQzMzMwIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA0NDI3OTQ0MzYwIg1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDQ1NDg2NDU1NjciFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA0Njg2MjQ2OTQzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDgxMzA0ODE5NCIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDU2ODU2NTY5MjUiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaHIAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUUBRgkAvAIDBQFFBQFkBQFGAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWQBAUsDAUkBSgFMCQCgAwEJAL0CBAUBSQkAtgIBBQFKBQFkBQFMAQFNAwFOAU8BUAkAawMFAU4FAU8FAVABAVEBAUkDCQBmAgAABQFJCQEBLQEFAUkFAUkBAVIBAUkDCQC/AgIFAWUFAUkJAL4CAQUBSQUBSQEBUwACEyVzX19mYWN0b3J5Q29udHJhY3QBAVQAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVgACESVzJXNfX3ByaWNlX19sYXN0AQFXAgFYAVkJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFYCQDMCAIJAKQDAQUBWQUDbmlsBQFqAQFaAgJhYQJhYgkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFhAgJfXwUCYWIBAmFjAgJhYQJhYgkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFhAgJfXwUCYWIBAmFkAAIPJXNfX2Ftb3VudEFzc2V0AQJhZQACDiVzX19wcmljZUFzc2V0AAJhZgIHJXNfX2ZlZQACYWcJAGsDAAoFAWIAkE4AAmFoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFmBQJhZwACYWkJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWwAHgACYW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWsFAmFsAQJhbgACESVzX19mYWN0b3J5Q29uZmlnAQJhbwACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXABAmFxCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFxAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXICAmFzAmF0CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcwICX18FAmF0AghfX2NvbmZpZwECYXUBAmF2CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF2AQJhdwACDCVzX19zaHV0ZG93bgECYXgBAmF5CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXkBAmF6AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFBAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUIEAmFDAmFEAmFFAmFGCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQwICICgFAmFEAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFFAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhRgECYUcCAmFIAmFJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUgFAmFJCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFICQDMCAICAS4JAMwIAgUCYUkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUoCAmFIAmFJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUgFAmFJCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFICQDMCAICAS4JAMwIAgUCYUkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUsBAmFMCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFMBQNuaWwCASABAmFNAQJhTAkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFMBQNuaWwCASAAAmFOCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUcCBQR0aGlzCQEBUwAAAmFPCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUcCBQJhTgUCYUEAAmFQCgACYVEJAPwHBAUCYU4CEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUQIDSW50BQJhUQkAAgEJAKwCAgkAAwEFAmFRAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFSCgACYVEJAPwHBAUCYU4CEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVECA0ludAUCYVEJAAIBCQCsAgIJAAMBBQJhUQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhUwAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU4JAQJhdwAHAQJhVAAJANkEAQkBAmFHAgUCYU4JAQJhbwABAmFVAAQCYVYJAQJhRwIFBHRoaXMJAQJhZAAEAmFXCQECYUcCBQR0aGlzCQECYWUABAJhdAkBAmFKAgUCYU4JAQJhdQEFAmFXBAJhcwkBAmFKAgUCYU4JAQJhdQEFAmFWCQC1CQIJAQJhRwIFAmFOCQECYXICCQCkAwEFAmFzCQCkAwEFAmF0BQFqAQJhWAECYVkDCQAAAgUCYVkFAWkFBHVuaXQJANkEAQUCYVkBAmFaAQJhWQMJAAACBQJhWQUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhWQECYmEBAmJiCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmIFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBcAkA2QQBCQCRAwIFAmJiBQFxCQECYVgBCQCRAwIFAmJiBQFyCQECYVgBCQCRAwIFAmJiBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBdQACYmMJAQJiYQEJAQJhVQAAAmJkBQJiYwACYmUIBQJiZAJfMQACYmYIBQJiZAJfMgACYmcIBQJiZAJfMwACYmgIBQJiZAJfNAACYmkIBQJiZAJfNQACYmoIBQJiZAJfNgACYmsIBQJiZAJfNwECYmwACQC1CQIJAQJhRwIFAmFOCQECYW4ABQFqAAJibQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJsAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYm4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJibAAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJvCgJicAJicQJicgJicwJidAJidQJidgJidwJieAJieQkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkFA25pbAUBagECYnoGAmJBAmJCAmJDAmJzAmJ2AmJ3CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkEJAMwIAgkApAMBBQJiQgkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJ3BQNuaWwFAWoBAmJEAQJiRQMJAAACBQJiRQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkUBAmJGAgJiRwJiSAkAvAIDBQJiRwUBZAUCYkgBAmJJAwJiRwJiSAFMCQC9AgQFAmJHBQFkBQJiSAUBTAECYkoEAmJLAmJMAmJNAmJOBAJiTwkBAUQCBQJiTQUCYksEAmJQCQEBRAIFAmJOBQJiTAkBAmJGAgUCYlAFAmJPAQJiUQMCYk0CYk4CYlIEAmJTCQECYVUABAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJTBQF0BAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJTBQF1BAJiVgkBAmJKBAUCYlQFAmJVBQJiTQUCYk4EAmJICQEBRAIFAmJNBQJiVAQCYkcJAQFEAgUCYk4FAmJVBAJiVwkBAUQCBQJiUgUBYgQCYlgJAQJiRgIFAmJIBQJiVwQCYlkJAQJiRgIFAmJHBQJiVwkAzAgCBQJiVgkAzAgCBQJiWAkAzAgCBQJiWQUDbmlsAQJiWgMCYk0CYk4CYlIEAmNhCQECYlEDBQJiTQUCYk4FAmJSCQDMCAIJAQFIAgkAkQMCBQJjYQAABQFiCQDMCAIJAQFIAgkAkQMCBQJjYQABBQFiCQDMCAIJAQFIAgkAkQMCBQJjYQACBQFiBQNuaWwBAmNiBAJjYwJjZAJjZQJhYQQCYlMJAQJhVQAEAmNmCQCRAwIFAmJTBQFxBAJjZwkAkQMCBQJiUwUBcgQCY2gJAJEDAgUCYlMFAXMEAmJLCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXQEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXUEAmNpCQCRAwIFAmJTBQFwBAJjaggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNmCQCsAgIJAKwCAgIGQXNzZXQgBQJjZgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZgUCY2QJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNrCQECYkQBBQJjZwQCY2wJAQFEAgUCY2sFAmJLBAJjbQkBAmJEAQUCY2gEAmNuCQEBRAIFAmNtBQJiTAQCY28JAQJiRgIFAmNuBQJjbAQCY3AJAQFIAgUCY28FAWIEAmNxCQEBRAIFAmNlBQFiBAJjcgkBAUQCBQJjagUBYgQCY3MJALwCAwUCY2wFAmNxBQJjcgQCY3QJALwCAwUCY24FAmNxBQJjcgQCY3UJAQFLAwUCY3MFAmJLBQVGTE9PUgQCY3YJAQFLAwUCY3QFAmJMBQVGTE9PUgQCY3cDCQAAAgUCY2MCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFhBQJjdQMJAAACBQJjZwIFV0FWRVMFBHVuaXQJANkEAQUCY2cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWEFAmN2AwkAAAIFAmNoAgVXQVZFUwUEdW5pdAkA2QQBBQJjaAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCCQClCAEFAmFhBQJjYwkBAmJ6BgUCY3UFAmN2BQJjZQUCY3AFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAAUCY3AJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY3AFA25pbAkAnAoKBQJjdQUCY3YFAmNnBQJjaAUCY2sFAmNtBQJjagUCY28FAmNpBQJjdwECY3gJAmNjAmN5AmN6AmNBAmNCAmNDAmFhAmNEAmNFBAJiUwkBAmFVAAQCY2YJANkEAQkAkQMCBQJiUwUBcQQCY0YJAJEDAgUCYlMFAXIEAmNHCQCRAwIFAmJTBQFzBAJjSAkAkQMCBQJiUwUBdgQCY0kJAJEDAgUCYlMFAXcEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXQEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXUEAmNpCQCRAwIFAmJTBQFwBAJjaggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNKCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNBCQDZBAECBVdBVkVTBAJjSwkA2AQBCQELdmFsdWVPckVsc2UCBQJjQwkA2QQBAgVXQVZFUwMDCQECIT0CBQJjRgUCY0oGCQECIT0CBQJjRwUCY0sJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjawMFAmNECQECYkQBBQJjRgkAZQIJAQJiRAEFAmNGBQJjegQCY20DBQJjRAkBAmJEAQUCY0cJAGUCCQECYkQBBQJjRwUCY0IEAmNMCQEBRAIFAmN6BQJiVAQCY00JAQFEAgUCY0IFAmJVBAJjTgkBAmJGAgUCY00FAmNMBAJjbAkBAUQCBQJjawUCYlQEAmNuCQEBRAIFAmNtBQJiVQQCY08DCQAAAgUCY2oAAAQCY28FAWUEAmNQBQFlBAJiVwkAdgYJALkCAgUCY0wFAmNNAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJXBQFiCQEBSAIFAmNMBQJiVAkBAUgCBQJjTQUCYlUJAQJiRgIJALcCAgUCY24FAmNNCQC3AgIFAmNsBQJjTAUCY1AEAmNvCQECYkYCBQJjbgUCY2wEAmNQCQC8AgMJAQFSAQkAuAICBQJjbwUCY04FAWQFAmNvBAJjUQkBAUQCBQJjeQUBYgMDCQECIT0CBQJjbwUBZQkAvwICBQJjUAUCY1EHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNQAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY1EEAmNyCQEBRAIFAmNqBQFiBAJjUgkAvQIEBQJjTAkBAmJJAwUCY24FAmNsBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjUwkAvQIEBQJjTQUBZAkBAmJJAwUCY24FAmNsBQVGTE9PUgUHQ0VJTElORwQCY1QDCQC/AgIFAmNSBQJjTQkAlAoCBQJjUwUCY00JAJQKAgUCY0wFAmNSBAJjVQgFAmNUAl8xBAJjVggFAmNUAl8yBAJiVwkAvQIEBQJjcgUCY1YFAmNuBQVGTE9PUgkAlwoFCQEBSwMFAmJXBQFiBQVGTE9PUgkBAUsDBQJjVQUCYlQFB0NFSUxJTkcJAQFLAwUCY1YFAmJVBQdDRUlMSU5HBQJjbwUCY1AEAmNXCAUCY08CXzEEAmNYCAUCY08CXzIEAmNZCAUCY08CXzMEAmNwCQEBSAIIBQJjTwJfNAUBYgQCY1oJAQFIAggFAmNPAl81BQFiAwkAZwIAAAUCY1cJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmRhAwkBASEBBQJjRQAABQJjVwQCZGIJAGUCBQJjegUCY1gEAmRjCQBlAgUCY0IFAmNZBAJkZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYABQJjcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjcAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAmFhBQJjYwkBAmJvCgUCY1gFAmNZBQJkYQUCY3AFAmN5BQJjWgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZGIFAmRjBQNuaWwJAJ8KDQUCY1cFAmRhBQJjcAUCY2sFAmNtBQJjagUCY2YFAmNpBQJkZAUCZGIFAmRjBQJjQQUCY0MBAmRlAwJkZgJkZwJjagQCZGgJAQFHAgUCZGYJALYCAQUCYmoEAmRpCQEBRwIFAmRnCQC2AgEFAmJrBAJkagkAvAIDCQB2BgkAuQICBQJkaAUCZGkAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJjagMJAAACBQJjagUBZgUBZgUCZGoBAmRrAwJkbAJkbQJkbgQCZG8JALgCAgkAtgIBCQECYkQBCQECYVoBBQJiaAUCZGwEAmRwCQC4AgIJALYCAQkBAmJEAQkBAmFaAQUCYmkFAmRtBAJkcQkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJnCHF1YW50aXR5BQJkbgQCZHIJAQJkZQMFAmRvBQJkcAUCZHEFAmRyAQJkcwMCZHQCZHUCZG4EAmRvCQBkAgkBAmJEAQkBAmFaAQUCYmgFAmR0BAJkcAkAZAIJAQJiRAEJAQJhWgEFAmJpBQJkdQQCZHEJAGQCCAkBBXZhbHVlAQkA7AcBBQJiZwhxdWFudGl0eQUCZG4EAmRqCQECZGUDCQC2AgEFAmRvCQC2AgEFAmRwCQC2AgEFAmRxBAJkdgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWoFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhaQkApgMBBQJkagUDbmlsCQCUCgIFAmR2BQJkagECZHcCAmR4AmRqAwkAwAICBQJkagUCZHgGCQECYUsBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmR4CQDMCAIJAKYDAQUCZGoFA25pbAIBIAECZHkBAmR6BAJkQQgFAmR6BmFtb3VudAQCZEIJAG4ECAUCZHoGYW1vdW50CAUCZHoFcHJpY2UFAWIFBUZMT09SBAJkQwMJAAACCAUCZHoJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZEEJAQEtAQUCZEIJAJQKAgkBAS0BBQJkQQUCZEIEAmR0CAUCZEMCXzEEAmR1CAUCZEMCXzIDAwMJAQJhUwAGCQAAAgUCYmYFAW0GCQAAAgUCYmYFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZHoJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiaAYJAQIhPQIICAUCZHoJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJpCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZEQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUCYWkJAQJhTQECD2tMcCBpcyByZXF1aXJlZAkBAmFNAQILaW52YWxpZCBrTHAEAmRFCQECZHMDBQJkdAUCZHUAAAQCZEYIBQJkRQJfMQQCZEcIBQJkRQJfMgQCZEgJAMACAgUCZEcFAmREBAJkSQkAuQkCCQDMCAIJAKYDAQUCZEQJAMwIAgkApgMBBQJkRwUDbmlsAgEgCQCUCgIFAmRIBQJkSQECZEoBAmRLAwkBAiE9AgkAkAMBCAUCZEsIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkTAkBBXZhbHVlAQkAkQMCCAUCZEsIcGF5bWVudHMAAAQCY2QJAQV2YWx1ZQEIBQJkTAdhc3NldElkBAJkTQgFAmRMBmFtb3VudAQCY08JAQJjYgQJANgEAQgFAmRLDXRyYW5zYWN0aW9uSWQJANgEAQUCY2QFAmRNCAUCZEsGY2FsbGVyBAJjdQgFAmNPAl8xBAJjdggFAmNPAl8yBAJjaQkBDXBhcnNlSW50VmFsdWUBCAUCY08CXzkEAmN3CAUCY08DXzEwAwMJAQJhUwAGCQAAAgUCY2kFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNpCQCXCgUFAmN1BQJjdgUCZE0FAmNkBQJjdwECZE4DAmRLAmN5AmNFAwkBAiE9AgkAkAMBCAUCZEsIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRPCQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAABAJkUAkBBXZhbHVlAQkAkQMCCAUCZEsIcGF5bWVudHMAAQQCZFEJAQJjeAkJANgEAQgFAmRLDXRyYW5zYWN0aW9uSWQFAmN5CAUCZE8GYW1vdW50CAUCZE8HYXNzZXRJZAgFAmRQBmFtb3VudAgFAmRQB2Fzc2V0SWQJAKUIAQgFAmRLBmNhbGxlcgcFAmNFBAJjaQkBDXBhcnNlSW50VmFsdWUBCAUCZFECXzgDAwMJAQJhUwAGCQAAAgUCY2kFAWwGCQAAAgUCY2kFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNpBQJkUQECZFIBAmRTBAJkVAkA/AcEBQJhTgIEZW1pdAkAzAgCBQJkUwUDbmlsBQNuaWwDCQAAAgUCZFQFAmRUBAJkVQQCZFYFAmRUAwkAAQIFAmRWAgdBZGRyZXNzBAJkVwUCZFYJAPwHBAUCZFcCBGVtaXQJAMwIAgUCZFMFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRVBQJkVQUCZFMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRYAgJkUwJhaAQCZFkDCQAAAgUCYWgAAAAACQBrAwUCZFMFAmFoBQFiCQCUCgIJAGUCBQJkUwUCZFkFAmRZAQJkWgQCZWECZWICYWECYWIEAmVjCQAAAgUCYWIFBHVuaXQEAmVkCQECYkQBCQECYVoBBQJiaAQCZWUJAQJiRAEJAQJhWgEFAmJpBAJlZgMJAAACBQJlYgUCYmgGAwkAAAIFAmViBQJiaQcJAQJhSwECDWludmFsaWQgYXNzZXQEAmVnAwUCZWMJAJQKAgUCZWQFAmVlAwUCZWYJAJQKAgkAZQIFAmVkBQJlYQUCZWUJAJQKAgUCZWQJAGUCBQJlZQUCZWEEAmVoCAUCZWcCXzEEAmVpCAUCZWcCXzIEAmVqAwUCZWYJAJQKAgUCZWEAAAkAlAoCAAAFAmVhBAJlawgFAmVqAl8xBAJlbAgFAmVqAl8yBAJkQQgJAQJkWAIFAmVrBQJhUAJfMQQCZEIICQECZFgCBQJlbAUCYVACXzEEAmVtCQECZFgCBQJlYQUCYVAEAmVuCAUCZW0CXzEEAmRZCAUCZW0CXzIEAmVvCQBkAgUCZWgFAmRBBAJlcAkAZAIFAmVpBQJkQgQCZXEJAQJiRgIJAQFEAgUCZXAFAmJrCQEBRAIFAmVvBQJiagQCZXIJAQFIAgUCZXEFAWIEAmVzAwUCZWYFAmVoBQJlaQQCZXQJALYCAQUCZXMEAmV1CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmcJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmcCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJldgMJAL8CAgUCZXUFAWYGCQECYUsBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmV2BQJldgQCZXcJALYCAQUCZW4EAmV4CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV1CQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZXcFAWQFAmV0ABIAEgUERE9XTgUBZAUBZAUDbmlsBAJkZAMFAmVjBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAAUCZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEJAQV2YWx1ZQEFAmFhCQDYBAEJAQV2YWx1ZQEFAmFiCQECYm8KBQJlawUCZWwFAmV4BQJlcgAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmV5CQECYkYCCQEBRAIFAmVpBQJiawkBAUQCBQJlaAUCYmoEAmV6CQEBSAIFAmV5BQFiBAJlQQQCZUIDBQJlZgkAlAoCBQJlawUCZWgJAJQKAgUCZWwFAmVpBAJkUwgFAmVCAl8xBAJlQwgFAmVCAl8yBAJlRAkAoAMBCQC8AgMFAmV1CQC2AgEJAGkCBQJkUwACCQC2AgEFAmVDCQBrAwkAZQIFAmV4BQJlRAUBYgUCZUQJAJcKBQUCZXgFAmRkBQJkWQUCZUEFAmVmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlRQUCZUYCZW4CZWICYWECYWIEAmVjCQAAAgUCYWIFBHVuaXQEAmJTCQECYVUABAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJTBQF0BAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJTBQF1BAJlRwkAzAgCAwkAAAIFAmViBQJiZwYJAQJhSwECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJlRwUCZUcEAmVIAwkAAAIFAmVGBQJiaAYDCQAAAgUCZUYFAmJpBwkBAmFLAQINaW52YWxpZCBhc3NldAQCZUkDBQJlSAkAtgIBCQECYkQBCQECYVoBBQJiaAkAtgIBCQECYkQBCQECYVoBBQJiaQQCZUoDBQJlSAUCYlQFAmJVBAJlSwkBAmJEAQkBAmFaAQUCYmgEAmVMCQECYkQBCQECYVoBBQJiaQQCZU0DBQJlSAUCZUsFAmVMBAJlTgkAtgIBBQJlTQQCZXUJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiZwkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVPCQC2AgEFAmVuBAJlUAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlSQkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZU8FAWQFAmV1ABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVRCQECZFgCBQJlUAUCYVIEAmVSCAUCZVECXzEEAmRZCAUCZVECXzIEAmVTAwUCZUgJAJYKBAUCZVIAAAkAZQIFAmVLBQJlUAUCZUwJAJYKBAAABQJlUgUCZUsJAGUCBQJlTAUCZVAEAmVUCAUCZVMCXzEEAmVVCAUCZVMCXzIEAmVWCAUCZVMCXzMEAmVXCAUCZVMCXzQEAmVxCQECYkYCCQEBRAIFAmVXBQJiawkBAUQCBQJlVgUCYmoEAmVyCQEBSAIFAmVxBQFiBAJkZAMFAmVjBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgkApQgBCQEFdmFsdWUBBQJhYQkA2AQBCQEFdmFsdWUBBQJhYgkBAmJ6BgUCZVQFAmVVBQJlbgUCZXIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAAUCZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXIFA25pbAQCZXkJAQJiRgIJAQFEAgUCZUwFAmJrCQEBRAIFAmVLBQJiagQCZXoJAQFIAgUCZXkFAWIEAmVBBAJlWAkAaAIJAKADAQkAvAIDBQJlSQUCZU8FAmV1AAIJAGsDCQBlAgUCZVIFAmVYBQFiBQJlWAkAlwoFBQJlUgUCZGQFAmRZBQJlQQUCZUgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVZAAQCZFYJAKIIAQkBAVQAAwkAAQIFAmRWAgZTdHJpbmcEAmVaBQJkVgkA2QQBBQJlWgMJAAECBQJkVgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJmYQAEAmRWCQCiCAEJAQFVAAMJAAECBQJkVgIGU3RyaW5nBAJlWgUCZFYJANkEAQUCZVoDCQABAgUCZFYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZmIBAmRLBAJkVgkBAmVZAAMJAAECBQJkVgIKQnl0ZVZlY3RvcgQCZmMFAmRWCQAAAggFAmRLD2NhbGxlclB1YmxpY0tleQUCZmMDCQABAgUCZFYCBFVuaXQJAAACCAUCZEsGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmZkAQJkSwQCZmUJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZFYJAQJlWQADCQABAgUCZFYCCkJ5dGVWZWN0b3IEAmZjBQJkVgMJAAACCAUCZEsPY2FsbGVyUHVibGljS2V5BQJmYwYFAmZlAwkAAQIFAmRWAgRVbml0AwkAAAIIBQJkSwZjYWxsZXIFBHRoaXMGBQJmZQkAAgECC01hdGNoIGVycm9yGwJkSwEKc2V0TWFuYWdlcgECZmYEAmZnCQECZmQBBQJkSwMJAAACBQJmZwUCZmcEAmZoCQDZBAEFAmZmAwkAAAIFAmZoBQJmaAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAFAmZmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBDmNvbmZpcm1NYW5hZ2VyAAQCZmkJAQJmYQAEAmZqAwkBCWlzRGVmaW5lZAEFAmZpBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmagUCZmoEAmZrAwkAAAIIBQJkSw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZpBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmawUCZmsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQACQDYBAEJAQV2YWx1ZQEFAmZpCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFVAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQNwdXQCAmN5AmZsAwkAZgIAAAUCY3kJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZFEJAQJkTgMFAmRLBQJjeQYEAmRhCAUCZFECXzIEAmNmCAUCZFECXzcEAmN3CAUCZFECXzkEAmRiCAUCZFEDXzEwBAJkYwgFAmRRA18xMQQCZm0IBQJkUQNfMTIEAmZuCAUCZFEDXzEzBAJkTwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEsIcGF5bWVudHMAAAZhbW91bnQEAmRQCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwABBmFtb3VudAQCZHIJAQJkawMFAmRPBQJkUAkAtgIBAAADCQAAAgUCZHIFAmRyBAJkVAkA/AcEBQJhTgIEZW1pdAkAzAgCBQJkYQUDbmlsBQNuaWwDCQAAAgUCZFQFAmRUBAJkVQQCZFYFAmRUAwkAAQIFAmRWAgdBZGRyZXNzBAJkVwUCZFYJAPwHBAUCZFcCBGVtaXQJAMwIAgUCZGEFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRVBQJkVQQCZm8DCQBmAgUCZGIAAAkA/AcEBQJibgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZtBQJkYgUDbmlsBQNuaWwDCQAAAgUCZm8FAmZvBAJmcAMJAGYCBQJkYwAACQD8BwQFAmJuAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZm4FAmRjBQNuaWwFA25pbAMJAAACBQJmcAUCZnAEAmZxAwUCZmwEAmZyCQD8BwQFAmJtAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZgUCZGEFA25pbAMJAAACBQJmcgUCZnIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEsGY2FsbGVyBQJkYQUCY2YFA25pbAQCZnMJAQJkcwMAAAAAAAADCQAAAgUCZnMFAmZzBAJkaggFAmZzAl8yBAJmdAgFAmZzAl8xBAJmdQkBAmR3AgUCZHIFAmRqAwkAAAIFAmZ1BQJmdQkAzggCCQDOCAIFAmN3BQJmcQUCZnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBCnB1dEZvckZyZWUBAmZ2AwkAZgIAAAUCZnYJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZFEJAQJkTgMFAmRLBQJmdgcEAmN3CAUCZFECXzkEAmRPCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkSwhwYXltZW50cwAABmFtb3VudAQCZFAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRLCHBheW1lbnRzAAEGYW1vdW50BAJkcgkBAmRrAwUCZE8FAmRQCQC2AgEAAAMJAAACBQJkcgUCZHIEAmZ3CQECZHMDAAAAAAAABAJmdAgFAmZ3Al8xBAJkaggFAmZ3Al8yBAJmdQkBAmR3AgUCZHIFAmRqAwkAAAIFAmZ1BQJmdQkAzggCBQJjdwUCZnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBCXB1dE9uZVRrbgICZngCZnkEAmZ6CgACYVEJAPwHBAUCYU4CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUQIHQm9vbGVhbgUCYVEJAAIBCQCsAgIJAAMBBQJhUQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkEDAwMJAQJhUwAGCQAAAgUCYmYFAWwGCQAAAgUCYmYFAW4GBQJmegQCZUcJAMwIAgMDCQEBIQEFAmZBBgkBAmZiAQUCZEsGCQECYUsBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSwhwYXltZW50cwABBgkBAmFLAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUcFAmVHBAJmQgkAkQMCCAUCZEsIcGF5bWVudHMAAAQCZWIIBQJmQgdhc3NldElkBAJlYQgFAmZCBmFtb3VudAQCZHIDCQAAAgUCZWIFAmJoCQECZGsDCQC2AgEFAmVhCQC2AgEAAAkAtgIBAAADCQAAAgUCZWIFAmJpCQECZGsDCQC2AgEAAAkAtgIBBQJlYQkAtgIBAAAJAQJhSwECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJkcgUCZHIEAmFhCAUCZEsGY2FsbGVyBAJhYggFAmRLDXRyYW5zYWN0aW9uSWQEAmZDCQECZFoEBQJlYQUCZWIFAmFhBQJhYgMJAAACBQJmQwUCZkMEAmVmCAUCZkMCXzUEAmZECAUCZkMCXzQEAmRZCAUCZkMCXzMEAmRkCAUCZkMCXzIEAmZFCAUCZkMCXzEEAmZGAwMJAGYCBQJmeAAACQBmAgUCZngFAmZFBwkBAmFLAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmeAUDbmlsAgAFAmZFBAJkVAkBAmRSAQUCZkYDCQAAAgUCZFQFAmRUBAJmcQMFAmZ5BAJmRwkA/AcEBQJibQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmcFAmZGBQNuaWwDCQAAAgUCZkcFAmZHBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRLBmNhbGxlcgUCZkYFAmJnBQNuaWwEAmZIAwkAZgIFAmRZAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU8FAmRZBQJlYgUDbmlsBQNuaWwEAmZJAwkAAAIFBHRoaXMFAmFPCQCUCgIAAAAAAwUCZWYJAJQKAgkBAS0BBQJkWQAACQCUCgIAAAkBAS0BBQJkWQQCZHQIBQJmSQJfMQQCZHUIBQJmSQJfMgQCZkoJAQJkcwMFAmR0BQJkdQAABAJmdAgFAmZKAl8xBAJkaggFAmZKAl8yBAJkRAkBBXZhbHVlAQkAoggBBQJhaQQCZnUJAQJkdwIFAmRyBQJkagMJAAACBQJmdQUCZnUJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGQFAmZxBQJmSAUCZnQFAmZGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLARFwdXRPbmVUa25SRUFET05MWQICZWICZWEEAmZLCQECZFoEBQJlYQkBAmFYAQUCZWIFBHVuaXQFBHVuaXQEAmZFCAUCZksCXzEEAmRkCAUCZksCXzIEAmRZCAUCZksCXzMEAmZECAUCZksCXzQEAmVmCAUCZksCXzUJAJQKAgUDbmlsCQCVCgMFAmZFBQJkWQUCZkQCZEsBCWdldE9uZVRrbgICZkwCZngEAmZ6CgACYVEJAPwHBAUCYU4CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUQIHQm9vbGVhbgUCYVEJAAIBCQCsAgIJAAMBBQJhUQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZk0DAwkBAmFTAAYJAAACBQJiZgUBbgYFAmZ6BAJlRwkAzAgCAwMJAQEhAQUCZk0GCQECZmIBBQJkSwYJAQJhSwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRLCHBheW1lbnRzAAEGCQECYUsBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlRwUCZUcEAmVGCQECYVgBBQJmTAQCZkIJAJEDAggFAmRLCHBheW1lbnRzAAAEAmViCAUCZkIHYXNzZXRJZAQCZW4IBQJmQgZhbW91bnQEAmRyCQECZGsDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRyBQJkcgQCYWEIBQJkSwZjYWxsZXIEAmFiCAUCZEsNdHJhbnNhY3Rpb25JZAQCZk4JAQJlRQUFAmVGBQJlbgUCZWIFAmFhBQJhYgMJAAACBQJmTgUCZk4EAmVICAUCZk4CXzUEAmZECAUCZk4CXzQEAmRZCAUCZk4CXzMEAmRkCAUCZk4CXzIEAmZPCAUCZk4CXzEEAmRTAwMJAGYCBQJmeAAACQBmAgUCZngFAmZPBwkBAmFLAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmeAUDbmlsAgAFAmZPBAJmUAkA/AcEBQJhTgIEYnVybgkAzAgCBQJlbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlYgUCZW4FA25pbAMJAAACBQJmUAUCZlAEAmZRCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFhBQJkUwUCZUYFA25pbAQCZkgDCQBmAgUCZFkAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTwUCZFkFAmVGBQNuaWwFA25pbAQCZlIEAmZTAwkAAAIFBHRoaXMFAmFPAAAFAmRZAwUCZUgJAJQKAgkBAS0BCQBkAgUCZFMFAmZTAAAJAJQKAgAACQEBLQEJAGQCBQJkUwUCZlMEAmR0CAUCZlICXzEEAmR1CAUCZlICXzIEAmZUCQECZHMDBQJkdAUCZHUAAAQCZnQIBQJmVAJfMQQCZGoIBQJmVAJfMgQCZnUJAQJkdwIFAmRyBQJkagMJAAACBQJmdQUCZnUJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGQFAmZRBQJmSAUCZnQFAmRTCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLARFnZXRPbmVUa25SRUFET05MWQICZUYCZW4EAmZVCQECZUUFCQECYVgBBQJlRgUCZW4FAmJnBQR1bml0BQR1bml0BAJmTwgFAmZVAl8xBAJkZAgFAmZVAl8yBAJkWQgFAmZVAl8zBAJmRAgFAmZVAl80BAJlSAgFAmZVAl81CQCUCgIFA25pbAkAlQoDBQJmTwUCZFkFAmZEAmRLARN1bnN0YWtlQW5kR2V0T25lVGtuAwJmVgJmTAJmeAQCZnoKAAJhUQkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFRAgdCb29sZWFuBQJhUQkAAgEJAKwCAgkAAwEFAmFRAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmTQMDCQECYVMABgkAAAIFAmJmBQFuBgUCZnoEAmVHCQDMCAIDAwkBASEBBQJmTQYJAQJmYgEFAmRLBgkBAmFLAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEsIcGF5bWVudHMAAAYJAQJhSwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVHBQJlRwQCZUYJAQJhWAEFAmZMBAJhYQgFAmRLBmNhbGxlcgQCYWIIBQJkSw10cmFuc2FjdGlvbklkBAJkcgkBAmRrAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcgUCZHIEAmZXCQD8BwQFAmJtAgd1bnN0YWtlCQDMCAIJANgEAQUCYmcJAMwIAgUCZlYFA25pbAUDbmlsAwkAAAIFAmZXBQJmVwQCZlgJAQJlRQUFAmVGBQJmVgUCYmcFAmFhBQJhYgMJAAACBQJmWAUCZlgEAmVICAUCZlgCXzUEAmZECAUCZlgCXzQEAmRZCAUCZlgCXzMEAmRkCAUCZlgCXzIEAmZPCAUCZlgCXzEEAmRTAwMJAGYCBQJmeAAACQBmAgUCZngFAmZPBwkBAmFLAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmeAUDbmlsAgAFAmZPBAJmUAkA/AcEBQJhTgIEYnVybgkAzAgCBQJmVgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZwUCZlYFA25pbAMJAAACBQJmUAUCZlAEAmZRCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkSwZjYWxsZXIFAmRTBQJlRgUDbmlsBAJmSAMJAGYCBQJkWQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFPBQJkWQUCZUYFA25pbAUDbmlsBAJmWQQCZlMDCQAAAgUEdGhpcwUCYU8AAAUCZFkDBQJlSAkAlAoCCQEBLQEJAGQCBQJkUwUCZlMAAAkAlAoCAAAJAQEtAQkAZAIFAmRTBQJmUwQCZHQIBQJmWQJfMQQCZHUIBQJmWQJfMgQCZloJAQJkcwMFAmR0BQJkdQAABAJmdAgFAmZaAl8xBAJkaggFAmZaAl8yBAJmdQkBAmR3AgUCZHIFAmRqAwkAAAIFAmZ1BQJmdQkAlAoCCQDOCAIJAM4IAgkAzggCBQJkZAUCZlEFAmZIBQJmdAUCZFMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBA2dldAAEAmNPCQECZEoBBQJkSwQCZ2EIBQJjTwJfMQQCY3YIBQJjTwJfMgQCZE0IBQJjTwJfMwQCY2QIBQJjTwJfNAQCY3cIBQJjTwJfNQQCZHIJAQJkawMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHIFAmRyBAJnYgkA/AcEBQJhTgIEYnVybgkAzAgCBQJkTQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZAUCZE0FA25pbAMJAAACBQJnYgUCZ2IEAmdjCQECZHMDCQEBLQEFAmdhCQEBLQEFAmN2AAAEAmZ0CAUCZ2MCXzEEAmRqCAUCZ2MCXzIEAmZ1CQECZHcCBQJkcgUCZGoDCQAAAgUCZnUFAmZ1CQDOCAIFAmN3BQJmdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwEJZ2V0Tm9MZXNzAgJnZAJnZQQCY08JAQJkSgEFAmRLBAJjdQgFAmNPAl8xBAJjdggFAmNPAl8yBAJkTQgFAmNPAl8zBAJjZAgFAmNPAl80BAJjdwgFAmNPAl81AwkAZgIFAmdkBQJjdQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY3UCAyA8IAkApAMBBQJnZAMJAGYCBQJnZQUCY3YJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjdgIDIDwgCQCkAwEFAmdlBAJkcgkBAmRrAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcgUCZHIEAmdiCQD8BwQFAmFOAgRidXJuCQDMCAIFAmRNBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNkBQJkTQUDbmlsAwkAAAIFAmdiBQJnYgQCZ2YJAQJkcwMJAQEtAQUCY3UJAQEtAQUCY3YAAAQCZnQIBQJnZgJfMQQCZGoIBQJnZgJfMgQCZnUJAQJkdwIFAmRyBQJkagMJAAACBQJmdQUCZnUJAM4IAgUCY3cFAmZ0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQ11bnN0YWtlQW5kR2V0AQJkUwQCZ2cDCQECIT0CCQCQAwEIBQJkSwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJnZwUCZ2cEAmJTCQECYVUABAJjZgkA2QQBCQCRAwIFAmJTBQFxBAJkcgkBAmRrAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcgUCZHIEAmZXCQD8BwQFAmJtAgd1bnN0YWtlCQDMCAIJANgEAQUCY2YJAMwIAgUCZFMFA25pbAUDbmlsAwkAAAIFAmZXBQJmVwQCY08JAQJjYgQJANgEAQgFAmRLDXRyYW5zYWN0aW9uSWQJANgEAQUCY2YFAmRTCAUCZEsGY2FsbGVyBAJjdQgFAmNPAl8xBAJjdggFAmNPAl8yBAJjaQkBDXBhcnNlSW50VmFsdWUBCAUCY08CXzkEAmN3CAUCY08DXzEwBAJnaAMDCQECYVMABgkAAAIFAmNpBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjaQYDCQAAAgUCZ2gFAmdoBAJnYgkA/AcEBQJhTgIEYnVybgkAzAgCBQJkUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZgUCZFMFA25pbAMJAAACBQJnYgUCZ2IEAmdpCQECZHMDCQEBLQEFAmN1CQEBLQEFAmN2AAAEAmZ0CAUCZ2kCXzEEAmRqCAUCZ2kCXzIEAmZ1CQECZHcCBQJkcgUCZGoDCQAAAgUCZnUFAmZ1CQDOCAIFAmN3BQJmdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSwETdW5zdGFrZUFuZEdldE5vTGVzcwMCZlYCZ2oCZ2UEAmZNAwkBAmFTAAYJAAACBQJiZgUBbgQCZUcJAMwIAgMJAQEhAQUCZk0GCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEsIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlRwUCZUcEAmRyCQECZGsDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRyBQJkcgQCZlcJAPwHBAUCYm0CB3Vuc3Rha2UJAMwIAgkA2AQBBQJiZwkAzAgCBQJmVgUDbmlsBQNuaWwDCQAAAgUCZlcFAmZXBAJjTwkBAmNiBAkA2AQBCAUCZEsNdHJhbnNhY3Rpb25JZAkA2AQBBQJiZwUCZlYIBQJkSwZjYWxsZXIEAmN1CAUCY08CXzEEAmN2CAUCY08CXzIEAmN3CAUCY08DXzEwBAJnawkAzAgCAwkAZwIFAmN1BQJnagYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnagUDbmlsAgAJAMwIAgMJAGcCBQJjdgUCZ2UGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnZQUDbmlsAgAFA25pbAMJAAACBQJnawUCZ2sEAmdiCQD8BwQFAmFOAgRidXJuCQDMCAIFAmZWBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJnBQJmVgUDbmlsAwkAAAIFAmdiBQJnYgQCZ2wJAQJkcwMJAQEtAQUCY3UJAQEtAQUCY3YAAAQCZnQIBQJnbAJfMQQCZGoIBQJnbAJfMgQCZnUJAQJkdwIFAmRyBQJkagMJAAACBQJmdQUCZnUJAM4IAgUCY3cFAmZ0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRLAQhhY3RpdmF0ZQICZ20CZ24DCQECIT0CCQClCAEIBQJkSwZjYWxsZXIJAKUIAQUCYU4JAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnbQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUABQJnbgUDbmlsAgdzdWNjZXNzAmRLAQpyZWZyZXNoS0xwAAQCZ28JAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWoAAAQCZ3ADCQBnAgkAZQIFBmhlaWdodAUCZ28FAmFtBQR1bml0CQECYUsBCQC5CQIJAMwIAgkApAMBBQJhbQkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ3AFAmdwBAJkRAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWkCATAJAQJhTQECC2ludmFsaWQga0xwBAJncQkBAmRzAwAAAAAAAAQCZ3IIBQJncQJfMQQCZGoIBQJncQJfMgQCZHYDCQECIT0CBQJkRAUCZGoFAmdyCQECYUsBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZHYJAKYDAQUCZGoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEsBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFVAAJkSwEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYkUJAJQKAgUDbmlsCQECYkQBBQJiRQJkSwEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYk0CYk4CYlIEAmNhCQECYlEDBQJiTQUCYk4FAmJSCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCY2EAAAkAzAgCCQCmAwEJAJEDAgUCY2EAAQkAzAgCCQCmAwEJAJEDAgUCY2EAAgUDbmlsAmRLARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZEsBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAQFIAgkApwMBBQFJBQFKAmRLAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJHAmJICQCUCgIFA25pbAkApgMBCQECYkYCCQCnAwEFAmJHCQCnAwEFAmJIAmRLASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY2MCY3kCY3oCY0ECY0ICY0MCYWECY0QCY0UJAJQKAgUDbmlsCQECY3gJBQJjYwUCY3kFAmN6BQJjQQUCY0IFAmNDBQJhYQUCY0QFAmNFAmRLASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY2MCY2QCY2UCYWEEAmNPCQECY2IEBQJjYwUCY2QFAmNlCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhYQkAlAoCBQNuaWwJAJwKCggFAmNPAl8xCAUCY08CXzIIBQJjTwJfMwgFAmNPAl80CAUCY08CXzUIBQJjTwJfNggFAmNPAl83CQCmAwEIBQJjTwJfOAgFAmNPAl85CAUCY08DXzEwAmRLAQ1zdGF0c1JFQURPTkxZAAQCYlMJAQJhVQAEAmNmCQDZBAEJAJEDAgUCYlMFAXEEAmdzCQCRAwIFAmJTBQFyBAJndAkAkQMCBQJiUwUBcwQCY0gJAJEDAgUCYlMFAXYEAmNJCQCRAwIFAmJTBQF3BAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJTBQF0BAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJTBQF1BAJndQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd2CQECYkQBBQJncwQCZ3cJAQJiRAEFAmd0BAJneAMJAAACBQJndQAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiUQMFAmd2BQJndwUCZ3UEAmNwAAAEAmd5CQEBSAIJAJEDAgUCZ3gAAQUBYgQCZ3oJAQFIAgkAkQMCBQJneAACBQFiBAJnQQkBBXZhbHVlAQkAmggCBQJhTgkBAmF4AQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZ3YJAMwIAgkApAMBBQJndwkAzAgCCQCkAwEFAmd1CQDMCAIJAKQDAQUCY3AJAMwIAgkApAMBBQJneQkAzAgCCQCkAwEFAmd6CQDMCAIJAKQDAQUCZ0EFA25pbAUBagJkSwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN6BAJiUwkBAmFVAAQCY2YJANkEAQkAkQMCBQJiUwUBcQQCY0YJAJEDAgUCYlMFAXIEAmNnCQDZBAEFAmNGBAJjRwkAkQMCBQJiUwUBcwQCY2gJANkEAQUCY0cEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXQEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXUEAmNpCQCRAwIFAmJTBQFwBAJndQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd2CQECYkQBBQJjRgQCZ3cJAQJiRAEFAmNHBAJiTwkBAUQCBQJndgUCYlQEAmJQCQEBRAIFAmd3BQJiVQQCY28DCQAAAgUCZ3UAAAUBZQkBAmJGAgUCYlAFAmJPBAJjTAkBAUQCBQJjegUCYlQEAmNNCQC8AgMFAmNMBQJjbwUBZAQCY0IJAQFIAgUCY00FAmJVBAJkUQkBAmN4CQIAAKDCHgUCY3oFAmNnBQJjQgUCY2gCAAYHBAJjVwgFAmRRAl8xBAJnQggFAmRRAl8zBAJjawgFAmRRAl80BAJjbQgFAmRRAl81BAJjaggFAmRRAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjVwkAzAgCCQCkAwEJAQFIAgUCY28FAWIJAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmNtCQDMCAIJAKQDAQUCY2oJAMwIAgUCY2kJAMwIAgkApAMBBQJjegkAzAgCCQCkAwEFAmNCBQNuaWwFAWoCZEsBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmNCBAJiUwkBAmFVAAQCY2YJANkEAQkAkQMCBQJiUwUBcQQCY0YJAJEDAgUCYlMFAXIEAmNnCQDZBAEFAmNGBAJjRwkAkQMCBQJiUwUBcwQCY2gJANkEAQUCY0cEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXQEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlMFAXUEAmNpCQCRAwIFAmJTBQFwBAJndQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdDCQECYkQBBQJjRgQCZ0QJAQJiRAEFAmNHBAJnRQkBAUQCBQJnQwUCYlQEAmdGCQEBRAIFAmdEBQJiVQQCY28DCQAAAgUCZ3UAAAUBZQkBAmJGAgUCZ0YFAmdFBAJjTQkBAUQCBQJjQgUCYlUEAmNMCQC8AgMFAmNNBQFkBQJjbwQCY3oJAQFIAgUCY0wFAmJUBAJkUQkBAmN4CQIAAKDCHgUCY3oFAmNnBQJjQgUCY2gCAAYHBAJjVwgFAmRRAl8xBAJnQggFAmRRAl8zBAJjawgFAmRRAl80BAJjbQgFAmRRAl81BAJjaggFAmRRAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjVwkAzAgCCQCkAwEJAQFIAgUCY28FAWIJAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmNtCQDMCAIJAKQDAQUCY2oJAMwIAgUCY2kJAMwIAgkApAMBBQJjegkAzAgCCQCkAwEFAmNCBQNuaWwFAWoCZEsBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmdHAmdIBAJjTwkBAmNiBAIABQJnRwUCZ0gFBHRoaXMEAmN1CAUCY08CXzEEAmN2CAUCY08CXzIEAmNrCAUCY08CXzUEAmNtCAUCY08CXzYEAmNqCAUCY08CXzcEAmNwCAUCY08CXzgEAmNpCQENcGFyc2VJbnRWYWx1ZQEIBQJjTwJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmN1CQDMCAIJAKQDAQUCY3YJAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmNtCQDMCAIJAKQDAQUCY2oJAMwIAgkApgMBBQJjcAkAzAgCCQCkAwEFAmNpBQNuaWwFAWoBAmdJAQJnSgAEAmdLBAJkVgkBAmVZAAMJAAECBQJkVgIKQnl0ZVZlY3RvcgQCZmMFAmRWBQJmYwMJAAECBQJkVgIEVW5pdAgFAmdJD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkVgUCZ0kDCQABAgUCZFYCBU9yZGVyBAJkegUCZFYEAmdMCQECYVQABAJnTQkBAmR5AQUCZHoEAmFDCAUCZ00CXzEEAmFECAUCZ00CXzIEAmFFCQD0AwMIBQJkeglib2R5Qnl0ZXMJAJEDAggFAmR6BnByb29mcwAACAUCZHoPc2VuZGVyUHVibGljS2V5BAJhRgkA9AMDCAUCZHoJYm9keUJ5dGVzCQCRAwIIBQJkegZwcm9vZnMAAQUCZ0wDAwMFAmFDBQJhRQcFAmFGBwYJAQJhQgQFAmFDBQJhRAUCYUUFAmFGAwkAAQIFAmRWAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZVoFAmRWBAJnTgkA9gMBCQEFdmFsdWUBCAUCZVoGc2NyaXB0BAJnTwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFOCQECYXoABAJnUAkA8QcBBQR0aGlzAwMJAAACBQJnTwUCZ04JAQIhPQIFAmdQBQJnTgcGCQD0AwMIBQJnSQlib2R5Qnl0ZXMJAJEDAggFAmdJBnByb29mcwAABQJnSwkA9AMDCAUCZ0kJYm9keUJ5dGVzCQCRAwIIBQJnSQZwcm9vZnMAAAUCZ0vE64GK", "chainId": 87, "height": 3482978, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B5vQ4SHTDHhgsWnLgdJ7ejDDqh7YBfhq85XGw77HpoUt Next: 7WrYjPcin1j7xPoqSFM2Q5YoGELrA9QzmEkij9euM1Hm Diff:
OldNewDifferences
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
65+func G (E,F) = fraction(E, d, F)
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
71-func N (H) = if ((0 > H))
72- then -(H)
73- else H
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7472
7573
76-func O (H) = if ((e > H))
77- then -(H)
78- else H
74+func M (N,O,P) = fraction(N, O, P)
7975
8076
81-func P () = "%s__factoryContract"
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
8280
8381
84-func Q () = "%s__managerPublicKey"
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
8585
8686
87-func R () = "%s__pendingManagerPublicKey"
87+func S () = "%s__factoryContract"
8888
8989
90-func S () = "%s%s__price__last"
90+func T () = "%s__managerPublicKey"
9191
9292
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
93+func U () = "%s__pendingManagerPublicKey"
9494
9595
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
96+func V () = "%s%s__price__last"
9797
9898
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
99+func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
100100
101101
102-func aa () = "%s__amountAsset"
102+func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
103103
104104
105-func ab () = "%s__priceAsset"
105+func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
106106
107107
108-func ac () = "%s__factoryConfig"
108+func ad () = "%s__amountAsset"
109109
110110
111-func ad () = "%s%s__matcher__publicKey"
111+func ae () = "%s__priceAsset"
112112
113113
114-func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
114+let af = "%s__fee"
115+
116+let ag = fraction(10, b, 10000)
117+
118+let ah = valueOrElse(getInteger(this, af), ag)
119+
120+let ai = makeString(["%s", "kLp"], j)
121+
122+let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123+
124+let ak = makeString(["%s", "refreshKLpDelay"], j)
125+
126+let al = 30
127+
128+let am = valueOrElse(getInteger(this, ak), al)
129+
130+func an () = "%s__factoryConfig"
115131
116132
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
133+func ao () = "%s%s__matcher__publicKey"
118134
119135
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
136+func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
121137
122138
123-func al () = "%s__shutdown"
139+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
124140
125141
126-func am (an) = ("%s%s__poolWeight__" + an)
142+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
127143
128144
129-func ao () = "%s__allowedLpScriptHash"
145+func aw () = "%s__shutdown"
130146
131147
132-let ap = "%s__feeCollectorAddress"
133-
134-func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
148+func ax (ay) = ("%s%s__poolWeight__" + ay)
135149
136150
137-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
151+func az () = "%s__allowedLpScriptHash"
138152
139153
140-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
154+let aA = "%s__feeCollectorAddress"
155+
156+func aB (aC,aD,aE,aF) = throw((((((((("order validation failed: orderValid=" + toString(aC)) + " (") + aD) + ")") + " senderValid=") + toString(aE)) + " matcherValid=") + toString(aF)))
141157
142158
143-func ay (az) = throw(makeString(["lp.ride:", az], " "))
159+func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
144160
145161
146-let aA = addressFromStringValue(au(this, P()))
162+func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
147163
148-let aB = addressFromStringValue(au(aA, ap))
149164
150-let aC = {
151- let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152- if ($isInstanceOf(aD, "Int"))
153- then aD
154- else throw(($getType(aD) + " couldn't be cast to Int"))
165+func aK (aL) = throw(makeString(["lp.ride:", aL], " "))
166+
167+
168+func aM (aL) = makeString(["lp.ride:", aL], " ")
169+
170+
171+let aN = addressFromStringValue(aG(this, S()))
172+
173+let aO = addressFromStringValue(aG(aN, aA))
174+
175+let aP = {
176+ let aQ = invoke(aN, "getInFeeREADONLY", [toString(this)], nil)
177+ if ($isInstanceOf(aQ, "Int"))
178+ then aQ
179+ else throw(($getType(aQ) + " couldn't be cast to Int"))
155180 }
156181
157-let aE = {
158- let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159- if ($isInstanceOf(aD, "Int"))
160- then aD
161- else throw(($getType(aD) + " couldn't be cast to Int"))
182+let aR = {
183+ let aQ = invoke(aN, "getOutFeeREADONLY", [toString(this)], nil)
184+ if ($isInstanceOf(aQ, "Int"))
185+ then aQ
186+ else throw(($getType(aQ) + " couldn't be cast to Int"))
162187 }
163188
164-func aF () = valueOrElse(getBoolean(aA, al()), false)
189+func aS () = valueOrElse(getBoolean(aN, aw()), false)
165190
166191
167-func aG () = fromBase58String(au(aA, ad()))
192+func aT () = fromBase58String(aG(aN, ao()))
168193
169194
170-func aH () = {
171- let aI = au(this, aa())
172- let aJ = au(this, ab())
173- let ai = ax(aA, aj(aJ))
174- let ah = ax(aA, aj(aI))
175- split(au(aA, ag(toString(ah), toString(ai))), j)
195+func aU () = {
196+ let aV = aG(this, ad())
197+ let aW = aG(this, ae())
198+ let at = aJ(aN, au(aW))
199+ let as = aJ(aN, au(aV))
200+ split(aG(aN, ar(toString(as), toString(at))), j)
176201 }
177202
178203
179-func aK (aL) = if ((aL == i))
204+func aX (aY) = if ((aY == i))
180205 then unit
181- else fromBase58String(aL)
206+ else fromBase58String(aY)
182207
183208
184-func aM (aL) = if ((aL == unit))
209+func aZ (aY) = if ((aY == unit))
185210 then i
186- else toBase58String(value(aL))
211+ else toBase58String(value(aY))
187212
188213
189-func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
214+func ba (bb) = $Tuple7(addressFromStringValue(bb[o]), parseIntValue(bb[p]), fromBase58String(bb[q]), aX(bb[r]), aX(bb[s]), parseIntValue(bb[t]), parseIntValue(bb[u]))
190215
191216
192-let aP = aN(aH())
217+let bc = ba(aU())
193218
194-let aQ = aP
219+let bd = bc
195220
196-let aR = aQ._1
221+let be = bd._1
197222
198-let aS = aQ._2
223+let bf = bd._2
199224
200-let aT = aQ._3
225+let bg = bd._3
201226
202-let aU = aQ._4
227+let bh = bd._4
203228
204-let aV = aQ._5
229+let bi = bd._5
205230
206-let aW = aQ._6
231+let bj = bd._6
207232
208-let aX = aQ._7
233+let bk = bd._7
209234
210-func aY () = split(au(aA, ac()), j)
235+func bl () = split(aG(aN, an()), j)
211236
212237
213-let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
238+let bm = valueOrErrorMessage(addressFromString(bl()[B]), "incorrect staking address")
214239
215-let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
240+let bn = valueOrErrorMessage(addressFromString(bl()[C]), "incorrect staking address")
216241
217-func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
242+func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], j)
218243
219244
220-func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
245+func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], j)
221246
222247
223-func bq (br) = if ((br == "WAVES"))
248+func bD (bE) = if ((bE == "WAVES"))
224249 then wavesBalance(this).available
225- else assetBalance(this, fromBase58String(br))
250+ else assetBalance(this, fromBase58String(bE))
226251
227252
228-func bs (bt,bu) = fraction(bt, d, bu)
253+func bF (bG,bH) = fraction(bG, d, bH)
229254
230255
231-func bv (bw,bx,by,bz) = {
232- let bA = D(by, bw)
233- let bB = D(bz, bx)
234- bs(bB, bA)
256+func bI (bG,bH,L) = fraction(bG, d, bH, L)
257+
258+
259+func bJ (bK,bL,bM,bN) = {
260+ let bO = D(bM, bK)
261+ let bP = D(bN, bL)
262+ bF(bP, bO)
235263 }
236264
237265
238-func bC (by,bz,bD) = {
239- let bE = aH()
240- let bF = parseIntValue(bE[t])
241- let bG = parseIntValue(bE[u])
242- let bH = bv(bF, bG, by, bz)
243- let bu = D(by, bF)
244- let bt = D(bz, bG)
245- let bI = D(bD, b)
246- let bJ = bs(bu, bI)
247- let bK = bs(bt, bI)
248-[bH, bJ, bK]
266+func bQ (bM,bN,bR) = {
267+ let bS = aU()
268+ let bT = parseIntValue(bS[t])
269+ let bU = parseIntValue(bS[u])
270+ let bV = bJ(bT, bU, bM, bN)
271+ let bH = D(bM, bT)
272+ let bG = D(bN, bU)
273+ let bW = D(bR, b)
274+ let bX = bF(bH, bW)
275+ let bY = bF(bG, bW)
276+[bV, bX, bY]
249277 }
250278
251279
252-func bL (by,bz,bD) = {
253- let bM = bC(by, bz, bD)
254-[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
280+func bZ (bM,bN,bR) = {
281+ let ca = bQ(bM, bN, bR)
282+[H(ca[0], b), H(ca[1], b), H(ca[2], b)]
255283 }
256284
257285
258-func bN (bO,bP,bQ,X) = {
259- let bE = aH()
260- let bR = bE[q]
261- let bS = bE[r]
262- let bT = bE[s]
263- let bw = parseIntValue(bE[t])
264- let bx = parseIntValue(bE[u])
265- let bU = bE[p]
266- let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267- if ((bR != bP))
286+func cb (cc,cd,ce,aa) = {
287+ let bS = aU()
288+ let cf = bS[q]
289+ let cg = bS[r]
290+ let ch = bS[s]
291+ let bK = parseIntValue(bS[t])
292+ let bL = parseIntValue(bS[u])
293+ let ci = bS[p]
294+ let cj = valueOrErrorMessage(assetInfo(fromBase58String(cf)), (("Asset " + cf) + " doesn't exist")).quantity
295+ if ((cf != cd))
268296 then throw("Invalid asset passed.")
269297 else {
270- let bW = bq(bS)
271- let bX = D(bW, bw)
272- let bY = bq(bT)
273- let bZ = D(bY, bx)
274- let ca = bs(bZ, bX)
275- let cb = G(ca, b)
276- let cc = D(bQ, b)
277- let cd = D(bV, b)
278- let ce = fraction(bX, cc, cd)
279- let cf = fraction(bZ, cc, cd)
280- let cg = G(ce, bw)
281- let ch = G(cf, bx)
282- let ci = if ((bO == ""))
298+ let ck = bD(cg)
299+ let cl = D(ck, bK)
300+ let cm = bD(ch)
301+ let cn = D(cm, bL)
302+ let co = bF(cn, cl)
303+ let cp = H(co, b)
304+ let cq = D(ce, b)
305+ let cr = D(cj, b)
306+ let cs = fraction(cl, cq, cr)
307+ let ct = fraction(cn, cq, cr)
308+ let cu = K(cs, bK, FLOOR)
309+ let cv = K(ct, bL, FLOOR)
310+ let cw = if ((cc == ""))
283311 then nil
284- else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
312+ else [ScriptTransfer(aa, cu, if ((cg == "WAVES"))
285313 then unit
286- else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
314+ else fromBase58String(cg)), ScriptTransfer(aa, cv, if ((ch == "WAVES"))
287315 then unit
288- else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289- $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
316+ else fromBase58String(ch)), StringEntry(ac(toString(aa), cc), bz(cu, cv, ce, cp, height, lastBlock.timestamp)), IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp)]
317+ $Tuple10(cu, cv, cg, ch, ck, cm, cj, co, ci, cw)
290318 }
291319 }
292320
293321
294-func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295- let bE = aH()
296- let bR = fromBase58String(bE[q])
297- let cr = bE[r]
298- let cs = bE[s]
299- let ct = bE[v]
300- let cu = bE[w]
301- let bF = parseIntValue(bE[t])
302- let bG = parseIntValue(bE[u])
303- let bU = bE[p]
304- let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305- let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306- let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307- if (if ((cr != cv))
322+func cx (cc,cy,cz,cA,cB,cC,aa,cD,cE) = {
323+ let bS = aU()
324+ let cf = fromBase58String(bS[q])
325+ let cF = bS[r]
326+ let cG = bS[s]
327+ let cH = bS[v]
328+ let cI = bS[w]
329+ let bT = parseIntValue(bS[t])
330+ let bU = parseIntValue(bS[u])
331+ let ci = bS[p]
332+ let cj = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
333+ let cJ = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
334+ let cK = toBase58String(valueOrElse(cC, fromBase58String("WAVES")))
335+ if (if ((cF != cJ))
308336 then true
309- else (cs != cw))
337+ else (cG != cK))
310338 then throw("Invalid amt or price asset passed.")
311339 else {
312- let bW = if (cp)
313- then bq(cr)
314- else (bq(cr) - cl)
315- let bY = if (cp)
316- then bq(cs)
317- else (bq(cs) - cn)
318- let cx = D(cl, bF)
319- let cy = D(cn, bG)
320- let cz = bs(cy, cx)
321- let bX = D(bW, bF)
322- let bZ = D(bY, bG)
323- let cA = if ((bV == 0))
340+ let ck = if (cD)
341+ then bD(cF)
342+ else (bD(cF) - cz)
343+ let cm = if (cD)
344+ then bD(cG)
345+ else (bD(cG) - cB)
346+ let cL = D(cz, bT)
347+ let cM = D(cB, bU)
348+ let cN = bF(cM, cL)
349+ let cl = D(ck, bT)
350+ let cn = D(cm, bU)
351+ let cO = if ((cj == 0))
324352 then {
325- let ca = e
326- let cB = e
327- let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328- $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
353+ let co = e
354+ let cP = e
355+ let bW = pow((cL * cM), 0, toBigInt(5), 1, 0, DOWN)
356+ $Tuple5(H(bW, b), H(cL, bT), H(cM, bU), bF((cn + cM), (cl + cL)), cP)
329357 }
330358 else {
331- let ca = bs(bZ, bX)
332- let cB = fraction(O((ca - cz)), d, ca)
333- let cC = D(ck, b)
334- if (if ((ca != e))
335- then (cB > cC)
359+ let co = bF(cn, cl)
360+ let cP = fraction(R((co - cN)), d, co)
361+ let cQ = D(cy, b)
362+ if (if ((co != e))
363+ then (cP > cQ)
336364 else false)
337- then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
365+ then throw(((("Price slippage " + toString(cP)) + " exceeded the passed limit of ") + toString(cQ)))
338366 else {
339- let cd = D(bV, b)
340- let cD = fraction(cx, ca, d)
341- let cE = fraction(cy, d, ca)
342- let cF = if ((cD > cy))
343- then $Tuple2(cE, cy)
344- else $Tuple2(cx, cD)
345- let cG = cF._1
346- let cH = cF._2
347- let bI = fraction(cd, cH, bZ)
348- $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
367+ let cr = D(cj, b)
368+ let cR = fraction(cL, bI(cn, cl, CEILING), d, CEILING)
369+ let cS = fraction(cM, d, bI(cn, cl, FLOOR), CEILING)
370+ let cT = if ((cR > cM))
371+ then $Tuple2(cS, cM)
372+ else $Tuple2(cL, cR)
373+ let cU = cT._1
374+ let cV = cT._2
375+ let bW = fraction(cr, cV, cn, FLOOR)
376+ $Tuple5(K(bW, b, FLOOR), K(cU, bT, CEILING), K(cV, bU, CEILING), co, cP)
349377 }
350378 }
351- let cI = cA._1
352- let cJ = cA._2
353- let cK = cA._3
354- let cb = G(cA._4, b)
355- let cL = G(cA._5, b)
356- if ((0 >= cI))
379+ let cW = cO._1
380+ let cX = cO._2
381+ let cY = cO._3
382+ let cp = H(cO._4, b)
383+ let cZ = H(cO._5, b)
384+ if ((0 >= cW))
357385 then throw("Invalid calculations. LP calculated is less than zero.")
358386 else {
359- let cM = if (!(cq))
387+ let da = if (!(cE))
360388 then 0
361- else cI
362- let cN = (cl - cJ)
363- let cO = (cn - cK)
364- let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365- $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
389+ else cW
390+ let db = (cz - cX)
391+ let dc = (cB - cY)
392+ let dd = [IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp), StringEntry(Z(aa, cc), bo(cX, cY, da, cp, cy, cZ, height, lastBlock.timestamp, db, dc))]
393+ $Tuple13(cW, da, cp, ck, cm, cj, cf, ci, dd, db, dc, cA, cC)
366394 }
367395 }
368396 }
369397
370398
371-func cQ (cR) = {
372- let bE = aH()
373- let cS = bE[r]
374- let cT = bE[s]
375- let bU = parseIntValue(bE[p])
376- let bF = parseIntValue(bE[t])
377- let bG = parseIntValue(bE[u])
378- let cU = bq(cS)
379- let cV = bq(cT)
380- let ca = if ((cR.orderType == Buy))
381- then bv(bF, bG, (cU + cR.amount), cV)
382- else bv(bF, bG, (cU - cR.amount), cV)
383- let cb = G(ca, b)
384- if (if (if (aF())
385- then true
386- else (bU == m))
387- then true
388- else (bU == n))
389- then throw("Exchange operations disabled")
390- else {
391- let cW = cR.assetPair.amountAsset
392- let cX = if ((cW == unit))
393- then "WAVES"
394- else toBase58String(value(cW))
395- let cY = cR.assetPair.priceAsset
396- let cZ = if ((cY == unit))
397- then "WAVES"
398- else toBase58String(value(cY))
399- if (if ((cX != cS))
400- then true
401- else (cZ != cT))
402- then throw("Wrong order assets.")
403- else {
404- let da = cR.price
405- let db = fraction(b, bG, bF)
406- let dc = J(da, b, db)
407- let dd = if ((cR.orderType == Buy))
408- then (cb >= dc)
409- else (dc >= cb)
410- true
411- }
412- }
399+func de (df,dg,cj) = {
400+ let dh = G(df, toBigInt(bj))
401+ let di = G(dg, toBigInt(bk))
402+ let dj = fraction(pow((dh * di), 0, toBigInt(5), 1, 18, DOWN), g, cj)
403+ if ((cj == f))
404+ then f
405+ else dj
413406 }
414407
415408
416-func de (df) = if ((size(df.payments) != 1))
409+func dk (dl,dm,dn) = {
410+ let do = (toBigInt(bD(aZ(bh))) - dl)
411+ let dp = (toBigInt(bD(aZ(bi))) - dm)
412+ let dq = (toBigInt(value(assetInfo(bg)).quantity) - dn)
413+ let dr = de(do, dp, dq)
414+ dr
415+ }
416+
417+
418+func ds (dt,du,dn) = {
419+ let do = (bD(aZ(bh)) + dt)
420+ let dp = (bD(aZ(bi)) + du)
421+ let dq = (value(assetInfo(bg)).quantity + dn)
422+ let dj = de(toBigInt(do), toBigInt(dp), toBigInt(dq))
423+ let dv = [IntegerEntry(aj, height), StringEntry(ai, toString(dj))]
424+ $Tuple2(dv, dj)
425+ }
426+
427+
428+func dw (dx,dj) = if ((dj >= dx))
429+ then true
430+ else aK(makeString(["updated KLp lower than current KLp", toString(dx), toString(dj)], " "))
431+
432+
433+func dy (dz) = {
434+ let dA = dz.amount
435+ let dB = fraction(dz.amount, dz.price, b, FLOOR)
436+ let dC = if ((dz.orderType == Buy))
437+ then $Tuple2(dA, -(dB))
438+ else $Tuple2(-(dA), dB)
439+ let dt = dC._1
440+ let du = dC._2
441+ if (if (if (aS())
442+ then true
443+ else (bf == m))
444+ then true
445+ else (bf == n))
446+ then throw("Exchange operations disabled")
447+ else if (if ((dz.assetPair.amountAsset != bh))
448+ then true
449+ else (dz.assetPair.priceAsset != bi))
450+ then throw("Wrong order assets.")
451+ else {
452+ let dD = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ai), aM("kLp is required"))), aM("invalid kLp"))
453+ let dE = ds(dt, du, 0)
454+ let dF = dE._1
455+ let dG = dE._2
456+ let dH = (dG >= dD)
457+ let dI = makeString([toString(dD), toString(dG)], " ")
458+ $Tuple2(dH, dI)
459+ }
460+ }
461+
462+
463+func dJ (dK) = if ((size(dK.payments) != 1))
417464 then throw("exactly 1 payment is expected")
418465 else {
419- let dg = value(df.payments[0])
420- let bP = value(dg.assetId)
421- let dh = dg.amount
422- let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423- let cg = cA._1
424- let ch = cA._2
425- let bU = parseIntValue(cA._9)
426- let ci = cA._10
427- if (if (aF())
466+ let dL = value(dK.payments[0])
467+ let cd = value(dL.assetId)
468+ let dM = dL.amount
469+ let cO = cb(toBase58String(dK.transactionId), toBase58String(cd), dM, dK.caller)
470+ let cu = cO._1
471+ let cv = cO._2
472+ let ci = parseIntValue(cO._9)
473+ let cw = cO._10
474+ if (if (aS())
428475 then true
429- else (bU == n))
430- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431- else $Tuple5(cg, ch, dh, bP, ci)
476+ else (ci == n))
477+ then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
478+ else $Tuple5(cu, cv, dM, cd, cw)
432479 }
433480
434481
435-func di (df,ck,cq) = if ((size(df.payments) != 2))
482+func dN (dK,cy,cE) = if ((size(dK.payments) != 2))
436483 then throw("exactly 2 payments are expected")
437484 else {
438- let dj = value(df.payments[0])
439- let dk = value(df.payments[1])
440- let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441- let bU = parseIntValue(dl._8)
442- if (if (if (aF())
485+ let dO = value(dK.payments[0])
486+ let dP = value(dK.payments[1])
487+ let dQ = cx(toBase58String(dK.transactionId), cy, dO.amount, dO.assetId, dP.amount, dP.assetId, toString(dK.caller), false, cE)
488+ let ci = parseIntValue(dQ._8)
489+ if (if (if (aS())
443490 then true
444- else (bU == l))
491+ else (ci == l))
445492 then true
446- else (bU == n))
447- then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448- else dl
493+ else (ci == n))
494+ then throw(("Put operation is blocked by admin. Status = " + toString(ci)))
495+ else dQ
449496 }
450497
451498
452-func dm (dn) = {
453- let do = invoke(aA, "emit", [dn], nil)
454- if ((do == do))
499+func dR (dS) = {
500+ let dT = invoke(aN, "emit", [dS], nil)
501+ if ((dT == dT))
455502 then {
456- let dp = {
457- let dq = do
458- if ($isInstanceOf(dq, "Address"))
503+ let dU = {
504+ let dV = dT
505+ if ($isInstanceOf(dV, "Address"))
459506 then {
460- let dr = dq
461- invoke(dr, "emit", [dn], nil)
507+ let dW = dV
508+ invoke(dW, "emit", [dS], nil)
462509 }
463510 else unit
464511 }
465- if ((dp == dp))
466- then dn
512+ if ((dU == dU))
513+ then dS
467514 else throw("Strict value is not equal to itself.")
468515 }
469516 else throw("Strict value is not equal to itself.")
470517 }
471518
472519
473-func ds (dn,dt) = {
474- let du = if ((dt == 0))
520+func dX (dS,ah) = {
521+ let dY = if ((ah == 0))
475522 then 0
476- else fraction(dn, dt, b)
477- $Tuple2((dn - du), du)
523+ else fraction(dS, ah, b)
524+ $Tuple2((dS - dY), dY)
478525 }
479526
480527
481-func dv (dw,dx,X,Y) = {
482- let dy = (Y == unit)
483- let dz = bq(aM(aU))
484- let dA = bq(aM(aV))
485- let dB = if ((dx == aU))
528+func dZ (ea,eb,aa,ab) = {
529+ let ec = (ab == unit)
530+ let ed = bD(aZ(bh))
531+ let ee = bD(aZ(bi))
532+ let ef = if ((eb == bh))
486533 then true
487- else if ((dx == aV))
534+ else if ((eb == bi))
488535 then false
489- else ay("invalid asset")
490- let dC = if (dy)
491- then $Tuple2(dz, dA)
492- else if (dB)
493- then $Tuple2((dz - dw), dA)
494- else $Tuple2(dz, (dA - dw))
495- let dD = dC._1
496- let dE = dC._2
497- let dF = if (dB)
498- then $Tuple2(dw, 0)
499- else $Tuple2(0, dw)
500- let dG = dF._1
501- let dH = dF._2
502- let dI = ds(dG, aC)._1
503- let dJ = ds(dH, aC)._1
504- let dK = ds(dw, aC)
505- let dL = dK._1
506- let du = dK._2
507- let dM = (dD + dI)
508- let dN = (dE + dJ)
509- let dO = bs(D(dN, aX), D(dM, aW))
510- let dP = G(dO, b)
511- let dQ = if (dB)
512- then dD
513- else dE
514- let dR = toBigInt(dQ)
515- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516- let dT = if ((dS > f))
536+ else aK("invalid asset")
537+ let eg = if (ec)
538+ then $Tuple2(ed, ee)
539+ else if (ef)
540+ then $Tuple2((ed - ea), ee)
541+ else $Tuple2(ed, (ee - ea))
542+ let eh = eg._1
543+ let ei = eg._2
544+ let ej = if (ef)
545+ then $Tuple2(ea, 0)
546+ else $Tuple2(0, ea)
547+ let ek = ej._1
548+ let el = ej._2
549+ let dA = dX(ek, aP)._1
550+ let dB = dX(el, aP)._1
551+ let em = dX(ea, aP)
552+ let en = em._1
553+ let dY = em._2
554+ let eo = (eh + dA)
555+ let ep = (ei + dB)
556+ let eq = bF(D(ep, bk), D(eo, bj))
557+ let er = H(eq, b)
558+ let es = if (ef)
559+ then eh
560+ else ei
561+ let et = toBigInt(es)
562+ let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
563+ let ev = if ((eu > f))
517564 then true
518- else ay("initial deposit requires all coins")
519- if ((dT == dT))
565+ else aK("initial deposit requires all coins")
566+ if ((ev == ev))
520567 then {
521- let dU = toBigInt(dL)
522- let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523- let cP = if (dy)
568+ let ew = toBigInt(en)
569+ let ex = max([0, toInt(((eu * (sqrtBigInt((d + ((ew * d) / et)), 18, 18, DOWN) - d)) / d))])
570+ let dd = if (ec)
524571 then nil
525- else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526- let dW = bs(D(dE, aX), D(dD, aW))
527- let dX = G(dW, b)
528- let dY = {
529- let dZ = if (dB)
530- then $Tuple2(dG, dD)
531- else $Tuple2(dH, dE)
532- let dn = dZ._1
533- let ea = dZ._2
534- let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535- fraction((dV - eb), b, eb)
572+ else [IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bo(ek, el, ex, er, 0, 0, height, lastBlock.timestamp, 0, 0))]
573+ let ey = bF(D(ei, bk), D(eh, bj))
574+ let ez = H(ey, b)
575+ let eA = {
576+ let eB = if (ef)
577+ then $Tuple2(ek, eh)
578+ else $Tuple2(el, ei)
579+ let dS = eB._1
580+ let eC = eB._2
581+ let eD = toInt(fraction(eu, toBigInt((dS / 2)), toBigInt(eC)))
582+ fraction((ex - eD), b, eD)
536583 }
537- $Tuple4(dV, cP, du, dY)
584+ $Tuple5(ex, dd, dY, eA, ef)
538585 }
539586 else throw("Strict value is not equal to itself.")
540587 }
541588
542589
543-func ec (ed,dL,dx,X,Y) = {
544- let dy = (Y == unit)
545- let ee = [if ((dx == aT))
590+func eE (eF,en,eb,aa,ab) = {
591+ let ec = (ab == unit)
592+ let bS = aU()
593+ let bT = parseIntValue(bS[t])
594+ let bU = parseIntValue(bS[u])
595+ let eG = [if ((eb == bg))
546596 then true
547- else ay("invalid lp asset")]
548- if ((ee == ee))
597+ else aK("invalid lp asset")]
598+ if ((eG == eG))
549599 then {
550- let ef = if ((ed == aU))
600+ let eH = if ((eF == bh))
551601 then true
552- else if ((ed == aV))
602+ else if ((eF == bi))
553603 then false
554- else ay("invalid asset")
555- let eg = if (ef)
556- then toBigInt(bq(aM(aU)))
557- else toBigInt(bq(aM(aV)))
558- let eh = bq(aM(aU))
559- let ei = bq(aM(aV))
560- let ej = if (ef)
561- then eh
562- else ei
563- let ek = toBigInt(ej)
564- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565- let el = toBigInt(dL)
566- let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567- let en = ds(em, aE)
568- let eo = en._1
569- let du = en._2
570- let ep = if (ef)
571- then $Tuple4(eo, 0, (eh - em), ei)
572- else $Tuple4(0, eo, eh, (ei - em))
573- let eq = ep._1
574- let er = ep._2
575- let es = ep._3
576- let et = ep._4
577- let dO = bs(D(et, aX), D(es, aW))
578- let dP = G(dO, b)
579- let cP = if (dy)
604+ else aK("invalid asset")
605+ let eI = if (eH)
606+ then toBigInt(bD(aZ(bh)))
607+ else toBigInt(bD(aZ(bi)))
608+ let eJ = if (eH)
609+ then bT
610+ else bU
611+ let eK = bD(aZ(bh))
612+ let eL = bD(aZ(bi))
613+ let eM = if (eH)
614+ then eK
615+ else eL
616+ let eN = toBigInt(eM)
617+ let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
618+ let eO = toBigInt(en)
619+ let eP = max([0, toInt(((eI * (d - pow((d - ((eO * d) / eu)), 18, h, 0, 18, DOWN))) / d))])
620+ let eQ = dX(eP, aR)
621+ let eR = eQ._1
622+ let dY = eQ._2
623+ let eS = if (eH)
624+ then $Tuple4(eR, 0, (eK - eP), eL)
625+ else $Tuple4(0, eR, eK, (eL - eP))
626+ let eT = eS._1
627+ let eU = eS._2
628+ let eV = eS._3
629+ let eW = eS._4
630+ let eq = bF(D(eW, bk), D(eV, bj))
631+ let er = H(eq, b)
632+ let dd = if (ec)
580633 then nil
581- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582- let dW = bs(D(ei, aX), D(eh, aW))
583- let dX = G(dW, b)
584- let dY = {
585- let eu = (toInt(fraction(eg, el, dS)) * 2)
586- fraction((eo - eu), b, eu)
634+ else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), bz(eT, eU, en, er, height, lastBlock.timestamp)), IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er)]
635+ let ey = bF(D(eL, bk), D(eK, bj))
636+ let ez = H(ey, b)
637+ let eA = {
638+ let eX = (toInt(fraction(eI, eO, eu)) * 2)
639+ fraction((eR - eX), b, eX)
587640 }
588- $Tuple4(eo, cP, du, dY)
641+ $Tuple5(eR, dd, dY, eA, eH)
589642 }
590643 else throw("Strict value is not equal to itself.")
591644 }
592645
593646
594-func ev () = {
595- let dq = getString(Q())
596- if ($isInstanceOf(dq, "String"))
647+func eY () = {
648+ let dV = getString(T())
649+ if ($isInstanceOf(dV, "String"))
597650 then {
598- let ew = dq
599- fromBase58String(ew)
651+ let eZ = dV
652+ fromBase58String(eZ)
600653 }
601- else if ($isInstanceOf(dq, "Unit"))
654+ else if ($isInstanceOf(dV, "Unit"))
602655 then unit
603656 else throw("Match error")
604657 }
605658
606659
607-func ex () = {
608- let dq = getString(R())
609- if ($isInstanceOf(dq, "String"))
660+func fa () = {
661+ let dV = getString(U())
662+ if ($isInstanceOf(dV, "String"))
610663 then {
611- let ew = dq
612- fromBase58String(ew)
664+ let eZ = dV
665+ fromBase58String(eZ)
613666 }
614- else if ($isInstanceOf(dq, "Unit"))
667+ else if ($isInstanceOf(dV, "Unit"))
615668 then unit
616669 else throw("Match error")
617670 }
618671
619672
620-func ey (df) = {
621- let dq = ev()
622- if ($isInstanceOf(dq, "ByteVector"))
673+func fb (dK) = {
674+ let dV = eY()
675+ if ($isInstanceOf(dV, "ByteVector"))
623676 then {
624- let ez = dq
625- (df.callerPublicKey == ez)
677+ let fc = dV
678+ (dK.callerPublicKey == fc)
626679 }
627- else if ($isInstanceOf(dq, "Unit"))
628- then (df.caller == this)
680+ else if ($isInstanceOf(dV, "Unit"))
681+ then (dK.caller == this)
629682 else throw("Match error")
630683 }
631684
632685
633-func eA (df) = {
634- let eB = throw("Permission denied")
635- let dq = ev()
636- if ($isInstanceOf(dq, "ByteVector"))
686+func fd (dK) = {
687+ let fe = throw("Permission denied")
688+ let dV = eY()
689+ if ($isInstanceOf(dV, "ByteVector"))
637690 then {
638- let ez = dq
639- if ((df.callerPublicKey == ez))
691+ let fc = dV
692+ if ((dK.callerPublicKey == fc))
640693 then true
641- else eB
694+ else fe
642695 }
643- else if ($isInstanceOf(dq, "Unit"))
644- then if ((df.caller == this))
696+ else if ($isInstanceOf(dV, "Unit"))
697+ then if ((dK.caller == this))
645698 then true
646- else eB
699+ else fe
647700 else throw("Match error")
648701 }
649702
650703
651-@Callable(df)
652-func setManager (eC) = {
653- let eD = eA(df)
654- if ((eD == eD))
704+@Callable(dK)
705+func setManager (ff) = {
706+ let fg = fd(dK)
707+ if ((fg == fg))
655708 then {
656- let eE = fromBase58String(eC)
657- if ((eE == eE))
658- then [StringEntry(R(), eC)]
709+ let fh = fromBase58String(ff)
710+ if ((fh == fh))
711+ then [StringEntry(U(), ff)]
659712 else throw("Strict value is not equal to itself.")
660713 }
661714 else throw("Strict value is not equal to itself.")
663716
664717
665718
666-@Callable(df)
719+@Callable(dK)
667720 func confirmManager () = {
668- let eF = ex()
669- let eG = if (isDefined(eF))
721+ let fi = fa()
722+ let fj = if (isDefined(fi))
670723 then true
671724 else throw("No pending manager")
672- if ((eG == eG))
725+ if ((fj == fj))
673726 then {
674- let eH = if ((df.callerPublicKey == value(eF)))
727+ let fk = if ((dK.callerPublicKey == value(fi)))
675728 then true
676729 else throw("You are not pending manager")
677- if ((eH == eH))
678- then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
730+ if ((fk == fk))
731+ then [StringEntry(T(), toBase58String(value(fi))), DeleteEntry(U())]
679732 else throw("Strict value is not equal to itself.")
680733 }
681734 else throw("Strict value is not equal to itself.")
683736
684737
685738
686-@Callable(df)
687-func put (ck,eI) = if ((0 > ck))
739+@Callable(dK)
740+func put (cy,fl) = if ((0 > cy))
688741 then throw("Invalid slippageTolerance passed")
689742 else {
690- let dl = di(df, ck, true)
691- let cM = dl._2
692- let bR = dl._7
693- let ci = dl._9
694- let cN = dl._10
695- let cO = dl._11
696- let eJ = dl._12
697- let eK = dl._13
698- let do = invoke(aA, "emit", [cM], nil)
699- if ((do == do))
743+ let dQ = dN(dK, cy, true)
744+ let da = dQ._2
745+ let cf = dQ._7
746+ let cw = dQ._9
747+ let db = dQ._10
748+ let dc = dQ._11
749+ let fm = dQ._12
750+ let fn = dQ._13
751+ let dO = toBigInt(value(dK.payments[0]).amount)
752+ let dP = toBigInt(value(dK.payments[1]).amount)
753+ let dr = dk(dO, dP, toBigInt(0))
754+ if ((dr == dr))
700755 then {
701- let dp = {
702- let dq = do
703- if ($isInstanceOf(dq, "Address"))
704- then {
705- let dr = dq
706- invoke(dr, "emit", [cM], nil)
756+ let dT = invoke(aN, "emit", [da], nil)
757+ if ((dT == dT))
758+ then {
759+ let dU = {
760+ let dV = dT
761+ if ($isInstanceOf(dV, "Address"))
762+ then {
763+ let dW = dV
764+ invoke(dW, "emit", [da], nil)
765+ }
766+ else unit
707767 }
708- else unit
709- }
710- if ((dp == dp))
711- then {
712- let eL = if ((cN > 0))
713- then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714- else nil
715- if ((eL == eL))
768+ if ((dU == dU))
716769 then {
717- let eM = if ((cO > 0))
718- then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
770+ let fo = if ((db > 0))
771+ then invoke(bn, "put", nil, [AttachedPayment(fm, db)])
719772 else nil
720- if ((eM == eM))
773+ if ((fo == fo))
721774 then {
722- let eN = if (eI)
775+ let fp = if ((dc > 0))
776+ then invoke(bn, "put", nil, [AttachedPayment(fn, dc)])
777+ else nil
778+ if ((fp == fp))
723779 then {
724- let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725- if ((eO == eO))
726- then nil
780+ let fq = if (fl)
781+ then {
782+ let fr = invoke(bm, "stake", nil, [AttachedPayment(cf, da)])
783+ if ((fr == fr))
784+ then nil
785+ else throw("Strict value is not equal to itself.")
786+ }
787+ else [ScriptTransfer(dK.caller, da, cf)]
788+ let fs = ds(0, 0, 0)
789+ if ((fs == fs))
790+ then {
791+ let dj = fs._2
792+ let ft = fs._1
793+ let fu = dw(dr, dj)
794+ if ((fu == fu))
795+ then ((cw ++ fq) ++ ft)
796+ else throw("Strict value is not equal to itself.")
797+ }
727798 else throw("Strict value is not equal to itself.")
728799 }
729- else [ScriptTransfer(df.caller, cM, bR)]
730- (ci ++ eN)
800+ else throw("Strict value is not equal to itself.")
731801 }
732802 else throw("Strict value is not equal to itself.")
733803 }
740810
741811
742812
743-@Callable(df)
744-func putForFree (eP) = if ((0 > eP))
813+@Callable(dK)
814+func putForFree (fv) = if ((0 > fv))
745815 then throw("Invalid value passed")
746816 else {
747- let dl = di(df, eP, false)
748- dl._9
817+ let dQ = dN(dK, fv, false)
818+ let cw = dQ._9
819+ let dO = toBigInt(value(dK.payments[0]).amount)
820+ let dP = toBigInt(value(dK.payments[1]).amount)
821+ let dr = dk(dO, dP, toBigInt(0))
822+ if ((dr == dr))
823+ then {
824+ let fw = ds(0, 0, 0)
825+ let ft = fw._1
826+ let dj = fw._2
827+ let fu = dw(dr, dj)
828+ if ((fu == fu))
829+ then (cw ++ ft)
830+ else throw("Strict value is not equal to itself.")
831+ }
832+ else throw("Strict value is not equal to itself.")
749833 }
750834
751835
752836
753-@Callable(df)
754-func putOneTkn (eQ,eR) = {
755- let eS = {
756- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757- if ($isInstanceOf(aD, "Boolean"))
758- then aD
759- else throw(($getType(aD) + " couldn't be cast to Boolean"))
837+@Callable(dK)
838+func putOneTkn (fx,fy) = {
839+ let fz = {
840+ let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
841+ if ($isInstanceOf(aQ, "Boolean"))
842+ then aQ
843+ else throw(($getType(aQ) + " couldn't be cast to Boolean"))
760844 }
761- let eT = if (if (if (aF())
845+ let fA = if (if (if (aS())
762846 then true
763- else (aS == l))
847+ else (bf == l))
764848 then true
765- else (aS == n))
849+ else (bf == n))
766850 then true
767- else eS
768- let ee = [if (if (!(eT))
851+ else fz
852+ let eG = [if (if (!(fA))
769853 then true
770- else ey(df))
854+ else fb(dK))
771855 then true
772- else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
856+ else aK("put operation is blocked by admin"), if ((size(dK.payments) == 1))
773857 then true
774- else ay("exactly 1 payment are expected")]
775- if ((ee == ee))
858+ else aK("exactly 1 payment are expected")]
859+ if ((eG == eG))
776860 then {
777- let eU = df.payments[0]
778- let dx = eU.assetId
779- let dw = eU.amount
780- let X = df.caller
781- let Y = df.transactionId
782- let eV = dv(dw, dx, X, Y)
783- if ((eV == eV))
861+ let fB = dK.payments[0]
862+ let eb = fB.assetId
863+ let ea = fB.amount
864+ let dr = if ((eb == bh))
865+ then dk(toBigInt(ea), toBigInt(0), toBigInt(0))
866+ else if ((eb == bi))
867+ then dk(toBigInt(0), toBigInt(ea), toBigInt(0))
868+ else aK("payment asset is not supported")
869+ if ((dr == dr))
784870 then {
785- let eW = eV._4
786- let du = eV._3
787- let cP = eV._2
788- let eX = eV._1
789- let eY = if (if ((eQ > 0))
790- then (eQ > eX)
791- else false)
792- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793- else eX
794- let do = dm(eY)
795- if ((do == do))
871+ let aa = dK.caller
872+ let ab = dK.transactionId
873+ let fC = dZ(ea, eb, aa, ab)
874+ if ((fC == fC))
796875 then {
797- let eN = if (eR)
876+ let ef = fC._5
877+ let fD = fC._4
878+ let dY = fC._3
879+ let dd = fC._2
880+ let fE = fC._1
881+ let fF = if (if ((fx > 0))
882+ then (fx > fE)
883+ else false)
884+ then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
885+ else fE
886+ let dT = dR(fF)
887+ if ((dT == dT))
798888 then {
799- let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800- if ((eZ == eZ))
801- then nil
889+ let fq = if (fy)
890+ then {
891+ let fG = invoke(bm, "stake", nil, [AttachedPayment(bg, fF)])
892+ if ((fG == fG))
893+ then nil
894+ else throw("Strict value is not equal to itself.")
895+ }
896+ else [ScriptTransfer(dK.caller, fF, bg)]
897+ let fH = if ((dY > 0))
898+ then [ScriptTransfer(aO, dY, eb)]
899+ else nil
900+ let fI = if ((this == aO))
901+ then $Tuple2(0, 0)
902+ else if (ef)
903+ then $Tuple2(-(dY), 0)
904+ else $Tuple2(0, -(dY))
905+ let dt = fI._1
906+ let du = fI._2
907+ let fJ = ds(dt, du, 0)
908+ let ft = fJ._1
909+ let dj = fJ._2
910+ let dD = value(getString(ai))
911+ let fu = dw(dr, dj)
912+ if ((fu == fu))
913+ then $Tuple2((((dd ++ fq) ++ fH) ++ ft), fF)
802914 else throw("Strict value is not equal to itself.")
803- }
804- else [ScriptTransfer(df.caller, eY, aT)]
805- let fa = if ((du > 0))
806- then [ScriptTransfer(aB, du, dx)]
807- else nil
808- $Tuple2(((cP ++ eN) ++ fa), eY)
809- }
810- else throw("Strict value is not equal to itself.")
811- }
812- else throw("Strict value is not equal to itself.")
813- }
814- else throw("Strict value is not equal to itself.")
815- }
816-
817-
818-
819-@Callable(df)
820-func putOneTknREADONLY (dx,dw) = {
821- let fb = dv(dw, aK(dx), unit, unit)
822- let eX = fb._1
823- let cP = fb._2
824- let du = fb._3
825- let eW = fb._4
826- $Tuple2(nil, $Tuple3(eX, du, eW))
827- }
828-
829-
830-
831-@Callable(df)
832-func getOneTkn (fc,eQ) = {
833- let eS = {
834- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aD, "Boolean"))
836- then aD
837- else throw(($getType(aD) + " couldn't be cast to Boolean"))
838- }
839- let fd = if (if (aF())
840- then true
841- else (aS == n))
842- then true
843- else eS
844- let ee = [if (if (!(fd))
845- then true
846- else ey(df))
847- then true
848- else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849- then true
850- else ay("exactly 1 payment are expected")]
851- if ((ee == ee))
852- then {
853- let ed = aK(fc)
854- let eU = df.payments[0]
855- let dx = eU.assetId
856- let dL = eU.amount
857- let X = df.caller
858- let Y = df.transactionId
859- let fe = ec(ed, dL, dx, X, Y)
860- if ((fe == fe))
861- then {
862- let eW = fe._4
863- let du = fe._3
864- let cP = fe._2
865- let ff = fe._1
866- let dn = if (if ((eQ > 0))
867- then (eQ > ff)
868- else false)
869- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870- else ff
871- let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872- if ((fg == fg))
873- then {
874- let fh = [ScriptTransfer(X, dn, ed)]
875- let fa = if ((du > 0))
876- then [ScriptTransfer(aB, du, ed)]
877- else nil
878- $Tuple2(((cP ++ fh) ++ fa), dn)
879- }
880- else throw("Strict value is not equal to itself.")
881- }
882- else throw("Strict value is not equal to itself.")
883- }
884- else throw("Strict value is not equal to itself.")
885- }
886-
887-
888-
889-@Callable(df)
890-func getOneTknREADONLY (ed,dL) = {
891- let fi = ec(aK(ed), dL, aT, unit, unit)
892- let ff = fi._1
893- let cP = fi._2
894- let du = fi._3
895- let eW = fi._4
896- $Tuple2(nil, $Tuple3(ff, du, eW))
897- }
898-
899-
900-
901-@Callable(df)
902-func unstakeAndGetOneTkn (fj,fc,eQ) = {
903- let eS = {
904- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905- if ($isInstanceOf(aD, "Boolean"))
906- then aD
907- else throw(($getType(aD) + " couldn't be cast to Boolean"))
908- }
909- let fd = if (if (aF())
910- then true
911- else (aS == n))
912- then true
913- else eS
914- let ee = [if (if (!(fd))
915- then true
916- else ey(df))
917- then true
918- else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919- then true
920- else ay("no payments are expected")]
921- if ((ee == ee))
922- then {
923- let ed = aK(fc)
924- let X = df.caller
925- let Y = df.transactionId
926- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927- if ((fk == fk))
928- then {
929- let fl = ec(ed, fj, aT, X, Y)
930- if ((fl == fl))
931- then {
932- let eW = fl._4
933- let du = fl._3
934- let cP = fl._2
935- let ff = fl._1
936- let dn = if (if ((eQ > 0))
937- then (eQ > ff)
938- else false)
939- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940- else ff
941- let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942- if ((fg == fg))
943- then {
944- let fh = [ScriptTransfer(df.caller, dn, ed)]
945- let fa = if ((du > 0))
946- then [ScriptTransfer(aB, du, ed)]
947- else nil
948- $Tuple2(((cP ++ fh) ++ fa), dn)
949915 }
950916 else throw("Strict value is not equal to itself.")
951917 }
958924
959925
960926
961-@Callable(df)
962-func get () = {
963- let cA = de(df)
964- let fm = cA._1
965- let ch = cA._2
966- let dh = cA._3
967- let bP = cA._4
968- let ci = cA._5
969- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970- if ((fn == fn))
971- then ci
972- else throw("Strict value is not equal to itself.")
927+@Callable(dK)
928+func putOneTknREADONLY (eb,ea) = {
929+ let fK = dZ(ea, aX(eb), unit, unit)
930+ let fE = fK._1
931+ let dd = fK._2
932+ let dY = fK._3
933+ let fD = fK._4
934+ let ef = fK._5
935+ $Tuple2(nil, $Tuple3(fE, dY, fD))
973936 }
974937
975938
976939
977-@Callable(df)
978-func getNoLess (fo,fp) = {
979- let cA = de(df)
980- let cg = cA._1
981- let ch = cA._2
982- let dh = cA._3
983- let bP = cA._4
984- let ci = cA._5
985- if ((fo > cg))
986- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987- else if ((fp > ch))
988- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989- else {
990- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991- if ((fn == fn))
992- then ci
993- else throw("Strict value is not equal to itself.")
994- }
995- }
996-
997-
998-
999-@Callable(df)
1000-func unstakeAndGet (dn) = {
1001- let fq = if ((size(df.payments) != 0))
1002- then throw("No payments are expected")
1003- else true
1004- if ((fq == fq))
940+@Callable(dK)
941+func getOneTkn (fL,fx) = {
942+ let fz = {
943+ let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
944+ if ($isInstanceOf(aQ, "Boolean"))
945+ then aQ
946+ else throw(($getType(aQ) + " couldn't be cast to Boolean"))
947+ }
948+ let fM = if (if (aS())
949+ then true
950+ else (bf == n))
951+ then true
952+ else fz
953+ let eG = [if (if (!(fM))
954+ then true
955+ else fb(dK))
956+ then true
957+ else aK("get operation is blocked by admin"), if ((size(dK.payments) == 1))
958+ then true
959+ else aK("exactly 1 payment are expected")]
960+ if ((eG == eG))
1005961 then {
1006- let bE = aH()
1007- let bR = fromBase58String(bE[q])
1008- let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009- if ((fk == fk))
962+ let eF = aX(fL)
963+ let fB = dK.payments[0]
964+ let eb = fB.assetId
965+ let en = fB.amount
966+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
967+ if ((dr == dr))
1010968 then {
1011- let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012- let bU = parseIntValue(cA._9)
1013- let ci = cA._10
1014- let fr = if (if (aF())
1015- then true
1016- else (bU == n))
1017- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018- else true
1019- if ((fr == fr))
969+ let aa = dK.caller
970+ let ab = dK.transactionId
971+ let fN = eE(eF, en, eb, aa, ab)
972+ if ((fN == fN))
1020973 then {
1021- let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022- if ((fn == fn))
1023- then ci
974+ let eH = fN._5
975+ let fD = fN._4
976+ let dY = fN._3
977+ let dd = fN._2
978+ let fO = fN._1
979+ let dS = if (if ((fx > 0))
980+ then (fx > fO)
981+ else false)
982+ then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
983+ else fO
984+ let fP = invoke(aN, "burn", [en], [AttachedPayment(eb, en)])
985+ if ((fP == fP))
986+ then {
987+ let fQ = [ScriptTransfer(aa, dS, eF)]
988+ let fH = if ((dY > 0))
989+ then [ScriptTransfer(aO, dY, eF)]
990+ else nil
991+ let fR = {
992+ let fS = if ((this == aO))
993+ then 0
994+ else dY
995+ if (eH)
996+ then $Tuple2(-((dS + fS)), 0)
997+ else $Tuple2(0, -((dS + fS)))
998+ }
999+ let dt = fR._1
1000+ let du = fR._2
1001+ let fT = ds(dt, du, 0)
1002+ let ft = fT._1
1003+ let dj = fT._2
1004+ let fu = dw(dr, dj)
1005+ if ((fu == fu))
1006+ then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1007+ else throw("Strict value is not equal to itself.")
1008+ }
10241009 else throw("Strict value is not equal to itself.")
10251010 }
10261011 else throw("Strict value is not equal to itself.")
10321017
10331018
10341019
1035-@Callable(df)
1036-func unstakeAndGetNoLess (fj,fs,fp) = {
1037- let fd = if (aF())
1020+@Callable(dK)
1021+func getOneTknREADONLY (eF,en) = {
1022+ let fU = eE(aX(eF), en, bg, unit, unit)
1023+ let fO = fU._1
1024+ let dd = fU._2
1025+ let dY = fU._3
1026+ let fD = fU._4
1027+ let eH = fU._5
1028+ $Tuple2(nil, $Tuple3(fO, dY, fD))
1029+ }
1030+
1031+
1032+
1033+@Callable(dK)
1034+func unstakeAndGetOneTkn (fV,fL,fx) = {
1035+ let fz = {
1036+ let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1037+ if ($isInstanceOf(aQ, "Boolean"))
1038+ then aQ
1039+ else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1040+ }
1041+ let fM = if (if (aS())
10381042 then true
1039- else (aS == n)
1040- let ee = [if (!(fd))
1043+ else (bf == n))
10411044 then true
1042- else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
1045+ else fz
1046+ let eG = [if (if (!(fM))
10431047 then true
1044- else throw("no payments are expected")]
1045- if ((ee == ee))
1048+ else fb(dK))
1049+ then true
1050+ else aK("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1051+ then true
1052+ else aK("no payments are expected")]
1053+ if ((eG == eG))
10461054 then {
1047- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048- if ((fk == fk))
1055+ let eF = aX(fL)
1056+ let aa = dK.caller
1057+ let ab = dK.transactionId
1058+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1059+ if ((dr == dr))
10491060 then {
1050- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051- let cg = cA._1
1052- let ch = cA._2
1053- let ci = cA._10
1054- let ft = [if ((cg >= fs))
1055- then true
1056- else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057- then true
1058- else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059- if ((ft == ft))
1061+ let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1062+ if ((fW == fW))
10601063 then {
1061- let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062- if ((fn == fn))
1063- then ci
1064+ let fX = eE(eF, fV, bg, aa, ab)
1065+ if ((fX == fX))
1066+ then {
1067+ let eH = fX._5
1068+ let fD = fX._4
1069+ let dY = fX._3
1070+ let dd = fX._2
1071+ let fO = fX._1
1072+ let dS = if (if ((fx > 0))
1073+ then (fx > fO)
1074+ else false)
1075+ then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
1076+ else fO
1077+ let fP = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1078+ if ((fP == fP))
1079+ then {
1080+ let fQ = [ScriptTransfer(dK.caller, dS, eF)]
1081+ let fH = if ((dY > 0))
1082+ then [ScriptTransfer(aO, dY, eF)]
1083+ else nil
1084+ let fY = {
1085+ let fS = if ((this == aO))
1086+ then 0
1087+ else dY
1088+ if (eH)
1089+ then $Tuple2(-((dS + fS)), 0)
1090+ else $Tuple2(0, -((dS + fS)))
1091+ }
1092+ let dt = fY._1
1093+ let du = fY._2
1094+ let fZ = ds(dt, du, 0)
1095+ let ft = fZ._1
1096+ let dj = fZ._2
1097+ let fu = dw(dr, dj)
1098+ if ((fu == fu))
1099+ then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1100+ else throw("Strict value is not equal to itself.")
1101+ }
1102+ else throw("Strict value is not equal to itself.")
1103+ }
10641104 else throw("Strict value is not equal to itself.")
10651105 }
10661106 else throw("Strict value is not equal to itself.")
10721112
10731113
10741114
1075-@Callable(df)
1076-func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077- then throw("permissions denied")
1078- else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079-
1080-
1081-
1082-@Callable(df)
1083-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084-
1085-
1086-
1087-@Callable(df)
1088-func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089-
1090-
1091-
1092-@Callable(df)
1093-func calcPricesWrapperREADONLY (by,bz,bD) = {
1094- let bM = bC(by, bz, bD)
1095- $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
1115+@Callable(dK)
1116+func get () = {
1117+ let cO = dJ(dK)
1118+ let ga = cO._1
1119+ let cv = cO._2
1120+ let dM = cO._3
1121+ let cd = cO._4
1122+ let cw = cO._5
1123+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1124+ if ((dr == dr))
1125+ then {
1126+ let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1127+ if ((gb == gb))
1128+ then {
1129+ let gc = ds(-(ga), -(cv), 0)
1130+ let ft = gc._1
1131+ let dj = gc._2
1132+ let fu = dw(dr, dj)
1133+ if ((fu == fu))
1134+ then (cw ++ ft)
1135+ else throw("Strict value is not equal to itself.")
1136+ }
1137+ else throw("Strict value is not equal to itself.")
1138+ }
1139+ else throw("Strict value is not equal to itself.")
10961140 }
10971141
10981142
10991143
1100-@Callable(df)
1144+@Callable(dK)
1145+func getNoLess (gd,ge) = {
1146+ let cO = dJ(dK)
1147+ let cu = cO._1
1148+ let cv = cO._2
1149+ let dM = cO._3
1150+ let cd = cO._4
1151+ let cw = cO._5
1152+ if ((gd > cu))
1153+ then throw(((("noLessThenAmtAsset failed: " + toString(cu)) + " < ") + toString(gd)))
1154+ else if ((ge > cv))
1155+ then throw(((("noLessThenPriceAsset failed: " + toString(cv)) + " < ") + toString(ge)))
1156+ else {
1157+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1158+ if ((dr == dr))
1159+ then {
1160+ let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1161+ if ((gb == gb))
1162+ then {
1163+ let gf = ds(-(cu), -(cv), 0)
1164+ let ft = gf._1
1165+ let dj = gf._2
1166+ let fu = dw(dr, dj)
1167+ if ((fu == fu))
1168+ then (cw ++ ft)
1169+ else throw("Strict value is not equal to itself.")
1170+ }
1171+ else throw("Strict value is not equal to itself.")
1172+ }
1173+ else throw("Strict value is not equal to itself.")
1174+ }
1175+ }
1176+
1177+
1178+
1179+@Callable(dK)
1180+func unstakeAndGet (dS) = {
1181+ let gg = if ((size(dK.payments) != 0))
1182+ then throw("No payments are expected")
1183+ else true
1184+ if ((gg == gg))
1185+ then {
1186+ let bS = aU()
1187+ let cf = fromBase58String(bS[q])
1188+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1189+ if ((dr == dr))
1190+ then {
1191+ let fW = invoke(bm, "unstake", [toBase58String(cf), dS], nil)
1192+ if ((fW == fW))
1193+ then {
1194+ let cO = cb(toBase58String(dK.transactionId), toBase58String(cf), dS, dK.caller)
1195+ let cu = cO._1
1196+ let cv = cO._2
1197+ let ci = parseIntValue(cO._9)
1198+ let cw = cO._10
1199+ let gh = if (if (aS())
1200+ then true
1201+ else (ci == n))
1202+ then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
1203+ else true
1204+ if ((gh == gh))
1205+ then {
1206+ let gb = invoke(aN, "burn", [dS], [AttachedPayment(cf, dS)])
1207+ if ((gb == gb))
1208+ then {
1209+ let gi = ds(-(cu), -(cv), 0)
1210+ let ft = gi._1
1211+ let dj = gi._2
1212+ let fu = dw(dr, dj)
1213+ if ((fu == fu))
1214+ then (cw ++ ft)
1215+ else throw("Strict value is not equal to itself.")
1216+ }
1217+ else throw("Strict value is not equal to itself.")
1218+ }
1219+ else throw("Strict value is not equal to itself.")
1220+ }
1221+ else throw("Strict value is not equal to itself.")
1222+ }
1223+ else throw("Strict value is not equal to itself.")
1224+ }
1225+ else throw("Strict value is not equal to itself.")
1226+ }
1227+
1228+
1229+
1230+@Callable(dK)
1231+func unstakeAndGetNoLess (fV,gj,ge) = {
1232+ let fM = if (aS())
1233+ then true
1234+ else (bf == n)
1235+ let eG = [if (!(fM))
1236+ then true
1237+ else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1238+ then true
1239+ else throw("no payments are expected")]
1240+ if ((eG == eG))
1241+ then {
1242+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1243+ if ((dr == dr))
1244+ then {
1245+ let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1246+ if ((fW == fW))
1247+ then {
1248+ let cO = cb(toBase58String(dK.transactionId), toBase58String(bg), fV, dK.caller)
1249+ let cu = cO._1
1250+ let cv = cO._2
1251+ let cw = cO._10
1252+ let gk = [if ((cu >= gj))
1253+ then true
1254+ else throw(makeString(["amount asset amount to receive is less than ", toString(gj)], "")), if ((cv >= ge))
1255+ then true
1256+ else throw(makeString(["price asset amount to receive is less than ", toString(ge)], ""))]
1257+ if ((gk == gk))
1258+ then {
1259+ let gb = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1260+ if ((gb == gb))
1261+ then {
1262+ let gl = ds(-(cu), -(cv), 0)
1263+ let ft = gl._1
1264+ let dj = gl._2
1265+ let fu = dw(dr, dj)
1266+ if ((fu == fu))
1267+ then (cw ++ ft)
1268+ else throw("Strict value is not equal to itself.")
1269+ }
1270+ else throw("Strict value is not equal to itself.")
1271+ }
1272+ else throw("Strict value is not equal to itself.")
1273+ }
1274+ else throw("Strict value is not equal to itself.")
1275+ }
1276+ else throw("Strict value is not equal to itself.")
1277+ }
1278+ else throw("Strict value is not equal to itself.")
1279+ }
1280+
1281+
1282+
1283+@Callable(dK)
1284+func activate (gm,gn) = if ((toString(dK.caller) != toString(aN)))
1285+ then throw("permissions denied")
1286+ else $Tuple2([StringEntry(ad(), gm), StringEntry(ae(), gn)], "success")
1287+
1288+
1289+
1290+@Callable(dK)
1291+func refreshKLp () = {
1292+ let go = valueOrElse(getInteger(aj), 0)
1293+ let gp = if (((height - go) >= am))
1294+ then unit
1295+ else aK(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1296+ if ((gp == gp))
1297+ then {
1298+ let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
1299+ let gq = ds(0, 0, 0)
1300+ let gr = gq._1
1301+ let dj = gq._2
1302+ let dv = if ((dD != dj))
1303+ then gr
1304+ else aK("nothing to refresh")
1305+ $Tuple2(dv, toString(dj))
1306+ }
1307+ else throw("Strict value is not equal to itself.")
1308+ }
1309+
1310+
1311+
1312+@Callable(dK)
1313+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1314+
1315+
1316+
1317+@Callable(dK)
1318+func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1319+
1320+
1321+
1322+@Callable(dK)
1323+func calcPricesWrapperREADONLY (bM,bN,bR) = {
1324+ let ca = bQ(bM, bN, bR)
1325+ $Tuple2(nil, [toString(ca[0]), toString(ca[1]), toString(ca[2])])
1326+ }
1327+
1328+
1329+
1330+@Callable(dK)
11011331 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11021332
11031333
11041334
1105-@Callable(df)
1106-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1335+@Callable(dK)
1336+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
11071337
11081338
11091339
1110-@Callable(df)
1111-func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1340+@Callable(dK)
1341+func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
11121342
11131343
11141344
1115-@Callable(df)
1116-func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1345+@Callable(dK)
1346+func estimatePutOperationWrapperREADONLY (cc,cy,cz,cA,cB,cC,aa,cD,cE) = $Tuple2(nil, cx(cc, cy, cz, cA, cB, cC, aa, cD, cE))
11171347
11181348
11191349
1120-@Callable(df)
1121-func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122- let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123- $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
1350+@Callable(dK)
1351+func estimateGetOperationWrapperREADONLY (cc,cd,ce,aa) = {
1352+ let cO = cb(cc, cd, ce, addressFromStringValue(aa))
1353+ $Tuple2(nil, $Tuple10(cO._1, cO._2, cO._3, cO._4, cO._5, cO._6, cO._7, toString(cO._8), cO._9, cO._10))
11241354 }
11251355
11261356
11271357
1128-@Callable(df)
1358+@Callable(dK)
11291359 func statsREADONLY () = {
1130- let bE = aH()
1131- let bR = fromBase58String(bE[q])
1132- let cS = bE[r]
1133- let cT = bE[s]
1134- let ct = bE[v]
1135- let cu = bE[w]
1136- let bF = parseIntValue(bE[t])
1137- let bG = parseIntValue(bE[u])
1138- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139- let cU = bq(cS)
1140- let cV = bq(cT)
1141- let fx = if ((fw == 0))
1360+ let bS = aU()
1361+ let cf = fromBase58String(bS[q])
1362+ let gs = bS[r]
1363+ let gt = bS[s]
1364+ let cH = bS[v]
1365+ let cI = bS[w]
1366+ let bT = parseIntValue(bS[t])
1367+ let bU = parseIntValue(bS[u])
1368+ let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1369+ let gv = bD(gs)
1370+ let gw = bD(gt)
1371+ let gx = if ((gu == 0))
11421372 then [e, e, e]
1143- else bC(cU, cV, fw)
1144- let cb = 0
1145- let fy = G(fx[1], b)
1146- let fz = G(fx[2], b)
1147- let fA = value(getInteger(aA, am(toString(this))))
1148- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
1373+ else bQ(gv, gw, gu)
1374+ let cp = 0
1375+ let gy = H(gx[1], b)
1376+ let gz = H(gx[2], b)
1377+ let gA = value(getInteger(aN, ax(toString(this))))
1378+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gv), toString(gw), toString(gu), toString(cp), toString(gy), toString(gz), toString(gA)], j))
11491379 }
11501380
11511381
11521382
1153-@Callable(df)
1154-func evaluatePutByAmountAssetREADONLY (cl) = {
1155- let bE = aH()
1156- let bR = fromBase58String(bE[q])
1157- let cr = bE[r]
1158- let bS = fromBase58String(cr)
1159- let cs = bE[s]
1160- let bT = fromBase58String(cs)
1161- let bF = parseIntValue(bE[t])
1162- let bG = parseIntValue(bE[u])
1163- let bU = bE[p]
1164- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165- let cU = bq(cr)
1166- let cV = bq(cs)
1167- let bA = D(cU, bF)
1168- let bB = D(cV, bG)
1169- let ca = if ((fw == 0))
1383+@Callable(dK)
1384+func evaluatePutByAmountAssetREADONLY (cz) = {
1385+ let bS = aU()
1386+ let cf = fromBase58String(bS[q])
1387+ let cF = bS[r]
1388+ let cg = fromBase58String(cF)
1389+ let cG = bS[s]
1390+ let ch = fromBase58String(cG)
1391+ let bT = parseIntValue(bS[t])
1392+ let bU = parseIntValue(bS[u])
1393+ let ci = bS[p]
1394+ let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1395+ let gv = bD(cF)
1396+ let gw = bD(cG)
1397+ let bO = D(gv, bT)
1398+ let bP = D(gw, bU)
1399+ let co = if ((gu == 0))
11701400 then e
1171- else bs(bB, bA)
1172- let cx = D(cl, bF)
1173- let cy = fraction(cx, ca, d)
1174- let cn = G(cy, bG)
1175- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176- let cI = dl._1
1177- let fB = dl._3
1178- let bW = dl._4
1179- let bY = dl._5
1180- let bV = dl._6
1181- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1401+ else bF(bP, bO)
1402+ let cL = D(cz, bT)
1403+ let cM = fraction(cL, co, d)
1404+ let cB = H(cM, bU)
1405+ let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1406+ let cW = dQ._1
1407+ let gB = dQ._3
1408+ let ck = dQ._4
1409+ let cm = dQ._5
1410+ let cj = dQ._6
1411+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
11821412 }
11831413
11841414
11851415
1186-@Callable(df)
1187-func evaluatePutByPriceAssetREADONLY (cn) = {
1188- let bE = aH()
1189- let bR = fromBase58String(bE[q])
1190- let cr = bE[r]
1191- let bS = fromBase58String(cr)
1192- let cs = bE[s]
1193- let bT = fromBase58String(cs)
1194- let bF = parseIntValue(bE[t])
1195- let bG = parseIntValue(bE[u])
1196- let bU = bE[p]
1197- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198- let fC = bq(cr)
1199- let fD = bq(cs)
1200- let fE = D(fC, bF)
1201- let fF = D(fD, bG)
1202- let ca = if ((fw == 0))
1416+@Callable(dK)
1417+func evaluatePutByPriceAssetREADONLY (cB) = {
1418+ let bS = aU()
1419+ let cf = fromBase58String(bS[q])
1420+ let cF = bS[r]
1421+ let cg = fromBase58String(cF)
1422+ let cG = bS[s]
1423+ let ch = fromBase58String(cG)
1424+ let bT = parseIntValue(bS[t])
1425+ let bU = parseIntValue(bS[u])
1426+ let ci = bS[p]
1427+ let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1428+ let gC = bD(cF)
1429+ let gD = bD(cG)
1430+ let gE = D(gC, bT)
1431+ let gF = D(gD, bU)
1432+ let co = if ((gu == 0))
12031433 then e
1204- else bs(fF, fE)
1205- let cy = D(cn, bG)
1206- let cx = fraction(cy, d, ca)
1207- let cl = G(cx, bF)
1208- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209- let cI = dl._1
1210- let fB = dl._3
1211- let bW = dl._4
1212- let bY = dl._5
1213- let bV = dl._6
1214- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1434+ else bF(gF, gE)
1435+ let cM = D(cB, bU)
1436+ let cL = fraction(cM, d, co)
1437+ let cz = H(cL, bT)
1438+ let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1439+ let cW = dQ._1
1440+ let gB = dQ._3
1441+ let ck = dQ._4
1442+ let cm = dQ._5
1443+ let cj = dQ._6
1444+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
12151445 }
12161446
12171447
12181448
1219-@Callable(df)
1220-func evaluateGetREADONLY (fG,fH) = {
1221- let cA = bN("", fG, fH, this)
1222- let cg = cA._1
1223- let ch = cA._2
1224- let bW = cA._5
1225- let bY = cA._6
1226- let bV = cA._7
1227- let cb = cA._8
1228- let bU = parseIntValue(cA._9)
1229- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
1449+@Callable(dK)
1450+func evaluateGetREADONLY (gG,gH) = {
1451+ let cO = cb("", gG, gH, this)
1452+ let cu = cO._1
1453+ let cv = cO._2
1454+ let ck = cO._5
1455+ let cm = cO._6
1456+ let cj = cO._7
1457+ let cp = cO._8
1458+ let ci = parseIntValue(cO._9)
1459+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cu), toString(cv), toString(ck), toString(cm), toString(cj), toString(cp), toString(ci)], j))
12301460 }
12311461
12321462
1233-@Verifier(fI)
1234-func fJ () = {
1235- let fK = {
1236- let dq = ev()
1237- if ($isInstanceOf(dq, "ByteVector"))
1463+@Verifier(gI)
1464+func gJ () = {
1465+ let gK = {
1466+ let dV = eY()
1467+ if ($isInstanceOf(dV, "ByteVector"))
12381468 then {
1239- let ez = dq
1240- ez
1469+ let fc = dV
1470+ fc
12411471 }
1242- else if ($isInstanceOf(dq, "Unit"))
1243- then fI.senderPublicKey
1472+ else if ($isInstanceOf(dV, "Unit"))
1473+ then gI.senderPublicKey
12441474 else throw("Match error")
12451475 }
1246- let dq = fI
1247- if ($isInstanceOf(dq, "Order"))
1476+ let dV = gI
1477+ if ($isInstanceOf(dV, "Order"))
12481478 then {
1249- let cR = dq
1250- let fL = aG()
1251- let ar = cQ(cR)
1252- let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253- let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254- if (if (if (ar)
1255- then as
1479+ let dz = dV
1480+ let gL = aT()
1481+ let gM = dy(dz)
1482+ let aC = gM._1
1483+ let aD = gM._2
1484+ let aE = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1485+ let aF = sigVerify(dz.bodyBytes, dz.proofs[1], gL)
1486+ if (if (if (aC)
1487+ then aE
12561488 else false)
1257- then at
1489+ then aF
12581490 else false)
12591491 then true
1260- else aq(ar, as, at)
1492+ else aB(aC, aD, aE, aF)
12611493 }
1262- else if ($isInstanceOf(dq, "SetScriptTransaction"))
1494+ else if ($isInstanceOf(dV, "SetScriptTransaction"))
12631495 then {
1264- let ew = dq
1265- let fM = blake2b256(value(ew.script))
1266- let fN = fromBase64String(value(getString(aA, ao())))
1267- let fO = scriptHash(this)
1268- if (if ((fN == fM))
1269- then (fO != fM)
1496+ let eZ = dV
1497+ let gN = blake2b256(value(eZ.script))
1498+ let gO = fromBase64String(value(getString(aN, az())))
1499+ let gP = scriptHash(this)
1500+ if (if ((gO == gN))
1501+ then (gP != gN)
12701502 else false)
12711503 then true
1272- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1504+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
12731505 }
1274- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1506+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
12751507 }
12761508
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
65+func G (E,F) = fraction(E, d, F)
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
71-func N (H) = if ((0 > H))
72- then -(H)
73- else H
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7472
7573
76-func O (H) = if ((e > H))
77- then -(H)
78- else H
74+func M (N,O,P) = fraction(N, O, P)
7975
8076
81-func P () = "%s__factoryContract"
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
8280
8381
84-func Q () = "%s__managerPublicKey"
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
8585
8686
87-func R () = "%s__pendingManagerPublicKey"
87+func S () = "%s__factoryContract"
8888
8989
90-func S () = "%s%s__price__last"
90+func T () = "%s__managerPublicKey"
9191
9292
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
93+func U () = "%s__pendingManagerPublicKey"
9494
9595
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
96+func V () = "%s%s__price__last"
9797
9898
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
99+func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
100100
101101
102-func aa () = "%s__amountAsset"
102+func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
103103
104104
105-func ab () = "%s__priceAsset"
105+func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
106106
107107
108-func ac () = "%s__factoryConfig"
108+func ad () = "%s__amountAsset"
109109
110110
111-func ad () = "%s%s__matcher__publicKey"
111+func ae () = "%s__priceAsset"
112112
113113
114-func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
114+let af = "%s__fee"
115+
116+let ag = fraction(10, b, 10000)
117+
118+let ah = valueOrElse(getInteger(this, af), ag)
119+
120+let ai = makeString(["%s", "kLp"], j)
121+
122+let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123+
124+let ak = makeString(["%s", "refreshKLpDelay"], j)
125+
126+let al = 30
127+
128+let am = valueOrElse(getInteger(this, ak), al)
129+
130+func an () = "%s__factoryConfig"
115131
116132
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
133+func ao () = "%s%s__matcher__publicKey"
118134
119135
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
136+func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
121137
122138
123-func al () = "%s__shutdown"
139+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
124140
125141
126-func am (an) = ("%s%s__poolWeight__" + an)
142+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
127143
128144
129-func ao () = "%s__allowedLpScriptHash"
145+func aw () = "%s__shutdown"
130146
131147
132-let ap = "%s__feeCollectorAddress"
133-
134-func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
148+func ax (ay) = ("%s%s__poolWeight__" + ay)
135149
136150
137-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
151+func az () = "%s__allowedLpScriptHash"
138152
139153
140-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
154+let aA = "%s__feeCollectorAddress"
155+
156+func aB (aC,aD,aE,aF) = throw((((((((("order validation failed: orderValid=" + toString(aC)) + " (") + aD) + ")") + " senderValid=") + toString(aE)) + " matcherValid=") + toString(aF)))
141157
142158
143-func ay (az) = throw(makeString(["lp.ride:", az], " "))
159+func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
144160
145161
146-let aA = addressFromStringValue(au(this, P()))
162+func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
147163
148-let aB = addressFromStringValue(au(aA, ap))
149164
150-let aC = {
151- let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152- if ($isInstanceOf(aD, "Int"))
153- then aD
154- else throw(($getType(aD) + " couldn't be cast to Int"))
165+func aK (aL) = throw(makeString(["lp.ride:", aL], " "))
166+
167+
168+func aM (aL) = makeString(["lp.ride:", aL], " ")
169+
170+
171+let aN = addressFromStringValue(aG(this, S()))
172+
173+let aO = addressFromStringValue(aG(aN, aA))
174+
175+let aP = {
176+ let aQ = invoke(aN, "getInFeeREADONLY", [toString(this)], nil)
177+ if ($isInstanceOf(aQ, "Int"))
178+ then aQ
179+ else throw(($getType(aQ) + " couldn't be cast to Int"))
155180 }
156181
157-let aE = {
158- let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159- if ($isInstanceOf(aD, "Int"))
160- then aD
161- else throw(($getType(aD) + " couldn't be cast to Int"))
182+let aR = {
183+ let aQ = invoke(aN, "getOutFeeREADONLY", [toString(this)], nil)
184+ if ($isInstanceOf(aQ, "Int"))
185+ then aQ
186+ else throw(($getType(aQ) + " couldn't be cast to Int"))
162187 }
163188
164-func aF () = valueOrElse(getBoolean(aA, al()), false)
189+func aS () = valueOrElse(getBoolean(aN, aw()), false)
165190
166191
167-func aG () = fromBase58String(au(aA, ad()))
192+func aT () = fromBase58String(aG(aN, ao()))
168193
169194
170-func aH () = {
171- let aI = au(this, aa())
172- let aJ = au(this, ab())
173- let ai = ax(aA, aj(aJ))
174- let ah = ax(aA, aj(aI))
175- split(au(aA, ag(toString(ah), toString(ai))), j)
195+func aU () = {
196+ let aV = aG(this, ad())
197+ let aW = aG(this, ae())
198+ let at = aJ(aN, au(aW))
199+ let as = aJ(aN, au(aV))
200+ split(aG(aN, ar(toString(as), toString(at))), j)
176201 }
177202
178203
179-func aK (aL) = if ((aL == i))
204+func aX (aY) = if ((aY == i))
180205 then unit
181- else fromBase58String(aL)
206+ else fromBase58String(aY)
182207
183208
184-func aM (aL) = if ((aL == unit))
209+func aZ (aY) = if ((aY == unit))
185210 then i
186- else toBase58String(value(aL))
211+ else toBase58String(value(aY))
187212
188213
189-func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
214+func ba (bb) = $Tuple7(addressFromStringValue(bb[o]), parseIntValue(bb[p]), fromBase58String(bb[q]), aX(bb[r]), aX(bb[s]), parseIntValue(bb[t]), parseIntValue(bb[u]))
190215
191216
192-let aP = aN(aH())
217+let bc = ba(aU())
193218
194-let aQ = aP
219+let bd = bc
195220
196-let aR = aQ._1
221+let be = bd._1
197222
198-let aS = aQ._2
223+let bf = bd._2
199224
200-let aT = aQ._3
225+let bg = bd._3
201226
202-let aU = aQ._4
227+let bh = bd._4
203228
204-let aV = aQ._5
229+let bi = bd._5
205230
206-let aW = aQ._6
231+let bj = bd._6
207232
208-let aX = aQ._7
233+let bk = bd._7
209234
210-func aY () = split(au(aA, ac()), j)
235+func bl () = split(aG(aN, an()), j)
211236
212237
213-let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
238+let bm = valueOrErrorMessage(addressFromString(bl()[B]), "incorrect staking address")
214239
215-let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
240+let bn = valueOrErrorMessage(addressFromString(bl()[C]), "incorrect staking address")
216241
217-func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
242+func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], j)
218243
219244
220-func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
245+func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], j)
221246
222247
223-func bq (br) = if ((br == "WAVES"))
248+func bD (bE) = if ((bE == "WAVES"))
224249 then wavesBalance(this).available
225- else assetBalance(this, fromBase58String(br))
250+ else assetBalance(this, fromBase58String(bE))
226251
227252
228-func bs (bt,bu) = fraction(bt, d, bu)
253+func bF (bG,bH) = fraction(bG, d, bH)
229254
230255
231-func bv (bw,bx,by,bz) = {
232- let bA = D(by, bw)
233- let bB = D(bz, bx)
234- bs(bB, bA)
256+func bI (bG,bH,L) = fraction(bG, d, bH, L)
257+
258+
259+func bJ (bK,bL,bM,bN) = {
260+ let bO = D(bM, bK)
261+ let bP = D(bN, bL)
262+ bF(bP, bO)
235263 }
236264
237265
238-func bC (by,bz,bD) = {
239- let bE = aH()
240- let bF = parseIntValue(bE[t])
241- let bG = parseIntValue(bE[u])
242- let bH = bv(bF, bG, by, bz)
243- let bu = D(by, bF)
244- let bt = D(bz, bG)
245- let bI = D(bD, b)
246- let bJ = bs(bu, bI)
247- let bK = bs(bt, bI)
248-[bH, bJ, bK]
266+func bQ (bM,bN,bR) = {
267+ let bS = aU()
268+ let bT = parseIntValue(bS[t])
269+ let bU = parseIntValue(bS[u])
270+ let bV = bJ(bT, bU, bM, bN)
271+ let bH = D(bM, bT)
272+ let bG = D(bN, bU)
273+ let bW = D(bR, b)
274+ let bX = bF(bH, bW)
275+ let bY = bF(bG, bW)
276+[bV, bX, bY]
249277 }
250278
251279
252-func bL (by,bz,bD) = {
253- let bM = bC(by, bz, bD)
254-[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
280+func bZ (bM,bN,bR) = {
281+ let ca = bQ(bM, bN, bR)
282+[H(ca[0], b), H(ca[1], b), H(ca[2], b)]
255283 }
256284
257285
258-func bN (bO,bP,bQ,X) = {
259- let bE = aH()
260- let bR = bE[q]
261- let bS = bE[r]
262- let bT = bE[s]
263- let bw = parseIntValue(bE[t])
264- let bx = parseIntValue(bE[u])
265- let bU = bE[p]
266- let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267- if ((bR != bP))
286+func cb (cc,cd,ce,aa) = {
287+ let bS = aU()
288+ let cf = bS[q]
289+ let cg = bS[r]
290+ let ch = bS[s]
291+ let bK = parseIntValue(bS[t])
292+ let bL = parseIntValue(bS[u])
293+ let ci = bS[p]
294+ let cj = valueOrErrorMessage(assetInfo(fromBase58String(cf)), (("Asset " + cf) + " doesn't exist")).quantity
295+ if ((cf != cd))
268296 then throw("Invalid asset passed.")
269297 else {
270- let bW = bq(bS)
271- let bX = D(bW, bw)
272- let bY = bq(bT)
273- let bZ = D(bY, bx)
274- let ca = bs(bZ, bX)
275- let cb = G(ca, b)
276- let cc = D(bQ, b)
277- let cd = D(bV, b)
278- let ce = fraction(bX, cc, cd)
279- let cf = fraction(bZ, cc, cd)
280- let cg = G(ce, bw)
281- let ch = G(cf, bx)
282- let ci = if ((bO == ""))
298+ let ck = bD(cg)
299+ let cl = D(ck, bK)
300+ let cm = bD(ch)
301+ let cn = D(cm, bL)
302+ let co = bF(cn, cl)
303+ let cp = H(co, b)
304+ let cq = D(ce, b)
305+ let cr = D(cj, b)
306+ let cs = fraction(cl, cq, cr)
307+ let ct = fraction(cn, cq, cr)
308+ let cu = K(cs, bK, FLOOR)
309+ let cv = K(ct, bL, FLOOR)
310+ let cw = if ((cc == ""))
283311 then nil
284- else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
312+ else [ScriptTransfer(aa, cu, if ((cg == "WAVES"))
285313 then unit
286- else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
314+ else fromBase58String(cg)), ScriptTransfer(aa, cv, if ((ch == "WAVES"))
287315 then unit
288- else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289- $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
316+ else fromBase58String(ch)), StringEntry(ac(toString(aa), cc), bz(cu, cv, ce, cp, height, lastBlock.timestamp)), IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp)]
317+ $Tuple10(cu, cv, cg, ch, ck, cm, cj, co, ci, cw)
290318 }
291319 }
292320
293321
294-func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295- let bE = aH()
296- let bR = fromBase58String(bE[q])
297- let cr = bE[r]
298- let cs = bE[s]
299- let ct = bE[v]
300- let cu = bE[w]
301- let bF = parseIntValue(bE[t])
302- let bG = parseIntValue(bE[u])
303- let bU = bE[p]
304- let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305- let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306- let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307- if (if ((cr != cv))
322+func cx (cc,cy,cz,cA,cB,cC,aa,cD,cE) = {
323+ let bS = aU()
324+ let cf = fromBase58String(bS[q])
325+ let cF = bS[r]
326+ let cG = bS[s]
327+ let cH = bS[v]
328+ let cI = bS[w]
329+ let bT = parseIntValue(bS[t])
330+ let bU = parseIntValue(bS[u])
331+ let ci = bS[p]
332+ let cj = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
333+ let cJ = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
334+ let cK = toBase58String(valueOrElse(cC, fromBase58String("WAVES")))
335+ if (if ((cF != cJ))
308336 then true
309- else (cs != cw))
337+ else (cG != cK))
310338 then throw("Invalid amt or price asset passed.")
311339 else {
312- let bW = if (cp)
313- then bq(cr)
314- else (bq(cr) - cl)
315- let bY = if (cp)
316- then bq(cs)
317- else (bq(cs) - cn)
318- let cx = D(cl, bF)
319- let cy = D(cn, bG)
320- let cz = bs(cy, cx)
321- let bX = D(bW, bF)
322- let bZ = D(bY, bG)
323- let cA = if ((bV == 0))
340+ let ck = if (cD)
341+ then bD(cF)
342+ else (bD(cF) - cz)
343+ let cm = if (cD)
344+ then bD(cG)
345+ else (bD(cG) - cB)
346+ let cL = D(cz, bT)
347+ let cM = D(cB, bU)
348+ let cN = bF(cM, cL)
349+ let cl = D(ck, bT)
350+ let cn = D(cm, bU)
351+ let cO = if ((cj == 0))
324352 then {
325- let ca = e
326- let cB = e
327- let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328- $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
353+ let co = e
354+ let cP = e
355+ let bW = pow((cL * cM), 0, toBigInt(5), 1, 0, DOWN)
356+ $Tuple5(H(bW, b), H(cL, bT), H(cM, bU), bF((cn + cM), (cl + cL)), cP)
329357 }
330358 else {
331- let ca = bs(bZ, bX)
332- let cB = fraction(O((ca - cz)), d, ca)
333- let cC = D(ck, b)
334- if (if ((ca != e))
335- then (cB > cC)
359+ let co = bF(cn, cl)
360+ let cP = fraction(R((co - cN)), d, co)
361+ let cQ = D(cy, b)
362+ if (if ((co != e))
363+ then (cP > cQ)
336364 else false)
337- then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
365+ then throw(((("Price slippage " + toString(cP)) + " exceeded the passed limit of ") + toString(cQ)))
338366 else {
339- let cd = D(bV, b)
340- let cD = fraction(cx, ca, d)
341- let cE = fraction(cy, d, ca)
342- let cF = if ((cD > cy))
343- then $Tuple2(cE, cy)
344- else $Tuple2(cx, cD)
345- let cG = cF._1
346- let cH = cF._2
347- let bI = fraction(cd, cH, bZ)
348- $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
367+ let cr = D(cj, b)
368+ let cR = fraction(cL, bI(cn, cl, CEILING), d, CEILING)
369+ let cS = fraction(cM, d, bI(cn, cl, FLOOR), CEILING)
370+ let cT = if ((cR > cM))
371+ then $Tuple2(cS, cM)
372+ else $Tuple2(cL, cR)
373+ let cU = cT._1
374+ let cV = cT._2
375+ let bW = fraction(cr, cV, cn, FLOOR)
376+ $Tuple5(K(bW, b, FLOOR), K(cU, bT, CEILING), K(cV, bU, CEILING), co, cP)
349377 }
350378 }
351- let cI = cA._1
352- let cJ = cA._2
353- let cK = cA._3
354- let cb = G(cA._4, b)
355- let cL = G(cA._5, b)
356- if ((0 >= cI))
379+ let cW = cO._1
380+ let cX = cO._2
381+ let cY = cO._3
382+ let cp = H(cO._4, b)
383+ let cZ = H(cO._5, b)
384+ if ((0 >= cW))
357385 then throw("Invalid calculations. LP calculated is less than zero.")
358386 else {
359- let cM = if (!(cq))
387+ let da = if (!(cE))
360388 then 0
361- else cI
362- let cN = (cl - cJ)
363- let cO = (cn - cK)
364- let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365- $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
389+ else cW
390+ let db = (cz - cX)
391+ let dc = (cB - cY)
392+ let dd = [IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp), StringEntry(Z(aa, cc), bo(cX, cY, da, cp, cy, cZ, height, lastBlock.timestamp, db, dc))]
393+ $Tuple13(cW, da, cp, ck, cm, cj, cf, ci, dd, db, dc, cA, cC)
366394 }
367395 }
368396 }
369397
370398
371-func cQ (cR) = {
372- let bE = aH()
373- let cS = bE[r]
374- let cT = bE[s]
375- let bU = parseIntValue(bE[p])
376- let bF = parseIntValue(bE[t])
377- let bG = parseIntValue(bE[u])
378- let cU = bq(cS)
379- let cV = bq(cT)
380- let ca = if ((cR.orderType == Buy))
381- then bv(bF, bG, (cU + cR.amount), cV)
382- else bv(bF, bG, (cU - cR.amount), cV)
383- let cb = G(ca, b)
384- if (if (if (aF())
385- then true
386- else (bU == m))
387- then true
388- else (bU == n))
389- then throw("Exchange operations disabled")
390- else {
391- let cW = cR.assetPair.amountAsset
392- let cX = if ((cW == unit))
393- then "WAVES"
394- else toBase58String(value(cW))
395- let cY = cR.assetPair.priceAsset
396- let cZ = if ((cY == unit))
397- then "WAVES"
398- else toBase58String(value(cY))
399- if (if ((cX != cS))
400- then true
401- else (cZ != cT))
402- then throw("Wrong order assets.")
403- else {
404- let da = cR.price
405- let db = fraction(b, bG, bF)
406- let dc = J(da, b, db)
407- let dd = if ((cR.orderType == Buy))
408- then (cb >= dc)
409- else (dc >= cb)
410- true
411- }
412- }
399+func de (df,dg,cj) = {
400+ let dh = G(df, toBigInt(bj))
401+ let di = G(dg, toBigInt(bk))
402+ let dj = fraction(pow((dh * di), 0, toBigInt(5), 1, 18, DOWN), g, cj)
403+ if ((cj == f))
404+ then f
405+ else dj
413406 }
414407
415408
416-func de (df) = if ((size(df.payments) != 1))
409+func dk (dl,dm,dn) = {
410+ let do = (toBigInt(bD(aZ(bh))) - dl)
411+ let dp = (toBigInt(bD(aZ(bi))) - dm)
412+ let dq = (toBigInt(value(assetInfo(bg)).quantity) - dn)
413+ let dr = de(do, dp, dq)
414+ dr
415+ }
416+
417+
418+func ds (dt,du,dn) = {
419+ let do = (bD(aZ(bh)) + dt)
420+ let dp = (bD(aZ(bi)) + du)
421+ let dq = (value(assetInfo(bg)).quantity + dn)
422+ let dj = de(toBigInt(do), toBigInt(dp), toBigInt(dq))
423+ let dv = [IntegerEntry(aj, height), StringEntry(ai, toString(dj))]
424+ $Tuple2(dv, dj)
425+ }
426+
427+
428+func dw (dx,dj) = if ((dj >= dx))
429+ then true
430+ else aK(makeString(["updated KLp lower than current KLp", toString(dx), toString(dj)], " "))
431+
432+
433+func dy (dz) = {
434+ let dA = dz.amount
435+ let dB = fraction(dz.amount, dz.price, b, FLOOR)
436+ let dC = if ((dz.orderType == Buy))
437+ then $Tuple2(dA, -(dB))
438+ else $Tuple2(-(dA), dB)
439+ let dt = dC._1
440+ let du = dC._2
441+ if (if (if (aS())
442+ then true
443+ else (bf == m))
444+ then true
445+ else (bf == n))
446+ then throw("Exchange operations disabled")
447+ else if (if ((dz.assetPair.amountAsset != bh))
448+ then true
449+ else (dz.assetPair.priceAsset != bi))
450+ then throw("Wrong order assets.")
451+ else {
452+ let dD = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ai), aM("kLp is required"))), aM("invalid kLp"))
453+ let dE = ds(dt, du, 0)
454+ let dF = dE._1
455+ let dG = dE._2
456+ let dH = (dG >= dD)
457+ let dI = makeString([toString(dD), toString(dG)], " ")
458+ $Tuple2(dH, dI)
459+ }
460+ }
461+
462+
463+func dJ (dK) = if ((size(dK.payments) != 1))
417464 then throw("exactly 1 payment is expected")
418465 else {
419- let dg = value(df.payments[0])
420- let bP = value(dg.assetId)
421- let dh = dg.amount
422- let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423- let cg = cA._1
424- let ch = cA._2
425- let bU = parseIntValue(cA._9)
426- let ci = cA._10
427- if (if (aF())
466+ let dL = value(dK.payments[0])
467+ let cd = value(dL.assetId)
468+ let dM = dL.amount
469+ let cO = cb(toBase58String(dK.transactionId), toBase58String(cd), dM, dK.caller)
470+ let cu = cO._1
471+ let cv = cO._2
472+ let ci = parseIntValue(cO._9)
473+ let cw = cO._10
474+ if (if (aS())
428475 then true
429- else (bU == n))
430- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431- else $Tuple5(cg, ch, dh, bP, ci)
476+ else (ci == n))
477+ then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
478+ else $Tuple5(cu, cv, dM, cd, cw)
432479 }
433480
434481
435-func di (df,ck,cq) = if ((size(df.payments) != 2))
482+func dN (dK,cy,cE) = if ((size(dK.payments) != 2))
436483 then throw("exactly 2 payments are expected")
437484 else {
438- let dj = value(df.payments[0])
439- let dk = value(df.payments[1])
440- let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441- let bU = parseIntValue(dl._8)
442- if (if (if (aF())
485+ let dO = value(dK.payments[0])
486+ let dP = value(dK.payments[1])
487+ let dQ = cx(toBase58String(dK.transactionId), cy, dO.amount, dO.assetId, dP.amount, dP.assetId, toString(dK.caller), false, cE)
488+ let ci = parseIntValue(dQ._8)
489+ if (if (if (aS())
443490 then true
444- else (bU == l))
491+ else (ci == l))
445492 then true
446- else (bU == n))
447- then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448- else dl
493+ else (ci == n))
494+ then throw(("Put operation is blocked by admin. Status = " + toString(ci)))
495+ else dQ
449496 }
450497
451498
452-func dm (dn) = {
453- let do = invoke(aA, "emit", [dn], nil)
454- if ((do == do))
499+func dR (dS) = {
500+ let dT = invoke(aN, "emit", [dS], nil)
501+ if ((dT == dT))
455502 then {
456- let dp = {
457- let dq = do
458- if ($isInstanceOf(dq, "Address"))
503+ let dU = {
504+ let dV = dT
505+ if ($isInstanceOf(dV, "Address"))
459506 then {
460- let dr = dq
461- invoke(dr, "emit", [dn], nil)
507+ let dW = dV
508+ invoke(dW, "emit", [dS], nil)
462509 }
463510 else unit
464511 }
465- if ((dp == dp))
466- then dn
512+ if ((dU == dU))
513+ then dS
467514 else throw("Strict value is not equal to itself.")
468515 }
469516 else throw("Strict value is not equal to itself.")
470517 }
471518
472519
473-func ds (dn,dt) = {
474- let du = if ((dt == 0))
520+func dX (dS,ah) = {
521+ let dY = if ((ah == 0))
475522 then 0
476- else fraction(dn, dt, b)
477- $Tuple2((dn - du), du)
523+ else fraction(dS, ah, b)
524+ $Tuple2((dS - dY), dY)
478525 }
479526
480527
481-func dv (dw,dx,X,Y) = {
482- let dy = (Y == unit)
483- let dz = bq(aM(aU))
484- let dA = bq(aM(aV))
485- let dB = if ((dx == aU))
528+func dZ (ea,eb,aa,ab) = {
529+ let ec = (ab == unit)
530+ let ed = bD(aZ(bh))
531+ let ee = bD(aZ(bi))
532+ let ef = if ((eb == bh))
486533 then true
487- else if ((dx == aV))
534+ else if ((eb == bi))
488535 then false
489- else ay("invalid asset")
490- let dC = if (dy)
491- then $Tuple2(dz, dA)
492- else if (dB)
493- then $Tuple2((dz - dw), dA)
494- else $Tuple2(dz, (dA - dw))
495- let dD = dC._1
496- let dE = dC._2
497- let dF = if (dB)
498- then $Tuple2(dw, 0)
499- else $Tuple2(0, dw)
500- let dG = dF._1
501- let dH = dF._2
502- let dI = ds(dG, aC)._1
503- let dJ = ds(dH, aC)._1
504- let dK = ds(dw, aC)
505- let dL = dK._1
506- let du = dK._2
507- let dM = (dD + dI)
508- let dN = (dE + dJ)
509- let dO = bs(D(dN, aX), D(dM, aW))
510- let dP = G(dO, b)
511- let dQ = if (dB)
512- then dD
513- else dE
514- let dR = toBigInt(dQ)
515- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516- let dT = if ((dS > f))
536+ else aK("invalid asset")
537+ let eg = if (ec)
538+ then $Tuple2(ed, ee)
539+ else if (ef)
540+ then $Tuple2((ed - ea), ee)
541+ else $Tuple2(ed, (ee - ea))
542+ let eh = eg._1
543+ let ei = eg._2
544+ let ej = if (ef)
545+ then $Tuple2(ea, 0)
546+ else $Tuple2(0, ea)
547+ let ek = ej._1
548+ let el = ej._2
549+ let dA = dX(ek, aP)._1
550+ let dB = dX(el, aP)._1
551+ let em = dX(ea, aP)
552+ let en = em._1
553+ let dY = em._2
554+ let eo = (eh + dA)
555+ let ep = (ei + dB)
556+ let eq = bF(D(ep, bk), D(eo, bj))
557+ let er = H(eq, b)
558+ let es = if (ef)
559+ then eh
560+ else ei
561+ let et = toBigInt(es)
562+ let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
563+ let ev = if ((eu > f))
517564 then true
518- else ay("initial deposit requires all coins")
519- if ((dT == dT))
565+ else aK("initial deposit requires all coins")
566+ if ((ev == ev))
520567 then {
521- let dU = toBigInt(dL)
522- let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523- let cP = if (dy)
568+ let ew = toBigInt(en)
569+ let ex = max([0, toInt(((eu * (sqrtBigInt((d + ((ew * d) / et)), 18, 18, DOWN) - d)) / d))])
570+ let dd = if (ec)
524571 then nil
525- else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526- let dW = bs(D(dE, aX), D(dD, aW))
527- let dX = G(dW, b)
528- let dY = {
529- let dZ = if (dB)
530- then $Tuple2(dG, dD)
531- else $Tuple2(dH, dE)
532- let dn = dZ._1
533- let ea = dZ._2
534- let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535- fraction((dV - eb), b, eb)
572+ else [IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bo(ek, el, ex, er, 0, 0, height, lastBlock.timestamp, 0, 0))]
573+ let ey = bF(D(ei, bk), D(eh, bj))
574+ let ez = H(ey, b)
575+ let eA = {
576+ let eB = if (ef)
577+ then $Tuple2(ek, eh)
578+ else $Tuple2(el, ei)
579+ let dS = eB._1
580+ let eC = eB._2
581+ let eD = toInt(fraction(eu, toBigInt((dS / 2)), toBigInt(eC)))
582+ fraction((ex - eD), b, eD)
536583 }
537- $Tuple4(dV, cP, du, dY)
584+ $Tuple5(ex, dd, dY, eA, ef)
538585 }
539586 else throw("Strict value is not equal to itself.")
540587 }
541588
542589
543-func ec (ed,dL,dx,X,Y) = {
544- let dy = (Y == unit)
545- let ee = [if ((dx == aT))
590+func eE (eF,en,eb,aa,ab) = {
591+ let ec = (ab == unit)
592+ let bS = aU()
593+ let bT = parseIntValue(bS[t])
594+ let bU = parseIntValue(bS[u])
595+ let eG = [if ((eb == bg))
546596 then true
547- else ay("invalid lp asset")]
548- if ((ee == ee))
597+ else aK("invalid lp asset")]
598+ if ((eG == eG))
549599 then {
550- let ef = if ((ed == aU))
600+ let eH = if ((eF == bh))
551601 then true
552- else if ((ed == aV))
602+ else if ((eF == bi))
553603 then false
554- else ay("invalid asset")
555- let eg = if (ef)
556- then toBigInt(bq(aM(aU)))
557- else toBigInt(bq(aM(aV)))
558- let eh = bq(aM(aU))
559- let ei = bq(aM(aV))
560- let ej = if (ef)
561- then eh
562- else ei
563- let ek = toBigInt(ej)
564- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565- let el = toBigInt(dL)
566- let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567- let en = ds(em, aE)
568- let eo = en._1
569- let du = en._2
570- let ep = if (ef)
571- then $Tuple4(eo, 0, (eh - em), ei)
572- else $Tuple4(0, eo, eh, (ei - em))
573- let eq = ep._1
574- let er = ep._2
575- let es = ep._3
576- let et = ep._4
577- let dO = bs(D(et, aX), D(es, aW))
578- let dP = G(dO, b)
579- let cP = if (dy)
604+ else aK("invalid asset")
605+ let eI = if (eH)
606+ then toBigInt(bD(aZ(bh)))
607+ else toBigInt(bD(aZ(bi)))
608+ let eJ = if (eH)
609+ then bT
610+ else bU
611+ let eK = bD(aZ(bh))
612+ let eL = bD(aZ(bi))
613+ let eM = if (eH)
614+ then eK
615+ else eL
616+ let eN = toBigInt(eM)
617+ let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
618+ let eO = toBigInt(en)
619+ let eP = max([0, toInt(((eI * (d - pow((d - ((eO * d) / eu)), 18, h, 0, 18, DOWN))) / d))])
620+ let eQ = dX(eP, aR)
621+ let eR = eQ._1
622+ let dY = eQ._2
623+ let eS = if (eH)
624+ then $Tuple4(eR, 0, (eK - eP), eL)
625+ else $Tuple4(0, eR, eK, (eL - eP))
626+ let eT = eS._1
627+ let eU = eS._2
628+ let eV = eS._3
629+ let eW = eS._4
630+ let eq = bF(D(eW, bk), D(eV, bj))
631+ let er = H(eq, b)
632+ let dd = if (ec)
580633 then nil
581- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582- let dW = bs(D(ei, aX), D(eh, aW))
583- let dX = G(dW, b)
584- let dY = {
585- let eu = (toInt(fraction(eg, el, dS)) * 2)
586- fraction((eo - eu), b, eu)
634+ else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), bz(eT, eU, en, er, height, lastBlock.timestamp)), IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er)]
635+ let ey = bF(D(eL, bk), D(eK, bj))
636+ let ez = H(ey, b)
637+ let eA = {
638+ let eX = (toInt(fraction(eI, eO, eu)) * 2)
639+ fraction((eR - eX), b, eX)
587640 }
588- $Tuple4(eo, cP, du, dY)
641+ $Tuple5(eR, dd, dY, eA, eH)
589642 }
590643 else throw("Strict value is not equal to itself.")
591644 }
592645
593646
594-func ev () = {
595- let dq = getString(Q())
596- if ($isInstanceOf(dq, "String"))
647+func eY () = {
648+ let dV = getString(T())
649+ if ($isInstanceOf(dV, "String"))
597650 then {
598- let ew = dq
599- fromBase58String(ew)
651+ let eZ = dV
652+ fromBase58String(eZ)
600653 }
601- else if ($isInstanceOf(dq, "Unit"))
654+ else if ($isInstanceOf(dV, "Unit"))
602655 then unit
603656 else throw("Match error")
604657 }
605658
606659
607-func ex () = {
608- let dq = getString(R())
609- if ($isInstanceOf(dq, "String"))
660+func fa () = {
661+ let dV = getString(U())
662+ if ($isInstanceOf(dV, "String"))
610663 then {
611- let ew = dq
612- fromBase58String(ew)
664+ let eZ = dV
665+ fromBase58String(eZ)
613666 }
614- else if ($isInstanceOf(dq, "Unit"))
667+ else if ($isInstanceOf(dV, "Unit"))
615668 then unit
616669 else throw("Match error")
617670 }
618671
619672
620-func ey (df) = {
621- let dq = ev()
622- if ($isInstanceOf(dq, "ByteVector"))
673+func fb (dK) = {
674+ let dV = eY()
675+ if ($isInstanceOf(dV, "ByteVector"))
623676 then {
624- let ez = dq
625- (df.callerPublicKey == ez)
677+ let fc = dV
678+ (dK.callerPublicKey == fc)
626679 }
627- else if ($isInstanceOf(dq, "Unit"))
628- then (df.caller == this)
680+ else if ($isInstanceOf(dV, "Unit"))
681+ then (dK.caller == this)
629682 else throw("Match error")
630683 }
631684
632685
633-func eA (df) = {
634- let eB = throw("Permission denied")
635- let dq = ev()
636- if ($isInstanceOf(dq, "ByteVector"))
686+func fd (dK) = {
687+ let fe = throw("Permission denied")
688+ let dV = eY()
689+ if ($isInstanceOf(dV, "ByteVector"))
637690 then {
638- let ez = dq
639- if ((df.callerPublicKey == ez))
691+ let fc = dV
692+ if ((dK.callerPublicKey == fc))
640693 then true
641- else eB
694+ else fe
642695 }
643- else if ($isInstanceOf(dq, "Unit"))
644- then if ((df.caller == this))
696+ else if ($isInstanceOf(dV, "Unit"))
697+ then if ((dK.caller == this))
645698 then true
646- else eB
699+ else fe
647700 else throw("Match error")
648701 }
649702
650703
651-@Callable(df)
652-func setManager (eC) = {
653- let eD = eA(df)
654- if ((eD == eD))
704+@Callable(dK)
705+func setManager (ff) = {
706+ let fg = fd(dK)
707+ if ((fg == fg))
655708 then {
656- let eE = fromBase58String(eC)
657- if ((eE == eE))
658- then [StringEntry(R(), eC)]
709+ let fh = fromBase58String(ff)
710+ if ((fh == fh))
711+ then [StringEntry(U(), ff)]
659712 else throw("Strict value is not equal to itself.")
660713 }
661714 else throw("Strict value is not equal to itself.")
662715 }
663716
664717
665718
666-@Callable(df)
719+@Callable(dK)
667720 func confirmManager () = {
668- let eF = ex()
669- let eG = if (isDefined(eF))
721+ let fi = fa()
722+ let fj = if (isDefined(fi))
670723 then true
671724 else throw("No pending manager")
672- if ((eG == eG))
725+ if ((fj == fj))
673726 then {
674- let eH = if ((df.callerPublicKey == value(eF)))
727+ let fk = if ((dK.callerPublicKey == value(fi)))
675728 then true
676729 else throw("You are not pending manager")
677- if ((eH == eH))
678- then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
730+ if ((fk == fk))
731+ then [StringEntry(T(), toBase58String(value(fi))), DeleteEntry(U())]
679732 else throw("Strict value is not equal to itself.")
680733 }
681734 else throw("Strict value is not equal to itself.")
682735 }
683736
684737
685738
686-@Callable(df)
687-func put (ck,eI) = if ((0 > ck))
739+@Callable(dK)
740+func put (cy,fl) = if ((0 > cy))
688741 then throw("Invalid slippageTolerance passed")
689742 else {
690- let dl = di(df, ck, true)
691- let cM = dl._2
692- let bR = dl._7
693- let ci = dl._9
694- let cN = dl._10
695- let cO = dl._11
696- let eJ = dl._12
697- let eK = dl._13
698- let do = invoke(aA, "emit", [cM], nil)
699- if ((do == do))
743+ let dQ = dN(dK, cy, true)
744+ let da = dQ._2
745+ let cf = dQ._7
746+ let cw = dQ._9
747+ let db = dQ._10
748+ let dc = dQ._11
749+ let fm = dQ._12
750+ let fn = dQ._13
751+ let dO = toBigInt(value(dK.payments[0]).amount)
752+ let dP = toBigInt(value(dK.payments[1]).amount)
753+ let dr = dk(dO, dP, toBigInt(0))
754+ if ((dr == dr))
700755 then {
701- let dp = {
702- let dq = do
703- if ($isInstanceOf(dq, "Address"))
704- then {
705- let dr = dq
706- invoke(dr, "emit", [cM], nil)
756+ let dT = invoke(aN, "emit", [da], nil)
757+ if ((dT == dT))
758+ then {
759+ let dU = {
760+ let dV = dT
761+ if ($isInstanceOf(dV, "Address"))
762+ then {
763+ let dW = dV
764+ invoke(dW, "emit", [da], nil)
765+ }
766+ else unit
707767 }
708- else unit
709- }
710- if ((dp == dp))
711- then {
712- let eL = if ((cN > 0))
713- then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714- else nil
715- if ((eL == eL))
768+ if ((dU == dU))
716769 then {
717- let eM = if ((cO > 0))
718- then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
770+ let fo = if ((db > 0))
771+ then invoke(bn, "put", nil, [AttachedPayment(fm, db)])
719772 else nil
720- if ((eM == eM))
773+ if ((fo == fo))
721774 then {
722- let eN = if (eI)
775+ let fp = if ((dc > 0))
776+ then invoke(bn, "put", nil, [AttachedPayment(fn, dc)])
777+ else nil
778+ if ((fp == fp))
723779 then {
724- let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725- if ((eO == eO))
726- then nil
780+ let fq = if (fl)
781+ then {
782+ let fr = invoke(bm, "stake", nil, [AttachedPayment(cf, da)])
783+ if ((fr == fr))
784+ then nil
785+ else throw("Strict value is not equal to itself.")
786+ }
787+ else [ScriptTransfer(dK.caller, da, cf)]
788+ let fs = ds(0, 0, 0)
789+ if ((fs == fs))
790+ then {
791+ let dj = fs._2
792+ let ft = fs._1
793+ let fu = dw(dr, dj)
794+ if ((fu == fu))
795+ then ((cw ++ fq) ++ ft)
796+ else throw("Strict value is not equal to itself.")
797+ }
727798 else throw("Strict value is not equal to itself.")
728799 }
729- else [ScriptTransfer(df.caller, cM, bR)]
730- (ci ++ eN)
800+ else throw("Strict value is not equal to itself.")
731801 }
732802 else throw("Strict value is not equal to itself.")
733803 }
734804 else throw("Strict value is not equal to itself.")
735805 }
736806 else throw("Strict value is not equal to itself.")
737807 }
738808 else throw("Strict value is not equal to itself.")
739809 }
740810
741811
742812
743-@Callable(df)
744-func putForFree (eP) = if ((0 > eP))
813+@Callable(dK)
814+func putForFree (fv) = if ((0 > fv))
745815 then throw("Invalid value passed")
746816 else {
747- let dl = di(df, eP, false)
748- dl._9
817+ let dQ = dN(dK, fv, false)
818+ let cw = dQ._9
819+ let dO = toBigInt(value(dK.payments[0]).amount)
820+ let dP = toBigInt(value(dK.payments[1]).amount)
821+ let dr = dk(dO, dP, toBigInt(0))
822+ if ((dr == dr))
823+ then {
824+ let fw = ds(0, 0, 0)
825+ let ft = fw._1
826+ let dj = fw._2
827+ let fu = dw(dr, dj)
828+ if ((fu == fu))
829+ then (cw ++ ft)
830+ else throw("Strict value is not equal to itself.")
831+ }
832+ else throw("Strict value is not equal to itself.")
749833 }
750834
751835
752836
753-@Callable(df)
754-func putOneTkn (eQ,eR) = {
755- let eS = {
756- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757- if ($isInstanceOf(aD, "Boolean"))
758- then aD
759- else throw(($getType(aD) + " couldn't be cast to Boolean"))
837+@Callable(dK)
838+func putOneTkn (fx,fy) = {
839+ let fz = {
840+ let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
841+ if ($isInstanceOf(aQ, "Boolean"))
842+ then aQ
843+ else throw(($getType(aQ) + " couldn't be cast to Boolean"))
760844 }
761- let eT = if (if (if (aF())
845+ let fA = if (if (if (aS())
762846 then true
763- else (aS == l))
847+ else (bf == l))
764848 then true
765- else (aS == n))
849+ else (bf == n))
766850 then true
767- else eS
768- let ee = [if (if (!(eT))
851+ else fz
852+ let eG = [if (if (!(fA))
769853 then true
770- else ey(df))
854+ else fb(dK))
771855 then true
772- else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
856+ else aK("put operation is blocked by admin"), if ((size(dK.payments) == 1))
773857 then true
774- else ay("exactly 1 payment are expected")]
775- if ((ee == ee))
858+ else aK("exactly 1 payment are expected")]
859+ if ((eG == eG))
776860 then {
777- let eU = df.payments[0]
778- let dx = eU.assetId
779- let dw = eU.amount
780- let X = df.caller
781- let Y = df.transactionId
782- let eV = dv(dw, dx, X, Y)
783- if ((eV == eV))
861+ let fB = dK.payments[0]
862+ let eb = fB.assetId
863+ let ea = fB.amount
864+ let dr = if ((eb == bh))
865+ then dk(toBigInt(ea), toBigInt(0), toBigInt(0))
866+ else if ((eb == bi))
867+ then dk(toBigInt(0), toBigInt(ea), toBigInt(0))
868+ else aK("payment asset is not supported")
869+ if ((dr == dr))
784870 then {
785- let eW = eV._4
786- let du = eV._3
787- let cP = eV._2
788- let eX = eV._1
789- let eY = if (if ((eQ > 0))
790- then (eQ > eX)
791- else false)
792- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793- else eX
794- let do = dm(eY)
795- if ((do == do))
871+ let aa = dK.caller
872+ let ab = dK.transactionId
873+ let fC = dZ(ea, eb, aa, ab)
874+ if ((fC == fC))
796875 then {
797- let eN = if (eR)
876+ let ef = fC._5
877+ let fD = fC._4
878+ let dY = fC._3
879+ let dd = fC._2
880+ let fE = fC._1
881+ let fF = if (if ((fx > 0))
882+ then (fx > fE)
883+ else false)
884+ then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
885+ else fE
886+ let dT = dR(fF)
887+ if ((dT == dT))
798888 then {
799- let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800- if ((eZ == eZ))
801- then nil
889+ let fq = if (fy)
890+ then {
891+ let fG = invoke(bm, "stake", nil, [AttachedPayment(bg, fF)])
892+ if ((fG == fG))
893+ then nil
894+ else throw("Strict value is not equal to itself.")
895+ }
896+ else [ScriptTransfer(dK.caller, fF, bg)]
897+ let fH = if ((dY > 0))
898+ then [ScriptTransfer(aO, dY, eb)]
899+ else nil
900+ let fI = if ((this == aO))
901+ then $Tuple2(0, 0)
902+ else if (ef)
903+ then $Tuple2(-(dY), 0)
904+ else $Tuple2(0, -(dY))
905+ let dt = fI._1
906+ let du = fI._2
907+ let fJ = ds(dt, du, 0)
908+ let ft = fJ._1
909+ let dj = fJ._2
910+ let dD = value(getString(ai))
911+ let fu = dw(dr, dj)
912+ if ((fu == fu))
913+ then $Tuple2((((dd ++ fq) ++ fH) ++ ft), fF)
802914 else throw("Strict value is not equal to itself.")
803- }
804- else [ScriptTransfer(df.caller, eY, aT)]
805- let fa = if ((du > 0))
806- then [ScriptTransfer(aB, du, dx)]
807- else nil
808- $Tuple2(((cP ++ eN) ++ fa), eY)
809- }
810- else throw("Strict value is not equal to itself.")
811- }
812- else throw("Strict value is not equal to itself.")
813- }
814- else throw("Strict value is not equal to itself.")
815- }
816-
817-
818-
819-@Callable(df)
820-func putOneTknREADONLY (dx,dw) = {
821- let fb = dv(dw, aK(dx), unit, unit)
822- let eX = fb._1
823- let cP = fb._2
824- let du = fb._3
825- let eW = fb._4
826- $Tuple2(nil, $Tuple3(eX, du, eW))
827- }
828-
829-
830-
831-@Callable(df)
832-func getOneTkn (fc,eQ) = {
833- let eS = {
834- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aD, "Boolean"))
836- then aD
837- else throw(($getType(aD) + " couldn't be cast to Boolean"))
838- }
839- let fd = if (if (aF())
840- then true
841- else (aS == n))
842- then true
843- else eS
844- let ee = [if (if (!(fd))
845- then true
846- else ey(df))
847- then true
848- else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
849- then true
850- else ay("exactly 1 payment are expected")]
851- if ((ee == ee))
852- then {
853- let ed = aK(fc)
854- let eU = df.payments[0]
855- let dx = eU.assetId
856- let dL = eU.amount
857- let X = df.caller
858- let Y = df.transactionId
859- let fe = ec(ed, dL, dx, X, Y)
860- if ((fe == fe))
861- then {
862- let eW = fe._4
863- let du = fe._3
864- let cP = fe._2
865- let ff = fe._1
866- let dn = if (if ((eQ > 0))
867- then (eQ > ff)
868- else false)
869- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870- else ff
871- let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872- if ((fg == fg))
873- then {
874- let fh = [ScriptTransfer(X, dn, ed)]
875- let fa = if ((du > 0))
876- then [ScriptTransfer(aB, du, ed)]
877- else nil
878- $Tuple2(((cP ++ fh) ++ fa), dn)
879- }
880- else throw("Strict value is not equal to itself.")
881- }
882- else throw("Strict value is not equal to itself.")
883- }
884- else throw("Strict value is not equal to itself.")
885- }
886-
887-
888-
889-@Callable(df)
890-func getOneTknREADONLY (ed,dL) = {
891- let fi = ec(aK(ed), dL, aT, unit, unit)
892- let ff = fi._1
893- let cP = fi._2
894- let du = fi._3
895- let eW = fi._4
896- $Tuple2(nil, $Tuple3(ff, du, eW))
897- }
898-
899-
900-
901-@Callable(df)
902-func unstakeAndGetOneTkn (fj,fc,eQ) = {
903- let eS = {
904- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905- if ($isInstanceOf(aD, "Boolean"))
906- then aD
907- else throw(($getType(aD) + " couldn't be cast to Boolean"))
908- }
909- let fd = if (if (aF())
910- then true
911- else (aS == n))
912- then true
913- else eS
914- let ee = [if (if (!(fd))
915- then true
916- else ey(df))
917- then true
918- else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
919- then true
920- else ay("no payments are expected")]
921- if ((ee == ee))
922- then {
923- let ed = aK(fc)
924- let X = df.caller
925- let Y = df.transactionId
926- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927- if ((fk == fk))
928- then {
929- let fl = ec(ed, fj, aT, X, Y)
930- if ((fl == fl))
931- then {
932- let eW = fl._4
933- let du = fl._3
934- let cP = fl._2
935- let ff = fl._1
936- let dn = if (if ((eQ > 0))
937- then (eQ > ff)
938- else false)
939- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940- else ff
941- let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942- if ((fg == fg))
943- then {
944- let fh = [ScriptTransfer(df.caller, dn, ed)]
945- let fa = if ((du > 0))
946- then [ScriptTransfer(aB, du, ed)]
947- else nil
948- $Tuple2(((cP ++ fh) ++ fa), dn)
949915 }
950916 else throw("Strict value is not equal to itself.")
951917 }
952918 else throw("Strict value is not equal to itself.")
953919 }
954920 else throw("Strict value is not equal to itself.")
955921 }
956922 else throw("Strict value is not equal to itself.")
957923 }
958924
959925
960926
961-@Callable(df)
962-func get () = {
963- let cA = de(df)
964- let fm = cA._1
965- let ch = cA._2
966- let dh = cA._3
967- let bP = cA._4
968- let ci = cA._5
969- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970- if ((fn == fn))
971- then ci
972- else throw("Strict value is not equal to itself.")
927+@Callable(dK)
928+func putOneTknREADONLY (eb,ea) = {
929+ let fK = dZ(ea, aX(eb), unit, unit)
930+ let fE = fK._1
931+ let dd = fK._2
932+ let dY = fK._3
933+ let fD = fK._4
934+ let ef = fK._5
935+ $Tuple2(nil, $Tuple3(fE, dY, fD))
973936 }
974937
975938
976939
977-@Callable(df)
978-func getNoLess (fo,fp) = {
979- let cA = de(df)
980- let cg = cA._1
981- let ch = cA._2
982- let dh = cA._3
983- let bP = cA._4
984- let ci = cA._5
985- if ((fo > cg))
986- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987- else if ((fp > ch))
988- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
989- else {
990- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991- if ((fn == fn))
992- then ci
993- else throw("Strict value is not equal to itself.")
994- }
995- }
996-
997-
998-
999-@Callable(df)
1000-func unstakeAndGet (dn) = {
1001- let fq = if ((size(df.payments) != 0))
1002- then throw("No payments are expected")
1003- else true
1004- if ((fq == fq))
940+@Callable(dK)
941+func getOneTkn (fL,fx) = {
942+ let fz = {
943+ let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
944+ if ($isInstanceOf(aQ, "Boolean"))
945+ then aQ
946+ else throw(($getType(aQ) + " couldn't be cast to Boolean"))
947+ }
948+ let fM = if (if (aS())
949+ then true
950+ else (bf == n))
951+ then true
952+ else fz
953+ let eG = [if (if (!(fM))
954+ then true
955+ else fb(dK))
956+ then true
957+ else aK("get operation is blocked by admin"), if ((size(dK.payments) == 1))
958+ then true
959+ else aK("exactly 1 payment are expected")]
960+ if ((eG == eG))
1005961 then {
1006- let bE = aH()
1007- let bR = fromBase58String(bE[q])
1008- let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009- if ((fk == fk))
962+ let eF = aX(fL)
963+ let fB = dK.payments[0]
964+ let eb = fB.assetId
965+ let en = fB.amount
966+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
967+ if ((dr == dr))
1010968 then {
1011- let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012- let bU = parseIntValue(cA._9)
1013- let ci = cA._10
1014- let fr = if (if (aF())
1015- then true
1016- else (bU == n))
1017- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1018- else true
1019- if ((fr == fr))
969+ let aa = dK.caller
970+ let ab = dK.transactionId
971+ let fN = eE(eF, en, eb, aa, ab)
972+ if ((fN == fN))
1020973 then {
1021- let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022- if ((fn == fn))
1023- then ci
974+ let eH = fN._5
975+ let fD = fN._4
976+ let dY = fN._3
977+ let dd = fN._2
978+ let fO = fN._1
979+ let dS = if (if ((fx > 0))
980+ then (fx > fO)
981+ else false)
982+ then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
983+ else fO
984+ let fP = invoke(aN, "burn", [en], [AttachedPayment(eb, en)])
985+ if ((fP == fP))
986+ then {
987+ let fQ = [ScriptTransfer(aa, dS, eF)]
988+ let fH = if ((dY > 0))
989+ then [ScriptTransfer(aO, dY, eF)]
990+ else nil
991+ let fR = {
992+ let fS = if ((this == aO))
993+ then 0
994+ else dY
995+ if (eH)
996+ then $Tuple2(-((dS + fS)), 0)
997+ else $Tuple2(0, -((dS + fS)))
998+ }
999+ let dt = fR._1
1000+ let du = fR._2
1001+ let fT = ds(dt, du, 0)
1002+ let ft = fT._1
1003+ let dj = fT._2
1004+ let fu = dw(dr, dj)
1005+ if ((fu == fu))
1006+ then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1007+ else throw("Strict value is not equal to itself.")
1008+ }
10241009 else throw("Strict value is not equal to itself.")
10251010 }
10261011 else throw("Strict value is not equal to itself.")
10271012 }
10281013 else throw("Strict value is not equal to itself.")
10291014 }
10301015 else throw("Strict value is not equal to itself.")
10311016 }
10321017
10331018
10341019
1035-@Callable(df)
1036-func unstakeAndGetNoLess (fj,fs,fp) = {
1037- let fd = if (aF())
1020+@Callable(dK)
1021+func getOneTknREADONLY (eF,en) = {
1022+ let fU = eE(aX(eF), en, bg, unit, unit)
1023+ let fO = fU._1
1024+ let dd = fU._2
1025+ let dY = fU._3
1026+ let fD = fU._4
1027+ let eH = fU._5
1028+ $Tuple2(nil, $Tuple3(fO, dY, fD))
1029+ }
1030+
1031+
1032+
1033+@Callable(dK)
1034+func unstakeAndGetOneTkn (fV,fL,fx) = {
1035+ let fz = {
1036+ let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1037+ if ($isInstanceOf(aQ, "Boolean"))
1038+ then aQ
1039+ else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1040+ }
1041+ let fM = if (if (aS())
10381042 then true
1039- else (aS == n)
1040- let ee = [if (!(fd))
1043+ else (bf == n))
10411044 then true
1042- else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
1045+ else fz
1046+ let eG = [if (if (!(fM))
10431047 then true
1044- else throw("no payments are expected")]
1045- if ((ee == ee))
1048+ else fb(dK))
1049+ then true
1050+ else aK("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1051+ then true
1052+ else aK("no payments are expected")]
1053+ if ((eG == eG))
10461054 then {
1047- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048- if ((fk == fk))
1055+ let eF = aX(fL)
1056+ let aa = dK.caller
1057+ let ab = dK.transactionId
1058+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1059+ if ((dr == dr))
10491060 then {
1050- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051- let cg = cA._1
1052- let ch = cA._2
1053- let ci = cA._10
1054- let ft = [if ((cg >= fs))
1055- then true
1056- else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1057- then true
1058- else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059- if ((ft == ft))
1061+ let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1062+ if ((fW == fW))
10601063 then {
1061- let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062- if ((fn == fn))
1063- then ci
1064+ let fX = eE(eF, fV, bg, aa, ab)
1065+ if ((fX == fX))
1066+ then {
1067+ let eH = fX._5
1068+ let fD = fX._4
1069+ let dY = fX._3
1070+ let dd = fX._2
1071+ let fO = fX._1
1072+ let dS = if (if ((fx > 0))
1073+ then (fx > fO)
1074+ else false)
1075+ then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
1076+ else fO
1077+ let fP = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1078+ if ((fP == fP))
1079+ then {
1080+ let fQ = [ScriptTransfer(dK.caller, dS, eF)]
1081+ let fH = if ((dY > 0))
1082+ then [ScriptTransfer(aO, dY, eF)]
1083+ else nil
1084+ let fY = {
1085+ let fS = if ((this == aO))
1086+ then 0
1087+ else dY
1088+ if (eH)
1089+ then $Tuple2(-((dS + fS)), 0)
1090+ else $Tuple2(0, -((dS + fS)))
1091+ }
1092+ let dt = fY._1
1093+ let du = fY._2
1094+ let fZ = ds(dt, du, 0)
1095+ let ft = fZ._1
1096+ let dj = fZ._2
1097+ let fu = dw(dr, dj)
1098+ if ((fu == fu))
1099+ then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1100+ else throw("Strict value is not equal to itself.")
1101+ }
1102+ else throw("Strict value is not equal to itself.")
1103+ }
10641104 else throw("Strict value is not equal to itself.")
10651105 }
10661106 else throw("Strict value is not equal to itself.")
10671107 }
10681108 else throw("Strict value is not equal to itself.")
10691109 }
10701110 else throw("Strict value is not equal to itself.")
10711111 }
10721112
10731113
10741114
1075-@Callable(df)
1076-func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1077- then throw("permissions denied")
1078- else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1079-
1080-
1081-
1082-@Callable(df)
1083-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084-
1085-
1086-
1087-@Callable(df)
1088-func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089-
1090-
1091-
1092-@Callable(df)
1093-func calcPricesWrapperREADONLY (by,bz,bD) = {
1094- let bM = bC(by, bz, bD)
1095- $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
1115+@Callable(dK)
1116+func get () = {
1117+ let cO = dJ(dK)
1118+ let ga = cO._1
1119+ let cv = cO._2
1120+ let dM = cO._3
1121+ let cd = cO._4
1122+ let cw = cO._5
1123+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1124+ if ((dr == dr))
1125+ then {
1126+ let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1127+ if ((gb == gb))
1128+ then {
1129+ let gc = ds(-(ga), -(cv), 0)
1130+ let ft = gc._1
1131+ let dj = gc._2
1132+ let fu = dw(dr, dj)
1133+ if ((fu == fu))
1134+ then (cw ++ ft)
1135+ else throw("Strict value is not equal to itself.")
1136+ }
1137+ else throw("Strict value is not equal to itself.")
1138+ }
1139+ else throw("Strict value is not equal to itself.")
10961140 }
10971141
10981142
10991143
1100-@Callable(df)
1144+@Callable(dK)
1145+func getNoLess (gd,ge) = {
1146+ let cO = dJ(dK)
1147+ let cu = cO._1
1148+ let cv = cO._2
1149+ let dM = cO._3
1150+ let cd = cO._4
1151+ let cw = cO._5
1152+ if ((gd > cu))
1153+ then throw(((("noLessThenAmtAsset failed: " + toString(cu)) + " < ") + toString(gd)))
1154+ else if ((ge > cv))
1155+ then throw(((("noLessThenPriceAsset failed: " + toString(cv)) + " < ") + toString(ge)))
1156+ else {
1157+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1158+ if ((dr == dr))
1159+ then {
1160+ let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1161+ if ((gb == gb))
1162+ then {
1163+ let gf = ds(-(cu), -(cv), 0)
1164+ let ft = gf._1
1165+ let dj = gf._2
1166+ let fu = dw(dr, dj)
1167+ if ((fu == fu))
1168+ then (cw ++ ft)
1169+ else throw("Strict value is not equal to itself.")
1170+ }
1171+ else throw("Strict value is not equal to itself.")
1172+ }
1173+ else throw("Strict value is not equal to itself.")
1174+ }
1175+ }
1176+
1177+
1178+
1179+@Callable(dK)
1180+func unstakeAndGet (dS) = {
1181+ let gg = if ((size(dK.payments) != 0))
1182+ then throw("No payments are expected")
1183+ else true
1184+ if ((gg == gg))
1185+ then {
1186+ let bS = aU()
1187+ let cf = fromBase58String(bS[q])
1188+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1189+ if ((dr == dr))
1190+ then {
1191+ let fW = invoke(bm, "unstake", [toBase58String(cf), dS], nil)
1192+ if ((fW == fW))
1193+ then {
1194+ let cO = cb(toBase58String(dK.transactionId), toBase58String(cf), dS, dK.caller)
1195+ let cu = cO._1
1196+ let cv = cO._2
1197+ let ci = parseIntValue(cO._9)
1198+ let cw = cO._10
1199+ let gh = if (if (aS())
1200+ then true
1201+ else (ci == n))
1202+ then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
1203+ else true
1204+ if ((gh == gh))
1205+ then {
1206+ let gb = invoke(aN, "burn", [dS], [AttachedPayment(cf, dS)])
1207+ if ((gb == gb))
1208+ then {
1209+ let gi = ds(-(cu), -(cv), 0)
1210+ let ft = gi._1
1211+ let dj = gi._2
1212+ let fu = dw(dr, dj)
1213+ if ((fu == fu))
1214+ then (cw ++ ft)
1215+ else throw("Strict value is not equal to itself.")
1216+ }
1217+ else throw("Strict value is not equal to itself.")
1218+ }
1219+ else throw("Strict value is not equal to itself.")
1220+ }
1221+ else throw("Strict value is not equal to itself.")
1222+ }
1223+ else throw("Strict value is not equal to itself.")
1224+ }
1225+ else throw("Strict value is not equal to itself.")
1226+ }
1227+
1228+
1229+
1230+@Callable(dK)
1231+func unstakeAndGetNoLess (fV,gj,ge) = {
1232+ let fM = if (aS())
1233+ then true
1234+ else (bf == n)
1235+ let eG = [if (!(fM))
1236+ then true
1237+ else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1238+ then true
1239+ else throw("no payments are expected")]
1240+ if ((eG == eG))
1241+ then {
1242+ let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1243+ if ((dr == dr))
1244+ then {
1245+ let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1246+ if ((fW == fW))
1247+ then {
1248+ let cO = cb(toBase58String(dK.transactionId), toBase58String(bg), fV, dK.caller)
1249+ let cu = cO._1
1250+ let cv = cO._2
1251+ let cw = cO._10
1252+ let gk = [if ((cu >= gj))
1253+ then true
1254+ else throw(makeString(["amount asset amount to receive is less than ", toString(gj)], "")), if ((cv >= ge))
1255+ then true
1256+ else throw(makeString(["price asset amount to receive is less than ", toString(ge)], ""))]
1257+ if ((gk == gk))
1258+ then {
1259+ let gb = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1260+ if ((gb == gb))
1261+ then {
1262+ let gl = ds(-(cu), -(cv), 0)
1263+ let ft = gl._1
1264+ let dj = gl._2
1265+ let fu = dw(dr, dj)
1266+ if ((fu == fu))
1267+ then (cw ++ ft)
1268+ else throw("Strict value is not equal to itself.")
1269+ }
1270+ else throw("Strict value is not equal to itself.")
1271+ }
1272+ else throw("Strict value is not equal to itself.")
1273+ }
1274+ else throw("Strict value is not equal to itself.")
1275+ }
1276+ else throw("Strict value is not equal to itself.")
1277+ }
1278+ else throw("Strict value is not equal to itself.")
1279+ }
1280+
1281+
1282+
1283+@Callable(dK)
1284+func activate (gm,gn) = if ((toString(dK.caller) != toString(aN)))
1285+ then throw("permissions denied")
1286+ else $Tuple2([StringEntry(ad(), gm), StringEntry(ae(), gn)], "success")
1287+
1288+
1289+
1290+@Callable(dK)
1291+func refreshKLp () = {
1292+ let go = valueOrElse(getInteger(aj), 0)
1293+ let gp = if (((height - go) >= am))
1294+ then unit
1295+ else aK(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1296+ if ((gp == gp))
1297+ then {
1298+ let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
1299+ let gq = ds(0, 0, 0)
1300+ let gr = gq._1
1301+ let dj = gq._2
1302+ let dv = if ((dD != dj))
1303+ then gr
1304+ else aK("nothing to refresh")
1305+ $Tuple2(dv, toString(dj))
1306+ }
1307+ else throw("Strict value is not equal to itself.")
1308+ }
1309+
1310+
1311+
1312+@Callable(dK)
1313+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1314+
1315+
1316+
1317+@Callable(dK)
1318+func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1319+
1320+
1321+
1322+@Callable(dK)
1323+func calcPricesWrapperREADONLY (bM,bN,bR) = {
1324+ let ca = bQ(bM, bN, bR)
1325+ $Tuple2(nil, [toString(ca[0]), toString(ca[1]), toString(ca[2])])
1326+ }
1327+
1328+
1329+
1330+@Callable(dK)
11011331 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11021332
11031333
11041334
1105-@Callable(df)
1106-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1335+@Callable(dK)
1336+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
11071337
11081338
11091339
1110-@Callable(df)
1111-func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1340+@Callable(dK)
1341+func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
11121342
11131343
11141344
1115-@Callable(df)
1116-func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1345+@Callable(dK)
1346+func estimatePutOperationWrapperREADONLY (cc,cy,cz,cA,cB,cC,aa,cD,cE) = $Tuple2(nil, cx(cc, cy, cz, cA, cB, cC, aa, cD, cE))
11171347
11181348
11191349
1120-@Callable(df)
1121-func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122- let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123- $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
1350+@Callable(dK)
1351+func estimateGetOperationWrapperREADONLY (cc,cd,ce,aa) = {
1352+ let cO = cb(cc, cd, ce, addressFromStringValue(aa))
1353+ $Tuple2(nil, $Tuple10(cO._1, cO._2, cO._3, cO._4, cO._5, cO._6, cO._7, toString(cO._8), cO._9, cO._10))
11241354 }
11251355
11261356
11271357
1128-@Callable(df)
1358+@Callable(dK)
11291359 func statsREADONLY () = {
1130- let bE = aH()
1131- let bR = fromBase58String(bE[q])
1132- let cS = bE[r]
1133- let cT = bE[s]
1134- let ct = bE[v]
1135- let cu = bE[w]
1136- let bF = parseIntValue(bE[t])
1137- let bG = parseIntValue(bE[u])
1138- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139- let cU = bq(cS)
1140- let cV = bq(cT)
1141- let fx = if ((fw == 0))
1360+ let bS = aU()
1361+ let cf = fromBase58String(bS[q])
1362+ let gs = bS[r]
1363+ let gt = bS[s]
1364+ let cH = bS[v]
1365+ let cI = bS[w]
1366+ let bT = parseIntValue(bS[t])
1367+ let bU = parseIntValue(bS[u])
1368+ let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1369+ let gv = bD(gs)
1370+ let gw = bD(gt)
1371+ let gx = if ((gu == 0))
11421372 then [e, e, e]
1143- else bC(cU, cV, fw)
1144- let cb = 0
1145- let fy = G(fx[1], b)
1146- let fz = G(fx[2], b)
1147- let fA = value(getInteger(aA, am(toString(this))))
1148- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
1373+ else bQ(gv, gw, gu)
1374+ let cp = 0
1375+ let gy = H(gx[1], b)
1376+ let gz = H(gx[2], b)
1377+ let gA = value(getInteger(aN, ax(toString(this))))
1378+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gv), toString(gw), toString(gu), toString(cp), toString(gy), toString(gz), toString(gA)], j))
11491379 }
11501380
11511381
11521382
1153-@Callable(df)
1154-func evaluatePutByAmountAssetREADONLY (cl) = {
1155- let bE = aH()
1156- let bR = fromBase58String(bE[q])
1157- let cr = bE[r]
1158- let bS = fromBase58String(cr)
1159- let cs = bE[s]
1160- let bT = fromBase58String(cs)
1161- let bF = parseIntValue(bE[t])
1162- let bG = parseIntValue(bE[u])
1163- let bU = bE[p]
1164- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165- let cU = bq(cr)
1166- let cV = bq(cs)
1167- let bA = D(cU, bF)
1168- let bB = D(cV, bG)
1169- let ca = if ((fw == 0))
1383+@Callable(dK)
1384+func evaluatePutByAmountAssetREADONLY (cz) = {
1385+ let bS = aU()
1386+ let cf = fromBase58String(bS[q])
1387+ let cF = bS[r]
1388+ let cg = fromBase58String(cF)
1389+ let cG = bS[s]
1390+ let ch = fromBase58String(cG)
1391+ let bT = parseIntValue(bS[t])
1392+ let bU = parseIntValue(bS[u])
1393+ let ci = bS[p]
1394+ let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1395+ let gv = bD(cF)
1396+ let gw = bD(cG)
1397+ let bO = D(gv, bT)
1398+ let bP = D(gw, bU)
1399+ let co = if ((gu == 0))
11701400 then e
1171- else bs(bB, bA)
1172- let cx = D(cl, bF)
1173- let cy = fraction(cx, ca, d)
1174- let cn = G(cy, bG)
1175- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176- let cI = dl._1
1177- let fB = dl._3
1178- let bW = dl._4
1179- let bY = dl._5
1180- let bV = dl._6
1181- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1401+ else bF(bP, bO)
1402+ let cL = D(cz, bT)
1403+ let cM = fraction(cL, co, d)
1404+ let cB = H(cM, bU)
1405+ let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1406+ let cW = dQ._1
1407+ let gB = dQ._3
1408+ let ck = dQ._4
1409+ let cm = dQ._5
1410+ let cj = dQ._6
1411+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
11821412 }
11831413
11841414
11851415
1186-@Callable(df)
1187-func evaluatePutByPriceAssetREADONLY (cn) = {
1188- let bE = aH()
1189- let bR = fromBase58String(bE[q])
1190- let cr = bE[r]
1191- let bS = fromBase58String(cr)
1192- let cs = bE[s]
1193- let bT = fromBase58String(cs)
1194- let bF = parseIntValue(bE[t])
1195- let bG = parseIntValue(bE[u])
1196- let bU = bE[p]
1197- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198- let fC = bq(cr)
1199- let fD = bq(cs)
1200- let fE = D(fC, bF)
1201- let fF = D(fD, bG)
1202- let ca = if ((fw == 0))
1416+@Callable(dK)
1417+func evaluatePutByPriceAssetREADONLY (cB) = {
1418+ let bS = aU()
1419+ let cf = fromBase58String(bS[q])
1420+ let cF = bS[r]
1421+ let cg = fromBase58String(cF)
1422+ let cG = bS[s]
1423+ let ch = fromBase58String(cG)
1424+ let bT = parseIntValue(bS[t])
1425+ let bU = parseIntValue(bS[u])
1426+ let ci = bS[p]
1427+ let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1428+ let gC = bD(cF)
1429+ let gD = bD(cG)
1430+ let gE = D(gC, bT)
1431+ let gF = D(gD, bU)
1432+ let co = if ((gu == 0))
12031433 then e
1204- else bs(fF, fE)
1205- let cy = D(cn, bG)
1206- let cx = fraction(cy, d, ca)
1207- let cl = G(cx, bF)
1208- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209- let cI = dl._1
1210- let fB = dl._3
1211- let bW = dl._4
1212- let bY = dl._5
1213- let bV = dl._6
1214- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1434+ else bF(gF, gE)
1435+ let cM = D(cB, bU)
1436+ let cL = fraction(cM, d, co)
1437+ let cz = H(cL, bT)
1438+ let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1439+ let cW = dQ._1
1440+ let gB = dQ._3
1441+ let ck = dQ._4
1442+ let cm = dQ._5
1443+ let cj = dQ._6
1444+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
12151445 }
12161446
12171447
12181448
1219-@Callable(df)
1220-func evaluateGetREADONLY (fG,fH) = {
1221- let cA = bN("", fG, fH, this)
1222- let cg = cA._1
1223- let ch = cA._2
1224- let bW = cA._5
1225- let bY = cA._6
1226- let bV = cA._7
1227- let cb = cA._8
1228- let bU = parseIntValue(cA._9)
1229- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
1449+@Callable(dK)
1450+func evaluateGetREADONLY (gG,gH) = {
1451+ let cO = cb("", gG, gH, this)
1452+ let cu = cO._1
1453+ let cv = cO._2
1454+ let ck = cO._5
1455+ let cm = cO._6
1456+ let cj = cO._7
1457+ let cp = cO._8
1458+ let ci = parseIntValue(cO._9)
1459+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cu), toString(cv), toString(ck), toString(cm), toString(cj), toString(cp), toString(ci)], j))
12301460 }
12311461
12321462
1233-@Verifier(fI)
1234-func fJ () = {
1235- let fK = {
1236- let dq = ev()
1237- if ($isInstanceOf(dq, "ByteVector"))
1463+@Verifier(gI)
1464+func gJ () = {
1465+ let gK = {
1466+ let dV = eY()
1467+ if ($isInstanceOf(dV, "ByteVector"))
12381468 then {
1239- let ez = dq
1240- ez
1469+ let fc = dV
1470+ fc
12411471 }
1242- else if ($isInstanceOf(dq, "Unit"))
1243- then fI.senderPublicKey
1472+ else if ($isInstanceOf(dV, "Unit"))
1473+ then gI.senderPublicKey
12441474 else throw("Match error")
12451475 }
1246- let dq = fI
1247- if ($isInstanceOf(dq, "Order"))
1476+ let dV = gI
1477+ if ($isInstanceOf(dV, "Order"))
12481478 then {
1249- let cR = dq
1250- let fL = aG()
1251- let ar = cQ(cR)
1252- let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253- let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254- if (if (if (ar)
1255- then as
1479+ let dz = dV
1480+ let gL = aT()
1481+ let gM = dy(dz)
1482+ let aC = gM._1
1483+ let aD = gM._2
1484+ let aE = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1485+ let aF = sigVerify(dz.bodyBytes, dz.proofs[1], gL)
1486+ if (if (if (aC)
1487+ then aE
12561488 else false)
1257- then at
1489+ then aF
12581490 else false)
12591491 then true
1260- else aq(ar, as, at)
1492+ else aB(aC, aD, aE, aF)
12611493 }
1262- else if ($isInstanceOf(dq, "SetScriptTransaction"))
1494+ else if ($isInstanceOf(dV, "SetScriptTransaction"))
12631495 then {
1264- let ew = dq
1265- let fM = blake2b256(value(ew.script))
1266- let fN = fromBase64String(value(getString(aA, ao())))
1267- let fO = scriptHash(this)
1268- if (if ((fN == fM))
1269- then (fO != fM)
1496+ let eZ = dV
1497+ let gN = blake2b256(value(eZ.script))
1498+ let gO = fromBase64String(value(getString(aN, az())))
1499+ let gP = scriptHash(this)
1500+ if (if ((gO == gN))
1501+ then (gP != gN)
12701502 else false)
12711503 then true
1272- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1504+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
12731505 }
1274- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1506+ else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
12751507 }
12761508

github/deemru/w8io/6500d08 
349.58 ms