tx · 4kkL48qGqRChrqR39sjd8PtFshgRUS8qDd9o3MLWo1Me

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03100000 Waves

2022.09.12 14:47 [2225840] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "4kkL48qGqRChrqR39sjd8PtFshgRUS8qDd9o3MLWo1Me", "fee": 3100000, "feeAssetId": null, "timestamp": 1662983263839, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "2zMPCLUkmxp1PEn8WxwgVgG1eVmoczaE6bdCWTVpE2oaruhMZ2v52YT5qmuzH1RRCyDCmQneWy14awmcC4SqrnAY" ], "script": "base64:BgKGAQgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgUKAwEBBBIDCgEBEgASBwoFAQEBCAESBAoCAQESAwoBARIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEITgAGc2NhbGU4AIDC1y8ADHNjYWxlOEJpZ0ludAkAtgIBAIDC1y8AB3NjYWxlMTgJALYCAQCAgJC7utat8A0ACnplcm9CaWdJbnQJALYCAQAAAAlvbmVCaWdJbnQJALYCAQABAApzbGlwcGFnZTRECQC2AgEJAGUCBQZzY2FsZTgJAGkCCQBoAgUGc2NhbGU4AAEFBnNjYWxlOAAFQW11bHQCAzEwMAAFRGNvbnYCATEAA1NFUAICX18ABUVNUFRZAgAAClBvb2xBY3RpdmUAAQAKUG9vbFB1dERpcwACAA5Qb29sTWF0Y2hlckRpcwADAAxQb29sU2h1dGRvd24ABAAOaWR4UG9vbEFkZHJlc3MAAQAJaWR4UG9vbFN0AAIACWlkeExQQXNJZAADAAlpZHhBbUFzSWQABAAJaWR4UHJBc0lkAAUAC2lkeEFtdEFzRGNtAAYADWlkeFByaWNlQXNEY20ABwALaWR4SUFtdEFzSWQACAANaWR4SVByaWNlQXNJZAAJAA9pZHhGYWN0U3Rha0NudHIAAQAQaWR4RmFjdFNsaXBwQ250cgAHABFpZHhGYWN0R3d4UmV3Q250cgAKAAVkZWxheQIJJXNfX2RlbGF5AQJ0MQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQJmMQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFB3NjYWxlMTgBAnRzAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAEDcGF1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkAQNnYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AQNhbXAAAgclc19fYW1wAQNhZGEAAg0lc19fYWRkb25BZGRyAQVsZ290YwEGY2FsbGVyCQC5CQIJAMwIAgIXJXMlc19fbGFzdEdldE9uZVRrbkNhbGwJAMwIAgUGY2FsbGVyBQNuaWwFA1NFUAEFbHNvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RQdXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBGZjZmcAAhElc19fZmFjdG9yeUNvbmZpZwEEbXRwawACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECcGMCBmlBbXRBcwVpUHJBcwkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUGaUFtdEFzAgJfXwUFaVByQXMCCF9fY29uZmlnAQNtYmEBBWJBU3RyCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FBWJBU3RyAQNhcHMAAgwlc19fc2h1dGRvd24BHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAEDdG9lAwNvclYGc2VuZHJWBm1hdGNoVgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQNvclYCCyBzbmRyVmFsaWQ9CQClAwEFBnNlbmRyVgIMIG10Y2hyVmFsaWQ9CQClAwEFBm1hdGNoVgEDc3RyAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnZhbFN0cgUHJG1hdGNoMAUGdmFsU3RyCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwEEc3RyZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQRpbnRmAgRhZGRyA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBGFkZHIFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQRhZGRyCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgAAA2ZjYQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBHN0cmYCBQR0aGlzCQECZmMAAAFBCQEEc3RyZgIFBHRoaXMJAQNhbXAAAQNpZ3MACQELdmFsdWVPckVsc2UCCQCbCAIFA2ZjYQkBA2FwcwAHAQJtcAAJANkEAQkBBHN0cmYCBQNmY2EJAQRtdHBrAAEDZ3BjAAQFYW10QXMJAQRzdHJmAgUEdGhpcwkBAmFhAAQHcHJpY2VBcwkBBHN0cmYCBQR0aGlzCQECcGEABAhpUHJpY2VBcwkBBGludGYCBQNmY2EJAQNtYmEBBQdwcmljZUFzBAZpQW10QXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUFYW10QXMJALUJAgkBBHN0cmYCBQNmY2EJAQJwYwIJAKQDAQUGaUFtdEFzCQCkAwEFCGlQcmljZUFzBQNTRVABA2dmYwAJALUJAgkBBHN0cmYCBQNmY2EJAQRmY2ZnAAUDU0VQARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQRjcGJpAghwckFtdFgxOAhhbUFtdFgxOAkAvAIDBQhwckFtdFgxOAUHc2NhbGUxOAUIYW1BbXRYMTgBA3ZhZAMCQTECQTIIc2xpcHBhZ2UEBGRpZmYJALwCAwkAuAICBQJBMQUCQTIFDHNjYWxlOEJpZ0ludAUCQTIEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUCQTEJAMwIAgUCQTIFA25pbAECdmQDAkQxAkQwBHNscGcEBGRpZmYJALwCAwUCRDAFDHNjYWxlOEJpZ0ludAUCRDEEBGZhaWwJAL8CAgUEc2xwZwUEZGlmZgMDBQRmYWlsBgkAvwICBQJEMAUCRDEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAkQwAgEgCQCmAwEFAkQxAgEgCQCmAwEFBGRpZmYCASAJAKYDAQUEc2xwZwUEZmFpbAEDcGNwBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQECdDECBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBAnQxAgUFcHJBbXQFCnByQXNzZXREY20JAQRjcGJpAgUKcHJBc0FtdFgxOAULYW10QXNBbXRYMTgBCmNhbGNQcmljZXMDBWFtQW10BXByQW10BWxwQW10BANjZmcJAQNncGMABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20FBWFtQW10BQVwckFtdAQIYW1BbXRYMTgJAQJ0MQIFBWFtQW10BQhhbXRBc0RjbQQIcHJBbXRYMTgJAQJ0MQIFBXByQW10BQdwckFzRGNtBAhscEFtdFgxOAkBAnQxAgUFbHBBbXQFBnNjYWxlOAQNbHBQckluQW1Bc1gxOAkBBGNwYmkCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQRjcGJpAgUIcHJBbXRYMTgFCGxwQW10WDE4CQDMCAIFCHByaWNlWDE4CQDMCAIFDWxwUHJJbkFtQXNYMTgJAMwIAgUNbHBQckluUHJBc1gxOAUDbmlsAQ9jYWxjdWxhdGVQcmljZXMDBWFtQW10BXByQW10BWxwQW10BAFwCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAMwIAgkBAmYxAgkAkQMCBQFwAAAFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAACBQZzY2FsZTgFA25pbAEDZWdvBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdscEVtaXNzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUEbHBJZAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQRscElkBQpwbXRBc3NldElkCQACAQIPV3JvbmcgcG10IGFzc2V0BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFBXByRGNtBAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQECdDECBQhwbXRMcEFtdAUGc2NhbGU4BApscEVtaXNzWDE4CQECdDECBQdscEVtaXNzBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgECG91dEFtQW10CQECZjECBQtvdXRBbUFtdFgxOAUFYW1EY20ECG91dFByQW10CQECZjECBQtvdXRQckFtdFgxOAUFcHJEY20EBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dEFtQW10AwkAAAIFBGFtSWQCBVdBVkVTBQR1bml0CQDZBAEFBGFtSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dFByQW10AwkAAAIFBHBySWQCBVdBVkVTBQR1bml0CQDZBAEFBHBySWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUIb3V0QW1BbXQFCG91dFByQW10BQhwbXRMcEFtdAUIY3VyUHJpY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQUDbmlsCQCcCgoFCG91dEFtQW10BQhvdXRQckFtdAUEYW1JZAUEcHJJZAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFB2xwRW1pc3MFC2N1clByaWNlWDE4BQNzdHMFBXN0YXRlAQNlcG8MBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAt1c2VyQWRkcmVzcwZpc0V2YWwGZW1pdExwCmlzT25lQXNzZXQGcG10QW10BXBtdElkBANjZmcJAQNncGMABARscElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB2FtSWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3BySWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQECWluQW1JZFN0cgkAkQMCBQNjZmcFC2lkeElBbXRBc0lkBAlpblBySWRTdHIJAJEDAgUDY2ZnBQ1pZHhJUHJpY2VBc0lkBAZhbXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAhwcmljZURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BARscEVtCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFBGxwSWQCCFdyIGxwIGFzCHF1YW50aXR5BAlhbUJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFB2luQW1BbXQECXByQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUHaW5QckFtdAQPaW5BbUFzc2V0QW10WDE4CQECdDECBQdpbkFtQW10BQZhbXREY20ED2luUHJBc3NldEFtdFgxOAkBAnQxAgUHaW5QckFtdAUIcHJpY2VEY20EDHVzZXJQcmljZVgxOAkBBGNwYmkCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBmFtdERjbQQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFCHByaWNlRGNtBAFyAwkAAAIFBGxwRW0AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQJmMQIFCGxwQW10WDE4BQZzY2FsZTgJAQJmMQIFD2luQW1Bc3NldEFtdFgxOAUGYW10RGNtCQECZjECBQ9pblByQXNzZXRBbXRYMTgFCHByaWNlRGNtCQEEY3BiaQIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQPc2xpcHBhZ2VSZWFsWDE4CQC8AgMJAQNhYnMBCQC4AgIFC2N1clByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFC2N1clByaWNlWDE4BAtzbGlwcGFnZVgxOAkBAnQxAgUIc2xpcHBhZ2UFBnNjYWxlOAMDCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQ9zbGlwcGFnZVJlYWxYMTgFC3NsaXBwYWdlWDE4BwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQ9zbGlwcGFnZVJlYWxYMTgCAyA+IAkApgMBBQtzbGlwcGFnZVgxOAQNbHBFbWlzc2lvblgxOAkBAnQxAgUEbHBFbQUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFB3NjYWxlMTgECmFtVmlhUHJYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQMZXhwZWN0ZWRBbXRzAwkAvwICBQpwclZpYUFtWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUKYW1WaWFQclgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFD2luQW1Bc3NldEFtdFgxOAUKcHJWaWFBbVgxOAQRZXhwQW10QXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzEEE2V4cFByaWNlQXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzIECGxwQW10WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFE2V4cFByaWNlQXNzZXRBbXRYMTgFDHByQmFsYW5jZVgxOAkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBRFleHBBbXRBc3NldEFtdFgxOAUGYW10RGNtCQECZjECBRNleHBQcmljZUFzc2V0QW10WDE4BQhwcmljZURjbQULY3VyUHJpY2VYMTgFC3NsaXBwYWdlWDE4BAljYWxjTHBBbXQIBQFyAl8xBA5jYWxjQW1Bc3NldFBtdAgFAXICXzIEDmNhbGNQckFzc2V0UG10CAUBcgJfMwQIY3VyUHJpY2UJAQJmMQIIBQFyAl80BQZzY2FsZTgEDHNsaXBwYWdlQ2FsYwkBAmYxAggFAXICXzUFBnNjYWxlOAMJAGcCAAAFCWNhbGNMcEFtdAkAAgECB0xQIDw9IDAECWVtaXRMcEFtdAMJAQEhAQUGZW1pdExwAAAFCWNhbGNMcEFtdAQGYW1EaWZmCQBlAgUHaW5BbUFtdAUOY2FsY0FtQXNzZXRQbXQEBnByRGlmZgkAZQIFB2luUHJBbXQFDmNhbGNQckFzc2V0UG10BA0kdDAxNTYwMTE1OTQ2AwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHYW1JZFN0cgcJAJQKAgUGcG10QW10AAADAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdwcklkU3RyBwkAlAoCAAAFBnBtdEFtdAkAlAoCBQ5jYWxjQW1Bc3NldFBtdAUOY2FsY1ByQXNzZXRQbXQECndyaXRlQW1BbXQIBQ0kdDAxNTYwMTE1OTQ2Al8xBAp3cml0ZVByQW10CAUNJHQwMTU2MDExNTk0NgJfMgQLY29tbW9uU3RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQEDcGF1AgULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUKd3JpdGVBbUFtdAUKd3JpdGVQckFtdAUJZW1pdExwQW10BQhjdXJQcmljZQUIc2xpcHBhZ2UFDHNsaXBwYWdlQ2FsYwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUGYW1EaWZmBQZwckRpZmYFA25pbAkAnwoNBQljYWxjTHBBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQRscEVtBQRscElkBQNzdHMFC2NvbW1vblN0YXRlBQZhbURpZmYFBnByRGlmZgUGaW5BbUlkBQZpblBySWQBA21vYQEFb3JkZXIEA2NmZwkBA2dwYwAEB2FtdEFzSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBnByQXNJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQlpZHhQb29sU3QECGFtdEFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQHcHJBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQPYWNjQW10QXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB2FtdEFzSWQEDmFjY1ByQXNCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBnByQXNJZAQLY3VyUHJpY2VYMTgDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGQCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlCQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20JAGUCBQ9hY2NBbXRBc0JhbGFuY2UIBQVvcmRlcgZhbW91bnQFDmFjY1ByQXNCYWxhbmNlBAhjdXJQcmljZQkBAmYxAgULY3VyUHJpY2VYMTgFBnNjYWxlOAMDAwkBA2lncwAGCQAAAgUDc3RzBQ5Qb29sTWF0Y2hlckRpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgECDUFkbWluIGJsb2NrZWQECm9yQW10QXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BApvckFtdEFzU3RyAwkAAAIFCm9yQW10QXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCm9yQW10QXNzZXQECW9yUHJBc3NldAgIBQVvcmRlcglhc3NldFBhaXIKcHJpY2VBc3NldAQJb3JQckFzU3RyAwkAAAIFCW9yUHJBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUJb3JQckFzc2V0AwMJAQIhPQIFCm9yQW10QXNTdHIFB2FtdEFzSWQGCQECIT0CBQlvclByQXNTdHIFBnByQXNJZAkAAgECCVdyIGFzc2V0cwQKb3JkZXJQcmljZQgFBW9yZGVyBXByaWNlBAhwcmljZURjbQkAawMFBnNjYWxlOAUHcHJBc0RjbQUIYW10QXNEY20EDmNhc3RPcmRlclByaWNlCQECdHMDBQpvcmRlclByaWNlBQZzY2FsZTgFCHByaWNlRGNtBBFpc09yZGVyUHJpY2VWYWxpZAMJAAACCAUFb3JkZXIJb3JkZXJUeXBlBQNCdXkJAGcCBQhjdXJQcmljZQUOY2FzdE9yZGVyUHJpY2UJAGcCBQ5jYXN0T3JkZXJQcmljZQUIY3VyUHJpY2UGAQJjZwEBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTADAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQNzdHMJAJcKBQUIb3V0QW1BbXQFCG91dFByQW10BQZwbXRBbXQFCnBtdEFzc2V0SWQFBXN0YXRlAQJjcAkGY2FsbGVyBHR4SWQHYW1Bc1BtdAdwckFzUG10CHNsaXBwYWdlBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQBcgkBA2VwbwwFBHR4SWQFCHNsaXBwYWdlCAkBBXZhbHVlAQUHYW1Bc1BtdAZhbW91bnQICQEFdmFsdWUBBQdhbUFzUG10B2Fzc2V0SWQICQEFdmFsdWUBBQdwckFzUG10BmFtb3VudAgJAQV2YWx1ZQEFB3ByQXNQbXQHYXNzZXRJZAUGY2FsbGVyBwUGZW1pdExwBQppc09uZUFzc2V0BQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyAQFtAAQHJG1hdGNoMAkAoggBCQEDbXBrAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAnBtAAQHJG1hdGNoMAkAoggBCQEEcG1wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJtbQEBaQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IWAWkBC2NvbnN0cnVjdG9yAQJmYwQBYwkBAm1tAQUBaQMJAAACBQFjBQFjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJmYwAFAmZjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwQCY20JANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUCY20FAmNtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQRwbXBrAAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAXAJAQJwbQAEA2hwbQMJAQlpc0RlZmluZWQBBQFwBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQNocG0FA2hwbQQDY3BtAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUBcAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDY3BtBQNjcG0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBA21wawAJANgEAQkBBXZhbHVlAQUBcAkAzAgCCQELRGVsZXRlRW50cnkBCQEEcG1wawAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQCBHNsaXAJYXV0b1N0YWtlBAdmYWN0Q2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIDCQBmAgAABQRzbGlwCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAWUJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFBHNsaXAGBwAAAgAECWVtaXRMcEFtdAgFAWUCXzIECWxwQXNzZXRJZAgFAWUCXzcEBXN0YXRlCAUBZQJfOQQGYW1EaWZmCAUBZQNfMTAEBnByRGlmZggFAWUDXzExBARhbUlkCAUBZQNfMTIEBHBySWQIBQFlA18xMwQBcgkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFyBQFyBAJlbAQHJG1hdGNoMAUBcgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlwdXRPbmVUa24FC2FtQXNzZXRQYXJ0C3ByQXNzZXRQYXJ0BW91dExwCHNsaXBwYWdlCWF1dG9TdGFrZQQDY2ZnCQEDZ2ZjAAQLc3Rha2luZ0NudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAhzbGlwQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyBAdnd3hDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgtXciBnd3ggYWRkcgQHcG9vbENmZwkBA2dwYwAEBGFtSWQJAJEDAgUHcG9vbENmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFB3Bvb2xDZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQ1pZHhQcmljZUFzRGNtBAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBA1hZGRvbkNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQNhZGEAAglubyBhZGRvbnMCGmFkZG9uIGFkZHJlc3MgaW4gbm90IHZhbGlkBAVjaGVjawkA/QcEBQ1hZGRvbkNvbnRyYWN0AhJlbnN1cmVDYW5QdXRPbmVUa24JAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwMDAwkAZwIAAAUIc2xpcHBhZ2UGCQBnAgAABQthbUFzc2V0UGFydAYJAGcCAAAFC3ByQXNzZXRQYXJ0BgkAZwIAAAUFb3V0THAJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50AwkAZgIAgK3iBAUGcG10QW10CQACAQINV3JvbmcgcG10IGFtdAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBA0kdDAyNDg1OTI1NDM1AwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQDAwkAZgIFBnBtdEFtdAUJYW1CYWxhbmNlBgkAZgIFC2FtQXNzZXRQYXJ0BQZwbXRBbXQJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYJAGUCBQlhbUJhbGFuY2UFBnBtdEFtdAUJcHJCYWxhbmNlCQBlAgUGcG10QW10BQthbUFzc2V0UGFydAULcHJBc3NldFBhcnQAAAAAAwkAAAIFCnBtdEFzc2V0SWQFBHBySWQDAwkAZgIFBnBtdEFtdAUJcHJCYWxhbmNlBgkAZgIFC3ByQXNzZXRQYXJ0BQZwbXRBbXQJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYFCWFtQmFsYW5jZQkAZQIFCXByQmFsYW5jZQUGcG10QW10AAAAAAkAZQIFBnBtdEFtdAULcHJBc3NldFBhcnQFC2FtQXNzZXRQYXJ0CQACAQIQd3JvbmcgcG10QXNzZXRJZAQMYW1CYWxhbmNlTm93CAUNJHQwMjQ4NTkyNTQzNQJfMQQMcHJCYWxhbmNlTm93CAUNJHQwMjQ4NTkyNTQzNQJfMgQMdmlydFN3YXBJbkFtCAUNJHQwMjQ4NTkyNTQzNQJfMwQNdmlydFN3YXBPdXRQcggFDSR0MDI0ODU5MjU0MzUCXzQEDHZpcnRTd2FwSW5QcggFDSR0MDI0ODU5MjU0MzUCXzUEDXZpcnRTd2FwT3V0QW0IBQ0kdDAyNDg1OTI1NDM1Al82BAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUMYW1CYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUMcHJCYWxhbmNlTm93BQx2aXJ0U3dhcEluUHIFDXZpcnRTd2FwT3V0UHIJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEBkQwdnNEMQkBAnZkAwkApwMBCQEDc3RyAQUCRDEJAKcDAQkBA3N0cgEFAkQwBQpzbGlwcGFnZTREAwkAAAIFBkQwdnNEMQUGRDB2c0QxBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFC2FtQXNzZXRQYXJ0CQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQtwckFzc2V0UGFydAUIc2xpcHBhZ2UGBgUGcG10QW10BQpwbXRBc3NldElkBAdlc3RpbUxQCAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBAlscENhbGNSZXMJAQN2YWQDCQC2AgEFB2VzdGltTFAJALYCAQUFb3V0THAJALYCAQUIc2xpcHBhZ2UECWVtaXRMcEFtdAkAoAMBCAUJbHBDYWxjUmVzAl8yBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtwdXRPbmVUa25WMgMFb3V0THAIc2xpcHBhZ2UJYXV0b1N0YWtlBANjZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwURaWR4RmFjdEd3eFJld0NudHICC1dyIGd3eCBhZGRyBAdwb29sQ2ZnCQEDZ3BjAAQEYW1JZAkAkQMCBQdwb29sQ2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUHcG9vbENmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFDWlkeFByaWNlQXNEY20EBWFkZG9uCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQNhZGEAAgAEC3VzZXJBZGRyZXNzAwkAAAIFBWFkZG9uCQClCAEIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEDWFkZG9uQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBA2FkYQACCW5vIGFkZG9ucwIaYWRkb24gYWRkcmVzcyBpbiBub3QgdmFsaWQEBWNoZWNrCQD9BwQFDWFkZG9uQ29udHJhY3QCEmVuc3VyZUNhblB1dE9uZVRrbgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAMJAAACBQVjaGVjawUFY2hlY2sDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50AwkAZgIAgK3iBAUGcG10QW10CQACAQINV3JvbmcgcG10IGFtdAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBA0kdDAyODg4ODI5Mjc2AwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQlhbUJhbGFuY2UFBnBtdEFtdAUJcHJCYWxhbmNlAwkAAAIFCnBtdEFzc2V0SWQFBHBySWQDCQBmAgUGcG10QW10BQlwckJhbGFuY2UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFCWFtQmFsYW5jZQkAZQIFCXByQmFsYW5jZQUGcG10QW10CQACAQIQd3JvbmcgcG10QXNzZXRJZAQMYW1CYWxhbmNlTm93CAUNJHQwMjg4ODgyOTI3NgJfMQQMcHJCYWxhbmNlTm93CAUNJHQwMjg4ODgyOTI3NgJfMgQNJHQwMjkyODIyOTQxNgMJAAACBQpwbXRBc3NldElkBQRhbUlkCQCUCgIFDGFtQmFsYW5jZU5vdwUMcHJCYWxhbmNlTm93CQCUCgIFDHByQmFsYW5jZU5vdwUMYW1CYWxhbmNlTm93BBBhbUJhbGFuY2VGb3JDYWxjCAUNJHQwMjkyODIyOTQxNgJfMQQQcHJCYWxhbmNlRm9yQ2FsYwgFDSR0MDI5MjgyMjk0MTYCXzIECnhQcmVjaXNpb24AAQQGcmVzdWx0CgABQAkA/AcEBQdnd3hDbnRyAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQZwbXRBbXQJAMwIAgkApAMBBRBhbUJhbGFuY2VGb3JDYWxjCQDMCAIJAKQDAQUQcHJCYWxhbmNlRm9yQ2FsYwkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnhQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBCQD8BwQFB2d3eENudHICDGNhbGNQdXRYT25seQkAzAgCCQCkAwEFBnBtdEFtdAkAzAgCCQCkAwEFEGFtQmFsYW5jZUZvckNhbGMJAMwIAgkApAMBBRBwckJhbGFuY2VGb3JDYWxjCQDMCAICAAkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIJAKQDAQUKeFByZWNpc2lvbgkAzAgCBQVEY29udgUDbmlsBQNuaWwCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEDSR0MDI5OTI4MzAwMjQDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAUGcmVzdWx0CQCUCgIIBQZyZXN1bHQCXzIIBQZyZXN1bHQCXzEEC2FtQXNzZXRQYXJ0CAUNJHQwMjk5MjgzMDAyNAJfMQQLcHJBc3NldFBhcnQIBQ0kdDAyOTkyODMwMDI0Al8yBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFC2FtQXNzZXRQYXJ0CQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQtwckFzc2V0UGFydAUIc2xpcHBhZ2UGBgUGcG10QW10BQpwbXRBc3NldElkBAdlc3RpbUxQCAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBAllbWl0THBBbXQDCQBmAgUFb3V0THAAAAQJbHBDYWxjUmVzCQEDdmFkAwkAtgIBBQdlc3RpbUxQCQC2AgEFBW91dExwCQC2AgEFCHNsaXBwYWdlCQCgAwEIBQlscENhbGNSZXMCXzIFB2VzdGltTFAEAWUJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBZQUBZQQCZWwEByRtYXRjaDAFAWUDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnB1dEZvckZyZWUBB21heFNscGcDCQBmAgAABQdtYXhTbHBnCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQdtYXhTbHBnBwcAAAIACAUGZXN0UHV0Al85AWkBA2dldAAEAXIJAQJjZwEFAWkECW91dEFtdEFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBA2dmYwAEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFEWlkeEZhY3RHd3hSZXdDbnRyAgpXciBzbCBhZGRyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAQNYWRkb25Db250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEDYWRhAAIJbm8gYWRkb25zAhphZGRvbiBhZGRyZXNzIGluIG5vdCB2YWxpZAQFY2hlY2sJAP0HBAUNYWRkb25Db250cmFjdAISZW5zdXJlQ2FuR2V0T25lVGtuCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawMJAGYCAICU69wDBQZwbXRBbXQJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQhzbGlwcGFnZQYJAGYCAAAFCmV4Y2hSZXN1bHQGCQBmAgAABQlvdXRBbW91bnQJAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDM0NTkzMzUwNTADCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10BQpleGNoUmVzdWx0BQplc3RpbVByQW10AAAAAAkAZAIFCmVzdGltQW1BbXQFCmV4Y2hSZXN1bHQDCQAAAgUKb3V0QXNzZXRJZAUEcHJJZAkAmQoHCQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAAIBAhB3cm9uZyBvdXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAzNDU5MzM1MDUwAl8xBAxwckJhbGFuY2VOb3cIBQ0kdDAzNDU5MzM1MDUwAl8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzNDU5MzM1MDUwAl8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzQ1OTMzNTA1MAJfNAQMdmlydFN3YXBJblByCAUNJHQwMzQ1OTMzNTA1MAJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDM0NTkzMzUwNTACXzYECHRvdGFsR2V0CAUNJHQwMzQ1OTMzNTA1MAJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAAIBAgpXcm9uZyBjYWxjBAJEMAkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEFDGFtQmFsYW5jZU5vdwkAzAgCCQCkAwEFDHByQmFsYW5jZU5vdwkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKQDAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDXZpcnRTd2FwT3V0UHIFDHZpcnRTd2FwSW5QcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEECGZpbmFsUmVzCQEDdmFkAwkAtgIBBQh0b3RhbEdldAkAtgIBBQlvdXRBbW91bnQJALYCAQUIc2xpcHBhZ2UDCQAAAgUIZmluYWxSZXMFCGZpbmFsUmVzBA0kdDAzNTc1NTM1ODU5AwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJQKAgkAoAMBCAUIZmluYWxSZXMCXzIAAAkAlAoCAAAJAKADAQgFCGZpbmFsUmVzAl8yBAVvdXRBbQgFDSR0MDM1NzU1MzU4NTkCXzEEBW91dFByCAUNJHQwMzU3NTUzNTg1OQJfMgQIY3VyUHJYMTgJAQRjcGJpAgkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQFY3VyUHIJAQJmMQIFCGN1clByWDE4BQZzY2FsZTgEBXN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzCQBkAgUFb3V0QW0FBW91dFByAwkAAAIFCm91dEFzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFCm91dEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUFb3V0QW0FBW91dFByBQZwbXRBbXQFBWN1clByBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQVjdXJQcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUFY3VyUHIFA25pbAMJAAACBQVzdGF0ZQUFc3RhdGUEBGJ1cm4JAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBQRidXJuBQRidXJuBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQBcgkBAmNnAQUBaQQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwBAF2AwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUDc3RzBgMJAAACBQF2BQF2BAVidXJuQQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUFYnVybkEFBWJ1cm5BBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhY3RpdmF0ZQIIYW10QXNTdHIHcHJBc1N0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFA2ZjYQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFCGFtdEFzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUBawUBdgUDbmlsAWkBBHNldEkCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBdgUDbmlsAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBA2dwYwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQCcHIJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAnByAAAJAMwIAgkApgMBCQCRAwIFAnByAAEJAMwIAgkApgMBCQCRAwIFAnByAAIFA25pbAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwMcmVzU2NhbGVNdWx0CQCUCgIFA25pbAkBAmYxAgkApwMBBQN2YWwFDHJlc1NjYWxlTXVsdAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQECdDECBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQRjcGJpAgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkB3VzckFkZHIGaXNFdmFsBmVtaXRMcAkAlAoCBQNuaWwJAQNlcG8MBQZ0eElkNTgFCHNsaXBwYWdlBQdpbkFtQW10BQZpbkFtSWQFB2luUHJBbXQFBmluUHJJZAUHdXNyQWRkcgUGaXNFdmFsBQZlbWl0THAHAAACAAFpASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQGdHhJZDU4B3BtdEFzSWQIcG10THBBbXQHdXNyQWRkcgQBcgkBA2VnbwQFBnR4SWQ1OAUHcG10QXNJZAUIcG10THBBbXQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3VzckFkZHIJAJQKAgUDbmlsCQCcCgoIBQFyAl8xCAUBcgJfMggFAXICXzMIBQFyAl80CAUBcgJfNQgFAXICXzYIBQFyAl83CQCmAwEIBQFyAl84CAUBcgJfOQgFAXIDXzEwAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEBbQADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIFT3JkZXIEBW9yZGVyBQckbWF0Y2gwBAptYXRjaGVyUHViCQECbXAABApvcmRlclZhbGlkCQEDbW9hAQUFb3JkZXIEC3NlbmRlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAxtYXRjaGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAEFCm1hdGNoZXJQdWIDAwMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBwUMbWF0Y2hlclZhbGlkBwYJAQN0b2UDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAUMbWF0Y2hlclZhbGlkAwkAAQIFByRtYXRjaDACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAFzBQckbWF0Y2gwBAduZXdIYXNoCQD2AwEJAQV2YWx1ZQEIBQFzBnNjcmlwdAQLYWxsb3dlZEhhc2gJANsEAQkBBXZhbHVlAQkAnQgCBQNmY2EJARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAQLY3VycmVudEhhc2gJAPEHAQUEdGhpcwMDCQAAAgULYWxsb3dlZEhhc2gFB25ld0hhc2gJAQIhPQIFC2N1cnJlbnRIYXNoBQduZXdIYXNoBwYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5mmZ6ZQ==", "height": 2225840, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Jcijpp9oVerjvVEMg36E7372DfQjXRpwnSZxW7XDpUp Next: Hmt2U1HBWakXvid12118nvFqEyxFqneteFfGBCYMEsos Diff:
OldNewDifferences
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = 1000
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = toBigInt(1)
1313
14-let f = toBigInt(1)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = "100"
1717
18-let h = "100"
18+let h = "1"
1919
20-let i = "1"
20+let i = "__"
2121
22-let j = "__"
22+let j = ""
2323
24-let k = ""
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 1
3333
34-let p = 1
34+let p = 2
3535
36-let q = 2
36+let q = 3
3737
38-let r = 3
38+let r = 4
3939
40-let s = 4
40+let s = 5
4141
42-let t = 5
42+let t = 6
4343
44-let u = 6
44+let u = 7
4545
46-let v = 7
46+let v = 8
4747
48-let w = 8
48+let w = 9
4949
50-let x = 9
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
54+let z = 10
5555
56-let A = 10
56+let A = "%s__delay"
5757
58-let B = 0
59-
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6159
6260
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6462
6563
66-func I (J,K,L) = fraction(J, K, L)
64+func H (I,J,K) = fraction(I, J, K)
6765
6866
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7270
7371
74-func N () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7573
7674
77-func O () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
7876
7977
80-func P () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8179
8280
83-func Q () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8482
8583
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8785
8886
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9088
9189
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9391
9492
95-func Y () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9694
9795
98-func Z () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
9997
10098
101-func aa () = "%s__amp"
99+func Z () = "%s__amp"
102100
103101
104-func ab () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
105103
106104
107-let ac = "%s__feePermille"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
108106
109-let ad = valueOrElse(getInteger(this, ac), B)
107+
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109+
110110
111111 func ae () = "%s__factoryConfig"
112112
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func an () = "%s__feeCollectorAddress"
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
132-func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133-
134-
135-func as (G) = {
136- let at = G
137- if ($isInstanceOf(at, "String"))
132+func ar (F) = {
133+ let as = F
134+ if ($isInstanceOf(as, "String"))
138135 then {
139- let au = at
140- au
136+ let at = as
137+ at
141138 }
142139 else throw("fail cast to String")
143140 }
144141
145142
146-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147144
148145
149-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
150147
151148
152-let az = addressFromStringValue(av(this, N()))
149+let ay = addressFromStringValue(au(this, M()))
153150
154-let aA = av(this, aa())
151+let az = au(this, Z())
155152
156-func aB () = valueOrElse(getBoolean(az, al()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
157154
158155
159-func aC () = fromBase58String(av(az, af()))
156+func aB () = fromBase58String(au(ay, af()))
160157
161158
162-let aD = addressFromStringValue(av(az, an()))
163-
164-func aE () = {
165- let aF = av(this, Y())
166- let aG = av(this, Z())
167- let aH = ay(az, aj(aG))
168- let ah = ay(az, aj(aF))
169- split(av(az, ag(toString(ah), toString(aH))), j)
159+func aC () = {
160+ let aD = au(this, X())
161+ let aE = au(this, Y())
162+ let aF = ax(ay, aj(aE))
163+ let ah = ax(ay, aj(aD))
164+ split(au(ay, ag(toString(ah), toString(aF))), i)
170165 }
171166
172167
173-func aI () = split(av(az, ae()), j)
168+func aG () = split(au(ay, ae()), i)
174169
175170
176-func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
171+func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], i)
177172
178173
179-func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
174+func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], i)
180175
181176
182-func aY (aZ) = if ((aZ == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
183178 then wavesBalance(this).available
184- else assetBalance(this, fromBase58String(aZ))
179+ else assetBalance(this, fromBase58String(aX))
185180
186181
187-func ba (bb,bc) = fraction(bb, c, bc)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
188183
189184
190-func bd (be,bf,bg) = {
191- let bh = fraction((be - bf), b, bf)
192- let bi = ((bg - M(bh)) > e)
193- if (!(bi))
194- then throw(("Big slpg: " + toString(bh)))
195- else $Tuple2(bi, min([be, bf]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
196191 }
197192
198193
199-func bj (bk,bl,bm) = {
200- let bh = fraction(bl, b, bk)
201- let bn = (bm > bh)
202- if (if (bn)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
203198 then true
204- else (bl > bk))
205- then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206- else bn
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
207202 }
208203
209204
210-func bo (bp,bq,br,bs) = {
211- let bt = C(br, bp)
212- let bu = C(bs, bq)
213- ba(bu, bt)
205+func bm (bn,bo,bp,bq) = {
206+ let br = B(bp, bn)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
214209 }
215210
216211
217-func bv (br,bs,bw) = {
218- let bx = aE()
219- let by = parseIntValue(bx[u])
220- let bz = parseIntValue(bx[v])
221- let bA = bo(by, bz, br, bs)
222- let bc = C(br, by)
223- let bb = C(bs, bz)
224- let bB = C(bw, a)
225- let bC = ba(bc, bB)
226- let bD = ba(bb, bB)
227-[bA, bC, bD]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
228223 }
229224
230225
231-func bE (br,bs,bw) = {
232- let bF = bv(br, bs, bw)
233-[F(bF[0], a), F(bF[1], a), F(bF[2], a)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
234229 }
235230
236231
237-func bG (bH,bI,bJ,bK) = {
238- let bx = aE()
239- let bL = bx[r]
240- let bM = bx[s]
241- let bN = bx[t]
242- let bO = parseIntValue(bx[u])
243- let bP = parseIntValue(bx[v])
244- let bQ = bx[q]
245- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
246- if ((bL != bI))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
247242 then throw("Wrong pmt asset")
248243 else {
249- let bS = aY(bM)
250- let bT = C(bS, bO)
251- let bU = aY(bN)
252- let bV = C(bU, bP)
253- let bW = ba(bV, bT)
254- let bX = F(bW, a)
255- let bY = C(bJ, a)
256- let bZ = C(bR, a)
257- let ca = fraction(bT, bY, bZ)
258- let cb = fraction(bV, bY, bZ)
259- let cc = F(ca, bO)
260- let cd = F(cb, bP)
261- let ce = if ((bH == ""))
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
254+ let ca = E(bY, bM)
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
262257 then nil
263- else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
264259 then unit
265- else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
266261 then unit
267- else fromBase58String(bN)), StringEntry(X(toString(bK), bH), aU(cc, cd, bJ, bX, height, lastBlock.timestamp)), IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX)]
268- $Tuple10(cc, cd, bM, bN, bS, bU, bR, bW, bQ, ce)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
269264 }
270265 }
271266
272267
273-func cf (bH,bg,cg,ch,ci,cj,bK,ck,cl,cm,cn,co) = {
274- let bx = aE()
275- let bL = fromBase58String(bx[r])
276- let cp = bx[s]
277- let cq = bx[t]
278- let cr = bx[w]
279- let cs = bx[x]
280- let ct = parseIntValue(bx[u])
281- let cu = parseIntValue(bx[v])
282- let bQ = bx[q]
283- let cv = valueOrErrorMessage(assetInfo(bL), "Wr lp as").quantity
284- let bS = if (ck)
285- then aY(cp)
286- else if (if (cm)
287- then (co == cp)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
288283 else false)
289- then (aY(cp) - cn)
290- else if (cm)
291- then aY(cp)
292- else (aY(cp) - cg)
293- let bU = if (ck)
294- then aY(cq)
295- else if (if (cm)
296- then (co == cq)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
297292 else false)
298- then (aY(cq) - cn)
299- else if (cm)
300- then aY(cq)
301- else (aY(cq) - ci)
302- let cw = C(cg, ct)
303- let cx = C(ci, cu)
304- let cy = ba(cx, cw)
305- let bT = C(bS, ct)
306- let bV = C(bU, cu)
307- let cz = if ((cv == 0))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
308303 then {
309- let bW = e
310- let cA = e
311- let bB = pow((cw * cx), 0, toBigInt(5), 1, 0, DOWN)
312- $Tuple5(F(bB, a), F(cw, ct), F(cx, cu), ba((bV + cx), (bT + cw)), cA)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
313308 }
314309 else {
315- let bW = ba(bV, bT)
316- let cB = fraction(M((bW - cy)), c, bW)
317- let cA = C(bg, a)
318- if (if ((bW != e))
319- then (cB > cA)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
320315 else false)
321- then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
322317 else {
323- let cC = C(cv, a)
324- let cD = fraction(cw, bW, c)
325- let cE = fraction(cx, c, bW)
326- let cF = if ((cD > cx))
327- then $Tuple2(cE, cx)
328- else $Tuple2(cw, cD)
329- let cG = cF._1
330- let cH = cF._2
331- let bB = fraction(cC, cH, bV)
332- $Tuple5(F(bB, a), F(cG, ct), F(cH, cu), bW, cA)
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
333328 }
334329 }
335- let cI = cz._1
336- let cJ = cz._2
337- let cK = cz._3
338- let bX = F(cz._4, a)
339- let cL = F(cz._5, a)
340- if ((0 >= cI))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
341336 then throw("LP <= 0")
342337 else {
343- let cM = if (!(cl))
338+ let cK = if (!(cj))
344339 then 0
345- else cI
346- let cN = (cg - cJ)
347- let cO = (ci - cK)
348- let cP = if (if (cm)
349- then (co == cp)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
350345 else false)
351- then $Tuple2(cn, 0)
352- else if (if (cm)
353- then (co == cq)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
354349 else false)
355- then $Tuple2(0, cn)
356- else $Tuple2(cJ, cK)
357- let cQ = cP._1
358- let cR = cP._2
359- let cS = [IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX), StringEntry(U(bK, bH), aJ(cQ, cR, cM, bX, bg, cL, height, lastBlock.timestamp, cN, cO))]
360- $Tuple13(cI, cM, bX, bS, bU, cv, bL, bQ, cS, cN, cO, ch, cj)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
361356 }
362357 }
363358
364359
365-func cT (cU) = {
366- let bx = aE()
367- let cV = bx[s]
368- let cW = bx[t]
369- let bQ = parseIntValue(bx[q])
370- let by = parseIntValue(bx[u])
371- let bz = parseIntValue(bx[v])
372- let cX = aY(cV)
373- let cY = aY(cW)
374- let bW = if ((cU.orderType == Buy))
375- then bo(by, bz, (cX + cU.amount), cY)
376- else bo(by, bz, (cX - cU.amount), cY)
377- let bX = F(bW, a)
378- if (if (if (aB())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
379374 then true
380- else (bQ == n))
375+ else (bO == m))
381376 then true
382- else (bQ == o))
377+ else (bO == n))
383378 then throw("Admin blocked")
384379 else {
385- let cZ = cU.assetPair.amountAsset
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
382+ then "WAVES"
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
386385 let da = if ((cZ == unit))
387386 then "WAVES"
388387 else toBase58String(value(cZ))
389- let db = cU.assetPair.priceAsset
390- let dc = if ((db == unit))
391- then "WAVES"
392- else toBase58String(value(db))
393- if (if ((da != cV))
388+ if (if ((cY != cT))
394389 then true
395- else (dc != cW))
390+ else (da != cU))
396391 then throw("Wr assets")
397392 else {
398- let dd = cU.price
399- let cu = fraction(a, bz, by)
400- let de = I(dd, a, cu)
401- let df = if ((cU.orderType == Buy))
402- then (bX >= de)
403- else (de >= bX)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
404399 true
405400 }
406401 }
407402 }
408403
409404
410-func dg (dh) = if ((size(dh.payments) != 1))
405+func de (df) = if ((size(df.payments) != 1))
411406 then throw("1 pmnt exp")
412407 else {
413- let di = value(dh.payments[0])
414- let bI = value(di.assetId)
415- let cn = di.amount
416- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
417- let cc = cz._1
418- let cd = cz._2
419- let bQ = parseIntValue(cz._9)
420- let ce = cz._10
421- if (if (aB())
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
422417 then true
423- else (bQ == o))
424- then throw(("Admin blocked: " + toString(bQ)))
425- else $Tuple5(cc, cd, cn, bI, ce)
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
426421 }
427422
428423
429-func dj (dk,W,dl,dm,bg,cl,cm,cn,co) = {
430- let cz = cf(W, bg, value(dl).amount, value(dl).assetId, value(dm).amount, value(dm).assetId, dk, false, cl, cm, cn, co)
431- let bQ = parseIntValue(cz._8)
432- if (if (if (aB())
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
433428 then true
434- else (bQ == m))
429+ else (bO == l))
435430 then true
436- else (bQ == o))
437- then throw(("Blocked:" + toString(bQ)))
438- else cz
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
439434 }
440435
441436
442-func dn (do) = {
443- let dp = fraction(do, ad, d)
444- $Tuple2((do - dp), dp)
445- }
446-
447-
448-func dq () = {
449- let at = getString(O())
450- if ($isInstanceOf(at, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
451440 then {
452- let dr = at
453- fromBase58String(dr)
441+ let dl = as
442+ fromBase58String(dl)
454443 }
455- else if ($isInstanceOf(at, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
456445 then unit
457446 else throw("Match error")
458447 }
459448
460449
461-func ds () = {
462- let at = getString(P())
463- if ($isInstanceOf(at, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
464453 then {
465- let dr = at
466- fromBase58String(dr)
454+ let dl = as
455+ fromBase58String(dl)
467456 }
468- else if ($isInstanceOf(at, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
469458 then unit
470459 else throw("Match error")
471460 }
472461
473462
474-let dt = throw("Permission denied")
463+let dn = throw("Permission denied")
475464
476-func du (dh) = {
477- let at = dq()
478- if ($isInstanceOf(at, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
479468 then {
480- let dv = at
481- if ((dh.callerPublicKey == dv))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
482471 then true
483- else dt
472+ else dn
484473 }
485- else if ($isInstanceOf(at, "Unit"))
486- then if ((dh.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
487476 then true
488- else dt
477+ else dn
489478 else throw("Match error")
490479 }
491480
492481
493-@Callable(dh)
494-func constructor (N) = {
495- let dw = du(dh)
496- if ((dw == dw))
497- then [StringEntry(N(), N)]
482+@Callable(df)
483+func constructor (M) = {
484+ let dq = do(df)
485+ if ((dq == dq))
486+ then [StringEntry(M(), M)]
498487 else throw("Strict value is not equal to itself.")
499488 }
500489
501490
502491
503-@Callable(dh)
504-func setManager (dx) = {
505- let dw = du(dh)
506- if ((dw == dw))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
507496 then {
508- let dy = fromBase58String(dx)
509- if ((dy == dy))
510- then [StringEntry(P(), dx)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
511500 else throw("Strict value is not equal to itself.")
512501 }
513502 else throw("Strict value is not equal to itself.")
515504
516505
517506
518-@Callable(dh)
507+@Callable(df)
519508 func confirmManager () = {
520- let bF = ds()
521- let dz = if (isDefined(bF))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
522511 then true
523512 else throw("No pending manager")
524- if ((dz == dz))
513+ if ((dt == dt))
525514 then {
526- let dA = if ((dh.callerPublicKey == value(bF)))
515+ let du = if ((df.callerPublicKey == value(bD)))
527516 then true
528517 else throw("You are not pending manager")
529- if ((dA == dA))
530- then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
531520 else throw("Strict value is not equal to itself.")
532521 }
533522 else throw("Strict value is not equal to itself.")
535524
536525
537526
538-@Callable(dh)
539-func put (dB,dC) = {
540- let dD = aI()
541- let dE = valueOrErrorMessage(addressFromString(dD[y]), "Wr st addr")
542- let dF = valueOrErrorMessage(addressFromString(dD[z]), "Wr sl addr")
543- if ((0 > dB))
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
544533 then throw("Wrong slippage")
545- else if ((size(dh.payments) != 2))
534+ else if ((size(df.payments) != 2))
546535 then throw("2 pmnts expd")
547536 else {
548- let dG = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], dB, true, false, 0, "")
549- let cM = dG._2
550- let dH = dG._7
551- let ce = dG._9
552- let cN = dG._10
553- let cO = dG._11
554- let bM = dG._12
555- let bN = dG._13
556- let cz = invoke(az, "emit", [cM], nil)
557- if ((cz == cz))
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
558547 then {
559- let dI = {
560- let at = cz
561- if ($isInstanceOf(at, "Address"))
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
562551 then {
563- let dJ = at
564- invoke(dJ, "emit", [cM], nil)
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
565554 }
566555 else unit
567556 }
568- if ((dI == dI))
557+ if ((dC == dC))
569558 then {
570- let dK = if ((cN > 0))
571- then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
572561 else nil
573- if ((dK == dK))
562+ if ((dE == dE))
574563 then {
575- let dL = if ((cO > 0))
576- then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
577566 else nil
578- if ((dL == dL))
567+ if ((dF == dF))
579568 then {
580- let dM = if (dC)
569+ let dG = if (dw)
581570 then {
582- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583- if ((dN == dN))
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
584573 then nil
585574 else throw("Strict value is not equal to itself.")
586575 }
587- else [ScriptTransfer(dh.caller, cM, dH)]
588- (ce ++ dM)
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
589578 }
590579 else throw("Strict value is not equal to itself.")
591580 }
599588
600589
601590
602-@Callable(dh)
603-func putOneTkn (dO,dP,dQ,bg,dC) = {
604- let bx = aI()
605- let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606- let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607- let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608- let dS = aE()
609- let bM = dS[s]
610- let bN = dS[t]
611- let bO = parseIntValue(dS[u])
612- let bP = parseIntValue(dS[v])
613- let dT = valueOrElse(getString(this, ab()), "")
614- let bK = if ((dT == toString(dh.caller)))
615- then dh.originCaller
616- else dh.caller
617- if (if (if (if ((0 >= bg))
618- then true
619- else (0 >= dO))
620- then true
621- else (0 >= dP))
622- then true
623- else (0 >= dQ))
624- then throw("Wrong params")
625- else if ((size(dh.payments) != 1))
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
608+ if ((dP == dP))
609+ then if (if (if (if ((0 >= be))
610+ then true
611+ else (0 >= dI))
612+ then true
613+ else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
616+ then throw("Wrong params")
617+ else if ((size(df.payments) != 1))
618+ then throw("1 pmnt expd")
619+ else {
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
624+ then throw("Wrong pmt amt")
625+ else {
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
630+ then true
631+ else (dI > cl))
632+ then throw("invalid payment amount")
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
636+ then true
637+ else (dJ > cl))
638+ then throw("invalid payment amount")
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
640+ else throw("wrong pmtAssetId")
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
651+ then {
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
662+ then {
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
666+ then {
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
669+ }
670+ else unit
671+ }
672+ if ((dC == dC))
673+ then {
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676+ else nil
677+ if ((dE == dE))
678+ then {
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
681+ else nil
682+ if ((dF == dF))
683+ then {
684+ let dG = if (dw)
685+ then {
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
688+ then nil
689+ else throw("Strict value is not equal to itself.")
690+ }
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
693+ }
694+ else throw("Strict value is not equal to itself.")
695+ }
696+ else throw("Strict value is not equal to itself.")
697+ }
698+ else throw("Strict value is not equal to itself.")
699+ }
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else throw("Strict value is not equal to itself.")
703+ }
704+ }
705+ else throw("Strict value is not equal to itself.")
706+ }
707+
708+
709+
710+@Callable(df)
711+func putOneTknV2 (dK,be,dw) = {
712+ let bv = aG()
713+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
714+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
715+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
716+ let dM = aC()
717+ let bK = dM[r]
718+ let bL = dM[s]
719+ let bM = parseIntValue(dM[t])
720+ let bN = parseIntValue(dM[u])
721+ let dN = valueOrElse(getString(this, aa()), "")
722+ let bI = if ((dN == toString(df.caller)))
723+ then df.originCaller
724+ else df.caller
725+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
726+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
727+ if ((dP == dP))
728+ then if ((size(df.payments) != 1))
626729 then throw("1 pmnt expd")
627730 else {
628- let di = value(dh.payments[0])
629- let bI = toBase58String(value(di.assetId))
630- let dU = di.amount
631- let dV = dn(dU)
632- let cn = dV._1
633- let dW = dV._2
634- if ((10000000 > dU))
731+ let dg = value(df.payments[0])
732+ let bG = toBase58String(value(dg.assetId))
733+ let cl = dg.amount
734+ if ((10000000 > cl))
635735 then throw("Wrong pmt amt")
636736 else {
637- let bS = aY(bM)
638- let bU = aY(bN)
639- let dX = if ((bI == bM))
640- then if (if ((dU > bS))
641- then true
642- else (dO > cn))
737+ let bQ = aW(bK)
738+ let bS = aW(bL)
739+ let eb = if ((bG == bK))
740+ then if ((cl > bQ))
643741 then throw("invalid payment amount")
644- else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645- else if ((bI == bN))
646- then if (if ((dU > bU))
647- then true
648- else (dP > cn))
742+ else $Tuple2((bQ - cl), bS)
743+ else if ((bG == bL))
744+ then if ((cl > bS))
649745 then throw("invalid payment amount")
650- else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
746+ else $Tuple2(bQ, (bS - cl))
651747 else throw("wrong pmtAssetId")
652- let dY = dX._1
653- let dZ = dX._2
654- let ea = dX._3
655- let eb = dX._4
656- let ec = dX._5
657- let ed = dX._6
658- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659- let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661- if ((ee == ee))
748+ let dR = eb._1
749+ let dS = eb._2
750+ let ec = if ((bG == bK))
751+ then $Tuple2(dR, dS)
752+ else $Tuple2(dS, dR)
753+ let ed = ec._1
754+ let ee = ec._2
755+ let ef = 1
756+ let eg = {
757+ let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
758+ if ($isInstanceOf(eh, "(Int, Int)"))
759+ then eh
760+ else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
761+ }
762+ let ei = if ((bG == bK))
763+ then eg
764+ else $Tuple2(eg._2, eg._1)
765+ let dI = ei._1
766+ let dJ = ei._2
767+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
768+ let dZ = dY._2
769+ let dB = dY._7
770+ let cc = dY._9
771+ let cL = dY._10
772+ let cM = dY._11
773+ let cK = if ((dK > 0))
662774 then {
663- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664- let eg = ef._2
665- let dH = ef._7
666- let ce = ef._9
667- let cN = ef._10
668- let cO = ef._11
669- let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670- let cM = toInt(eh._2)
671- let dG = invoke(az, "emit", [cM], nil)
672- if ((dG == dG))
775+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
776+ toInt(ea._2)
777+ }
778+ else dZ
779+ let dA = invoke(ay, "emit", [cK], nil)
780+ if ((dA == dA))
781+ then {
782+ let dC = {
783+ let as = dA
784+ if ($isInstanceOf(as, "Address"))
785+ then {
786+ let dD = as
787+ invoke(dD, "emit", [cK], nil)
788+ }
789+ else unit
790+ }
791+ if ((dC == dC))
673792 then {
674- let dI = {
675- let at = dG
676- if ($isInstanceOf(at, "Address"))
677- then {
678- let dJ = at
679- invoke(dJ, "emit", [cM], nil)
680- }
681- else unit
682- }
683- if ((dI == dI))
793+ let dE = if ((cL > 0))
794+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
795+ else nil
796+ if ((dE == dE))
684797 then {
685- let dK = if ((cN > 0))
686- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
798+ let dF = if ((cM > 0))
799+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
687800 else nil
688- if ((dK == dK))
801+ if ((dF == dF))
689802 then {
690- let dL = if ((cO > 0))
691- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
692- else nil
693- if ((dL == dL))
803+ let dG = if (dw)
694804 then {
695- let dM = if (dC)
696- then {
697- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698- if ((dN == dN))
699- then nil
700- else throw("Strict value is not equal to itself.")
701- }
702- else [ScriptTransfer(dh.caller, cM, dH)]
703- let ei = if ((dW > 0))
704- then [ScriptTransfer(aD, dW, fromBase58String(bI))]
705- else nil
706- ((ce ++ dM) ++ ei)
805+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
806+ if ((dH == dH))
807+ then nil
808+ else throw("Strict value is not equal to itself.")
707809 }
708- else throw("Strict value is not equal to itself.")
810+ else [ScriptTransfer(df.caller, cK, dB)]
811+ (cc ++ dG)
709812 }
710813 else throw("Strict value is not equal to itself.")
711814 }
716819 else throw("Strict value is not equal to itself.")
717820 }
718821 }
719- }
720-
721-
722-
723-@Callable(dh)
724-func putForFree (ej) = if ((0 > ej))
725- then throw("Wrong slpg")
726- else if ((size(dh.payments) != 2))
727- then throw("2 pmnts expd")
728- else {
729- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], ej, false, false, 0, "")
730- ef._9
731- }
732-
733-
734-
735-@Callable(dh)
736-func get () = {
737- let cz = dg(dh)
738- let ek = cz._1
739- let cd = cz._2
740- let cn = cz._3
741- let bI = cz._4
742- let ce = cz._5
743- let el = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
744- if ((el == el))
745- then ce
746822 else throw("Strict value is not equal to itself.")
747823 }
748824
749825
750826
751-@Callable(dh)
752-func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
827+@Callable(df)
828+func putForFree (ej) = if ((0 > ej))
829+ then throw("Wrong slpg")
830+ else if ((size(df.payments) != 2))
831+ then throw("2 pmnts expd")
832+ else {
833+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], ej, false, false, 0, "")
834+ dY._9
835+ }
836+
837+
838+
839+@Callable(df)
840+func get () = {
841+ let cx = de(df)
842+ let ek = cx._1
843+ let cb = cx._2
844+ let cl = cx._3
845+ let bG = cx._4
846+ let cc = cx._5
847+ let el = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
848+ if ((el == el))
849+ then cc
850+ else throw("Strict value is not equal to itself.")
851+ }
852+
853+
854+
855+@Callable(df)
856+func getOneTkn (em,en,eo,ep,be) = if ((size(df.payments) != 1))
753857 then throw("1 pmnt expd")
754858 else {
755- let bx = aE()
756- let bL = bx[r]
757- let bM = bx[s]
758- let bN = bx[t]
759- let bO = parseIntValue(bx[u])
760- let bP = parseIntValue(bx[v])
761- let bQ = bx[q]
762- let dD = aI()
763- let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764- let di = value(dh.payments[0])
765- let dT = valueOrElse(getString(this, ab()), "")
766- let bK = if ((dT == toString(dh.caller)))
767- then dh.originCaller
768- else dh.caller
769- let bH = toBase58String(dh.transactionId)
770- let bI = value(di.assetId)
771- let cn = di.amount
772- if ((1000000000 > cn))
773- then throw("Min pmt 10 LP")
774- else if (if (if ((0 > bg))
775- then true
776- else (0 > em))
777- then true
778- else (0 > eo))
779- then throw("Wrong params")
780- else if ((bL != toBase58String(bI)))
781- then throw("Wrong LP")
782- else {
783- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784- let eq = cz._1
785- let er = cz._2
786- let bS = aY(bM)
787- let bU = aY(bN)
788- let es = if ((ep == bM))
789- then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790- else if ((ep == bN))
791- then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
792- else throw("wrong outAssetId")
793- let dY = es._1
794- let dZ = es._2
795- let ea = es._3
796- let eb = es._4
797- let ec = es._5
798- let ed = es._6
799- let et = es._7
800- if (if ((0 > ea))
801- then true
802- else (0 > ec))
803- then throw("Wrong calc")
804- else {
805- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806- let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808- if ((ee == ee))
809- then {
810- let eu = dn(et)._1
811- let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812- if ((ev == ev))
813- then {
814- let ew = if ((ep == bM))
815- then $Tuple2(toInt(ev._2), 0)
816- else $Tuple2(0, toInt(ev._2))
817- let ex = ew._1
818- let ey = ew._2
819- let ez = (ex + ey)
820- let dW = (et - eu)
821- let eA = if ((ep == "WAVES"))
822- then unit
823- else fromBase58String(ep)
824- let ei = if ((dW > 0))
825- then [ScriptTransfer(aD, dW, eA)]
826- else nil
827- let eB = ba(C(bU, bP), C(bS, bO))
828- let eC = F(eB, a)
829- let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830- if ((ce == ce))
831- then {
832- let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833- if ((eD == eD))
834- then (ce ++ ei)
835- else throw("Strict value is not equal to itself.")
836- }
837- else throw("Strict value is not equal to itself.")
838- }
839- else throw("Strict value is not equal to itself.")
840- }
841- else throw("Strict value is not equal to itself.")
842- }
843- }
859+ let bv = aC()
860+ let bJ = bv[q]
861+ let bK = bv[r]
862+ let bL = bv[s]
863+ let bM = parseIntValue(bv[t])
864+ let bN = parseIntValue(bv[u])
865+ let bO = bv[p]
866+ let dx = aG()
867+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
868+ let dg = value(df.payments[0])
869+ let dN = valueOrElse(getString(this, aa()), "")
870+ let bI = if ((dN == toString(df.caller)))
871+ then df.originCaller
872+ else df.caller
873+ let bF = toBase58String(df.transactionId)
874+ let bG = value(dg.assetId)
875+ let cl = dg.amount
876+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
877+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
878+ if ((dP == dP))
879+ then if ((1000000000 > cl))
880+ then throw("Min pmt 10 LP")
881+ else if (if (if ((0 > be))
882+ then true
883+ else (0 > em))
884+ then true
885+ else (0 > eo))
886+ then throw("Wrong params")
887+ else if ((bJ != toBase58String(bG)))
888+ then throw("Wrong LP")
889+ else {
890+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
891+ let eq = cx._1
892+ let er = cx._2
893+ let bQ = aW(bK)
894+ let bS = aW(bL)
895+ let es = if ((ep == bK))
896+ then $Tuple7((bQ - eq), (bS - er), em, er, 0, 0, (eq + em))
897+ else if ((ep == bL))
898+ then $Tuple7((bQ - eq), (bS - er), 0, 0, em, eq, (er + em))
899+ else throw("wrong outAssetId")
900+ let dR = es._1
901+ let dS = es._2
902+ let dT = es._3
903+ let dU = es._4
904+ let dV = es._5
905+ let dW = es._6
906+ let et = es._7
907+ if (if ((0 > dT))
908+ then true
909+ else (0 > dV))
910+ then throw("Wrong calc")
911+ else {
912+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
913+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
914+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
915+ if ((dX == dX))
916+ then {
917+ let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
918+ if ((eu == eu))
919+ then {
920+ let ev = if ((ep == bK))
921+ then $Tuple2(toInt(eu._2), 0)
922+ else $Tuple2(0, toInt(eu._2))
923+ let ew = ev._1
924+ let ex = ev._2
925+ let ey = aY(B(bS, bN), B(bQ, bM))
926+ let ez = E(ey, a)
927+ let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
928+ then unit
929+ else fromBase58String(ep)), StringEntry(W(toString(bI), bF), aS(ew, ex, cl, ez, height, lastBlock.timestamp)), IntegerEntry(P(), ez), IntegerEntry(Q(height, lastBlock.timestamp), ez)]
930+ if ((cc == cc))
931+ then {
932+ let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
933+ if ((eA == eA))
934+ then cc
935+ else throw("Strict value is not equal to itself.")
936+ }
937+ else throw("Strict value is not equal to itself.")
938+ }
939+ else throw("Strict value is not equal to itself.")
940+ }
941+ else throw("Strict value is not equal to itself.")
942+ }
943+ }
944+ else throw("Strict value is not equal to itself.")
844945 }
845946
846947
847948
848-@Callable(dh)
849-func getNoLess (eE,eF) = {
850- let cz = dg(dh)
851- let cc = cz._1
852- let cd = cz._2
853- let cn = cz._3
854- let bI = cz._4
855- let ce = cz._5
856- if ((eE > cc))
857- then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
858- else if ((eF > cd))
859- then throw(((("Failed: " + toString(cd)) + " < ") + toString(eF)))
949+@Callable(df)
950+func getNoLess (eB,eC) = {
951+ let cx = de(df)
952+ let ca = cx._1
953+ let cb = cx._2
954+ let cl = cx._3
955+ let bG = cx._4
956+ let cc = cx._5
957+ if ((eB > ca))
958+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(eB)))
959+ else if ((eC > cb))
960+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eC)))
860961 else {
861- let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862- if ((eG == eG))
863- then ce
962+ let eD = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
963+ if ((eD == eD))
964+ then cc
864965 else throw("Strict value is not equal to itself.")
865966 }
866967 }
867968
868969
869970
870-@Callable(dh)
871-func unstakeAndGet (do) = {
872- let eH = if ((size(dh.payments) != 0))
971+@Callable(df)
972+func unstakeAndGet (eE) = {
973+ let eF = if ((size(df.payments) != 0))
873974 then throw("No pmnts expd")
874975 else true
875- if ((eH == eH))
976+ if ((eF == eF))
876977 then {
877- let bx = aE()
878- let eI = aI()
879- let dH = fromBase58String(bx[r])
880- let eJ = valueOrErrorMessage(addressFromString(eI[y]), "Wr st addr")
881- let eK = invoke(eJ, "unstake", [toBase58String(dH), do], nil)
882- if ((eK == eK))
978+ let bv = aC()
979+ let eG = aG()
980+ let dB = fromBase58String(bv[q])
981+ let eH = valueOrErrorMessage(addressFromString(eG[x]), "Wr st addr")
982+ let eI = invoke(eH, "unstake", [toBase58String(dB), eE], nil)
983+ if ((eI == eI))
883984 then {
884- let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885- let bQ = parseIntValue(cz._9)
886- let ce = cz._10
887- let eL = if (if (aB())
985+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), eE, df.caller)
986+ let bO = parseIntValue(cx._9)
987+ let cc = cx._10
988+ let eJ = if (if (aA())
888989 then true
889- else (bQ == o))
890- then throw(("Blocked: " + toString(bQ)))
990+ else (bO == n))
991+ then throw(("Blocked: " + toString(bO)))
891992 else true
892- if ((eL == eL))
993+ if ((eJ == eJ))
893994 then {
894- let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895- if ((eM == eM))
896- then ce
995+ let eK = invoke(ay, "burn", [eE], [AttachedPayment(dB, eE)])
996+ if ((eK == eK))
997+ then cc
897998 else throw("Strict value is not equal to itself.")
898999 }
8991000 else throw("Strict value is not equal to itself.")
9051006
9061007
9071008
908-@Callable(dh)
909-func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
1009+@Callable(df)
1010+func activate (eL,eM) = if ((toString(df.caller) != toString(ay)))
9101011 then throw("denied")
911- else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1012+ else $Tuple2([StringEntry(X(), eL), StringEntry(Y(), eM)], "success")
9121013
9131014
9141015
915-@Callable(dh)
916-func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917- then dt
918- else [StringEntry(eP, eL)]
1016+@Callable(df)
1017+func setS (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1018+ then dn
1019+ else [StringEntry(eN, eJ)]
9191020
9201021
9211022
922-@Callable(dh)
923-func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924- then dt
925- else [IntegerEntry(eP, eL)]
1023+@Callable(df)
1024+func setI (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1025+ then dn
1026+ else [IntegerEntry(eN, eJ)]
9261027
9271028
9281029
929-@Callable(dh)
930-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
1030+@Callable(df)
1031+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
9311032
9321033
9331034
934-@Callable(dh)
935-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1035+@Callable(df)
1036+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
9361037
9371038
9381039
939-@Callable(dh)
940-func calcPricesWrapperREADONLY (br,bs,bw) = {
941- let eQ = bv(br, bs, bw)
942- $Tuple2(nil, [toString(eQ[0]), toString(eQ[1]), toString(eQ[2])])
1040+@Callable(df)
1041+func calcPricesWrapperREADONLY (bp,bq,bu) = {
1042+ let eO = bt(bp, bq, bu)
1043+ $Tuple2(nil, [toString(eO[0]), toString(eO[1]), toString(eO[2])])
9431044 }
9441045
9451046
9461047
947-@Callable(dh)
948-func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1048+@Callable(df)
1049+func fromX18WrapperREADONLY (F,eP) = $Tuple2(nil, E(parseBigIntValue(F), eP))
9491050
9501051
9511052
952-@Callable(dh)
953-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1053+@Callable(df)
1054+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
9541055
9551056
9561057
957-@Callable(dh)
958-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1058+@Callable(df)
1059+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
9591060
9601061
9611062
962-@Callable(dh)
963-func estimatePutOperationWrapperREADONLY (bH,bg,cg,ch,ci,cj,eS,ck,cl) = $Tuple2(nil, cf(bH, bg, cg, ch, ci, cj, eS, ck, cl, false, 0, ""))
1063+@Callable(df)
1064+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eQ,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eQ, ci, cj, false, 0, ""))
9641065
9651066
9661067
967-@Callable(dh)
968-func estimateGetOperationWrapperREADONLY (bH,eT,bJ,eS) = {
969- let cz = bG(bH, eT, bJ, addressFromStringValue(eS))
970- $Tuple2(nil, $Tuple10(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, toString(cz._8), cz._9, cz._10))
1068+@Callable(df)
1069+func estimateGetOperationWrapperREADONLY (bF,eR,bH,eQ) = {
1070+ let cx = bE(bF, eR, bH, addressFromStringValue(eQ))
1071+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
9711072 }
9721073
9731074
974-@Verifier(eU)
975-func eV () = {
976- let eW = {
977- let at = dq()
978- if ($isInstanceOf(at, "ByteVector"))
1075+@Verifier(eS)
1076+func eT () = {
1077+ let eU = {
1078+ let as = dk()
1079+ if ($isInstanceOf(as, "ByteVector"))
9791080 then {
980- let dv = at
981- dv
1081+ let dp = as
1082+ dp
9821083 }
983- else if ($isInstanceOf(at, "Unit"))
984- then eU.senderPublicKey
1084+ else if ($isInstanceOf(as, "Unit"))
1085+ then eS.senderPublicKey
9851086 else throw("Match error")
9861087 }
987- let at = eU
988- if ($isInstanceOf(at, "Order"))
1088+ let as = eS
1089+ if ($isInstanceOf(as, "Order"))
9891090 then {
990- let cU = at
991- let eX = aC()
992- let eY = cT(cU)
993- let eZ = sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
994- let fa = sigVerify(cU.bodyBytes, cU.proofs[1], eX)
995- if (if (if (eY)
996- then eZ
1091+ let cS = as
1092+ let eV = aB()
1093+ let eW = cR(cS)
1094+ let eX = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1095+ let eY = sigVerify(cS.bodyBytes, cS.proofs[1], eV)
1096+ if (if (if (eW)
1097+ then eX
9971098 else false)
998- then fa
1099+ then eY
9991100 else false)
10001101 then true
1001- else ao(eY, eZ, fa)
1102+ else an(eW, eX, eY)
10021103 }
1003- else if ($isInstanceOf(at, "SetScriptTransaction"))
1104+ else if ($isInstanceOf(as, "SetScriptTransaction"))
10041105 then {
1005- let dr = at
1006- let fb = blake2b256(value(dr.script))
1007- let fc = fromBase64String(value(getString(az, am())))
1008- let fd = scriptHash(this)
1009- if (if ((fc == fb))
1010- then (fd != fb)
1106+ let dl = as
1107+ let eZ = blake2b256(value(dl.script))
1108+ let fa = fromBase64String(value(getString(ay, am())))
1109+ let fb = scriptHash(this)
1110+ if (if ((fa == eZ))
1111+ then (fb != eZ)
10111112 else false)
10121113 then true
1013- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1114+ else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
10141115 }
1015- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1116+ else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
10161117 }
10171118
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = 1000
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = toBigInt(1)
1313
14-let f = toBigInt(1)
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = toBigInt((a - ((a * 1) / a)))
16+let g = "100"
1717
18-let h = "100"
18+let h = "1"
1919
20-let i = "1"
20+let i = "__"
2121
22-let j = "__"
22+let j = ""
2323
24-let k = ""
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 1
3333
34-let p = 1
34+let p = 2
3535
36-let q = 2
36+let q = 3
3737
38-let r = 3
38+let r = 4
3939
40-let s = 4
40+let s = 5
4141
42-let t = 5
42+let t = 6
4343
44-let u = 6
44+let u = 7
4545
46-let v = 7
46+let v = 8
4747
48-let w = 8
48+let w = 9
4949
50-let x = 9
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
54+let z = 10
5555
56-let A = 10
56+let A = "%s__delay"
5757
58-let B = 0
59-
60-func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
58+func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
6159
6260
63-func F (G,H) = toInt(fraction(G, toBigInt(H), c))
61+func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6462
6563
66-func I (J,K,L) = fraction(J, K, L)
64+func H (I,J,K) = fraction(I, J, K)
6765
6866
69-func M (G) = if ((e > G))
70- then -(G)
71- else G
67+func L (F) = if ((d > F))
68+ then -(F)
69+ else F
7270
7371
74-func N () = "%s__factoryContract"
72+func M () = "%s__factoryContract"
7573
7674
77-func O () = "%s__managerPublicKey"
75+func N () = "%s__managerPublicKey"
7876
7977
80-func P () = "%s__pendingManagerPublicKey"
78+func O () = "%s__pendingManagerPublicKey"
8179
8280
83-func Q () = "%s%s__price__last"
81+func P () = "%s%s__price__last"
8482
8583
86-func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
84+func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8785
8886
89-func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
87+func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
9088
9189
92-func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
90+func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9391
9492
95-func Y () = "%s__amountAsset"
93+func X () = "%s__amountAsset"
9694
9795
98-func Z () = "%s__priceAsset"
96+func Y () = "%s__priceAsset"
9997
10098
101-func aa () = "%s__amp"
99+func Z () = "%s__amp"
102100
103101
104-func ab () = "%s__addonAddr"
102+func aa () = "%s__addonAddr"
105103
106104
107-let ac = "%s__feePermille"
105+func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
108106
109-let ad = valueOrElse(getInteger(this, ac), B)
107+
108+func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109+
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func an () = "%s__feeCollectorAddress"
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
132-func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133-
134-
135-func as (G) = {
136- let at = G
137- if ($isInstanceOf(at, "String"))
132+func ar (F) = {
133+ let as = F
134+ if ($isInstanceOf(as, "String"))
138135 then {
139- let au = at
140- au
136+ let at = as
137+ at
141138 }
142139 else throw("fail cast to String")
143140 }
144141
145142
146-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147144
148145
149-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
150147
151148
152-let az = addressFromStringValue(av(this, N()))
149+let ay = addressFromStringValue(au(this, M()))
153150
154-let aA = av(this, aa())
151+let az = au(this, Z())
155152
156-func aB () = valueOrElse(getBoolean(az, al()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
157154
158155
159-func aC () = fromBase58String(av(az, af()))
156+func aB () = fromBase58String(au(ay, af()))
160157
161158
162-let aD = addressFromStringValue(av(az, an()))
163-
164-func aE () = {
165- let aF = av(this, Y())
166- let aG = av(this, Z())
167- let aH = ay(az, aj(aG))
168- let ah = ay(az, aj(aF))
169- split(av(az, ag(toString(ah), toString(aH))), j)
159+func aC () = {
160+ let aD = au(this, X())
161+ let aE = au(this, Y())
162+ let aF = ax(ay, aj(aE))
163+ let ah = ax(ay, aj(aD))
164+ split(au(ay, ag(toString(ah), toString(aF))), i)
170165 }
171166
172167
173-func aI () = split(av(az, ae()), j)
168+func aG () = split(au(ay, ae()), i)
174169
175170
176-func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
171+func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], i)
177172
178173
179-func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
174+func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], i)
180175
181176
182-func aY (aZ) = if ((aZ == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
183178 then wavesBalance(this).available
184- else assetBalance(this, fromBase58String(aZ))
179+ else assetBalance(this, fromBase58String(aX))
185180
186181
187-func ba (bb,bc) = fraction(bb, c, bc)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
188183
189184
190-func bd (be,bf,bg) = {
191- let bh = fraction((be - bf), b, bf)
192- let bi = ((bg - M(bh)) > e)
193- if (!(bi))
194- then throw(("Big slpg: " + toString(bh)))
195- else $Tuple2(bi, min([be, bf]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
196191 }
197192
198193
199-func bj (bk,bl,bm) = {
200- let bh = fraction(bl, b, bk)
201- let bn = (bm > bh)
202- if (if (bn)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
203198 then true
204- else (bl > bk))
205- then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206- else bn
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
207202 }
208203
209204
210-func bo (bp,bq,br,bs) = {
211- let bt = C(br, bp)
212- let bu = C(bs, bq)
213- ba(bu, bt)
205+func bm (bn,bo,bp,bq) = {
206+ let br = B(bp, bn)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
214209 }
215210
216211
217-func bv (br,bs,bw) = {
218- let bx = aE()
219- let by = parseIntValue(bx[u])
220- let bz = parseIntValue(bx[v])
221- let bA = bo(by, bz, br, bs)
222- let bc = C(br, by)
223- let bb = C(bs, bz)
224- let bB = C(bw, a)
225- let bC = ba(bc, bB)
226- let bD = ba(bb, bB)
227-[bA, bC, bD]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
228223 }
229224
230225
231-func bE (br,bs,bw) = {
232- let bF = bv(br, bs, bw)
233-[F(bF[0], a), F(bF[1], a), F(bF[2], a)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
234229 }
235230
236231
237-func bG (bH,bI,bJ,bK) = {
238- let bx = aE()
239- let bL = bx[r]
240- let bM = bx[s]
241- let bN = bx[t]
242- let bO = parseIntValue(bx[u])
243- let bP = parseIntValue(bx[v])
244- let bQ = bx[q]
245- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
246- if ((bL != bI))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
247242 then throw("Wrong pmt asset")
248243 else {
249- let bS = aY(bM)
250- let bT = C(bS, bO)
251- let bU = aY(bN)
252- let bV = C(bU, bP)
253- let bW = ba(bV, bT)
254- let bX = F(bW, a)
255- let bY = C(bJ, a)
256- let bZ = C(bR, a)
257- let ca = fraction(bT, bY, bZ)
258- let cb = fraction(bV, bY, bZ)
259- let cc = F(ca, bO)
260- let cd = F(cb, bP)
261- let ce = if ((bH == ""))
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
254+ let ca = E(bY, bM)
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
262257 then nil
263- else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
264259 then unit
265- else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
266261 then unit
267- else fromBase58String(bN)), StringEntry(X(toString(bK), bH), aU(cc, cd, bJ, bX, height, lastBlock.timestamp)), IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX)]
268- $Tuple10(cc, cd, bM, bN, bS, bU, bR, bW, bQ, ce)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
269264 }
270265 }
271266
272267
273-func cf (bH,bg,cg,ch,ci,cj,bK,ck,cl,cm,cn,co) = {
274- let bx = aE()
275- let bL = fromBase58String(bx[r])
276- let cp = bx[s]
277- let cq = bx[t]
278- let cr = bx[w]
279- let cs = bx[x]
280- let ct = parseIntValue(bx[u])
281- let cu = parseIntValue(bx[v])
282- let bQ = bx[q]
283- let cv = valueOrErrorMessage(assetInfo(bL), "Wr lp as").quantity
284- let bS = if (ck)
285- then aY(cp)
286- else if (if (cm)
287- then (co == cp)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
288283 else false)
289- then (aY(cp) - cn)
290- else if (cm)
291- then aY(cp)
292- else (aY(cp) - cg)
293- let bU = if (ck)
294- then aY(cq)
295- else if (if (cm)
296- then (co == cq)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
297292 else false)
298- then (aY(cq) - cn)
299- else if (cm)
300- then aY(cq)
301- else (aY(cq) - ci)
302- let cw = C(cg, ct)
303- let cx = C(ci, cu)
304- let cy = ba(cx, cw)
305- let bT = C(bS, ct)
306- let bV = C(bU, cu)
307- let cz = if ((cv == 0))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
308303 then {
309- let bW = e
310- let cA = e
311- let bB = pow((cw * cx), 0, toBigInt(5), 1, 0, DOWN)
312- $Tuple5(F(bB, a), F(cw, ct), F(cx, cu), ba((bV + cx), (bT + cw)), cA)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
313308 }
314309 else {
315- let bW = ba(bV, bT)
316- let cB = fraction(M((bW - cy)), c, bW)
317- let cA = C(bg, a)
318- if (if ((bW != e))
319- then (cB > cA)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
320315 else false)
321- then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
322317 else {
323- let cC = C(cv, a)
324- let cD = fraction(cw, bW, c)
325- let cE = fraction(cx, c, bW)
326- let cF = if ((cD > cx))
327- then $Tuple2(cE, cx)
328- else $Tuple2(cw, cD)
329- let cG = cF._1
330- let cH = cF._2
331- let bB = fraction(cC, cH, bV)
332- $Tuple5(F(bB, a), F(cG, ct), F(cH, cu), bW, cA)
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
333328 }
334329 }
335- let cI = cz._1
336- let cJ = cz._2
337- let cK = cz._3
338- let bX = F(cz._4, a)
339- let cL = F(cz._5, a)
340- if ((0 >= cI))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
341336 then throw("LP <= 0")
342337 else {
343- let cM = if (!(cl))
338+ let cK = if (!(cj))
344339 then 0
345- else cI
346- let cN = (cg - cJ)
347- let cO = (ci - cK)
348- let cP = if (if (cm)
349- then (co == cp)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
350345 else false)
351- then $Tuple2(cn, 0)
352- else if (if (cm)
353- then (co == cq)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
354349 else false)
355- then $Tuple2(0, cn)
356- else $Tuple2(cJ, cK)
357- let cQ = cP._1
358- let cR = cP._2
359- let cS = [IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX), StringEntry(U(bK, bH), aJ(cQ, cR, cM, bX, bg, cL, height, lastBlock.timestamp, cN, cO))]
360- $Tuple13(cI, cM, bX, bS, bU, cv, bL, bQ, cS, cN, cO, ch, cj)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
361356 }
362357 }
363358
364359
365-func cT (cU) = {
366- let bx = aE()
367- let cV = bx[s]
368- let cW = bx[t]
369- let bQ = parseIntValue(bx[q])
370- let by = parseIntValue(bx[u])
371- let bz = parseIntValue(bx[v])
372- let cX = aY(cV)
373- let cY = aY(cW)
374- let bW = if ((cU.orderType == Buy))
375- then bo(by, bz, (cX + cU.amount), cY)
376- else bo(by, bz, (cX - cU.amount), cY)
377- let bX = F(bW, a)
378- if (if (if (aB())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
379374 then true
380- else (bQ == n))
375+ else (bO == m))
381376 then true
382- else (bQ == o))
377+ else (bO == n))
383378 then throw("Admin blocked")
384379 else {
385- let cZ = cU.assetPair.amountAsset
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
382+ then "WAVES"
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
386385 let da = if ((cZ == unit))
387386 then "WAVES"
388387 else toBase58String(value(cZ))
389- let db = cU.assetPair.priceAsset
390- let dc = if ((db == unit))
391- then "WAVES"
392- else toBase58String(value(db))
393- if (if ((da != cV))
388+ if (if ((cY != cT))
394389 then true
395- else (dc != cW))
390+ else (da != cU))
396391 then throw("Wr assets")
397392 else {
398- let dd = cU.price
399- let cu = fraction(a, bz, by)
400- let de = I(dd, a, cu)
401- let df = if ((cU.orderType == Buy))
402- then (bX >= de)
403- else (de >= bX)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
404399 true
405400 }
406401 }
407402 }
408403
409404
410-func dg (dh) = if ((size(dh.payments) != 1))
405+func de (df) = if ((size(df.payments) != 1))
411406 then throw("1 pmnt exp")
412407 else {
413- let di = value(dh.payments[0])
414- let bI = value(di.assetId)
415- let cn = di.amount
416- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
417- let cc = cz._1
418- let cd = cz._2
419- let bQ = parseIntValue(cz._9)
420- let ce = cz._10
421- if (if (aB())
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
422417 then true
423- else (bQ == o))
424- then throw(("Admin blocked: " + toString(bQ)))
425- else $Tuple5(cc, cd, cn, bI, ce)
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
426421 }
427422
428423
429-func dj (dk,W,dl,dm,bg,cl,cm,cn,co) = {
430- let cz = cf(W, bg, value(dl).amount, value(dl).assetId, value(dm).amount, value(dm).assetId, dk, false, cl, cm, cn, co)
431- let bQ = parseIntValue(cz._8)
432- if (if (if (aB())
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
433428 then true
434- else (bQ == m))
429+ else (bO == l))
435430 then true
436- else (bQ == o))
437- then throw(("Blocked:" + toString(bQ)))
438- else cz
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
439434 }
440435
441436
442-func dn (do) = {
443- let dp = fraction(do, ad, d)
444- $Tuple2((do - dp), dp)
445- }
446-
447-
448-func dq () = {
449- let at = getString(O())
450- if ($isInstanceOf(at, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
451440 then {
452- let dr = at
453- fromBase58String(dr)
441+ let dl = as
442+ fromBase58String(dl)
454443 }
455- else if ($isInstanceOf(at, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
456445 then unit
457446 else throw("Match error")
458447 }
459448
460449
461-func ds () = {
462- let at = getString(P())
463- if ($isInstanceOf(at, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
464453 then {
465- let dr = at
466- fromBase58String(dr)
454+ let dl = as
455+ fromBase58String(dl)
467456 }
468- else if ($isInstanceOf(at, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
469458 then unit
470459 else throw("Match error")
471460 }
472461
473462
474-let dt = throw("Permission denied")
463+let dn = throw("Permission denied")
475464
476-func du (dh) = {
477- let at = dq()
478- if ($isInstanceOf(at, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
479468 then {
480- let dv = at
481- if ((dh.callerPublicKey == dv))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
482471 then true
483- else dt
472+ else dn
484473 }
485- else if ($isInstanceOf(at, "Unit"))
486- then if ((dh.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
487476 then true
488- else dt
477+ else dn
489478 else throw("Match error")
490479 }
491480
492481
493-@Callable(dh)
494-func constructor (N) = {
495- let dw = du(dh)
496- if ((dw == dw))
497- then [StringEntry(N(), N)]
482+@Callable(df)
483+func constructor (M) = {
484+ let dq = do(df)
485+ if ((dq == dq))
486+ then [StringEntry(M(), M)]
498487 else throw("Strict value is not equal to itself.")
499488 }
500489
501490
502491
503-@Callable(dh)
504-func setManager (dx) = {
505- let dw = du(dh)
506- if ((dw == dw))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
507496 then {
508- let dy = fromBase58String(dx)
509- if ((dy == dy))
510- then [StringEntry(P(), dx)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
511500 else throw("Strict value is not equal to itself.")
512501 }
513502 else throw("Strict value is not equal to itself.")
514503 }
515504
516505
517506
518-@Callable(dh)
507+@Callable(df)
519508 func confirmManager () = {
520- let bF = ds()
521- let dz = if (isDefined(bF))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
522511 then true
523512 else throw("No pending manager")
524- if ((dz == dz))
513+ if ((dt == dt))
525514 then {
526- let dA = if ((dh.callerPublicKey == value(bF)))
515+ let du = if ((df.callerPublicKey == value(bD)))
527516 then true
528517 else throw("You are not pending manager")
529- if ((dA == dA))
530- then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
531520 else throw("Strict value is not equal to itself.")
532521 }
533522 else throw("Strict value is not equal to itself.")
534523 }
535524
536525
537526
538-@Callable(dh)
539-func put (dB,dC) = {
540- let dD = aI()
541- let dE = valueOrErrorMessage(addressFromString(dD[y]), "Wr st addr")
542- let dF = valueOrErrorMessage(addressFromString(dD[z]), "Wr sl addr")
543- if ((0 > dB))
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
544533 then throw("Wrong slippage")
545- else if ((size(dh.payments) != 2))
534+ else if ((size(df.payments) != 2))
546535 then throw("2 pmnts expd")
547536 else {
548- let dG = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], dB, true, false, 0, "")
549- let cM = dG._2
550- let dH = dG._7
551- let ce = dG._9
552- let cN = dG._10
553- let cO = dG._11
554- let bM = dG._12
555- let bN = dG._13
556- let cz = invoke(az, "emit", [cM], nil)
557- if ((cz == cz))
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
558547 then {
559- let dI = {
560- let at = cz
561- if ($isInstanceOf(at, "Address"))
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
562551 then {
563- let dJ = at
564- invoke(dJ, "emit", [cM], nil)
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
565554 }
566555 else unit
567556 }
568- if ((dI == dI))
557+ if ((dC == dC))
569558 then {
570- let dK = if ((cN > 0))
571- then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
572561 else nil
573- if ((dK == dK))
562+ if ((dE == dE))
574563 then {
575- let dL = if ((cO > 0))
576- then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
577566 else nil
578- if ((dL == dL))
567+ if ((dF == dF))
579568 then {
580- let dM = if (dC)
569+ let dG = if (dw)
581570 then {
582- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583- if ((dN == dN))
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
584573 then nil
585574 else throw("Strict value is not equal to itself.")
586575 }
587- else [ScriptTransfer(dh.caller, cM, dH)]
588- (ce ++ dM)
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
589578 }
590579 else throw("Strict value is not equal to itself.")
591580 }
592581 else throw("Strict value is not equal to itself.")
593582 }
594583 else throw("Strict value is not equal to itself.")
595584 }
596585 else throw("Strict value is not equal to itself.")
597586 }
598587 }
599588
600589
601590
602-@Callable(dh)
603-func putOneTkn (dO,dP,dQ,bg,dC) = {
604- let bx = aI()
605- let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606- let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607- let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608- let dS = aE()
609- let bM = dS[s]
610- let bN = dS[t]
611- let bO = parseIntValue(dS[u])
612- let bP = parseIntValue(dS[v])
613- let dT = valueOrElse(getString(this, ab()), "")
614- let bK = if ((dT == toString(dh.caller)))
615- then dh.originCaller
616- else dh.caller
617- if (if (if (if ((0 >= bg))
618- then true
619- else (0 >= dO))
620- then true
621- else (0 >= dP))
622- then true
623- else (0 >= dQ))
624- then throw("Wrong params")
625- else if ((size(dh.payments) != 1))
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
608+ if ((dP == dP))
609+ then if (if (if (if ((0 >= be))
610+ then true
611+ else (0 >= dI))
612+ then true
613+ else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
616+ then throw("Wrong params")
617+ else if ((size(df.payments) != 1))
618+ then throw("1 pmnt expd")
619+ else {
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
624+ then throw("Wrong pmt amt")
625+ else {
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
630+ then true
631+ else (dI > cl))
632+ then throw("invalid payment amount")
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
636+ then true
637+ else (dJ > cl))
638+ then throw("invalid payment amount")
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
640+ else throw("wrong pmtAssetId")
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
651+ then {
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
662+ then {
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
666+ then {
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
669+ }
670+ else unit
671+ }
672+ if ((dC == dC))
673+ then {
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676+ else nil
677+ if ((dE == dE))
678+ then {
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
681+ else nil
682+ if ((dF == dF))
683+ then {
684+ let dG = if (dw)
685+ then {
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
688+ then nil
689+ else throw("Strict value is not equal to itself.")
690+ }
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
693+ }
694+ else throw("Strict value is not equal to itself.")
695+ }
696+ else throw("Strict value is not equal to itself.")
697+ }
698+ else throw("Strict value is not equal to itself.")
699+ }
700+ else throw("Strict value is not equal to itself.")
701+ }
702+ else throw("Strict value is not equal to itself.")
703+ }
704+ }
705+ else throw("Strict value is not equal to itself.")
706+ }
707+
708+
709+
710+@Callable(df)
711+func putOneTknV2 (dK,be,dw) = {
712+ let bv = aG()
713+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
714+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
715+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
716+ let dM = aC()
717+ let bK = dM[r]
718+ let bL = dM[s]
719+ let bM = parseIntValue(dM[t])
720+ let bN = parseIntValue(dM[u])
721+ let dN = valueOrElse(getString(this, aa()), "")
722+ let bI = if ((dN == toString(df.caller)))
723+ then df.originCaller
724+ else df.caller
725+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
726+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
727+ if ((dP == dP))
728+ then if ((size(df.payments) != 1))
626729 then throw("1 pmnt expd")
627730 else {
628- let di = value(dh.payments[0])
629- let bI = toBase58String(value(di.assetId))
630- let dU = di.amount
631- let dV = dn(dU)
632- let cn = dV._1
633- let dW = dV._2
634- if ((10000000 > dU))
731+ let dg = value(df.payments[0])
732+ let bG = toBase58String(value(dg.assetId))
733+ let cl = dg.amount
734+ if ((10000000 > cl))
635735 then throw("Wrong pmt amt")
636736 else {
637- let bS = aY(bM)
638- let bU = aY(bN)
639- let dX = if ((bI == bM))
640- then if (if ((dU > bS))
641- then true
642- else (dO > cn))
737+ let bQ = aW(bK)
738+ let bS = aW(bL)
739+ let eb = if ((bG == bK))
740+ then if ((cl > bQ))
643741 then throw("invalid payment amount")
644- else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645- else if ((bI == bN))
646- then if (if ((dU > bU))
647- then true
648- else (dP > cn))
742+ else $Tuple2((bQ - cl), bS)
743+ else if ((bG == bL))
744+ then if ((cl > bS))
649745 then throw("invalid payment amount")
650- else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
746+ else $Tuple2(bQ, (bS - cl))
651747 else throw("wrong pmtAssetId")
652- let dY = dX._1
653- let dZ = dX._2
654- let ea = dX._3
655- let eb = dX._4
656- let ec = dX._5
657- let ed = dX._6
658- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659- let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661- if ((ee == ee))
748+ let dR = eb._1
749+ let dS = eb._2
750+ let ec = if ((bG == bK))
751+ then $Tuple2(dR, dS)
752+ else $Tuple2(dS, dR)
753+ let ed = ec._1
754+ let ee = ec._2
755+ let ef = 1
756+ let eg = {
757+ let eh = invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)
758+ if ($isInstanceOf(eh, "(Int, Int)"))
759+ then eh
760+ else throw(($getType(invoke(dL, "calcPutXOnly", [toString(cl), toString(ed), toString(ee), "", az, g, toString(ef), h], nil)) + " couldn't be cast to (Int, Int)"))
761+ }
762+ let ei = if ((bG == bK))
763+ then eg
764+ else $Tuple2(eg._2, eg._1)
765+ let dI = ei._1
766+ let dJ = ei._2
767+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
768+ let dZ = dY._2
769+ let dB = dY._7
770+ let cc = dY._9
771+ let cL = dY._10
772+ let cM = dY._11
773+ let cK = if ((dK > 0))
662774 then {
663- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664- let eg = ef._2
665- let dH = ef._7
666- let ce = ef._9
667- let cN = ef._10
668- let cO = ef._11
669- let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670- let cM = toInt(eh._2)
671- let dG = invoke(az, "emit", [cM], nil)
672- if ((dG == dG))
775+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
776+ toInt(ea._2)
777+ }
778+ else dZ
779+ let dA = invoke(ay, "emit", [cK], nil)
780+ if ((dA == dA))
781+ then {
782+ let dC = {
783+ let as = dA
784+ if ($isInstanceOf(as, "Address"))
785+ then {
786+ let dD = as
787+ invoke(dD, "emit", [cK], nil)
788+ }
789+ else unit
790+ }
791+ if ((dC == dC))
673792 then {
674- let dI = {
675- let at = dG
676- if ($isInstanceOf(at, "Address"))
677- then {
678- let dJ = at
679- invoke(dJ, "emit", [cM], nil)
680- }
681- else unit
682- }
683- if ((dI == dI))
793+ let dE = if ((cL > 0))
794+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
795+ else nil
796+ if ((dE == dE))
684797 then {
685- let dK = if ((cN > 0))
686- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
798+ let dF = if ((cM > 0))
799+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
687800 else nil
688- if ((dK == dK))
801+ if ((dF == dF))
689802 then {
690- let dL = if ((cO > 0))
691- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
692- else nil
693- if ((dL == dL))
803+ let dG = if (dw)
694804 then {
695- let dM = if (dC)
696- then {
697- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698- if ((dN == dN))
699- then nil
700- else throw("Strict value is not equal to itself.")
701- }
702- else [ScriptTransfer(dh.caller, cM, dH)]
703- let ei = if ((dW > 0))
704- then [ScriptTransfer(aD, dW, fromBase58String(bI))]
705- else nil
706- ((ce ++ dM) ++ ei)
805+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
806+ if ((dH == dH))
807+ then nil
808+ else throw("Strict value is not equal to itself.")
707809 }
708- else throw("Strict value is not equal to itself.")
810+ else [ScriptTransfer(df.caller, cK, dB)]
811+ (cc ++ dG)
709812 }
710813 else throw("Strict value is not equal to itself.")
711814 }
712815 else throw("Strict value is not equal to itself.")
713816 }
714817 else throw("Strict value is not equal to itself.")
715818 }
716819 else throw("Strict value is not equal to itself.")
717820 }
718821 }
719- }
720-
721-
722-
723-@Callable(dh)
724-func putForFree (ej) = if ((0 > ej))
725- then throw("Wrong slpg")
726- else if ((size(dh.payments) != 2))
727- then throw("2 pmnts expd")
728- else {
729- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], ej, false, false, 0, "")
730- ef._9
731- }
732-
733-
734-
735-@Callable(dh)
736-func get () = {
737- let cz = dg(dh)
738- let ek = cz._1
739- let cd = cz._2
740- let cn = cz._3
741- let bI = cz._4
742- let ce = cz._5
743- let el = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
744- if ((el == el))
745- then ce
746822 else throw("Strict value is not equal to itself.")
747823 }
748824
749825
750826
751-@Callable(dh)
752-func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
827+@Callable(df)
828+func putForFree (ej) = if ((0 > ej))
829+ then throw("Wrong slpg")
830+ else if ((size(df.payments) != 2))
831+ then throw("2 pmnts expd")
832+ else {
833+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], ej, false, false, 0, "")
834+ dY._9
835+ }
836+
837+
838+
839+@Callable(df)
840+func get () = {
841+ let cx = de(df)
842+ let ek = cx._1
843+ let cb = cx._2
844+ let cl = cx._3
845+ let bG = cx._4
846+ let cc = cx._5
847+ let el = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
848+ if ((el == el))
849+ then cc
850+ else throw("Strict value is not equal to itself.")
851+ }
852+
853+
854+
855+@Callable(df)
856+func getOneTkn (em,en,eo,ep,be) = if ((size(df.payments) != 1))
753857 then throw("1 pmnt expd")
754858 else {
755- let bx = aE()
756- let bL = bx[r]
757- let bM = bx[s]
758- let bN = bx[t]
759- let bO = parseIntValue(bx[u])
760- let bP = parseIntValue(bx[v])
761- let bQ = bx[q]
762- let dD = aI()
763- let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764- let di = value(dh.payments[0])
765- let dT = valueOrElse(getString(this, ab()), "")
766- let bK = if ((dT == toString(dh.caller)))
767- then dh.originCaller
768- else dh.caller
769- let bH = toBase58String(dh.transactionId)
770- let bI = value(di.assetId)
771- let cn = di.amount
772- if ((1000000000 > cn))
773- then throw("Min pmt 10 LP")
774- else if (if (if ((0 > bg))
775- then true
776- else (0 > em))
777- then true
778- else (0 > eo))
779- then throw("Wrong params")
780- else if ((bL != toBase58String(bI)))
781- then throw("Wrong LP")
782- else {
783- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784- let eq = cz._1
785- let er = cz._2
786- let bS = aY(bM)
787- let bU = aY(bN)
788- let es = if ((ep == bM))
789- then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790- else if ((ep == bN))
791- then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
792- else throw("wrong outAssetId")
793- let dY = es._1
794- let dZ = es._2
795- let ea = es._3
796- let eb = es._4
797- let ec = es._5
798- let ed = es._6
799- let et = es._7
800- if (if ((0 > ea))
801- then true
802- else (0 > ec))
803- then throw("Wrong calc")
804- else {
805- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806- let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808- if ((ee == ee))
809- then {
810- let eu = dn(et)._1
811- let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812- if ((ev == ev))
813- then {
814- let ew = if ((ep == bM))
815- then $Tuple2(toInt(ev._2), 0)
816- else $Tuple2(0, toInt(ev._2))
817- let ex = ew._1
818- let ey = ew._2
819- let ez = (ex + ey)
820- let dW = (et - eu)
821- let eA = if ((ep == "WAVES"))
822- then unit
823- else fromBase58String(ep)
824- let ei = if ((dW > 0))
825- then [ScriptTransfer(aD, dW, eA)]
826- else nil
827- let eB = ba(C(bU, bP), C(bS, bO))
828- let eC = F(eB, a)
829- let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830- if ((ce == ce))
831- then {
832- let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833- if ((eD == eD))
834- then (ce ++ ei)
835- else throw("Strict value is not equal to itself.")
836- }
837- else throw("Strict value is not equal to itself.")
838- }
839- else throw("Strict value is not equal to itself.")
840- }
841- else throw("Strict value is not equal to itself.")
842- }
843- }
859+ let bv = aC()
860+ let bJ = bv[q]
861+ let bK = bv[r]
862+ let bL = bv[s]
863+ let bM = parseIntValue(bv[t])
864+ let bN = parseIntValue(bv[u])
865+ let bO = bv[p]
866+ let dx = aG()
867+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
868+ let dg = value(df.payments[0])
869+ let dN = valueOrElse(getString(this, aa()), "")
870+ let bI = if ((dN == toString(df.caller)))
871+ then df.originCaller
872+ else df.caller
873+ let bF = toBase58String(df.transactionId)
874+ let bG = value(dg.assetId)
875+ let cl = dg.amount
876+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
877+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
878+ if ((dP == dP))
879+ then if ((1000000000 > cl))
880+ then throw("Min pmt 10 LP")
881+ else if (if (if ((0 > be))
882+ then true
883+ else (0 > em))
884+ then true
885+ else (0 > eo))
886+ then throw("Wrong params")
887+ else if ((bJ != toBase58String(bG)))
888+ then throw("Wrong LP")
889+ else {
890+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
891+ let eq = cx._1
892+ let er = cx._2
893+ let bQ = aW(bK)
894+ let bS = aW(bL)
895+ let es = if ((ep == bK))
896+ then $Tuple7((bQ - eq), (bS - er), em, er, 0, 0, (eq + em))
897+ else if ((ep == bL))
898+ then $Tuple7((bQ - eq), (bS - er), 0, 0, em, eq, (er + em))
899+ else throw("wrong outAssetId")
900+ let dR = es._1
901+ let dS = es._2
902+ let dT = es._3
903+ let dU = es._4
904+ let dV = es._5
905+ let dW = es._6
906+ let et = es._7
907+ if (if ((0 > dT))
908+ then true
909+ else (0 > dV))
910+ then throw("Wrong calc")
911+ else {
912+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
913+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
914+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
915+ if ((dX == dX))
916+ then {
917+ let eu = bb(toBigInt(et), toBigInt(eo), toBigInt(be))
918+ if ((eu == eu))
919+ then {
920+ let ev = if ((ep == bK))
921+ then $Tuple2(toInt(eu._2), 0)
922+ else $Tuple2(0, toInt(eu._2))
923+ let ew = ev._1
924+ let ex = ev._2
925+ let ey = aY(B(bS, bN), B(bQ, bM))
926+ let ez = E(ey, a)
927+ let cc = [ScriptTransfer(bI, (ew + ex), if ((ep == "WAVES"))
928+ then unit
929+ else fromBase58String(ep)), StringEntry(W(toString(bI), bF), aS(ew, ex, cl, ez, height, lastBlock.timestamp)), IntegerEntry(P(), ez), IntegerEntry(Q(height, lastBlock.timestamp), ez)]
930+ if ((cc == cc))
931+ then {
932+ let eA = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
933+ if ((eA == eA))
934+ then cc
935+ else throw("Strict value is not equal to itself.")
936+ }
937+ else throw("Strict value is not equal to itself.")
938+ }
939+ else throw("Strict value is not equal to itself.")
940+ }
941+ else throw("Strict value is not equal to itself.")
942+ }
943+ }
944+ else throw("Strict value is not equal to itself.")
844945 }
845946
846947
847948
848-@Callable(dh)
849-func getNoLess (eE,eF) = {
850- let cz = dg(dh)
851- let cc = cz._1
852- let cd = cz._2
853- let cn = cz._3
854- let bI = cz._4
855- let ce = cz._5
856- if ((eE > cc))
857- then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
858- else if ((eF > cd))
859- then throw(((("Failed: " + toString(cd)) + " < ") + toString(eF)))
949+@Callable(df)
950+func getNoLess (eB,eC) = {
951+ let cx = de(df)
952+ let ca = cx._1
953+ let cb = cx._2
954+ let cl = cx._3
955+ let bG = cx._4
956+ let cc = cx._5
957+ if ((eB > ca))
958+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(eB)))
959+ else if ((eC > cb))
960+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eC)))
860961 else {
861- let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862- if ((eG == eG))
863- then ce
962+ let eD = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
963+ if ((eD == eD))
964+ then cc
864965 else throw("Strict value is not equal to itself.")
865966 }
866967 }
867968
868969
869970
870-@Callable(dh)
871-func unstakeAndGet (do) = {
872- let eH = if ((size(dh.payments) != 0))
971+@Callable(df)
972+func unstakeAndGet (eE) = {
973+ let eF = if ((size(df.payments) != 0))
873974 then throw("No pmnts expd")
874975 else true
875- if ((eH == eH))
976+ if ((eF == eF))
876977 then {
877- let bx = aE()
878- let eI = aI()
879- let dH = fromBase58String(bx[r])
880- let eJ = valueOrErrorMessage(addressFromString(eI[y]), "Wr st addr")
881- let eK = invoke(eJ, "unstake", [toBase58String(dH), do], nil)
882- if ((eK == eK))
978+ let bv = aC()
979+ let eG = aG()
980+ let dB = fromBase58String(bv[q])
981+ let eH = valueOrErrorMessage(addressFromString(eG[x]), "Wr st addr")
982+ let eI = invoke(eH, "unstake", [toBase58String(dB), eE], nil)
983+ if ((eI == eI))
883984 then {
884- let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885- let bQ = parseIntValue(cz._9)
886- let ce = cz._10
887- let eL = if (if (aB())
985+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), eE, df.caller)
986+ let bO = parseIntValue(cx._9)
987+ let cc = cx._10
988+ let eJ = if (if (aA())
888989 then true
889- else (bQ == o))
890- then throw(("Blocked: " + toString(bQ)))
990+ else (bO == n))
991+ then throw(("Blocked: " + toString(bO)))
891992 else true
892- if ((eL == eL))
993+ if ((eJ == eJ))
893994 then {
894- let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895- if ((eM == eM))
896- then ce
995+ let eK = invoke(ay, "burn", [eE], [AttachedPayment(dB, eE)])
996+ if ((eK == eK))
997+ then cc
897998 else throw("Strict value is not equal to itself.")
898999 }
8991000 else throw("Strict value is not equal to itself.")
9001001 }
9011002 else throw("Strict value is not equal to itself.")
9021003 }
9031004 else throw("Strict value is not equal to itself.")
9041005 }
9051006
9061007
9071008
908-@Callable(dh)
909-func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
1009+@Callable(df)
1010+func activate (eL,eM) = if ((toString(df.caller) != toString(ay)))
9101011 then throw("denied")
911- else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1012+ else $Tuple2([StringEntry(X(), eL), StringEntry(Y(), eM)], "success")
9121013
9131014
9141015
915-@Callable(dh)
916-func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917- then dt
918- else [StringEntry(eP, eL)]
1016+@Callable(df)
1017+func setS (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1018+ then dn
1019+ else [StringEntry(eN, eJ)]
9191020
9201021
9211022
922-@Callable(dh)
923-func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924- then dt
925- else [IntegerEntry(eP, eL)]
1023+@Callable(df)
1024+func setI (eN,eJ) = if ((toString(df.caller) != au(this, aa())))
1025+ then dn
1026+ else [IntegerEntry(eN, eJ)]
9261027
9271028
9281029
929-@Callable(dh)
930-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
1030+@Callable(df)
1031+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
9311032
9321033
9331034
934-@Callable(dh)
935-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1035+@Callable(df)
1036+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
9361037
9371038
9381039
939-@Callable(dh)
940-func calcPricesWrapperREADONLY (br,bs,bw) = {
941- let eQ = bv(br, bs, bw)
942- $Tuple2(nil, [toString(eQ[0]), toString(eQ[1]), toString(eQ[2])])
1040+@Callable(df)
1041+func calcPricesWrapperREADONLY (bp,bq,bu) = {
1042+ let eO = bt(bp, bq, bu)
1043+ $Tuple2(nil, [toString(eO[0]), toString(eO[1]), toString(eO[2])])
9431044 }
9441045
9451046
9461047
947-@Callable(dh)
948-func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1048+@Callable(df)
1049+func fromX18WrapperREADONLY (F,eP) = $Tuple2(nil, E(parseBigIntValue(F), eP))
9491050
9501051
9511052
952-@Callable(dh)
953-func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
1053+@Callable(df)
1054+func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
9541055
9551056
9561057
957-@Callable(dh)
958-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1058+@Callable(df)
1059+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
9591060
9601061
9611062
962-@Callable(dh)
963-func estimatePutOperationWrapperREADONLY (bH,bg,cg,ch,ci,cj,eS,ck,cl) = $Tuple2(nil, cf(bH, bg, cg, ch, ci, cj, eS, ck, cl, false, 0, ""))
1063+@Callable(df)
1064+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eQ,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eQ, ci, cj, false, 0, ""))
9641065
9651066
9661067
967-@Callable(dh)
968-func estimateGetOperationWrapperREADONLY (bH,eT,bJ,eS) = {
969- let cz = bG(bH, eT, bJ, addressFromStringValue(eS))
970- $Tuple2(nil, $Tuple10(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, toString(cz._8), cz._9, cz._10))
1068+@Callable(df)
1069+func estimateGetOperationWrapperREADONLY (bF,eR,bH,eQ) = {
1070+ let cx = bE(bF, eR, bH, addressFromStringValue(eQ))
1071+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
9711072 }
9721073
9731074
974-@Verifier(eU)
975-func eV () = {
976- let eW = {
977- let at = dq()
978- if ($isInstanceOf(at, "ByteVector"))
1075+@Verifier(eS)
1076+func eT () = {
1077+ let eU = {
1078+ let as = dk()
1079+ if ($isInstanceOf(as, "ByteVector"))
9791080 then {
980- let dv = at
981- dv
1081+ let dp = as
1082+ dp
9821083 }
983- else if ($isInstanceOf(at, "Unit"))
984- then eU.senderPublicKey
1084+ else if ($isInstanceOf(as, "Unit"))
1085+ then eS.senderPublicKey
9851086 else throw("Match error")
9861087 }
987- let at = eU
988- if ($isInstanceOf(at, "Order"))
1088+ let as = eS
1089+ if ($isInstanceOf(as, "Order"))
9891090 then {
990- let cU = at
991- let eX = aC()
992- let eY = cT(cU)
993- let eZ = sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
994- let fa = sigVerify(cU.bodyBytes, cU.proofs[1], eX)
995- if (if (if (eY)
996- then eZ
1091+ let cS = as
1092+ let eV = aB()
1093+ let eW = cR(cS)
1094+ let eX = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1095+ let eY = sigVerify(cS.bodyBytes, cS.proofs[1], eV)
1096+ if (if (if (eW)
1097+ then eX
9971098 else false)
998- then fa
1099+ then eY
9991100 else false)
10001101 then true
1001- else ao(eY, eZ, fa)
1102+ else an(eW, eX, eY)
10021103 }
1003- else if ($isInstanceOf(at, "SetScriptTransaction"))
1104+ else if ($isInstanceOf(as, "SetScriptTransaction"))
10041105 then {
1005- let dr = at
1006- let fb = blake2b256(value(dr.script))
1007- let fc = fromBase64String(value(getString(az, am())))
1008- let fd = scriptHash(this)
1009- if (if ((fc == fb))
1010- then (fd != fb)
1106+ let dl = as
1107+ let eZ = blake2b256(value(dl.script))
1108+ let fa = fromBase64String(value(getString(ay, am())))
1109+ let fb = scriptHash(this)
1110+ if (if ((fa == eZ))
1111+ then (fb != eZ)
10111112 else false)
10121113 then true
1013- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1114+ else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
10141115 }
1015- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1116+ else sigVerify(eS.bodyBytes, eS.proofs[0], eU)
10161117 }
10171118

github/deemru/w8io/026f985 
303.34 ms