tx · FAAJ8GikZjrY2KjsscCbfQmyu6N71AKDqTZ1Cr3mHrkL

3N8f95pbYUxzxmecdHsqeCQXPUoDRSWdGG9:  -0.03400000 Waves

2022.08.30 18:43 [2207383] smart account 3N8f95pbYUxzxmecdHsqeCQXPUoDRSWdGG9 > SELF 0.00000000 Waves

{ "type": 13, "id": "FAAJ8GikZjrY2KjsscCbfQmyu6N71AKDqTZ1Cr3mHrkL", "fee": 3400000, "feeAssetId": null, "timestamp": 1661874201643, "version": 2, "chainId": 84, "sender": "3N8f95pbYUxzxmecdHsqeCQXPUoDRSWdGG9", "senderPublicKey": "AGk8X2naFtJSxDiemU3uYY2vUUxjpjdCCL4fWTGt5Dhn", "proofs": [ "4DoGnWR9HBHKU8WJC7zuw8fHWMSTn5vGaz6NWq5PtVoNFKUriEJ72P4wzxqSPEhkMqMEu7PkdHZJfMEBD21LqW11" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFIAD2RlZmF1bHREZWNpbWFscwDAhD0ABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAh0aG91c2FuZADoBwAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoAEmZlZVBlcm1pbGxlRGVmYXVsdAAAAQV0b1gxOAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQdmcm9tWDE4AgN2YWwPcmVzdWx0U2NhbGVNdWx0CQCgAwEJALwCAwUDdmFsCQC2AgEFD3Jlc3VsdFNjYWxlTXVsdAUHc2NhbGUxOAECdHMDA2FtdAhyZXNTY2FsZQhjdXJTY2FsZQkAawMFA2FtdAUIcmVzU2NhbGUFCGN1clNjYWxlAQNhYnMBA3ZhbAMJAL8CAgUKemVyb0JpZ0ludAUDdmFsCQC+AgEFA3ZhbAUDdmFsARFrZXlGYWN0b3J5Q29udGFjdAACEyVzX19mYWN0b3J5Q29udHJhY3QBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBDGtleVByaWNlTGFzdAACESVzJXNfX3ByaWNlX19sYXN0AQ9rZXlQcmljZUhpc3RvcnkCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAESa2V5UHV0QWN0aW9uQnlVc2VyAgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkARJrZXlHZXRBY3Rpb25CeVVzZXICAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBDmtleUFtb3VudEFzc2V0AAIPJXNfX2Ftb3VudEFzc2V0AQ1rZXlQcmljZUFzc2V0AAIOJXNfX3ByaWNlQXNzZXQBD2tleUFtcGxpZmljYXRvcgACByVzX19hbXABD2tleUFkZG9uQWRkcmVzcwACDSVzX19hZGRvbkFkZHIADmtleUZlZVBlcm1pbGxlAg8lc19fZmVlUGVybWlsbGUAC2ZlZVBlcm1pbGxlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtleUZlZVBlcm1pbGxlBRJmZWVQZXJtaWxsZURlZmF1bHQBEGtleUZhY3RvcnlDb25maWcAAhElc19fZmFjdG9yeUNvbmZpZwENa2V5TWF0Y2hlclB1YgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQENa2V5UG9vbENvbmZpZwIGaUFtdEFzBWlQckFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQZpQW10QXMCAl9fBQVpUHJBcwIIX19jb25maWcBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBWJBU3RyCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FBWJBU3RyARNrZXlBbGxQb29sc1NodXRkb3duAAIMJXNfX3NodXRkb3duAQh0aHJvd0VycgEDbXNnCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEPdGhyb3dPcmRlckVycm9yAwNvclYGc2VuZHJWBm1hdGNoVgkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFA29yVgILIHNuZHJWYWxpZD0JAKUDAQUGc2VuZHJWAgwgbXRjaHJWYWxpZD0JAKUDAQUGbWF0Y2hWAQNzdHIBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAQh0aHJvd0VycgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBD2dldFN0cmluZ09yRmFpbAIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckZhaWwCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAAPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEWtleUZhY3RvcnlDb250YWN0AAAMYW1wbGlmaWNhdG9yCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBD2tleUFtcGxpZmljYXRvcgABEGlzR2xvYmFsU2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQCbCAIFD2ZhY3RvcnlDb250cmFjdAkBE2tleUFsbFBvb2xzU2h1dGRvd24ABwETZ2V0TWF0Y2hlclB1Yk9yRmFpbAAJANkEAQkBD2dldFN0cmluZ09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBDWtleU1hdGNoZXJQdWIAAA5tYXRjaGVyQWRkcmVzcwkApwgBCQETZ2V0TWF0Y2hlclB1Yk9yRmFpbAABDWdldFBvb2xDb25maWcABAVhbXRBcwkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQ5rZXlBbW91bnRBc3NldAAEB3ByaWNlQXMJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQENa2V5UHJpY2VBc3NldAAECGlQcmljZUFzCQEMZ2V0SW50T3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFB3ByaWNlQXMEBmlBbXRBcwkBDGdldEludE9yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQVhbXRBcwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQENa2V5UG9vbENvbmZpZwIJAKQDAQUGaUFtdEFzCQCkAwEFCGlQcmljZUFzBQNTRVABEGdldEZhY3RvcnlDb25maWcACQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQ9jYWxjUHJpY2VCaWdJbnQCCHByQW10WDE4CGFtQW10WDE4CQC8AgMFCHByQW10WDE4BQdzY2FsZTE4BQhhbUFtdFgxOAEPdmFsaWRhdGVBYnNEaWZmAwplc3RpbWF0ZUxQBW91dExwCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUKZXN0aW1hdGVMUAUFb3V0THAFDHNjYWxlOEJpZ0ludAUFb3V0THAEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAQh0aHJvd0VycgEJAKwCAgIOQmlnIHNsaXBwYWdlOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUKZXN0aW1hdGVMUAkAzAgCBQVvdXRMcAUDbmlsAQl2YWxpZGF0ZUQDAkQxAkQwCHNsaXBwYWdlBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFCHNsaXBwYWdlBQRkaWZmAwMFBGZhaWwGCQC/AgIFAkQwBQJEMQkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFCHNsaXBwYWdlBQRmYWlsARBwcml2YXRlQ2FsY1ByaWNlBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQEFdG9YMTgCBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBBXRvWDE4AgUFcHJBbXQFCnByQXNzZXREY20JAQ9jYWxjUHJpY2VCaWdJbnQCBQpwckFzQW10WDE4BQthbXRBc0FtdFgxOAEKY2FsY1ByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEA2NmZwkBDWdldFBvb2xDb25maWcABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEQcHJpdmF0ZUNhbGNQcmljZQQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQEFdG9YMTgCBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQEFdG9YMTgCBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQV0b1gxOAIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQhwckFtdFgxOAUIbHBBbXRYMTgJAMwIAgUIcHJpY2VYMTgJAMwIAgUNbHBQckluQW1Bc1gxOAkAzAgCBQ1scFBySW5QckFzWDE4BQNuaWwBD2NhbGN1bGF0ZVByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEAXAJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAzAgCCQEHZnJvbVgxOAIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBB2Zyb21YMTgCCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQdmcm9tWDE4AgkAkQMCBQFwAAIFBnNjYWxlOAUDbmlsARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQGdHhJZDU4DnBheW1lbnRBc3NldElkD3BheW1lbnRMcEFtb3VudAt1c2VyQWRkcmVzcwQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQIYW1vdW50SWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEB3ByaWNlSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEDmFtb3VudERlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQNcHJpY2VEZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BApscEVtaXNzaW9uCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUJbHBBc3NldElkAgtXcm9uZyBMUCBpZAhxdWFudGl0eQQPdmFsaWRhdGlvbkJsb2NrAwkAAAIFCWxwQXNzZXRJZAUOcGF5bWVudEFzc2V0SWQGCQEIdGhyb3dFcnIBAhNXcm9uZyBwYXltZW50IGFzc2V0AwkAAAIFD3ZhbGlkYXRpb25CbG9jawUPdmFsaWRhdGlvbkJsb2NrBA1hbW91bnRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCGFtb3VudElkBAxwcmljZUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUHcHJpY2VJZAQcYW1vdW50QmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDWFtb3VudEJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwUOYW1vdW50RGVjaW1hbHMEG3ByaWNlQmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDHByaWNlQmFsYW5jZQUPZGVmYXVsdERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBBBhbW91bnRCYWxhbmNlWDE4CQEFdG9YMTgCBRxhbW91bnRCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMED3ByaWNlQmFsYW5jZVgxOAkBBXRvWDE4AgUbcHJpY2VCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMED2N1cnJlbnRQcmljZVgxOAkBD2NhbGNQcmljZUJpZ0ludAIFD3ByaWNlQmFsYW5jZVgxOAUQYW1vdW50QmFsYW5jZVgxOAQIY3VyUHJpY2UJAQdmcm9tWDE4AgUPY3VycmVudFByaWNlWDE4BQZzY2FsZTgEEnBheW1lbnRMcEFtb3VudFgxOAkBBXRvWDE4AgUPcGF5bWVudExwQW1vdW50BQZzY2FsZTgEDWxwRW1pc3Npb25YMTgJAQV0b1gxOAIFCmxwRW1pc3Npb24FBnNjYWxlOAQSb3V0QW1vdW50QW1vdW50WDE4CQC8AgMFEGFtb3VudEJhbGFuY2VYMTgFEnBheW1lbnRMcEFtb3VudFgxOAUNbHBFbWlzc2lvblgxOAQRb3V0UHJpY2VBbW91bnRYMTgJALwCAwUPcHJpY2VCYWxhbmNlWDE4BRJwYXltZW50THBBbW91bnRYMTgFDWxwRW1pc3Npb25YMTgEHm91dEFtb3VudEFtb3VudERlZmF1bHREZWNpbWFscwkBB2Zyb21YMTgCBRJvdXRBbW91bnRBbW91bnRYMTgFD2RlZmF1bHREZWNpbWFscwQdb3V0UHJpY2VBbW91bnREZWZhdWx0RGVjaW1hbHMJAQdmcm9tWDE4AgURb3V0UHJpY2VBbW91bnRYMTgFD2RlZmF1bHREZWNpbWFscwQPb3V0QW1vdW50QW1vdW50CQBrAwUeb3V0QW1vdW50QW1vdW50RGVmYXVsdERlY2ltYWxzBQ5hbW91bnREZWNpbWFscwUPZGVmYXVsdERlY2ltYWxzBA5vdXRQcmljZUFtb3VudAkAawMFHW91dFByaWNlQW1vdW50RGVmYXVsdERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFD291dEFtb3VudEFtb3VudAMJAAACBQhhbW91bnRJZAIFV0FWRVMFBHVuaXQJANkEAQUIYW1vdW50SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFDm91dFByaWNlQW1vdW50AwkAAAIFB3ByaWNlSWQCBVdBVkVTBQR1bml0CQDZBAEFB3ByaWNlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUdldEFjdGlvbkJ5VXNlcgIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUPb3V0QW1vdW50QW1vdW50BQ5vdXRQcmljZUFtb3VudAUPcGF5bWVudExwQW1vdW50BQhjdXJQcmljZQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVByaWNlTGFzdAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UHJpY2VIaXN0b3J5AgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQ9vdXRBbW91bnRBbW91bnQFDm91dFByaWNlQW1vdW50BQhhbW91bnRJZAUHcHJpY2VJZAUNYW1vdW50QmFsYW5jZQUMcHJpY2VCYWxhbmNlBQpscEVtaXNzaW9uBQ9jdXJyZW50UHJpY2VYMTgFA3N0cwUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFGVzdGltYXRlUHV0T3BlcmF0aW9uDAZ0eElkNTgRc2xpcHBhZ2VUb2xlcmFuY2UTaW5BbW91bnRBc3NldEFtb3VudA9pbkFtb3VudEFzc2V0SWQSaW5QcmljZUFzc2V0QW1vdW50DmluUHJpY2VBc3NldElkC3VzZXJBZGRyZXNzCmlzRXZhbHVhdGUGZW1pdExwCmlzT25lQXNzZXQNcGF5bWVudEFtb3VudAlwYXltZW50SWQEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQLYW1vdW50SWRTdHIJAJEDAgUDY2ZnBQlpZHhBbUFzSWQECnByaWNlSWRTdHIJAJEDAgUDY2ZnBQlpZHhQckFzSWQEDWluQW1vdW50SWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQMaW5QcmljZUlkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQOYW1vdW50RGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBA1wcmljZURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QECmxwRW1pc3Npb24ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkAg5Xcm9uZyBscCBhc3NldAhxdWFudGl0eQQNYW1vdW50QmFsYW5jZQMFCmlzRXZhbHVhdGUJAQ1nZXRBY2NCYWxhbmNlAQULYW1vdW50SWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFCXBheW1lbnRJZAULYW1vdW50SWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQthbW91bnRJZFN0cgUNcGF5bWVudEFtb3VudAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQULYW1vdW50SWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFC2Ftb3VudElkU3RyBRNpbkFtb3VudEFzc2V0QW1vdW50BAxwcmljZUJhbGFuY2UDBQppc0V2YWx1YXRlCQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFCXBheW1lbnRJZAUKcHJpY2VJZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIFDXBheW1lbnRBbW91bnQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFCnByaWNlSWRTdHIFEmluUHJpY2VBc3NldEFtb3VudAQcYW1vdW50QmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDWFtb3VudEJhbGFuY2UFD2RlZmF1bHREZWNpbWFscwUOYW1vdW50RGVjaW1hbHMEG3ByaWNlQmFsYW5jZURlZmF1bHREZWNpbWFscwkAawMFDHByaWNlQmFsYW5jZQUPZGVmYXVsdERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBCJpbkFtb3VudEFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzCQBrAwUTaW5BbW91bnRBc3NldEFtb3VudAUPZGVmYXVsdERlY2ltYWxzBQ5hbW91bnREZWNpbWFscwQhaW5QcmljZUFzc2V0QW1vdW50RGVmYXVsdERlY2ltYWxzCQBrAwUSaW5QcmljZUFzc2V0QW1vdW50BQ9kZWZhdWx0RGVjaW1hbHMFDXByaWNlRGVjaW1hbHMEFmluQW1vdW50QXNzZXRBbW91bnRYMTgJAQV0b1gxOAIFImluQW1vdW50QXNzZXRBbW91bnREZWZhdWx0RGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQVaW5QcmljZUFzc2V0QW1vdW50WDE4CQEFdG9YMTgCBSFpblByaWNlQXNzZXRBbW91bnREZWZhdWx0RGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQMdXNlclByaWNlWDE4CQEPY2FsY1ByaWNlQmlnSW50AgUVaW5QcmljZUFzc2V0QW1vdW50WDE4BRZpbkFtb3VudEFzc2V0QW1vdW50WDE4BBBhbW91bnRCYWxhbmNlWDE4CQEFdG9YMTgCBRxhbW91bnRCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMED3ByaWNlQmFsYW5jZVgxOAkBBXRvWDE4AgUbcHJpY2VCYWxhbmNlRGVmYXVsdERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEAXIDCQAAAgUKbHBFbWlzc2lvbgAABA9jdXJyZW50UHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAtscEFtb3VudFgxOAkAdgYJALkCAgUWaW5BbW91bnRBc3NldEFtb3VudFgxOAUVaW5QcmljZUFzc2V0QW1vdW50WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEHZnJvbVgxOAIFC2xwQW1vdW50WDE4BQZzY2FsZTgJAQdmcm9tWDE4AgUWaW5BbW91bnRBc3NldEFtb3VudFgxOAUPZGVmYXVsdERlY2ltYWxzCQEHZnJvbVgxOAIFFWluUHJpY2VBc3NldEFtb3VudFgxOAUPZGVmYXVsdERlY2ltYWxzCQEPY2FsY1ByaWNlQmlnSW50AgkAtwICBQ9wcmljZUJhbGFuY2VYMTgFFWluUHJpY2VBc3NldEFtb3VudFgxOAkAtwICBRBhbW91bnRCYWxhbmNlWDE4BRZpbkFtb3VudEFzc2V0QW1vdW50WDE4BQtzbGlwcGFnZVgxOAQPY3VycmVudFByaWNlWDE4CQEPY2FsY1ByaWNlQmlnSW50AgUPcHJpY2VCYWxhbmNlWDE4BRBhbW91bnRCYWxhbmNlWDE4BA9zbGlwcGFnZVJlYWxYMTgJALwCAwkBA2FicwEJALgCAgUPY3VycmVudFByaWNlWDE4BQx1c2VyUHJpY2VYMTgFB3NjYWxlMTgFD2N1cnJlbnRQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQV0b1gxOAIFEXNsaXBwYWdlVG9sZXJhbmNlBQZzY2FsZTgEEHZhbGlkYXRlU2xpcHBhZ2UDCQAAAgMJAQIhPQIFD2N1cnJlbnRQcmljZVgxOAUKemVyb0JpZ0ludAkAvwICBQ9zbGlwcGFnZVJlYWxYMTgFC3NsaXBwYWdlWDE4BwcGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgDCQAAAgUQdmFsaWRhdGVTbGlwcGFnZQUQdmFsaWRhdGVTbGlwcGFnZQQNbHBFbWlzc2lvblgxOAkBBXRvWDE4AgUKbHBFbWlzc2lvbgUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFFmluQW1vdW50QXNzZXRBbW91bnRYMTgFD2N1cnJlbnRQcmljZVgxOAUHc2NhbGUxOAQKYW1WaWFQclgxOAkAvAIDBRVpblByaWNlQXNzZXRBbW91bnRYMTgFB3NjYWxlMTgFD2N1cnJlbnRQcmljZVgxOAQPZXhwZWN0ZWRBbW91bnRzAwkAvwICBQpwclZpYUFtWDE4BRVpblByaWNlQXNzZXRBbW91bnRYMTgJAJQKAgUKYW1WaWFQclgxOAUWaW5BbW91bnRBc3NldEFtb3VudFgxOAkAlAoCBRZpbkFtb3VudEFzc2V0QW1vdW50WDE4BQpwclZpYUFtWDE4BBxleHBlY3RlZEFtb3VudEFzc2V0QW1vdW50WDE4CAUPZXhwZWN0ZWRBbW91bnRzAl8xBBtleHBlY3RlZFByaWNlQXNzZXRBbW91bnRYMTgIBQ9leHBlY3RlZEFtb3VudHMCXzIEC2xwQW1vdW50WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFG2V4cGVjdGVkUHJpY2VBc3NldEFtb3VudFgxOAUPcHJpY2VCYWxhbmNlWDE4CQCXCgUJAQdmcm9tWDE4AgULbHBBbW91bnRYMTgFBnNjYWxlOAkBB2Zyb21YMTgCBRxleHBlY3RlZEFtb3VudEFzc2V0QW1vdW50WDE4BQ9kZWZhdWx0RGVjaW1hbHMJAQdmcm9tWDE4AgUbZXhwZWN0ZWRQcmljZUFzc2V0QW1vdW50WDE4BQ9kZWZhdWx0RGVjaW1hbHMFD2N1cnJlbnRQcmljZVgxOAULc2xpcHBhZ2VYMTgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EEWNhbGN1bGF0ZUxwQW1vdW50CAUBcgJfMQQbY2FsY3VsYXRlQW1vdW50QXNzZXRQYXltZW50CQBrAwgFAXICXzIFDmFtb3VudERlY2ltYWxzBQ9kZWZhdWx0RGVjaW1hbHMEGmNhbGN1bGF0ZVByaWNlQXNzZXRQYXltZW50CQBrAwgFAXICXzMFDXByaWNlRGVjaW1hbHMFD2RlZmF1bHREZWNpbWFscwQMY3VycmVudFByaWNlCQEHZnJvbVgxOAIIBQFyAl80BQZzY2FsZTgEEXNsaXBwYWdlQ2FsY3VsYXRlCQEHZnJvbVgxOAIIBQFyAl81BQZzY2FsZTgEEWNoZWNrQ2FsY0xwQW1vdW50AwkAZgIFEWNhbGN1bGF0ZUxwQW1vdW50AAAGCQEIdGhyb3dFcnIBAgdMUCA8PSAwAwkAAAIFEWNoZWNrQ2FsY0xwQW1vdW50BRFjaGVja0NhbGNMcEFtb3VudAQMZW1pdExwQW1vdW50AwkBASEBBQZlbWl0THAAAAURY2FsY3VsYXRlTHBBbW91bnQECmFtb3VudERpZmYJAGUCBRNpbkFtb3VudEFzc2V0QW1vdW50BRtjYWxjdWxhdGVBbW91bnRBc3NldFBheW1lbnQECXByaWNlRGlmZgkAZQIFEmluUHJpY2VBc3NldEFtb3VudAUaY2FsY3VsYXRlUHJpY2VBc3NldFBheW1lbnQEDSR0MDE3MTUwMTc0MDkDAwUKaXNPbmVBc3NldAkAAAIFCXBheW1lbnRJZAULYW1vdW50SWRTdHIHCQCUCgIFDXBheW1lbnRBbW91bnQAAAMDBQppc09uZUFzc2V0CQAAAgUJcGF5bWVudElkBQpwcmljZUlkU3RyBwkAlAoCAAAFDXBheW1lbnRBbW91bnQJAJQKAgUbY2FsY3VsYXRlQW1vdW50QXNzZXRQYXltZW50BRpjYWxjdWxhdGVQcmljZUFzc2V0UGF5bWVudAQKd3JpdGVBbUFtdAgFDSR0MDE3MTUwMTc0MDkCXzEECndyaXRlUHJBbXQIBQ0kdDAxNzE1MDE3NDA5Al8yBAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVByaWNlTGFzdAAFDGN1cnJlbnRQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVByaWNlSGlzdG9yeQIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFDGN1cnJlbnRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5UHV0QWN0aW9uQnlVc2VyAgULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFQdXRBY3Rpb25JbmZvCgUKd3JpdGVBbUFtdAUKd3JpdGVQckFtdAUMZW1pdExwQW1vdW50BQxjdXJyZW50UHJpY2UFEXNsaXBwYWdlVG9sZXJhbmNlBRFzbGlwcGFnZUNhbGN1bGF0ZQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUKYW1vdW50RGlmZgUJcHJpY2VEaWZmBQNuaWwJAJ8KDQURY2FsY3VsYXRlTHBBbW91bnQFDGVtaXRMcEFtb3VudAUMY3VycmVudFByaWNlBQ1hbW91bnRCYWxhbmNlBQxwcmljZUJhbGFuY2UFCmxwRW1pc3Npb24FCWxwQXNzZXRJZAUDc3RzBQtjb21tb25TdGF0ZQUKYW1vdW50RGlmZgUJcHJpY2VEaWZmBQ9pbkFtb3VudEFzc2V0SWQFDmluUHJpY2VBc3NldElkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARt2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQBBW9yZGVyBANjZmcJAQ1nZXRQb29sQ29uZmlnAAQHYW10QXNJZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQGcHJBc0lkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBANzdHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFCWlkeFBvb2xTdAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBA9hY2NBbXRBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUHYW10QXNJZAQOYWNjUHJBc0JhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUGcHJBc0lkBA9jdXJyZW50UHJpY2VYMTgDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQEQcHJpdmF0ZUNhbGNQcmljZQQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBEHByaXZhdGVDYWxjUHJpY2UEBQhhbXRBc0RjbQUHcHJBc0RjbQkAZQIFD2FjY0FtdEFzQmFsYW5jZQgFBW9yZGVyBmFtb3VudAUOYWNjUHJBc0JhbGFuY2UECGN1clByaWNlCQEHZnJvbVgxOAIFD2N1cnJlbnRQcmljZVgxOAUGc2NhbGU4AwMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUDc3RzBQ5Qb29sTWF0Y2hlckRpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkBCHRocm93RXJyAQINQWRtaW4gYmxvY2tlZAQKb3JBbXRBc3NldAgIBQVvcmRlcglhc3NldFBhaXILYW1vdW50QXNzZXQECm9yQW10QXNTdHIDCQAAAgUKb3JBbXRBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUKb3JBbXRBc3NldAQJb3JQckFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgpwcmljZUFzc2V0BAlvclByQXNTdHIDCQAAAgUJb3JQckFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQlvclByQXNzZXQDAwkBAiE9AgUKb3JBbXRBc1N0cgUHYW10QXNJZAYJAQIhPQIFCW9yUHJBc1N0cgUGcHJBc0lkCQEIdGhyb3dFcnIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQNcHJpY2VEZWNpbWFscwkAawMFBnNjYWxlOAUHcHJBc0RjbQUIYW10QXNEY20EDmNhc3RPcmRlclByaWNlCQECdHMDBQpvcmRlclByaWNlBQZzY2FsZTgFDXByaWNlRGVjaW1hbHMEEWlzT3JkZXJQcmljZVZhbGlkAwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkAZwIFCGN1clByaWNlBQ5jYXN0T3JkZXJQcmljZQkAZwIFDmNhc3RPcmRlclByaWNlBQhjdXJQcmljZQYBCWNvbW1vbkdldAEBaQQNY2hlY2tQYXltZW50cwMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhIxIHBheW1lbnQgZXhwZWN0ZWQDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABA5wYXltZW50QXNzZXRJZAkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQNcGF5bWVudEFtb3VudAgFB3BheW1lbnQGYW1vdW50BAFyCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUOcGF5bWVudEFzc2V0SWQFDXBheW1lbnRBbW91bnQIBQFpBmNhbGxlcgQPb3V0QW1vdW50QW1vdW50CAUBcgJfMQQOb3V0UHJpY2VBbW91bnQIBQFyAl8yBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTADAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQEIdGhyb3dFcnIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQNzdHMJAJcKBQUPb3V0QW1vdW50QW1vdW50BQ5vdXRQcmljZUFtb3VudAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQljb21tb25QdXQJBmNhbGxlcgR0eElkEmFtb3VudEFzc2V0UGF5bWVudBFwcmljZUFzc2V0UGF5bWVudAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldA1wYXltZW50QW1vdW50CXBheW1lbnRJZAQBcgkBFGVzdGltYXRlUHV0T3BlcmF0aW9uDAUEdHhJZAUIc2xpcHBhZ2UICQEFdmFsdWUBBRJhbW91bnRBc3NldFBheW1lbnQGYW1vdW50CAkBBXZhbHVlAQUSYW1vdW50QXNzZXRQYXltZW50B2Fzc2V0SWQICQEFdmFsdWUBBRFwcmljZUFzc2V0UGF5bWVudAZhbW91bnQICQEFdmFsdWUBBRFwcmljZUFzc2V0UGF5bWVudAdhc3NldElkBQZjYWxsZXIHBQZlbWl0THAFCmlzT25lQXNzZXQFDXBheW1lbnRBbW91bnQFCXBheW1lbnRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUDc3RzBQpQb29sUHV0RGlzBgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQEIdGhyb3dFcnIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEHdGFrZUZlZQEGYW1vdW50BANmZWUJAGsDBQZhbW91bnQFC2ZlZVBlcm1pbGxlBQh0aG91c2FuZAkAlAoCCQBlAgUGYW1vdW50BQNmZWUFA2ZlZQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJwZAkBCHRocm93RXJyAQIRUGVybWlzc2lvbiBkZW5pZWQBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvchUBaQELY29uc3RydWN0b3IBD2ZhY3RvcnlDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlGYWN0b3J5Q29udGFjdAAFD2ZhY3RvcnlDb250cmFjdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkBCHRocm93RXJyAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkBCHRocm93RXJyAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQCCHNsaXBwYWdlCWF1dG9TdGFrZQQHZmFjdENmZwkBEGdldEZhY3RvcnlDb25maWcABA9zdGFraW5nQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFB2ZhY3RDZmcFD2lkeEZhY3RTdGFrQ250cgIWV3Jvbmcgc3Rha2luZyBjb250cmFjdAQQc2xpcHBhZ2VDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwUQaWR4RmFjdFNsaXBwQ250cgIXV3JvZ24gc2xpcHBhZ2UgY29udHJhY3QEDXNsaXBwYWdlQ2hlY2sDCQBnAgUIc2xpcHBhZ2UAAAYJAQh0aHJvd0VycgECDndyb25nIHNsaXBwYWdlAwkAAAIFDXNsaXBwYWdlQ2hlY2sFDXNsaXBwYWdlQ2hlY2sEDXBheW1lbnRzQ2hlY2sDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACBgkBCHRocm93RXJyAQITMiBwYXltZW50cyBleHBlY3RlZAMJAAACBQ1wYXltZW50c0NoZWNrBQ1wYXltZW50c0NoZWNrBAtlc3RpbWF0ZVB1dAkBCWNvbW1vblB1dAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFCHNsaXBwYWdlBgcAAAIABAxlbWl0THBBbW91bnQIBQtlc3RpbWF0ZVB1dAJfMgQJbHBBc3NldElkCAULZXN0aW1hdGVQdXQCXzcEBXN0YXRlCAULZXN0aW1hdGVQdXQCXzkECmFtb3VudERpZmYIBQtlc3RpbWF0ZVB1dANfMTAECXByaWNlRGlmZggFC2VzdGltYXRlUHV0A18xMQQIYW1vdW50SWQIBQtlc3RpbWF0ZVB1dANfMTIEB3ByaWNlSWQIBQtlc3RpbWF0ZVB1dANfMTMEAXIJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRlbWl0CQDMCAIFDGVtaXRMcEFtb3VudAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQxlbWl0THBBbW91bnQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUKYW1vdW50RGlmZgAACQD8BwQFEHNsaXBwYWdlQ29udHJhY3QCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhhbW91bnRJZAUKYW1vdW50RGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQlwcmljZURpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHcHJpY2VJZAUJcHJpY2VEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECWxwVHJhc2ZlcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFDGVtaXRMcEFtb3VudAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMZW1pdExwQW1vdW50BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUJbHBUcmFzZmVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXB1dE9uZVRrbgUPYW1vdW50QXNzZXRQYXJ0DnByaWNlQXNzZXRQYXJ0BW91dExwCHNsaXBwYWdlCWF1dG9TdGFrZQQDY2ZnCQEQZ2V0RmFjdG9yeUNvbmZpZwAED3N0YWtpbmdDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBQ9pZHhGYWN0U3Rha0NudHICFldyb25nIHN0YWtpbmcgY29udHJhY3QEEHNsaXBwYWdlQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIXV3Jvbmcgc2xpcHBhZ2UgY29udHJhY3QEEWd3eFJld2FyZENvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEWlkeEZhY3RHd3hSZXdDbnRyAhlXcm9uZyBnd3ggcmV3YXJkIGNvbnRyYWN0BAdwb29sQ2ZnCQENZ2V0UG9vbENvbmZpZwAECGFtb3VudElkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQHcHJpY2VJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEDmFtb3VudERlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EDXByaWNlRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdwb29sQ2ZnBQ1pZHhQcmljZUFzRGNtBAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEPa2V5QWRkb25BZGRyZXNzAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyAwMDAwkAZwIAAAUIc2xpcHBhZ2UGCQBnAgAABQ9hbW91bnRBc3NldFBhcnQGCQBnAgAABQ5wcmljZUFzc2V0UGFydAYJAGcCAAAFBW91dExwCQEIdGhyb3dFcnIBAgxXcm9uZyBwYXJhbXMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAQh0aHJvd0VycgECEjEgcGF5bWVudCBleHBlY3RlZAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABA5wYXltZW50QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBBBwYXltZW50QW1vdW50UmF3CAUHcGF5bWVudAZhbW91bnQEDSR0MDI2NTY5MjY2MjgJAQd0YWtlRmVlAQUQcGF5bWVudEFtb3VudFJhdwQNcGF5bWVudEFtb3VudAgFDSR0MDI2NTY5MjY2MjgCXzEECWZlZUFtb3VudAgFDSR0MDI2NTY5MjY2MjgCXzIDAwMJAGYCBQ9hbW91bnRBc3NldFBhcnQFDXBheW1lbnRBbW91bnQGCQBmAgUOcHJpY2VBc3NldFBhcnQFDXBheW1lbnRBbW91bnQGCQBmAgCAreIEBQ1wYXltZW50QW1vdW50CQEIdGhyb3dFcnIBAhR3cm9uZyBwYXltZW50IGFtb3VudAQNYW1vdW50QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQhhbW91bnRJZAQMcHJpY2VCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB3ByaWNlSWQEDSR0MDI2ODkzMjczNDgDCQAAAgUOcGF5bWVudEFzc2V0SWQFCGFtb3VudElkCQCYCgYJAGUCBQ1hbW91bnRCYWxhbmNlBQ1wYXltZW50QW1vdW50BQxwcmljZUJhbGFuY2UJAGUCBQ1wYXltZW50QW1vdW50BQ9hbW91bnRBc3NldFBhcnQFDnByaWNlQXNzZXRQYXJ0AAAAAAMJAAACBQ5wYXltZW50QXNzZXRJZAUHcHJpY2VJZAkAmAoGBQ1hbW91bnRCYWxhbmNlCQBlAgUMcHJpY2VCYWxhbmNlBQ1wYXltZW50QW1vdW50AAAAAAkAZQIFDXBheW1lbnRBbW91bnQFDnByaWNlQXNzZXRQYXJ0BQ9hbW91bnRBc3NldFBhcnQJAQh0aHJvd0VycgECFHdyb25nIHBheW1lbnRBc3NldElkBBBhbW91bnRCYWxhbmNlTm93CAUNJHQwMjY4OTMyNzM0OAJfMQQPcHJpY2VCYWxhbmNlTm93CAUNJHQwMjY4OTMyNzM0OAJfMgQMdmlydFN3YXBJbkFtCAUNJHQwMjY4OTMyNzM0OAJfMwQNdmlydFN3YXBPdXRQcggFDSR0MDI2ODkzMjczNDgCXzQEDHZpcnRTd2FwSW5QcggFDSR0MDI2ODkzMjczNDgCXzUEDXZpcnRTd2FwT3V0QW0IBQ0kdDAyNjg5MzI3MzQ4Al82BAJEMAkA/AcEBRFnd3hSZXdhcmRDb250cmFjdAIFY2FsY0QJAMwIAgkApAMBBRBhbW91bnRCYWxhbmNlTm93CQDMCAIJAKQDAQUPcHJpY2VCYWxhbmNlTm93CQDMCAIFDGFtcGxpZmljYXRvcgkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFEWd3eFJld2FyZENvbnRyYWN0AgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBRBhbW91bnRCYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUPcHJpY2VCYWxhbmNlTm93BQx2aXJ0U3dhcEluUHIFDXZpcnRTd2FwT3V0UHIJAMwIAgUMYW1wbGlmaWNhdG9yCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQEJdmFsaWRhdGVEAwkApwMBCQEDc3RyAQUCRDEJAKcDAQkBA3N0cgEFAkQwBQpzbGlwcGFnZTREAwkAAAIFBkQwdnNEMQUGRDB2c0QxBAtlc3RpbWF0ZVB1dAkBCWNvbW1vblB1dAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFCGFtb3VudElkBQ9hbW91bnRBc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3ByaWNlSWQFDnByaWNlQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAQKZXN0aW1hdGVMUAgFC2VzdGltYXRlUHV0Al8yBAlscEFzc2V0SWQIBQtlc3RpbWF0ZVB1dAJfNwQFc3RhdGUIBQtlc3RpbWF0ZVB1dAJfOQQKYW1vdW50RGlmZggFC2VzdGltYXRlUHV0A18xMAQJcHJpY2VEaWZmCAULZXN0aW1hdGVQdXQDXzExBAlscENhbGNSZXMJAQ92YWxpZGF0ZUFic0RpZmYDCQC2AgEFCmVzdGltYXRlTFAJALYCAQUFb3V0THAJALYCAQUIc2xpcHBhZ2UEDGVtaXRMcEFtb3VudAkAoAMBCAUJbHBDYWxjUmVzAl8yBAFlCQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQxlbWl0THBBbW91bnQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUMZW1pdExwQW1vdW50BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFCmFtb3VudERpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQhhbW91bnRJZAUKYW1vdW50RGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQlwcmljZURpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdwcmljZUlkBQlwcmljZURpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQJbHBUcmFzZmVyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQ9zdGFraW5nQ29udHJhY3QCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUMZW1pdExwQW1vdW50BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxlbWl0THBBbW91bnQFCWxwQXNzZXRJZAUDbmlsBBBzZW5kRmVlVG9NYXRjaGVyAwkAZgIFCWZlZUFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDm1hdGNoZXJBZGRyZXNzBQlmZWVBbW91bnQJANkEAQUOcGF5bWVudEFzc2V0SWQFA25pbAUDbmlsCQDOCAIJAM4IAgUFc3RhdGUFCWxwVHJhc2ZlcgUQc2VuZEZlZVRvTWF0Y2hlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwdXRGb3JGcmVlAQttYXhzbGlwcGFnZQMJAGYCAAAFC21heHNsaXBwYWdlCQEIdGhyb3dFcnIBAg53cm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkBCHRocm93RXJyAQITMiBwYXltZW50cyBleHBlY3RlZAQLZXN0aW1hdGVQdXQJAQljb21tb25QdXQJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQttYXhzbGlwcGFnZQcHAAACAAgFC2VzdGltYXRlUHV0Al85AWkBA2dldAAEAXIJAQljb21tb25HZXQBBQFpBAlvdXRBbXRBbXQIBQFyAl8xBA5vdXRQcmljZUFtb3VudAgFAXICXzIEDXBheW1lbnRBbW91bnQIBQFyAl8zBA5wYXltZW50QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNcGF5bWVudEFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ5wYXltZW50QXNzZXRJZAUNcGF5bWVudEFtb3VudAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE9uZVRrbgUKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQEIdGhyb3dFcnIBAhIxIHBheW1lbnQgZXhwZWN0ZWQEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQECGFtb3VudElkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcmljZUlkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBA5hbW91bnREZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EDXByaWNlRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHZmFjdENmZwkBEGdldEZhY3RvcnlDb25maWcABBFnd3hSZXdhcmRDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwURaWR4RmFjdEd3eFJld0NudHICH1dyb25nIGd3eFJld2FyZENvbnRyYWN0IGFkZHJlc3MEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleUFkZG9uQWRkcmVzcwACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEDnBheW1lbnRBc3NldElkCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBA1wYXltZW50QW1vdW50CAUHcGF5bWVudAZhbW91bnQDCQBmAgCAlOvcAwUNcGF5bWVudEFtb3VudAkBCHRocm93RXJyAQIRTWluIHBheW1lbnQgMTAgTFADAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUKZXhjaFJlc3VsdAYJAGYCAAAFCW91dEFtb3VudAkBCHRocm93RXJyAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgUJbHBBc3NldElkCQDYBAEFDnBheW1lbnRBc3NldElkCQEIdGhyb3dFcnIBAghXcm9uZyBMUAQBcgkBFGVzdGltYXRlR2V0T3BlcmF0aW9uBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFDnBheW1lbnRBc3NldElkBQ1wYXltZW50QW1vdW50CAUBaQZjYWxsZXIECmVzdGltQW1BbXQIBQFyAl8xBAplc3RpbVByQW10CAUBcgJfMgQNYW1vdW50QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQhhbW91bnRJZAQMcHJpY2VCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFB3ByaWNlSWQEDSR0MDMyNDk2MzI5NjQDCQAAAgUKb3V0QXNzZXRJZAUIYW1vdW50SWQJAJkKBwkAZQIFDWFtb3VudEJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQxwcmljZUJhbGFuY2UFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQFCmVzdGltUHJBbXQAAAAACQBkAgUKZXN0aW1BbUFtdAUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQdwcmljZUlkCQCZCgcJAGUCBQ1hbW91bnRCYWxhbmNlBQplc3RpbUFtQW10CQBlAgUMcHJpY2VCYWxhbmNlBQplc3RpbVByQW10AAAAAAUKZXhjaFJlc3VsdAUKZXN0aW1BbUFtdAkAZAIFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQJAQh0aHJvd0VycgECEHdyb25nIG91dEFzc2V0SWQEEGFtb3VudEJhbGFuY2VOb3cIBQ0kdDAzMjQ5NjMyOTY0Al8xBA9wcmljZUJhbGFuY2VOb3cIBQ0kdDAzMjQ5NjMyOTY0Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAzMjQ5NjMyOTY0Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMzI0OTYzMjk2NAJfNAQMdmlydFN3YXBJblByCAUNJHQwMzI0OTYzMjk2NAJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDMyNDk2MzI5NjQCXzYECHRvdGFsR2V0CAUNJHQwMzI0OTYzMjk2NAJfNwMDCQBmAgAABQx2aXJ0U3dhcEluQW0GCQBmAgAABQx2aXJ0U3dhcEluUHIJAQh0aHJvd0VycgECCldyb25nIGNhbGMEAkQwCQD8BwQFEWd3eFJld2FyZENvbnRyYWN0AgVjYWxjRAkAzAgCCQCkAwEFEGFtb3VudEJhbGFuY2VOb3cJAMwIAgkApAMBBQ9wcmljZUJhbGFuY2VOb3cJAMwIAgUMYW1wbGlmaWNhdG9yCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQCRDEJAPwHBAURZ3d4UmV3YXJkQ29udHJhY3QCBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBRBhbW91bnRCYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApAMBCQBlAgkAZAIFD3ByaWNlQmFsYW5jZU5vdwUNdmlydFN3YXBPdXRQcgUMdmlydFN3YXBJblByCQDMCAIFDGFtcGxpZmljYXRvcgkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEBkQwdnNEMQkBCXZhbGlkYXRlRAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQIZmluYWxSZXMJAQ92YWxpZGF0ZUFic0RpZmYDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMzNjMzMzM3NDEDCQAAAgUKb3V0QXNzZXRJZAUIYW1vdW50SWQJAJQKAgkAoAMBCAUIZmluYWxSZXMCXzIAAAkAlAoCAAAJAKADAQgFCGZpbmFsUmVzAl8yBAVvdXRBbQgFDSR0MDMzNjMzMzM3NDECXzEEBW91dFByCAUNJHQwMzM2MzMzMzc0MQJfMgQOdG90YWxBbW91bnRSYXcJAGQCBQVvdXRBbQUFb3V0UHIEDSR0MDMzNzgxMzM4MzYJAQd0YWtlRmVlAQUOdG90YWxBbW91bnRSYXcEC3RvdGFsQW1vdW50CAUNJHQwMzM3ODEzMzgzNgJfMQQJZmVlQW1vdW50CAUNJHQwMzM3ODEzMzgzNgJfMgQRb3V0QXNzZXRJZE9yV2F2ZXMDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAQQc2VuZEZlZVRvTWF0Y2hlcgMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5tYXRjaGVyQWRkcmVzcwUJZmVlQW1vdW50BRFvdXRBc3NldElkT3JXYXZlcwUDbmlsBQNuaWwECGRlY2ltYWxzAwkAZwIFDmFtb3VudERlY2ltYWxzBQ1wcmljZURlY2ltYWxzBQ5hbW91bnREZWNpbWFscwUNcHJpY2VEZWNpbWFscwMJAAACBQhkZWNpbWFscwUIZGVjaW1hbHMECGN1clByWDE4CQEPY2FsY1ByaWNlQmlnSW50AgkBBXRvWDE4AgUMcHJpY2VCYWxhbmNlBQhkZWNpbWFscwkBBXRvWDE4AgUNYW1vdW50QmFsYW5jZQUIZGVjaW1hbHMEBWN1clByCQEHZnJvbVgxOAIFCGN1clByWDE4BQZzY2FsZTgEBXN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQt0b3RhbEFtb3VudAURb3V0QXNzZXRJZE9yV2F2ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUdldEFjdGlvbkJ5VXNlcgIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUFb3V0QW0FBW91dFByBQ1wYXltZW50QW1vdW50BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVByaWNlTGFzdAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UHJpY2VIaXN0b3J5AgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUFY3VyUHIFA25pbAMJAAACBQVzdGF0ZQUFc3RhdGUEBGJ1cm4JAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFDXBheW1lbnRBbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUOcGF5bWVudEFzc2V0SWQFDXBheW1lbnRBbW91bnQFA25pbAMJAAACBQRidXJuBQRidXJuCQDOCAIFBXN0YXRlBRBzZW5kRmVlVG9NYXRjaGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE5vTGVzcwISbm9MZXNzVGhlbkFtdEFzc2V0FG5vTGVzc1RoZW5QcmljZUFzc2V0BAFyCQEJY29tbW9uR2V0AQUBaQQPb3V0QW1vdW50QW1vdW50CAUBcgJfMQQOb3V0UHJpY2VBbW91bnQIBQFyAl8yBA1wYXltZW50QW1vdW50CAUBcgJfMwQOcGF5bWVudEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUEFGNoZWNrT3V0QW1vdW50QW1vdW50AwkAZwIFD291dEFtb3VudEFtb3VudAUSbm9MZXNzVGhlbkFtdEFzc2V0BgkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFD291dEFtb3VudEFtb3VudAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAAACBRRjaGVja091dEFtb3VudEFtb3VudAUUY2hlY2tPdXRBbW91bnRBbW91bnQEE2NoZWNrT3V0UHJpY2VBbW91bnQDCQBnAgUOb3V0UHJpY2VBbW91bnQFFG5vTGVzc1RoZW5QcmljZUFzc2V0BgkBCHRocm93RXJyAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUOb3V0UHJpY2VBbW91bnQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAMJAAACBRNjaGVja091dFByaWNlQW1vdW50BRNjaGVja091dFByaWNlQW1vdW50BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNcGF5bWVudEFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ5wYXltZW50QXNzZXRJZAUNcGF5bWVudEFtb3VudAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBAhRubyBwYXltZW50cyBleHBlY3RlZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECmZhY3RvcnlDZmcJARBnZXRGYWN0b3J5Q29uZmlnAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB3N0YWtpbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmZhY3RvcnlDZmcFD2lkeEZhY3RTdGFrQ250cgIFd3JvbmcECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTAEAXYDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQEIdGhyb3dFcnIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQNzdHMGAwkAAAIFAXYFAXYEBWJ1cm5BCQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEYnVybgkAzAgCBQZhbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAACBQVidXJuQQUFYnVybkEFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGFjdGl2YXRlAghhbXRBc1N0cgdwckFzU3RyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAKUIAQUPZmFjdG9yeUNvbnRyYWN0CQEIdGhyb3dFcnIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QW1vdW50QXNzZXQABQhhbXRBc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UHJpY2VBc3NldAAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQ9rZXlBZGRvbkFkZHJlc3MABQJwZAkAzAgCCQELU3RyaW5nRW50cnkCBQFrBQF2BQNuaWwBaQEEc2V0SQIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQEPa2V5QWRkb25BZGRyZXNzAAUCcGQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAXYFA25pbAFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQ1nZXRQb29sQ29uZmlnAAFpARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQdhc3NldElkCQCUCgIFA25pbAkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAWkBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDBWFtQW10BXByQW10BWxwQW10BAJwcgkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCcHIAAAkAzAgCCQCmAwEJAJEDAgUCcHIAAQkAzAgCCQCmAwEJAJEDAgUCcHIAAgUDbmlsAWkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCA3ZhbAxyZXNTY2FsZU11bHQJAJQKAgUDbmlsCQEHZnJvbVgxOAIJAKcDAQUDdmFsBQxyZXNTY2FsZU11bHQBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBBXRvWDE4AgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEPY2FsY1ByaWNlQmlnSW50AgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlE2luQW1vdW50QXNzZXRBbW91bnQGaW5BbUlkEmluUHJpY2VBc3NldEFtb3VudAZpblBySWQHdXNyQWRkcgppc0V2YWx1YXRlBmVtaXRMcAkAlAoCBQNuaWwJARRlc3RpbWF0ZVB1dE9wZXJhdGlvbgwFBnR4SWQ1OAUIc2xpcHBhZ2UFE2luQW1vdW50QXNzZXRBbW91bnQFBmluQW1JZAUSaW5QcmljZUFzc2V0QW1vdW50BQZpblBySWQFB3VzckFkZHIFCmlzRXZhbHVhdGUFBmVtaXRMcAcAAAIAAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgLcGF5bWVudEFzSWQPcGF5bWVudExwQW1vdW50B3VzckFkZHIEAXIJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQFBnR4SWQ1OAULcGF5bWVudEFzSWQFD3BheW1lbnRMcEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHdXNyQWRkcgkAlAoCBQNuaWwJAJwKCggFAXICXzEIBQFyAl8yCAUBcgJfMwgFAXICXzQIBQFyAl81CAUBcgJfNggFAXICXzcJAKYDAQgFAXICXzgIBQFyAl85CAUBcgNfMTABAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAEB210Y2hQdWIJARNnZXRNYXRjaGVyUHViT3JGYWlsAAQDb3JWCQEbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAQUFb3JkZXIEBXNuZHJWCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAVtdGNoVgkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUHbXRjaFB1YgMDAwUDb3JWBQVzbmRyVgcFBW10Y2hWBwYJAQ90aHJvd09yZGVyRXJyb3IDBQNvclYFBXNuZHJWBQVtdGNoVgQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gxCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMQIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDEFAnBrAwkAAQIFByRtYXRjaDECBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5/Xi9zQ==", "height": 2207383, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7LSs3p3NpGeU32XNFyV6yBwsFX8hCqA7VR5Vtpj1NJB2 Next: A4bvDmgWaTrbYfLwrDx68GGK5oSirQRKaeyXv57Pjf71 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = 1000000
55
6-let b = toBigInt(100000000)
6+let b = 100000000
77
8-let c = toBigInt(1000000000000000000)
8+let c = toBigInt(100000000)
99
10-let d = toBigInt(0)
10+let d = toBigInt(1000000000000000000)
1111
12-let e = toBigInt(1)
12+let e = 1000
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(0)
1515
16-let g = "100"
16+let g = toBigInt(1)
1717
18-let h = "1"
18+let h = toBigInt((b - ((b * 1) / b)))
1919
20-let i = "__"
20+let i = "100"
2121
22-let j = ""
22+let j = "1"
2323
24-let k = 1
24+let k = "__"
2525
26-let l = 2
26+let l = ""
2727
28-let m = 3
28+let m = 1
2929
30-let n = 4
30+let n = 2
3131
32-let o = 1
32+let o = 3
3333
34-let p = 2
34+let p = 4
3535
36-let q = 3
36+let q = 1
3737
38-let r = 4
38+let r = 2
3939
40-let s = 5
40+let s = 3
4141
42-let t = 6
42+let t = 4
4343
44-let u = 7
44+let u = 5
4545
46-let v = 8
46+let v = 6
4747
48-let w = 9
48+let w = 7
4949
50-let x = 1
50+let x = 8
5151
52-let y = 7
52+let y = 9
5353
54-let z = 10
54+let z = 1
5555
56-let A = "%s__delay"
56+let A = 7
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 10
59+
60+let C = 0
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
5963
6064
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6266
6367
64-func H (I,J,K) = fraction(I, J, K)
68+func J (K,L,M) = fraction(K, L, M)
6569
6670
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
71+func N (H) = if ((f > H))
72+ then -(H)
73+ else H
7074
7175
72-func M () = "%s__factoryContract"
76+func O () = "%s__factoryContract"
7377
7478
75-func N () = "%s__managerPublicKey"
79+func P () = "%s__managerPublicKey"
7680
7781
78-func O () = "%s__pendingManagerPublicKey"
82+func Q () = "%s__pendingManagerPublicKey"
7983
8084
81-func P () = "%s%s__price__last"
85+func R () = "%s%s__price__last"
8286
8387
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
88+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], k)
8589
8690
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
91+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
8892
8993
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
94+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9195
9296
93-func X () = "%s__amountAsset"
97+func Z () = "%s__amountAsset"
9498
9599
96-func Y () = "%s__priceAsset"
100+func aa () = "%s__priceAsset"
97101
98102
99-func Z () = "%s__amp"
103+func ab () = "%s__amp"
100104
101105
102-func aa () = "%s__addonAddr"
106+func ac () = "%s__addonAddr"
103107
104108
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
109+let ad = "%s__feePermille"
110+
111+let ae = valueOrElse(getInteger(this, ad), C)
112+
113+func af () = "%s__factoryConfig"
106114
107115
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
116+func ag () = "%s%s__matcher__publicKey"
109117
110118
111-func ae () = "%s__factoryConfig"
119+func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
112120
113121
114-func af () = "%s%s__matcher__publicKey"
122+func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
115123
116124
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
125+func am () = "%s__shutdown"
118126
119127
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
128+func an (ao) = throw(makeString(["lp_stable.ride:", ao], " "))
121129
122130
123-func al () = "%s__shutdown"
131+func ap (aq,ar,as) = an(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
124132
125133
126-func am () = "%s__allowedLpStableScriptHash"
127-
128-
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130-
131-
132-func ar (F) = {
133- let as = F
134- if ($isInstanceOf(as, "String"))
134+func at (H) = {
135+ let au = H
136+ if ($isInstanceOf(au, "String"))
135137 then {
136- let at = as
137- at
138+ let av = au
139+ av
138140 }
139- else throw("fail cast to String")
141+ else an("fail cast to String")
140142 }
141143
142144
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
145+func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
144146
145147
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
148+func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
147149
148150
149-let ay = addressFromStringValue(au(this, M()))
151+let aA = addressFromStringValue(aw(this, O()))
150152
151-let az = au(this, Z())
153+let aB = aw(this, ab())
152154
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
155+func aC () = valueOrElse(getBoolean(aA, am()), false)
154156
155157
156-func aB () = fromBase58String(au(ay, af()))
158+func aD () = fromBase58String(aw(aA, ag()))
157159
158160
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)
161+let aE = addressFromPublicKey(aD())
162+
163+func aF () = {
164+ let aG = aw(this, Z())
165+ let aH = aw(this, aa())
166+ let aI = az(aA, ak(aH))
167+ let ai = az(aA, ak(aG))
168+ split(aw(aA, ah(toString(ai), toString(aI))), k)
165169 }
166170
167171
168-func aG () = split(au(ay, ae()), i)
172+func aJ () = split(aw(aA, af()), k)
169173
170174
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)
175+func aK (aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU)], k)
172176
173177
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)
178+func aV (aW,aX,aY,aO,aR,aS) = makeString(["%d%d%d%d%d%d", toString(aW), toString(aX), toString(aY), toString(aO), toString(aR), toString(aS)], k)
175179
176180
177-func aW (aX) = if ((aX == "WAVES"))
181+func aZ (ba) = if ((ba == "WAVES"))
178182 then wavesBalance(this).available
179- else assetBalance(this, fromBase58String(aX))
183+ else assetBalance(this, fromBase58String(ba))
180184
181185
182-func aY (aZ,ba) = fraction(aZ, c, ba)
186+func bb (bc,bd) = fraction(bc, d, bd)
183187
184188
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]))
189+func be (bf,bg,bh) = {
190+ let bi = fraction((bf - bg), c, bg)
191+ let bj = ((bh - N(bi)) > f)
192+ if (!(bj))
193+ then an(("Big slippage: " + toString(bi)))
194+ else $Tuple2(bj, min([bf, bg]))
191195 }
192196
193197
194-func bh (bi,bj,bk) = {
195- let bf = fraction(bj, b, bi)
196- let bl = (bk > bf)
197- if (if (bl)
198+func bk (bl,bm,bh) = {
199+ let bi = fraction(bm, c, bl)
200+ let bn = (bh > bi)
201+ if (if (bn)
198202 then true
199- else (bj > bi))
200- then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201- else bl
203+ else (bm > bl))
204+ then an(((((((toString(bm) + " ") + toString(bl)) + " ") + toString(bi)) + " ") + toString(bh)))
205+ else bn
202206 }
203207
204208
205-func bm (bn,bo,bp,bq) = {
206- let br = B(bp, bn)
207- let bs = B(bq, bo)
208- aY(bs, br)
209+func bo (bp,bq,br,bs) = {
210+ let bt = D(br, bp)
211+ let bu = D(bs, bq)
212+ bb(bu, bt)
209213 }
210214
211215
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]
216+func bv (br,bs,bw) = {
217+ let bx = aF()
218+ let by = parseIntValue(bx[v])
219+ let bz = parseIntValue(bx[w])
220+ let bA = bo(by, bz, br, bs)
221+ let bd = D(br, by)
222+ let bc = D(bs, bz)
223+ let bB = D(bw, b)
224+ let bC = bb(bd, bB)
225+ let bD = bb(bc, bB)
226+[bA, bC, bD]
223227 }
224228
225229
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)]
230+func bE (br,bs,bw) = {
231+ let bF = bv(br, bs, bw)
232+[G(bF[0], b), G(bF[1], b), G(bF[2], b)]
229233 }
230234
231235
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))
242- then throw("Wrong pmt asset")
243- else {
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 == ""))
236+func bG (bH,bI,bJ,bK) = {
237+ let bx = aF()
238+ let bL = bx[s]
239+ let bM = bx[t]
240+ let bN = bx[u]
241+ let bO = parseIntValue(bx[v])
242+ let bP = parseIntValue(bx[w])
243+ let bQ = bx[r]
244+ let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
245+ let bS = if ((bL == bI))
246+ then true
247+ else an("Wrong payment asset")
248+ if ((bS == bS))
249+ then {
250+ let bT = aZ(bM)
251+ let bU = aZ(bN)
252+ let bV = fraction(bT, a, bO)
253+ let bW = fraction(bU, a, bP)
254+ let bX = D(bV, a)
255+ let bY = D(bW, a)
256+ let bZ = bb(bY, bX)
257+ let ca = G(bZ, b)
258+ let cb = D(bJ, b)
259+ let cc = D(bR, b)
260+ let cd = fraction(bX, cb, cc)
261+ let ce = fraction(bY, cb, cc)
262+ let cf = G(cd, a)
263+ let cg = G(ce, a)
264+ let ch = fraction(cf, bO, a)
265+ let ci = fraction(cg, bP, a)
266+ let cj = if ((bH == ""))
257267 then nil
258- else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
268+ else [ScriptTransfer(bK, ch, if ((bM == "WAVES"))
259269 then unit
260- else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
270+ else fromBase58String(bM)), ScriptTransfer(bK, ci, if ((bN == "WAVES"))
261271 then unit
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)
272+ else fromBase58String(bN)), StringEntry(Y(toString(bK), bH), aV(ch, ci, bJ, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
273+ $Tuple10(ch, ci, bM, bN, bT, bU, bR, bZ, bQ, cj)
264274 }
275+ else throw("Strict value is not equal to itself.")
265276 }
266277
267278
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)
279+func ck (bH,cl,cm,cn,co,cp,bK,cq,cr,cs,ct,cu) = {
280+ let bx = aF()
281+ let bL = fromBase58String(bx[s])
282+ let cv = bx[t]
283+ let cw = bx[u]
284+ let cx = bx[x]
285+ let cy = bx[y]
286+ let bO = parseIntValue(bx[v])
287+ let bP = parseIntValue(bx[w])
288+ let bQ = bx[r]
289+ let bR = valueOrErrorMessage(assetInfo(bL), "Wrong lp asset").quantity
290+ let bT = if (cq)
291+ then aZ(cv)
292+ else if (if (cs)
293+ then (cu == cv)
283294 else false)
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)
295+ then (aZ(cv) - ct)
296+ else if (cs)
297+ then aZ(cv)
298+ else (aZ(cv) - cm)
299+ let bU = if (cq)
300+ then aZ(cw)
301+ else if (if (cs)
302+ then (cu == cw)
292303 else false)
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))
304+ then (aZ(cw) - ct)
305+ else if (cs)
306+ then aZ(cw)
307+ else (aZ(cw) - co)
308+ let bV = fraction(bT, a, bO)
309+ let bW = fraction(bU, a, bP)
310+ let cz = fraction(cm, a, bO)
311+ let cA = fraction(co, a, bP)
312+ let cB = D(cz, a)
313+ let cC = D(cA, a)
314+ let cD = bb(cC, cB)
315+ let bX = D(bV, a)
316+ let bY = D(bW, a)
317+ let cE = if ((bR == 0))
303318 then {
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)
319+ let bZ = f
320+ let cF = f
321+ let cG = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
322+ $Tuple5(G(cG, b), G(cB, a), G(cC, a), bb((bY + cC), (bX + cB)), cF)
308323 }
309324 else {
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)
325+ let bZ = bb(bY, bX)
326+ let cH = fraction(N((bZ - cD)), d, bZ)
327+ let cF = D(cl, b)
328+ let cI = if (((if ((bZ != f))
329+ then (cH > cF)
330+ else false) == false))
331+ then true
332+ else an(((("Price slippage " + toString(cH)) + " > ") + toString(cF)))
333+ if ((cI == cI))
334+ then {
335+ let cc = D(bR, b)
336+ let cJ = fraction(cB, bZ, d)
337+ let cK = fraction(cC, d, bZ)
338+ let cL = if ((cJ > cC))
339+ then $Tuple2(cK, cB)
340+ else $Tuple2(cB, cJ)
341+ let cM = cL._1
342+ let cN = cL._2
343+ let cG = fraction(cc, cN, bY)
344+ $Tuple5(G(cG, b), G(cM, a), G(cN, a), bZ, cF)
345+ }
346+ else throw("Strict value is not equal to itself.")
347+ }
348+ let cO = cE._1
349+ let cP = fraction(cE._2, bO, a)
350+ let cQ = fraction(cE._3, bP, a)
351+ let cR = G(cE._4, b)
352+ let cS = G(cE._5, b)
353+ let cT = if ((cO > 0))
354+ then true
355+ else an("LP <= 0")
356+ if ((cT == cT))
357+ then {
358+ let cU = if (!(cr))
359+ then 0
360+ else cO
361+ let cV = (cm - cP)
362+ let cW = (co - cQ)
363+ let cX = if (if (cs)
364+ then (cu == cv)
315365 else false)
316- then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
317- else {
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)
328- }
366+ then $Tuple2(ct, 0)
367+ else if (if (cs)
368+ then (cu == cw)
369+ else false)
370+ then $Tuple2(0, ct)
371+ else $Tuple2(cP, cQ)
372+ let cY = cX._1
373+ let cZ = cX._2
374+ let da = [IntegerEntry(R(), cR), IntegerEntry(S(height, lastBlock.timestamp), cR), StringEntry(V(bK, bH), aK(cY, cZ, cU, cR, cl, cS, height, lastBlock.timestamp, cV, cW))]
375+ $Tuple13(cO, cU, cR, bT, bU, bR, bL, bQ, da, cV, cW, cn, cp)
329376 }
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))
336- then throw("LP <= 0")
337- else {
338- let cK = if (!(cj))
339- then 0
340- else cG
341- let cL = (ce - cH)
342- let cM = (cg - cI)
343- let cN = if (if (ck)
344- then (cm == cn)
345- else false)
346- then $Tuple2(cl, 0)
347- else if (if (ck)
348- then (cm == co)
349- else false)
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)
356- }
377+ else throw("Strict value is not equal to itself.")
357378 }
358379
359380
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())
381+func db (dc) = {
382+ let bx = aF()
383+ let dd = bx[t]
384+ let de = bx[u]
385+ let bQ = parseIntValue(bx[r])
386+ let by = parseIntValue(bx[v])
387+ let bz = parseIntValue(bx[w])
388+ let df = aZ(dd)
389+ let dg = aZ(de)
390+ let bZ = if ((dc.orderType == Buy))
391+ then bo(by, bz, (df + dc.amount), dg)
392+ else bo(by, bz, (df - dc.amount), dg)
393+ let ca = G(bZ, b)
394+ if (if (if (aC())
374395 then true
375- else (bO == m))
396+ else (bQ == o))
376397 then true
377- else (bO == n))
378- then throw("Admin blocked")
398+ else (bQ == p))
399+ then an("Admin blocked")
379400 else {
380- let cX = cS.assetPair.amountAsset
381- let cY = if ((cX == unit))
401+ let dh = dc.assetPair.amountAsset
402+ let di = if ((dh == unit))
382403 then "WAVES"
383- else toBase58String(value(cX))
384- let cZ = cS.assetPair.priceAsset
385- let da = if ((cZ == unit))
404+ else toBase58String(value(dh))
405+ let dj = dc.assetPair.priceAsset
406+ let dk = if ((dj == unit))
386407 then "WAVES"
387- else toBase58String(value(cZ))
388- if (if ((cY != cT))
408+ else toBase58String(value(dj))
409+ if (if ((di != dd))
389410 then true
390- else (da != cU))
391- then throw("Wr assets")
411+ else (dk != de))
412+ then an("Wr assets")
392413 else {
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)
414+ let dl = dc.price
415+ let bP = fraction(b, bz, by)
416+ let dm = J(dl, b, bP)
417+ let dn = if ((dc.orderType == Buy))
418+ then (ca >= dm)
419+ else (dm >= ca)
399420 true
400421 }
401422 }
402423 }
403424
404425
405-func de (df) = if ((size(df.payments) != 1))
406- then throw("1 pmnt exp")
407- else {
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())
417- then true
418- else (bO == n))
419- then throw(("Admin blocked: " + toString(bO)))
420- else $Tuple5(ca, cb, cl, bG, cc)
421- }
422-
423-
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())
426+func do (dp) = {
427+ let dq = if ((size(dp.payments) == 1))
428428 then true
429- else (bO == l))
430- then true
431- else (bO == n))
432- then throw(("Blocked:" + toString(bO)))
433- else cx
429+ else an("1 payment expected")
430+ if ((dq == dq))
431+ then {
432+ let dr = value(dp.payments[0])
433+ let bI = value(dr.assetId)
434+ let ct = dr.amount
435+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
436+ let ch = cE._1
437+ let ci = cE._2
438+ let bQ = parseIntValue(cE._9)
439+ let cj = cE._10
440+ if (if (aC())
441+ then true
442+ else (bQ == p))
443+ then an(("Admin blocked: " + toString(bQ)))
444+ else $Tuple5(ch, ci, ct, bI, cj)
445+ }
446+ else throw("Strict value is not equal to itself.")
434447 }
435448
436449
437-func dk () = {
438- let as = getString(N())
439- if ($isInstanceOf(as, "String"))
450+func ds (dt,X,du,dv,bh,cr,cs,ct,cu) = {
451+ let cE = ck(X, bh, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, false, cr, cs, ct, cu)
452+ let bQ = parseIntValue(cE._8)
453+ if (if (if (aC())
454+ then true
455+ else (bQ == n))
456+ then true
457+ else (bQ == p))
458+ then an(("Blocked:" + toString(bQ)))
459+ else cE
460+ }
461+
462+
463+func dw (dx) = {
464+ let dy = fraction(dx, ae, e)
465+ $Tuple2((dx - dy), dy)
466+ }
467+
468+
469+func dz () = {
470+ let au = getString(P())
471+ if ($isInstanceOf(au, "String"))
440472 then {
441- let dl = as
442- fromBase58String(dl)
473+ let dA = au
474+ fromBase58String(dA)
443475 }
444- else if ($isInstanceOf(as, "Unit"))
476+ else if ($isInstanceOf(au, "Unit"))
445477 then unit
446478 else throw("Match error")
447479 }
448480
449481
450-func dm () = {
451- let as = getString(O())
452- if ($isInstanceOf(as, "String"))
482+func dB () = {
483+ let au = getString(Q())
484+ if ($isInstanceOf(au, "String"))
453485 then {
454- let dl = as
455- fromBase58String(dl)
486+ let dA = au
487+ fromBase58String(dA)
456488 }
457- else if ($isInstanceOf(as, "Unit"))
489+ else if ($isInstanceOf(au, "Unit"))
458490 then unit
459491 else throw("Match error")
460492 }
461493
462494
463-let dn = throw("Permission denied")
495+let dC = an("Permission denied")
464496
465-func do (df) = {
466- let as = dk()
467- if ($isInstanceOf(as, "ByteVector"))
497+func dD (dp) = {
498+ let au = dz()
499+ if ($isInstanceOf(au, "ByteVector"))
468500 then {
469- let dp = as
470- if ((df.callerPublicKey == dp))
501+ let dE = au
502+ if ((dp.callerPublicKey == dE))
471503 then true
472- else dn
504+ else dC
473505 }
474- else if ($isInstanceOf(as, "Unit"))
475- then if ((df.caller == this))
506+ else if ($isInstanceOf(au, "Unit"))
507+ then if ((dp.caller == this))
476508 then true
477- else dn
509+ else dC
478510 else throw("Match error")
479511 }
480512
481513
482-@Callable(df)
483-func constructor (M) = {
484- let dq = do(df)
485- if ((dq == dq))
486- then [StringEntry(M(), M)]
514+@Callable(dp)
515+func constructor (aA) = {
516+ let dF = dD(dp)
517+ if ((dF == dF))
518+ then [StringEntry(O(), aA)]
487519 else throw("Strict value is not equal to itself.")
488520 }
489521
490522
491523
492-@Callable(df)
493-func setManager (dr) = {
494- let dq = do(df)
495- if ((dq == dq))
524+@Callable(dp)
525+func setManager (dG) = {
526+ let dF = dD(dp)
527+ if ((dF == dF))
496528 then {
497- let ds = fromBase58String(dr)
498- if ((ds == ds))
499- then [StringEntry(O(), dr)]
529+ let dH = fromBase58String(dG)
530+ if ((dH == dH))
531+ then [StringEntry(Q(), dG)]
500532 else throw("Strict value is not equal to itself.")
501533 }
502534 else throw("Strict value is not equal to itself.")
504536
505537
506538
507-@Callable(df)
539+@Callable(dp)
508540 func confirmManager () = {
509- let bD = dm()
510- let dt = if (isDefined(bD))
541+ let dI = dB()
542+ let dJ = if (isDefined(dI))
511543 then true
512- else throw("No pending manager")
513- if ((dt == dt))
544+ else an("No pending manager")
545+ if ((dJ == dJ))
514546 then {
515- let du = if ((df.callerPublicKey == value(bD)))
547+ let dK = if ((dp.callerPublicKey == value(dI)))
516548 then true
517- else throw("You are not pending manager")
518- if ((du == du))
519- then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
549+ else an("You are not pending manager")
550+ if ((dK == dK))
551+ then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
520552 else throw("Strict value is not equal to itself.")
521553 }
522554 else throw("Strict value is not equal to itself.")
524556
525557
526558
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))
533- then throw("Wrong slippage")
534- else if ((size(df.payments) != 2))
535- then throw("2 pmnts expd")
536- else {
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))
547- then {
548- let dC = {
549- let as = cx
550- if ($isInstanceOf(as, "Address"))
559+@Callable(dp)
560+func put (bh,dL) = {
561+ let dM = aJ()
562+ let dN = valueOrErrorMessage(addressFromString(dM[z]), "Wrong staking contract")
563+ let dO = valueOrErrorMessage(addressFromString(dM[A]), "Wrogn slippage contract")
564+ let dP = if ((bh >= 0))
565+ then true
566+ else an("wrong slippage")
567+ if ((dP == dP))
568+ then {
569+ let dQ = if ((size(dp.payments) == 2))
570+ then true
571+ else an("2 payments expected")
572+ if ((dQ == dQ))
573+ then {
574+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], bh, true, false, 0, "")
575+ let cU = dR._2
576+ let bL = dR._7
577+ let cj = dR._9
578+ let cV = dR._10
579+ let cW = dR._11
580+ let bM = dR._12
581+ let bN = dR._13
582+ let cE = invoke(aA, "emit", [cU], nil)
583+ if ((cE == cE))
584+ then {
585+ let dS = {
586+ let au = cE
587+ if ($isInstanceOf(au, "Address"))
588+ then {
589+ let dT = au
590+ invoke(dT, "emit", [cU], nil)
591+ }
592+ else unit
593+ }
594+ if ((dS == dS))
551595 then {
552- let dD = as
553- invoke(dD, "emit", [cK], nil)
554- }
555- else unit
556- }
557- if ((dC == dC))
558- then {
559- let dE = if ((cL > 0))
560- then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
561- else nil
562- if ((dE == dE))
563- then {
564- let dF = if ((cM > 0))
565- then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
566- else nil
567- if ((dF == dF))
568- then {
569- let dG = if (dw)
570- then {
571- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572- if ((dH == dH))
573- then nil
574- else throw("Strict value is not equal to itself.")
575- }
576- else [ScriptTransfer(df.caller, cK, dB)]
577- (cc ++ dG)
578- }
579- else throw("Strict value is not equal to itself.")
580- }
581- else throw("Strict value is not equal to itself.")
582- }
583- else throw("Strict value is not equal to itself.")
584- }
585- else throw("Strict value is not equal to itself.")
586- }
587- }
588-
589-
590-
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))
596+ let dU = if ((cV > 0))
597+ then invoke(dO, "put", nil, [AttachedPayment(bM, cV)])
598+ else nil
599+ if ((dU == dU))
662600 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))
601+ let dV = if ((cW > 0))
602+ then invoke(dO, "put", nil, [AttachedPayment(bN, cW)])
603+ else nil
604+ if ((dV == dV))
673605 then {
674- let dE = if ((cL > 0))
675- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676- else nil
677- if ((dE == dE))
606+ let dW = if (dL)
678607 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- }
608+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
609+ if ((dX == dX))
610+ then nil
694611 else throw("Strict value is not equal to itself.")
695612 }
696- else throw("Strict value is not equal to itself.")
613+ else [ScriptTransfer(dp.caller, cU, bL)]
614+ (cj ++ dW)
697615 }
698616 else throw("Strict value is not equal to itself.")
699617 }
700618 else throw("Strict value is not equal to itself.")
701619 }
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 putForFree (eb) = if ((0 > eb))
712- then throw("Wrong slpg")
713- else if ((size(df.payments) != 2))
714- then throw("2 pmnts expd")
715- else {
716- let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eb, false, false, 0, "")
717- dY._9
718- }
719-
720-
721-
722-@Callable(df)
723-func get () = {
724- let cx = de(df)
725- let ec = cx._1
726- let cb = cx._2
727- let cl = cx._3
728- let bG = cx._4
729- let cc = cx._5
730- let ed = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
731- if ((ed == ed))
732- then cc
733- else throw("Strict value is not equal to itself.")
734- }
735-
736-
737-
738-@Callable(df)
739-func getOneTkn (ee,ef,eg,eh,be) = if ((size(df.payments) != 1))
740- then throw("1 pmnt expd")
741- else {
742- let bv = aC()
743- let bJ = bv[q]
744- let bK = bv[r]
745- let bL = bv[s]
746- let bM = parseIntValue(bv[t])
747- let bN = parseIntValue(bv[u])
748- let bO = bv[p]
749- let dx = aG()
750- let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
751- let dg = value(df.payments[0])
752- let dN = valueOrElse(getString(this, aa()), "")
753- let bI = if ((dN == toString(df.caller)))
754- then df.originCaller
755- else df.caller
756- let bF = toBase58String(df.transactionId)
757- let bG = value(dg.assetId)
758- let cl = dg.amount
759- let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
760- let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
761- if ((dP == dP))
762- then if ((1000000000 > cl))
763- then throw("Min pmt 10 LP")
764- else if (if (if ((0 > be))
765- then true
766- else (0 > ee))
767- then true
768- else (0 > eg))
769- then throw("Wrong params")
770- else if ((bJ != toBase58String(bG)))
771- then throw("Wrong LP")
772- else {
773- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774- let ei = cx._1
775- let ej = cx._2
776- let bQ = aW(bK)
777- let bS = aW(bL)
778- let ek = if ((eh == bK))
779- then $Tuple7((bQ - ei), (bS - ej), ee, ej, 0, 0, (ei + ee))
780- else if ((eh == bL))
781- then $Tuple7((bQ - ei), (bS - ej), 0, 0, ee, ei, (ej + ee))
782- else throw("wrong outAssetId")
783- let dR = ek._1
784- let dS = ek._2
785- let dT = ek._3
786- let dU = ek._4
787- let dV = ek._5
788- let dW = ek._6
789- let el = ek._7
790- if (if ((0 > dT))
791- then true
792- else (0 > dV))
793- then throw("Wrong calc")
794- else {
795- let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
796- let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
797- let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
798- if ((dX == dX))
799- then {
800- let em = bb(toBigInt(el), toBigInt(eg), toBigInt(be))
801- if ((em == em))
802- then {
803- let en = if ((eh == bK))
804- then $Tuple2(toInt(em._2), 0)
805- else $Tuple2(0, toInt(em._2))
806- let eo = en._1
807- let ep = en._2
808- let eq = aY(B(bS, bN), B(bQ, bM))
809- let er = E(eq, a)
810- let cc = [ScriptTransfer(bI, (eo + ep), if ((eh == "WAVES"))
811- then unit
812- else fromBase58String(eh)), StringEntry(W(toString(bI), bF), aS(eo, ep, cl, er, height, lastBlock.timestamp)), IntegerEntry(P(), er), IntegerEntry(Q(height, lastBlock.timestamp), er)]
813- if ((cc == cc))
814- then {
815- let es = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
816- if ((es == es))
817- then cc
818- else throw("Strict value is not equal to itself.")
819- }
820- else throw("Strict value is not equal to itself.")
821- }
822- else throw("Strict value is not equal to itself.")
823- }
824- else throw("Strict value is not equal to itself.")
825- }
826- }
827- else throw("Strict value is not equal to itself.")
828- }
829-
830-
831-
832-@Callable(df)
833-func getNoLess (et,eu) = {
834- let cx = de(df)
835- let ca = cx._1
836- let cb = cx._2
837- let cl = cx._3
838- let bG = cx._4
839- let cc = cx._5
840- if ((et > ca))
841- then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
842- else if ((eu > cb))
843- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eu)))
844- else {
845- let ev = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
846- if ((ev == ev))
847- then cc
848- else throw("Strict value is not equal to itself.")
849- }
850- }
851-
852-
853-
854-@Callable(df)
855-func unstakeAndGet (ew) = {
856- let ex = if ((size(df.payments) != 0))
857- then throw("No pmnts expd")
858- else true
859- if ((ex == ex))
860- then {
861- let bv = aC()
862- let ey = aG()
863- let dB = fromBase58String(bv[q])
864- let ez = valueOrErrorMessage(addressFromString(ey[x]), "Wr st addr")
865- let eA = invoke(ez, "unstake", [toBase58String(dB), ew], nil)
866- if ((eA == eA))
867- then {
868- let cx = bE(toBase58String(df.transactionId), toBase58String(dB), ew, df.caller)
869- let bO = parseIntValue(cx._9)
870- let cc = cx._10
871- let eB = if (if (aA())
872- then true
873- else (bO == n))
874- then throw(("Blocked: " + toString(bO)))
875- else true
876- if ((eB == eB))
877- then {
878- let eC = invoke(ay, "burn", [ew], [AttachedPayment(dB, ew)])
879- if ((eC == eC))
880- then cc
881620 else throw("Strict value is not equal to itself.")
882621 }
883622 else throw("Strict value is not equal to itself.")
889628
890629
891630
892-@Callable(df)
893-func activate (eD,eE) = if ((toString(df.caller) != toString(ay)))
894- then throw("denied")
895- else $Tuple2([StringEntry(X(), eD), StringEntry(Y(), eE)], "success")
896-
897-
898-
899-@Callable(df)
900-func setS (eF,eB) = if ((toString(df.caller) != au(this, aa())))
901- then dn
902- else [StringEntry(eF, eB)]
903-
904-
905-
906-@Callable(df)
907-func setI (eF,eB) = if ((toString(df.caller) != au(this, aa())))
908- then dn
909- else [IntegerEntry(eF, eB)]
910-
911-
912-
913-@Callable(df)
914-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
915-
916-
917-
918-@Callable(df)
919-func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
920-
921-
922-
923-@Callable(df)
924-func calcPricesWrapperREADONLY (bp,bq,bu) = {
925- let eG = bt(bp, bq, bu)
926- $Tuple2(nil, [toString(eG[0]), toString(eG[1]), toString(eG[2])])
631+@Callable(dp)
632+func putOneTkn (dY,dZ,bg,bh,dL) = {
633+ let bx = aJ()
634+ let dN = valueOrErrorMessage(addressFromString(bx[z]), "Wrong staking contract")
635+ let dO = valueOrErrorMessage(addressFromString(bx[A]), "Wrong slippage contract")
636+ let ea = valueOrErrorMessage(addressFromString(bx[B]), "Wrong gwx reward contract")
637+ let eb = aF()
638+ let bM = eb[t]
639+ let bN = eb[u]
640+ let bO = parseIntValue(eb[v])
641+ let bP = parseIntValue(eb[w])
642+ let ec = valueOrElse(getString(this, ac()), "")
643+ let bK = if ((ec == toString(dp.caller)))
644+ then dp.originCaller
645+ else dp.caller
646+ if (if (if (if ((0 >= bh))
647+ then true
648+ else (0 >= dY))
649+ then true
650+ else (0 >= dZ))
651+ then true
652+ else (0 >= bg))
653+ then an("Wrong params")
654+ else if ((size(dp.payments) != 1))
655+ then an("1 payment expected")
656+ else {
657+ let dr = value(dp.payments[0])
658+ let bI = toBase58String(value(dr.assetId))
659+ let ed = dr.amount
660+ let ee = dw(ed)
661+ let ct = ee._1
662+ let ef = ee._2
663+ if (if (if ((dY > ct))
664+ then true
665+ else (dZ > ct))
666+ then true
667+ else (10000000 > ct))
668+ then an("wrong payment amount")
669+ else {
670+ let bT = aZ(bM)
671+ let bU = aZ(bN)
672+ let eg = if ((bI == bM))
673+ then $Tuple6((bT - ct), bU, (ct - dY), dZ, 0, 0)
674+ else if ((bI == bN))
675+ then $Tuple6(bT, (bU - ct), 0, 0, (ct - dZ), dY)
676+ else an("wrong paymentAssetId")
677+ let eh = eg._1
678+ let ei = eg._2
679+ let ej = eg._3
680+ let ek = eg._4
681+ let el = eg._5
682+ let em = eg._6
683+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
684+ let bl = invoke(ea, "calcD", [toString(toBigInt(((eh + ej) - em))), toString(toBigInt(((ei + el) - ek))), aB, i, j], nil)
685+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
686+ if ((en == en))
687+ then {
688+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bM), dY), AttachedPayment(fromBase58String(bN), dZ), bh, true, true, ct, bI)
689+ let bf = dR._2
690+ let bL = dR._7
691+ let cj = dR._9
692+ let cV = dR._10
693+ let cW = dR._11
694+ let eo = be(toBigInt(bf), toBigInt(bg), toBigInt(bh))
695+ let cU = toInt(eo._2)
696+ let ep = invoke(aA, "emit", [cU], nil)
697+ if ((ep == ep))
698+ then {
699+ let dS = {
700+ let au = ep
701+ if ($isInstanceOf(au, "Address"))
702+ then {
703+ let dT = au
704+ invoke(dT, "emit", [cU], nil)
705+ }
706+ else unit
707+ }
708+ if ((dS == dS))
709+ then {
710+ let dU = if ((cV > 0))
711+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bM), cV)])
712+ else nil
713+ if ((dU == dU))
714+ then {
715+ let dV = if ((cW > 0))
716+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bN), cW)])
717+ else nil
718+ if ((dV == dV))
719+ then {
720+ let dW = if (dL)
721+ then {
722+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
723+ if ((dX == dX))
724+ then nil
725+ else throw("Strict value is not equal to itself.")
726+ }
727+ else [ScriptTransfer(dp.caller, cU, bL)]
728+ let eq = if ((ef > 0))
729+ then [ScriptTransfer(aE, ef, fromBase58String(bI))]
730+ else nil
731+ ((cj ++ dW) ++ eq)
732+ }
733+ else throw("Strict value is not equal to itself.")
734+ }
735+ else throw("Strict value is not equal to itself.")
736+ }
737+ else throw("Strict value is not equal to itself.")
738+ }
739+ else throw("Strict value is not equal to itself.")
740+ }
741+ else throw("Strict value is not equal to itself.")
742+ }
743+ }
927744 }
928745
929746
930747
931-@Callable(df)
932-func fromX18WrapperREADONLY (F,eH) = $Tuple2(nil, E(parseBigIntValue(F), eH))
748+@Callable(dp)
749+func putForFree (er) = if ((0 > er))
750+ then an("wrong slippage")
751+ else if ((size(dp.payments) != 2))
752+ then an("2 payments expected")
753+ else {
754+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], er, false, false, 0, "")
755+ dR._9
756+ }
933757
934758
935759
936-@Callable(df)
937-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
760+@Callable(dp)
761+func get () = {
762+ let cE = do(dp)
763+ let es = cE._1
764+ let ci = cE._2
765+ let ct = cE._3
766+ let bI = cE._4
767+ let cj = cE._5
768+ let et = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
769+ if ((et == et))
770+ then cj
771+ else throw("Strict value is not equal to itself.")
772+ }
938773
939774
940775
941-@Callable(df)
942-func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
776+@Callable(dp)
777+func getOneTkn (eu,ev,ew,ex,bh) = if ((size(dp.payments) != 1))
778+ then an("1 payment expected")
779+ else {
780+ let bx = aF()
781+ let bL = bx[s]
782+ let bM = bx[t]
783+ let bN = bx[u]
784+ let bO = parseIntValue(bx[v])
785+ let bP = parseIntValue(bx[w])
786+ let bQ = bx[r]
787+ let dM = aJ()
788+ let ea = valueOrErrorMessage(addressFromString(dM[B]), "Wrong gwxRewardContract address")
789+ let dr = value(dp.payments[0])
790+ let ec = valueOrElse(getString(this, ac()), "")
791+ let bK = if ((ec == toString(dp.caller)))
792+ then dp.originCaller
793+ else dp.caller
794+ let bH = toBase58String(dp.transactionId)
795+ let bI = value(dr.assetId)
796+ let ct = dr.amount
797+ if ((1000000000 > ct))
798+ then an("Min payment 10 LP")
799+ else if (if (if ((0 > bh))
800+ then true
801+ else (0 > eu))
802+ then true
803+ else (0 > ew))
804+ then an("Wrong params")
805+ else if ((bL != toBase58String(bI)))
806+ then an("Wrong LP")
807+ else {
808+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
809+ let ey = cE._1
810+ let ez = cE._2
811+ let bT = aZ(bM)
812+ let bU = aZ(bN)
813+ let eA = if ((ex == bM))
814+ then $Tuple7((bT - ey), (bU - ez), eu, ez, 0, 0, (ey + eu))
815+ else if ((ex == bN))
816+ then $Tuple7((bT - ey), (bU - ez), 0, 0, eu, ey, (ez + eu))
817+ else an("wrong outAssetId")
818+ let eh = eA._1
819+ let ei = eA._2
820+ let ej = eA._3
821+ let ek = eA._4
822+ let el = eA._5
823+ let em = eA._6
824+ let eB = eA._7
825+ if (if ((0 > ej))
826+ then true
827+ else (0 > el))
828+ then an("Wrong calc")
829+ else {
830+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
831+ let bl = invoke(ea, "calcD", [toString(((eh - ej) + em)), toString(((ei + ek) - el)), aB, i, j], nil)
832+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
833+ if ((en == en))
834+ then {
835+ let eC = be(toBigInt(eB), toBigInt(ew), toBigInt(bh))
836+ if ((eC == eC))
837+ then {
838+ let eD = if ((ex == bM))
839+ then $Tuple2(toInt(eC._2), 0)
840+ else $Tuple2(0, toInt(eC._2))
841+ let eE = eD._1
842+ let eF = eD._2
843+ let eG = (eE + eF)
844+ let eH = dw(eG)
845+ let eI = eH._1
846+ let ef = eH._2
847+ let eJ = if ((ex == "WAVES"))
848+ then unit
849+ else fromBase58String(ex)
850+ let eq = if ((ef > 0))
851+ then [ScriptTransfer(aE, ef, eJ)]
852+ else nil
853+ let eK = if ((bO >= bP))
854+ then bO
855+ else bP
856+ if ((eK == eK))
857+ then {
858+ let eL = bb(D(bU, eK), D(bT, eK))
859+ let eM = G(eL, b)
860+ let cj = [ScriptTransfer(bK, eI, eJ), StringEntry(Y(toString(bK), bH), aV(eE, eF, ct, eM, height, lastBlock.timestamp)), IntegerEntry(R(), eM), IntegerEntry(S(height, lastBlock.timestamp), eM)]
861+ if ((cj == cj))
862+ then {
863+ let eN = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
864+ if ((eN == eN))
865+ then (cj ++ eq)
866+ else throw("Strict value is not equal to itself.")
867+ }
868+ else throw("Strict value is not equal to itself.")
869+ }
870+ else throw("Strict value is not equal to itself.")
871+ }
872+ else throw("Strict value is not equal to itself.")
873+ }
874+ else throw("Strict value is not equal to itself.")
875+ }
876+ }
877+ }
943878
944879
945880
946-@Callable(df)
947-func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eI,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eI, ci, cj, false, 0, ""))
881+@Callable(dp)
882+func getNoLess (eO,eP) = {
883+ let cE = do(dp)
884+ let ch = cE._1
885+ let ci = cE._2
886+ let ct = cE._3
887+ let bI = cE._4
888+ let cj = cE._5
889+ let eQ = if ((ch >= eO))
890+ then true
891+ else an(((("Failed: " + toString(ch)) + " < ") + toString(eO)))
892+ if ((eQ == eQ))
893+ then {
894+ let eR = if ((ci >= eP))
895+ then true
896+ else an(((("Failed: " + toString(ci)) + " < ") + toString(eP)))
897+ if ((eR == eR))
898+ then {
899+ let eS = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
900+ if ((eS == eS))
901+ then cj
902+ else throw("Strict value is not equal to itself.")
903+ }
904+ else throw("Strict value is not equal to itself.")
905+ }
906+ else throw("Strict value is not equal to itself.")
907+ }
948908
949909
950910
951-@Callable(df)
952-func estimateGetOperationWrapperREADONLY (bF,eJ,bH,eI) = {
953- let cx = bE(bF, eJ, bH, addressFromStringValue(eI))
954- $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
911+@Callable(dp)
912+func unstakeAndGet (dx) = {
913+ let dq = if ((size(dp.payments) != 0))
914+ then an("no payments expected")
915+ else true
916+ if ((dq == dq))
917+ then {
918+ let bx = aF()
919+ let eT = aJ()
920+ let bL = fromBase58String(bx[s])
921+ let eU = valueOrErrorMessage(addressFromString(eT[z]), "wrong")
922+ let eV = invoke(eU, "unstake", [toBase58String(bL), dx], nil)
923+ if ((eV == eV))
924+ then {
925+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bL), dx, dp.caller)
926+ let bQ = parseIntValue(cE._9)
927+ let cj = cE._10
928+ let eW = if (if (aC())
929+ then true
930+ else (bQ == p))
931+ then an(("Blocked: " + toString(bQ)))
932+ else true
933+ if ((eW == eW))
934+ then {
935+ let eX = invoke(aA, "burn", [dx], [AttachedPayment(bL, dx)])
936+ if ((eX == eX))
937+ then cj
938+ else throw("Strict value is not equal to itself.")
939+ }
940+ else throw("Strict value is not equal to itself.")
941+ }
942+ else throw("Strict value is not equal to itself.")
943+ }
944+ else throw("Strict value is not equal to itself.")
955945 }
956946
957947
958-@Verifier(eK)
959-func eL () = {
960- let eM = {
961- let as = dk()
962- if ($isInstanceOf(as, "ByteVector"))
963- then {
964- let dp = as
965- dp
966- }
967- else if ($isInstanceOf(as, "Unit"))
968- then eK.senderPublicKey
969- else throw("Match error")
970- }
971- let as = eK
972- if ($isInstanceOf(as, "Order"))
948+
949+@Callable(dp)
950+func activate (eY,eZ) = if ((toString(dp.caller) != toString(aA)))
951+ then an("denied")
952+ else $Tuple2([StringEntry(Z(), eY), StringEntry(aa(), eZ)], "success")
953+
954+
955+
956+@Callable(dp)
957+func setS (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
958+ then dC
959+ else [StringEntry(fa, eW)]
960+
961+
962+
963+@Callable(dp)
964+func setI (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
965+ then dC
966+ else [IntegerEntry(fa, eW)]
967+
968+
969+
970+@Callable(dp)
971+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
972+
973+
974+
975+@Callable(dp)
976+func getAccBalanceWrapperREADONLY (ba) = $Tuple2(nil, aZ(ba))
977+
978+
979+
980+@Callable(dp)
981+func calcPricesWrapperREADONLY (br,bs,bw) = {
982+ let fb = bv(br, bs, bw)
983+ $Tuple2(nil, [toString(fb[0]), toString(fb[1]), toString(fb[2])])
984+ }
985+
986+
987+
988+@Callable(dp)
989+func fromX18WrapperREADONLY (H,fc) = $Tuple2(nil, G(parseBigIntValue(H), fc))
990+
991+
992+
993+@Callable(dp)
994+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
995+
996+
997+
998+@Callable(dp)
999+func calcPriceBigIntWrapperREADONLY (bc,bd) = $Tuple2(nil, toString(bb(parseBigIntValue(bc), parseBigIntValue(bd))))
1000+
1001+
1002+
1003+@Callable(dp)
1004+func estimatePutOperationWrapperREADONLY (bH,bh,cm,fd,co,fe,ff,cq,cr) = $Tuple2(nil, ck(bH, bh, cm, fd, co, fe, ff, cq, cr, false, 0, ""))
1005+
1006+
1007+
1008+@Callable(dp)
1009+func estimateGetOperationWrapperREADONLY (bH,fg,bJ,ff) = {
1010+ let cE = bG(bH, fg, bJ, addressFromStringValue(ff))
1011+ $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
1012+ }
1013+
1014+
1015+@Verifier(fh)
1016+func fi () = {
1017+ let au = fh
1018+ if ($isInstanceOf(au, "Order"))
9731019 then {
974- let cS = as
975- let eN = aB()
976- let eO = cR(cS)
977- let eP = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
978- let eQ = sigVerify(cS.bodyBytes, cS.proofs[1], eN)
979- if (if (if (eO)
980- then eP
1020+ let dc = au
1021+ let fj = aD()
1022+ let aq = db(dc)
1023+ let fk = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1024+ let fl = sigVerify(dc.bodyBytes, dc.proofs[1], fj)
1025+ if (if (if (aq)
1026+ then fk
9811027 else false)
982- then eQ
1028+ then fl
9831029 else false)
9841030 then true
985- else an(eO, eP, eQ)
1031+ else ap(aq, fk, fl)
9861032 }
987- else if ($isInstanceOf(as, "SetScriptTransaction"))
988- then {
989- let dl = as
990- let eR = blake2b256(value(dl.script))
991- let eS = fromBase64String(value(getString(ay, am())))
992- let eT = scriptHash(this)
993- if (if ((eS == eR))
994- then (eT != eR)
995- else false)
996- then true
997- else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
1033+ else {
1034+ let fm = {
1035+ let fn = dz()
1036+ if ($isInstanceOf(fn, "ByteVector"))
1037+ then {
1038+ let dE = fn
1039+ dE
1040+ }
1041+ else if ($isInstanceOf(fn, "Unit"))
1042+ then fh.senderPublicKey
1043+ else throw("Match error")
9981044 }
999- else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
1045+ sigVerify(fh.bodyBytes, fh.proofs[0], fm)
1046+ }
10001047 }
10011048
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = 1000000
55
6-let b = toBigInt(100000000)
6+let b = 100000000
77
8-let c = toBigInt(1000000000000000000)
8+let c = toBigInt(100000000)
99
10-let d = toBigInt(0)
10+let d = toBigInt(1000000000000000000)
1111
12-let e = toBigInt(1)
12+let e = 1000
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(0)
1515
16-let g = "100"
16+let g = toBigInt(1)
1717
18-let h = "1"
18+let h = toBigInt((b - ((b * 1) / b)))
1919
20-let i = "__"
20+let i = "100"
2121
22-let j = ""
22+let j = "1"
2323
24-let k = 1
24+let k = "__"
2525
26-let l = 2
26+let l = ""
2727
28-let m = 3
28+let m = 1
2929
30-let n = 4
30+let n = 2
3131
32-let o = 1
32+let o = 3
3333
34-let p = 2
34+let p = 4
3535
36-let q = 3
36+let q = 1
3737
38-let r = 4
38+let r = 2
3939
40-let s = 5
40+let s = 3
4141
42-let t = 6
42+let t = 4
4343
44-let u = 7
44+let u = 5
4545
46-let v = 8
46+let v = 6
4747
48-let w = 9
48+let w = 7
4949
50-let x = 1
50+let x = 8
5151
52-let y = 7
52+let y = 9
5353
54-let z = 10
54+let z = 1
5555
56-let A = "%s__delay"
56+let A = 7
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 10
59+
60+let C = 0
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
5963
6064
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6266
6367
64-func H (I,J,K) = fraction(I, J, K)
68+func J (K,L,M) = fraction(K, L, M)
6569
6670
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
71+func N (H) = if ((f > H))
72+ then -(H)
73+ else H
7074
7175
72-func M () = "%s__factoryContract"
76+func O () = "%s__factoryContract"
7377
7478
75-func N () = "%s__managerPublicKey"
79+func P () = "%s__managerPublicKey"
7680
7781
78-func O () = "%s__pendingManagerPublicKey"
82+func Q () = "%s__pendingManagerPublicKey"
7983
8084
81-func P () = "%s%s__price__last"
85+func R () = "%s%s__price__last"
8286
8387
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
88+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], k)
8589
8690
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
91+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
8892
8993
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
94+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9195
9296
93-func X () = "%s__amountAsset"
97+func Z () = "%s__amountAsset"
9498
9599
96-func Y () = "%s__priceAsset"
100+func aa () = "%s__priceAsset"
97101
98102
99-func Z () = "%s__amp"
103+func ab () = "%s__amp"
100104
101105
102-func aa () = "%s__addonAddr"
106+func ac () = "%s__addonAddr"
103107
104108
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
109+let ad = "%s__feePermille"
110+
111+let ae = valueOrElse(getInteger(this, ad), C)
112+
113+func af () = "%s__factoryConfig"
106114
107115
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
116+func ag () = "%s%s__matcher__publicKey"
109117
110118
111-func ae () = "%s__factoryConfig"
119+func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
112120
113121
114-func af () = "%s%s__matcher__publicKey"
122+func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
115123
116124
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
125+func am () = "%s__shutdown"
118126
119127
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
128+func an (ao) = throw(makeString(["lp_stable.ride:", ao], " "))
121129
122130
123-func al () = "%s__shutdown"
131+func ap (aq,ar,as) = an(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
124132
125133
126-func am () = "%s__allowedLpStableScriptHash"
127-
128-
129-func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130-
131-
132-func ar (F) = {
133- let as = F
134- if ($isInstanceOf(as, "String"))
134+func at (H) = {
135+ let au = H
136+ if ($isInstanceOf(au, "String"))
135137 then {
136- let at = as
137- at
138+ let av = au
139+ av
138140 }
139- else throw("fail cast to String")
141+ else an("fail cast to String")
140142 }
141143
142144
143-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
145+func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
144146
145147
146-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
148+func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
147149
148150
149-let ay = addressFromStringValue(au(this, M()))
151+let aA = addressFromStringValue(aw(this, O()))
150152
151-let az = au(this, Z())
153+let aB = aw(this, ab())
152154
153-func aA () = valueOrElse(getBoolean(ay, al()), false)
155+func aC () = valueOrElse(getBoolean(aA, am()), false)
154156
155157
156-func aB () = fromBase58String(au(ay, af()))
158+func aD () = fromBase58String(aw(aA, ag()))
157159
158160
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)
161+let aE = addressFromPublicKey(aD())
162+
163+func aF () = {
164+ let aG = aw(this, Z())
165+ let aH = aw(this, aa())
166+ let aI = az(aA, ak(aH))
167+ let ai = az(aA, ak(aG))
168+ split(aw(aA, ah(toString(ai), toString(aI))), k)
165169 }
166170
167171
168-func aG () = split(au(ay, ae()), i)
172+func aJ () = split(aw(aA, af()), k)
169173
170174
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)
175+func aK (aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU)], k)
172176
173177
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)
178+func aV (aW,aX,aY,aO,aR,aS) = makeString(["%d%d%d%d%d%d", toString(aW), toString(aX), toString(aY), toString(aO), toString(aR), toString(aS)], k)
175179
176180
177-func aW (aX) = if ((aX == "WAVES"))
181+func aZ (ba) = if ((ba == "WAVES"))
178182 then wavesBalance(this).available
179- else assetBalance(this, fromBase58String(aX))
183+ else assetBalance(this, fromBase58String(ba))
180184
181185
182-func aY (aZ,ba) = fraction(aZ, c, ba)
186+func bb (bc,bd) = fraction(bc, d, bd)
183187
184188
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]))
189+func be (bf,bg,bh) = {
190+ let bi = fraction((bf - bg), c, bg)
191+ let bj = ((bh - N(bi)) > f)
192+ if (!(bj))
193+ then an(("Big slippage: " + toString(bi)))
194+ else $Tuple2(bj, min([bf, bg]))
191195 }
192196
193197
194-func bh (bi,bj,bk) = {
195- let bf = fraction(bj, b, bi)
196- let bl = (bk > bf)
197- if (if (bl)
198+func bk (bl,bm,bh) = {
199+ let bi = fraction(bm, c, bl)
200+ let bn = (bh > bi)
201+ if (if (bn)
198202 then true
199- else (bj > bi))
200- then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201- else bl
203+ else (bm > bl))
204+ then an(((((((toString(bm) + " ") + toString(bl)) + " ") + toString(bi)) + " ") + toString(bh)))
205+ else bn
202206 }
203207
204208
205-func bm (bn,bo,bp,bq) = {
206- let br = B(bp, bn)
207- let bs = B(bq, bo)
208- aY(bs, br)
209+func bo (bp,bq,br,bs) = {
210+ let bt = D(br, bp)
211+ let bu = D(bs, bq)
212+ bb(bu, bt)
209213 }
210214
211215
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]
216+func bv (br,bs,bw) = {
217+ let bx = aF()
218+ let by = parseIntValue(bx[v])
219+ let bz = parseIntValue(bx[w])
220+ let bA = bo(by, bz, br, bs)
221+ let bd = D(br, by)
222+ let bc = D(bs, bz)
223+ let bB = D(bw, b)
224+ let bC = bb(bd, bB)
225+ let bD = bb(bc, bB)
226+[bA, bC, bD]
223227 }
224228
225229
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)]
230+func bE (br,bs,bw) = {
231+ let bF = bv(br, bs, bw)
232+[G(bF[0], b), G(bF[1], b), G(bF[2], b)]
229233 }
230234
231235
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))
242- then throw("Wrong pmt asset")
243- else {
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 == ""))
236+func bG (bH,bI,bJ,bK) = {
237+ let bx = aF()
238+ let bL = bx[s]
239+ let bM = bx[t]
240+ let bN = bx[u]
241+ let bO = parseIntValue(bx[v])
242+ let bP = parseIntValue(bx[w])
243+ let bQ = bx[r]
244+ let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
245+ let bS = if ((bL == bI))
246+ then true
247+ else an("Wrong payment asset")
248+ if ((bS == bS))
249+ then {
250+ let bT = aZ(bM)
251+ let bU = aZ(bN)
252+ let bV = fraction(bT, a, bO)
253+ let bW = fraction(bU, a, bP)
254+ let bX = D(bV, a)
255+ let bY = D(bW, a)
256+ let bZ = bb(bY, bX)
257+ let ca = G(bZ, b)
258+ let cb = D(bJ, b)
259+ let cc = D(bR, b)
260+ let cd = fraction(bX, cb, cc)
261+ let ce = fraction(bY, cb, cc)
262+ let cf = G(cd, a)
263+ let cg = G(ce, a)
264+ let ch = fraction(cf, bO, a)
265+ let ci = fraction(cg, bP, a)
266+ let cj = if ((bH == ""))
257267 then nil
258- else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
268+ else [ScriptTransfer(bK, ch, if ((bM == "WAVES"))
259269 then unit
260- else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
270+ else fromBase58String(bM)), ScriptTransfer(bK, ci, if ((bN == "WAVES"))
261271 then unit
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)
272+ else fromBase58String(bN)), StringEntry(Y(toString(bK), bH), aV(ch, ci, bJ, ca, height, lastBlock.timestamp)), IntegerEntry(R(), ca), IntegerEntry(S(height, lastBlock.timestamp), ca)]
273+ $Tuple10(ch, ci, bM, bN, bT, bU, bR, bZ, bQ, cj)
264274 }
275+ else throw("Strict value is not equal to itself.")
265276 }
266277
267278
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)
279+func ck (bH,cl,cm,cn,co,cp,bK,cq,cr,cs,ct,cu) = {
280+ let bx = aF()
281+ let bL = fromBase58String(bx[s])
282+ let cv = bx[t]
283+ let cw = bx[u]
284+ let cx = bx[x]
285+ let cy = bx[y]
286+ let bO = parseIntValue(bx[v])
287+ let bP = parseIntValue(bx[w])
288+ let bQ = bx[r]
289+ let bR = valueOrErrorMessage(assetInfo(bL), "Wrong lp asset").quantity
290+ let bT = if (cq)
291+ then aZ(cv)
292+ else if (if (cs)
293+ then (cu == cv)
283294 else false)
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)
295+ then (aZ(cv) - ct)
296+ else if (cs)
297+ then aZ(cv)
298+ else (aZ(cv) - cm)
299+ let bU = if (cq)
300+ then aZ(cw)
301+ else if (if (cs)
302+ then (cu == cw)
292303 else false)
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))
304+ then (aZ(cw) - ct)
305+ else if (cs)
306+ then aZ(cw)
307+ else (aZ(cw) - co)
308+ let bV = fraction(bT, a, bO)
309+ let bW = fraction(bU, a, bP)
310+ let cz = fraction(cm, a, bO)
311+ let cA = fraction(co, a, bP)
312+ let cB = D(cz, a)
313+ let cC = D(cA, a)
314+ let cD = bb(cC, cB)
315+ let bX = D(bV, a)
316+ let bY = D(bW, a)
317+ let cE = if ((bR == 0))
303318 then {
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)
319+ let bZ = f
320+ let cF = f
321+ let cG = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
322+ $Tuple5(G(cG, b), G(cB, a), G(cC, a), bb((bY + cC), (bX + cB)), cF)
308323 }
309324 else {
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)
325+ let bZ = bb(bY, bX)
326+ let cH = fraction(N((bZ - cD)), d, bZ)
327+ let cF = D(cl, b)
328+ let cI = if (((if ((bZ != f))
329+ then (cH > cF)
330+ else false) == false))
331+ then true
332+ else an(((("Price slippage " + toString(cH)) + " > ") + toString(cF)))
333+ if ((cI == cI))
334+ then {
335+ let cc = D(bR, b)
336+ let cJ = fraction(cB, bZ, d)
337+ let cK = fraction(cC, d, bZ)
338+ let cL = if ((cJ > cC))
339+ then $Tuple2(cK, cB)
340+ else $Tuple2(cB, cJ)
341+ let cM = cL._1
342+ let cN = cL._2
343+ let cG = fraction(cc, cN, bY)
344+ $Tuple5(G(cG, b), G(cM, a), G(cN, a), bZ, cF)
345+ }
346+ else throw("Strict value is not equal to itself.")
347+ }
348+ let cO = cE._1
349+ let cP = fraction(cE._2, bO, a)
350+ let cQ = fraction(cE._3, bP, a)
351+ let cR = G(cE._4, b)
352+ let cS = G(cE._5, b)
353+ let cT = if ((cO > 0))
354+ then true
355+ else an("LP <= 0")
356+ if ((cT == cT))
357+ then {
358+ let cU = if (!(cr))
359+ then 0
360+ else cO
361+ let cV = (cm - cP)
362+ let cW = (co - cQ)
363+ let cX = if (if (cs)
364+ then (cu == cv)
315365 else false)
316- then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
317- else {
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)
328- }
366+ then $Tuple2(ct, 0)
367+ else if (if (cs)
368+ then (cu == cw)
369+ else false)
370+ then $Tuple2(0, ct)
371+ else $Tuple2(cP, cQ)
372+ let cY = cX._1
373+ let cZ = cX._2
374+ let da = [IntegerEntry(R(), cR), IntegerEntry(S(height, lastBlock.timestamp), cR), StringEntry(V(bK, bH), aK(cY, cZ, cU, cR, cl, cS, height, lastBlock.timestamp, cV, cW))]
375+ $Tuple13(cO, cU, cR, bT, bU, bR, bL, bQ, da, cV, cW, cn, cp)
329376 }
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))
336- then throw("LP <= 0")
337- else {
338- let cK = if (!(cj))
339- then 0
340- else cG
341- let cL = (ce - cH)
342- let cM = (cg - cI)
343- let cN = if (if (ck)
344- then (cm == cn)
345- else false)
346- then $Tuple2(cl, 0)
347- else if (if (ck)
348- then (cm == co)
349- else false)
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)
356- }
377+ else throw("Strict value is not equal to itself.")
357378 }
358379
359380
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())
381+func db (dc) = {
382+ let bx = aF()
383+ let dd = bx[t]
384+ let de = bx[u]
385+ let bQ = parseIntValue(bx[r])
386+ let by = parseIntValue(bx[v])
387+ let bz = parseIntValue(bx[w])
388+ let df = aZ(dd)
389+ let dg = aZ(de)
390+ let bZ = if ((dc.orderType == Buy))
391+ then bo(by, bz, (df + dc.amount), dg)
392+ else bo(by, bz, (df - dc.amount), dg)
393+ let ca = G(bZ, b)
394+ if (if (if (aC())
374395 then true
375- else (bO == m))
396+ else (bQ == o))
376397 then true
377- else (bO == n))
378- then throw("Admin blocked")
398+ else (bQ == p))
399+ then an("Admin blocked")
379400 else {
380- let cX = cS.assetPair.amountAsset
381- let cY = if ((cX == unit))
401+ let dh = dc.assetPair.amountAsset
402+ let di = if ((dh == unit))
382403 then "WAVES"
383- else toBase58String(value(cX))
384- let cZ = cS.assetPair.priceAsset
385- let da = if ((cZ == unit))
404+ else toBase58String(value(dh))
405+ let dj = dc.assetPair.priceAsset
406+ let dk = if ((dj == unit))
386407 then "WAVES"
387- else toBase58String(value(cZ))
388- if (if ((cY != cT))
408+ else toBase58String(value(dj))
409+ if (if ((di != dd))
389410 then true
390- else (da != cU))
391- then throw("Wr assets")
411+ else (dk != de))
412+ then an("Wr assets")
392413 else {
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)
414+ let dl = dc.price
415+ let bP = fraction(b, bz, by)
416+ let dm = J(dl, b, bP)
417+ let dn = if ((dc.orderType == Buy))
418+ then (ca >= dm)
419+ else (dm >= ca)
399420 true
400421 }
401422 }
402423 }
403424
404425
405-func de (df) = if ((size(df.payments) != 1))
406- then throw("1 pmnt exp")
407- else {
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())
417- then true
418- else (bO == n))
419- then throw(("Admin blocked: " + toString(bO)))
420- else $Tuple5(ca, cb, cl, bG, cc)
421- }
422-
423-
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())
426+func do (dp) = {
427+ let dq = if ((size(dp.payments) == 1))
428428 then true
429- else (bO == l))
430- then true
431- else (bO == n))
432- then throw(("Blocked:" + toString(bO)))
433- else cx
429+ else an("1 payment expected")
430+ if ((dq == dq))
431+ then {
432+ let dr = value(dp.payments[0])
433+ let bI = value(dr.assetId)
434+ let ct = dr.amount
435+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
436+ let ch = cE._1
437+ let ci = cE._2
438+ let bQ = parseIntValue(cE._9)
439+ let cj = cE._10
440+ if (if (aC())
441+ then true
442+ else (bQ == p))
443+ then an(("Admin blocked: " + toString(bQ)))
444+ else $Tuple5(ch, ci, ct, bI, cj)
445+ }
446+ else throw("Strict value is not equal to itself.")
434447 }
435448
436449
437-func dk () = {
438- let as = getString(N())
439- if ($isInstanceOf(as, "String"))
450+func ds (dt,X,du,dv,bh,cr,cs,ct,cu) = {
451+ let cE = ck(X, bh, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, false, cr, cs, ct, cu)
452+ let bQ = parseIntValue(cE._8)
453+ if (if (if (aC())
454+ then true
455+ else (bQ == n))
456+ then true
457+ else (bQ == p))
458+ then an(("Blocked:" + toString(bQ)))
459+ else cE
460+ }
461+
462+
463+func dw (dx) = {
464+ let dy = fraction(dx, ae, e)
465+ $Tuple2((dx - dy), dy)
466+ }
467+
468+
469+func dz () = {
470+ let au = getString(P())
471+ if ($isInstanceOf(au, "String"))
440472 then {
441- let dl = as
442- fromBase58String(dl)
473+ let dA = au
474+ fromBase58String(dA)
443475 }
444- else if ($isInstanceOf(as, "Unit"))
476+ else if ($isInstanceOf(au, "Unit"))
445477 then unit
446478 else throw("Match error")
447479 }
448480
449481
450-func dm () = {
451- let as = getString(O())
452- if ($isInstanceOf(as, "String"))
482+func dB () = {
483+ let au = getString(Q())
484+ if ($isInstanceOf(au, "String"))
453485 then {
454- let dl = as
455- fromBase58String(dl)
486+ let dA = au
487+ fromBase58String(dA)
456488 }
457- else if ($isInstanceOf(as, "Unit"))
489+ else if ($isInstanceOf(au, "Unit"))
458490 then unit
459491 else throw("Match error")
460492 }
461493
462494
463-let dn = throw("Permission denied")
495+let dC = an("Permission denied")
464496
465-func do (df) = {
466- let as = dk()
467- if ($isInstanceOf(as, "ByteVector"))
497+func dD (dp) = {
498+ let au = dz()
499+ if ($isInstanceOf(au, "ByteVector"))
468500 then {
469- let dp = as
470- if ((df.callerPublicKey == dp))
501+ let dE = au
502+ if ((dp.callerPublicKey == dE))
471503 then true
472- else dn
504+ else dC
473505 }
474- else if ($isInstanceOf(as, "Unit"))
475- then if ((df.caller == this))
506+ else if ($isInstanceOf(au, "Unit"))
507+ then if ((dp.caller == this))
476508 then true
477- else dn
509+ else dC
478510 else throw("Match error")
479511 }
480512
481513
482-@Callable(df)
483-func constructor (M) = {
484- let dq = do(df)
485- if ((dq == dq))
486- then [StringEntry(M(), M)]
514+@Callable(dp)
515+func constructor (aA) = {
516+ let dF = dD(dp)
517+ if ((dF == dF))
518+ then [StringEntry(O(), aA)]
487519 else throw("Strict value is not equal to itself.")
488520 }
489521
490522
491523
492-@Callable(df)
493-func setManager (dr) = {
494- let dq = do(df)
495- if ((dq == dq))
524+@Callable(dp)
525+func setManager (dG) = {
526+ let dF = dD(dp)
527+ if ((dF == dF))
496528 then {
497- let ds = fromBase58String(dr)
498- if ((ds == ds))
499- then [StringEntry(O(), dr)]
529+ let dH = fromBase58String(dG)
530+ if ((dH == dH))
531+ then [StringEntry(Q(), dG)]
500532 else throw("Strict value is not equal to itself.")
501533 }
502534 else throw("Strict value is not equal to itself.")
503535 }
504536
505537
506538
507-@Callable(df)
539+@Callable(dp)
508540 func confirmManager () = {
509- let bD = dm()
510- let dt = if (isDefined(bD))
541+ let dI = dB()
542+ let dJ = if (isDefined(dI))
511543 then true
512- else throw("No pending manager")
513- if ((dt == dt))
544+ else an("No pending manager")
545+ if ((dJ == dJ))
514546 then {
515- let du = if ((df.callerPublicKey == value(bD)))
547+ let dK = if ((dp.callerPublicKey == value(dI)))
516548 then true
517- else throw("You are not pending manager")
518- if ((du == du))
519- then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
549+ else an("You are not pending manager")
550+ if ((dK == dK))
551+ then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
520552 else throw("Strict value is not equal to itself.")
521553 }
522554 else throw("Strict value is not equal to itself.")
523555 }
524556
525557
526558
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))
533- then throw("Wrong slippage")
534- else if ((size(df.payments) != 2))
535- then throw("2 pmnts expd")
536- else {
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))
547- then {
548- let dC = {
549- let as = cx
550- if ($isInstanceOf(as, "Address"))
559+@Callable(dp)
560+func put (bh,dL) = {
561+ let dM = aJ()
562+ let dN = valueOrErrorMessage(addressFromString(dM[z]), "Wrong staking contract")
563+ let dO = valueOrErrorMessage(addressFromString(dM[A]), "Wrogn slippage contract")
564+ let dP = if ((bh >= 0))
565+ then true
566+ else an("wrong slippage")
567+ if ((dP == dP))
568+ then {
569+ let dQ = if ((size(dp.payments) == 2))
570+ then true
571+ else an("2 payments expected")
572+ if ((dQ == dQ))
573+ then {
574+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], bh, true, false, 0, "")
575+ let cU = dR._2
576+ let bL = dR._7
577+ let cj = dR._9
578+ let cV = dR._10
579+ let cW = dR._11
580+ let bM = dR._12
581+ let bN = dR._13
582+ let cE = invoke(aA, "emit", [cU], nil)
583+ if ((cE == cE))
584+ then {
585+ let dS = {
586+ let au = cE
587+ if ($isInstanceOf(au, "Address"))
588+ then {
589+ let dT = au
590+ invoke(dT, "emit", [cU], nil)
591+ }
592+ else unit
593+ }
594+ if ((dS == dS))
551595 then {
552- let dD = as
553- invoke(dD, "emit", [cK], nil)
554- }
555- else unit
556- }
557- if ((dC == dC))
558- then {
559- let dE = if ((cL > 0))
560- then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
561- else nil
562- if ((dE == dE))
563- then {
564- let dF = if ((cM > 0))
565- then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
566- else nil
567- if ((dF == dF))
568- then {
569- let dG = if (dw)
570- then {
571- let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572- if ((dH == dH))
573- then nil
574- else throw("Strict value is not equal to itself.")
575- }
576- else [ScriptTransfer(df.caller, cK, dB)]
577- (cc ++ dG)
578- }
579- else throw("Strict value is not equal to itself.")
580- }
581- else throw("Strict value is not equal to itself.")
582- }
583- else throw("Strict value is not equal to itself.")
584- }
585- else throw("Strict value is not equal to itself.")
586- }
587- }
588-
589-
590-
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))
596+ let dU = if ((cV > 0))
597+ then invoke(dO, "put", nil, [AttachedPayment(bM, cV)])
598+ else nil
599+ if ((dU == dU))
662600 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))
601+ let dV = if ((cW > 0))
602+ then invoke(dO, "put", nil, [AttachedPayment(bN, cW)])
603+ else nil
604+ if ((dV == dV))
673605 then {
674- let dE = if ((cL > 0))
675- then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
676- else nil
677- if ((dE == dE))
606+ let dW = if (dL)
678607 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- }
608+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
609+ if ((dX == dX))
610+ then nil
694611 else throw("Strict value is not equal to itself.")
695612 }
696- else throw("Strict value is not equal to itself.")
613+ else [ScriptTransfer(dp.caller, cU, bL)]
614+ (cj ++ dW)
697615 }
698616 else throw("Strict value is not equal to itself.")
699617 }
700618 else throw("Strict value is not equal to itself.")
701619 }
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 putForFree (eb) = if ((0 > eb))
712- then throw("Wrong slpg")
713- else if ((size(df.payments) != 2))
714- then throw("2 pmnts expd")
715- else {
716- let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eb, false, false, 0, "")
717- dY._9
718- }
719-
720-
721-
722-@Callable(df)
723-func get () = {
724- let cx = de(df)
725- let ec = cx._1
726- let cb = cx._2
727- let cl = cx._3
728- let bG = cx._4
729- let cc = cx._5
730- let ed = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
731- if ((ed == ed))
732- then cc
733- else throw("Strict value is not equal to itself.")
734- }
735-
736-
737-
738-@Callable(df)
739-func getOneTkn (ee,ef,eg,eh,be) = if ((size(df.payments) != 1))
740- then throw("1 pmnt expd")
741- else {
742- let bv = aC()
743- let bJ = bv[q]
744- let bK = bv[r]
745- let bL = bv[s]
746- let bM = parseIntValue(bv[t])
747- let bN = parseIntValue(bv[u])
748- let bO = bv[p]
749- let dx = aG()
750- let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
751- let dg = value(df.payments[0])
752- let dN = valueOrElse(getString(this, aa()), "")
753- let bI = if ((dN == toString(df.caller)))
754- then df.originCaller
755- else df.caller
756- let bF = toBase58String(df.transactionId)
757- let bG = value(dg.assetId)
758- let cl = dg.amount
759- let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
760- let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
761- if ((dP == dP))
762- then if ((1000000000 > cl))
763- then throw("Min pmt 10 LP")
764- else if (if (if ((0 > be))
765- then true
766- else (0 > ee))
767- then true
768- else (0 > eg))
769- then throw("Wrong params")
770- else if ((bJ != toBase58String(bG)))
771- then throw("Wrong LP")
772- else {
773- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774- let ei = cx._1
775- let ej = cx._2
776- let bQ = aW(bK)
777- let bS = aW(bL)
778- let ek = if ((eh == bK))
779- then $Tuple7((bQ - ei), (bS - ej), ee, ej, 0, 0, (ei + ee))
780- else if ((eh == bL))
781- then $Tuple7((bQ - ei), (bS - ej), 0, 0, ee, ei, (ej + ee))
782- else throw("wrong outAssetId")
783- let dR = ek._1
784- let dS = ek._2
785- let dT = ek._3
786- let dU = ek._4
787- let dV = ek._5
788- let dW = ek._6
789- let el = ek._7
790- if (if ((0 > dT))
791- then true
792- else (0 > dV))
793- then throw("Wrong calc")
794- else {
795- let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
796- let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
797- let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
798- if ((dX == dX))
799- then {
800- let em = bb(toBigInt(el), toBigInt(eg), toBigInt(be))
801- if ((em == em))
802- then {
803- let en = if ((eh == bK))
804- then $Tuple2(toInt(em._2), 0)
805- else $Tuple2(0, toInt(em._2))
806- let eo = en._1
807- let ep = en._2
808- let eq = aY(B(bS, bN), B(bQ, bM))
809- let er = E(eq, a)
810- let cc = [ScriptTransfer(bI, (eo + ep), if ((eh == "WAVES"))
811- then unit
812- else fromBase58String(eh)), StringEntry(W(toString(bI), bF), aS(eo, ep, cl, er, height, lastBlock.timestamp)), IntegerEntry(P(), er), IntegerEntry(Q(height, lastBlock.timestamp), er)]
813- if ((cc == cc))
814- then {
815- let es = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
816- if ((es == es))
817- then cc
818- else throw("Strict value is not equal to itself.")
819- }
820- else throw("Strict value is not equal to itself.")
821- }
822- else throw("Strict value is not equal to itself.")
823- }
824- else throw("Strict value is not equal to itself.")
825- }
826- }
827- else throw("Strict value is not equal to itself.")
828- }
829-
830-
831-
832-@Callable(df)
833-func getNoLess (et,eu) = {
834- let cx = de(df)
835- let ca = cx._1
836- let cb = cx._2
837- let cl = cx._3
838- let bG = cx._4
839- let cc = cx._5
840- if ((et > ca))
841- then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
842- else if ((eu > cb))
843- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eu)))
844- else {
845- let ev = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
846- if ((ev == ev))
847- then cc
848- else throw("Strict value is not equal to itself.")
849- }
850- }
851-
852-
853-
854-@Callable(df)
855-func unstakeAndGet (ew) = {
856- let ex = if ((size(df.payments) != 0))
857- then throw("No pmnts expd")
858- else true
859- if ((ex == ex))
860- then {
861- let bv = aC()
862- let ey = aG()
863- let dB = fromBase58String(bv[q])
864- let ez = valueOrErrorMessage(addressFromString(ey[x]), "Wr st addr")
865- let eA = invoke(ez, "unstake", [toBase58String(dB), ew], nil)
866- if ((eA == eA))
867- then {
868- let cx = bE(toBase58String(df.transactionId), toBase58String(dB), ew, df.caller)
869- let bO = parseIntValue(cx._9)
870- let cc = cx._10
871- let eB = if (if (aA())
872- then true
873- else (bO == n))
874- then throw(("Blocked: " + toString(bO)))
875- else true
876- if ((eB == eB))
877- then {
878- let eC = invoke(ay, "burn", [ew], [AttachedPayment(dB, ew)])
879- if ((eC == eC))
880- then cc
881620 else throw("Strict value is not equal to itself.")
882621 }
883622 else throw("Strict value is not equal to itself.")
884623 }
885624 else throw("Strict value is not equal to itself.")
886625 }
887626 else throw("Strict value is not equal to itself.")
888627 }
889628
890629
891630
892-@Callable(df)
893-func activate (eD,eE) = if ((toString(df.caller) != toString(ay)))
894- then throw("denied")
895- else $Tuple2([StringEntry(X(), eD), StringEntry(Y(), eE)], "success")
896-
897-
898-
899-@Callable(df)
900-func setS (eF,eB) = if ((toString(df.caller) != au(this, aa())))
901- then dn
902- else [StringEntry(eF, eB)]
903-
904-
905-
906-@Callable(df)
907-func setI (eF,eB) = if ((toString(df.caller) != au(this, aa())))
908- then dn
909- else [IntegerEntry(eF, eB)]
910-
911-
912-
913-@Callable(df)
914-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
915-
916-
917-
918-@Callable(df)
919-func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
920-
921-
922-
923-@Callable(df)
924-func calcPricesWrapperREADONLY (bp,bq,bu) = {
925- let eG = bt(bp, bq, bu)
926- $Tuple2(nil, [toString(eG[0]), toString(eG[1]), toString(eG[2])])
631+@Callable(dp)
632+func putOneTkn (dY,dZ,bg,bh,dL) = {
633+ let bx = aJ()
634+ let dN = valueOrErrorMessage(addressFromString(bx[z]), "Wrong staking contract")
635+ let dO = valueOrErrorMessage(addressFromString(bx[A]), "Wrong slippage contract")
636+ let ea = valueOrErrorMessage(addressFromString(bx[B]), "Wrong gwx reward contract")
637+ let eb = aF()
638+ let bM = eb[t]
639+ let bN = eb[u]
640+ let bO = parseIntValue(eb[v])
641+ let bP = parseIntValue(eb[w])
642+ let ec = valueOrElse(getString(this, ac()), "")
643+ let bK = if ((ec == toString(dp.caller)))
644+ then dp.originCaller
645+ else dp.caller
646+ if (if (if (if ((0 >= bh))
647+ then true
648+ else (0 >= dY))
649+ then true
650+ else (0 >= dZ))
651+ then true
652+ else (0 >= bg))
653+ then an("Wrong params")
654+ else if ((size(dp.payments) != 1))
655+ then an("1 payment expected")
656+ else {
657+ let dr = value(dp.payments[0])
658+ let bI = toBase58String(value(dr.assetId))
659+ let ed = dr.amount
660+ let ee = dw(ed)
661+ let ct = ee._1
662+ let ef = ee._2
663+ if (if (if ((dY > ct))
664+ then true
665+ else (dZ > ct))
666+ then true
667+ else (10000000 > ct))
668+ then an("wrong payment amount")
669+ else {
670+ let bT = aZ(bM)
671+ let bU = aZ(bN)
672+ let eg = if ((bI == bM))
673+ then $Tuple6((bT - ct), bU, (ct - dY), dZ, 0, 0)
674+ else if ((bI == bN))
675+ then $Tuple6(bT, (bU - ct), 0, 0, (ct - dZ), dY)
676+ else an("wrong paymentAssetId")
677+ let eh = eg._1
678+ let ei = eg._2
679+ let ej = eg._3
680+ let ek = eg._4
681+ let el = eg._5
682+ let em = eg._6
683+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
684+ let bl = invoke(ea, "calcD", [toString(toBigInt(((eh + ej) - em))), toString(toBigInt(((ei + el) - ek))), aB, i, j], nil)
685+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
686+ if ((en == en))
687+ then {
688+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bM), dY), AttachedPayment(fromBase58String(bN), dZ), bh, true, true, ct, bI)
689+ let bf = dR._2
690+ let bL = dR._7
691+ let cj = dR._9
692+ let cV = dR._10
693+ let cW = dR._11
694+ let eo = be(toBigInt(bf), toBigInt(bg), toBigInt(bh))
695+ let cU = toInt(eo._2)
696+ let ep = invoke(aA, "emit", [cU], nil)
697+ if ((ep == ep))
698+ then {
699+ let dS = {
700+ let au = ep
701+ if ($isInstanceOf(au, "Address"))
702+ then {
703+ let dT = au
704+ invoke(dT, "emit", [cU], nil)
705+ }
706+ else unit
707+ }
708+ if ((dS == dS))
709+ then {
710+ let dU = if ((cV > 0))
711+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bM), cV)])
712+ else nil
713+ if ((dU == dU))
714+ then {
715+ let dV = if ((cW > 0))
716+ then invoke(dO, "put", nil, [AttachedPayment(fromBase58String(bN), cW)])
717+ else nil
718+ if ((dV == dV))
719+ then {
720+ let dW = if (dL)
721+ then {
722+ let dX = invoke(dN, "stake", nil, [AttachedPayment(bL, cU)])
723+ if ((dX == dX))
724+ then nil
725+ else throw("Strict value is not equal to itself.")
726+ }
727+ else [ScriptTransfer(dp.caller, cU, bL)]
728+ let eq = if ((ef > 0))
729+ then [ScriptTransfer(aE, ef, fromBase58String(bI))]
730+ else nil
731+ ((cj ++ dW) ++ eq)
732+ }
733+ else throw("Strict value is not equal to itself.")
734+ }
735+ else throw("Strict value is not equal to itself.")
736+ }
737+ else throw("Strict value is not equal to itself.")
738+ }
739+ else throw("Strict value is not equal to itself.")
740+ }
741+ else throw("Strict value is not equal to itself.")
742+ }
743+ }
927744 }
928745
929746
930747
931-@Callable(df)
932-func fromX18WrapperREADONLY (F,eH) = $Tuple2(nil, E(parseBigIntValue(F), eH))
748+@Callable(dp)
749+func putForFree (er) = if ((0 > er))
750+ then an("wrong slippage")
751+ else if ((size(dp.payments) != 2))
752+ then an("2 payments expected")
753+ else {
754+ let dR = ds(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], er, false, false, 0, "")
755+ dR._9
756+ }
933757
934758
935759
936-@Callable(df)
937-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
760+@Callable(dp)
761+func get () = {
762+ let cE = do(dp)
763+ let es = cE._1
764+ let ci = cE._2
765+ let ct = cE._3
766+ let bI = cE._4
767+ let cj = cE._5
768+ let et = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
769+ if ((et == et))
770+ then cj
771+ else throw("Strict value is not equal to itself.")
772+ }
938773
939774
940775
941-@Callable(df)
942-func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
776+@Callable(dp)
777+func getOneTkn (eu,ev,ew,ex,bh) = if ((size(dp.payments) != 1))
778+ then an("1 payment expected")
779+ else {
780+ let bx = aF()
781+ let bL = bx[s]
782+ let bM = bx[t]
783+ let bN = bx[u]
784+ let bO = parseIntValue(bx[v])
785+ let bP = parseIntValue(bx[w])
786+ let bQ = bx[r]
787+ let dM = aJ()
788+ let ea = valueOrErrorMessage(addressFromString(dM[B]), "Wrong gwxRewardContract address")
789+ let dr = value(dp.payments[0])
790+ let ec = valueOrElse(getString(this, ac()), "")
791+ let bK = if ((ec == toString(dp.caller)))
792+ then dp.originCaller
793+ else dp.caller
794+ let bH = toBase58String(dp.transactionId)
795+ let bI = value(dr.assetId)
796+ let ct = dr.amount
797+ if ((1000000000 > ct))
798+ then an("Min payment 10 LP")
799+ else if (if (if ((0 > bh))
800+ then true
801+ else (0 > eu))
802+ then true
803+ else (0 > ew))
804+ then an("Wrong params")
805+ else if ((bL != toBase58String(bI)))
806+ then an("Wrong LP")
807+ else {
808+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bI), ct, dp.caller)
809+ let ey = cE._1
810+ let ez = cE._2
811+ let bT = aZ(bM)
812+ let bU = aZ(bN)
813+ let eA = if ((ex == bM))
814+ then $Tuple7((bT - ey), (bU - ez), eu, ez, 0, 0, (ey + eu))
815+ else if ((ex == bN))
816+ then $Tuple7((bT - ey), (bU - ez), 0, 0, eu, ey, (ez + eu))
817+ else an("wrong outAssetId")
818+ let eh = eA._1
819+ let ei = eA._2
820+ let ej = eA._3
821+ let ek = eA._4
822+ let el = eA._5
823+ let em = eA._6
824+ let eB = eA._7
825+ if (if ((0 > ej))
826+ then true
827+ else (0 > el))
828+ then an("Wrong calc")
829+ else {
830+ let bm = invoke(ea, "calcD", [toString(eh), toString(ei), aB, i, j], nil)
831+ let bl = invoke(ea, "calcD", [toString(((eh - ej) + em)), toString(((ei + ek) - el)), aB, i, j], nil)
832+ let en = bk(parseBigIntValue(at(bl)), parseBigIntValue(at(bm)), h)
833+ if ((en == en))
834+ then {
835+ let eC = be(toBigInt(eB), toBigInt(ew), toBigInt(bh))
836+ if ((eC == eC))
837+ then {
838+ let eD = if ((ex == bM))
839+ then $Tuple2(toInt(eC._2), 0)
840+ else $Tuple2(0, toInt(eC._2))
841+ let eE = eD._1
842+ let eF = eD._2
843+ let eG = (eE + eF)
844+ let eH = dw(eG)
845+ let eI = eH._1
846+ let ef = eH._2
847+ let eJ = if ((ex == "WAVES"))
848+ then unit
849+ else fromBase58String(ex)
850+ let eq = if ((ef > 0))
851+ then [ScriptTransfer(aE, ef, eJ)]
852+ else nil
853+ let eK = if ((bO >= bP))
854+ then bO
855+ else bP
856+ if ((eK == eK))
857+ then {
858+ let eL = bb(D(bU, eK), D(bT, eK))
859+ let eM = G(eL, b)
860+ let cj = [ScriptTransfer(bK, eI, eJ), StringEntry(Y(toString(bK), bH), aV(eE, eF, ct, eM, height, lastBlock.timestamp)), IntegerEntry(R(), eM), IntegerEntry(S(height, lastBlock.timestamp), eM)]
861+ if ((cj == cj))
862+ then {
863+ let eN = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
864+ if ((eN == eN))
865+ then (cj ++ eq)
866+ else throw("Strict value is not equal to itself.")
867+ }
868+ else throw("Strict value is not equal to itself.")
869+ }
870+ else throw("Strict value is not equal to itself.")
871+ }
872+ else throw("Strict value is not equal to itself.")
873+ }
874+ else throw("Strict value is not equal to itself.")
875+ }
876+ }
877+ }
943878
944879
945880
946-@Callable(df)
947-func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eI,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eI, ci, cj, false, 0, ""))
881+@Callable(dp)
882+func getNoLess (eO,eP) = {
883+ let cE = do(dp)
884+ let ch = cE._1
885+ let ci = cE._2
886+ let ct = cE._3
887+ let bI = cE._4
888+ let cj = cE._5
889+ let eQ = if ((ch >= eO))
890+ then true
891+ else an(((("Failed: " + toString(ch)) + " < ") + toString(eO)))
892+ if ((eQ == eQ))
893+ then {
894+ let eR = if ((ci >= eP))
895+ then true
896+ else an(((("Failed: " + toString(ci)) + " < ") + toString(eP)))
897+ if ((eR == eR))
898+ then {
899+ let eS = invoke(aA, "burn", [ct], [AttachedPayment(bI, ct)])
900+ if ((eS == eS))
901+ then cj
902+ else throw("Strict value is not equal to itself.")
903+ }
904+ else throw("Strict value is not equal to itself.")
905+ }
906+ else throw("Strict value is not equal to itself.")
907+ }
948908
949909
950910
951-@Callable(df)
952-func estimateGetOperationWrapperREADONLY (bF,eJ,bH,eI) = {
953- let cx = bE(bF, eJ, bH, addressFromStringValue(eI))
954- $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
911+@Callable(dp)
912+func unstakeAndGet (dx) = {
913+ let dq = if ((size(dp.payments) != 0))
914+ then an("no payments expected")
915+ else true
916+ if ((dq == dq))
917+ then {
918+ let bx = aF()
919+ let eT = aJ()
920+ let bL = fromBase58String(bx[s])
921+ let eU = valueOrErrorMessage(addressFromString(eT[z]), "wrong")
922+ let eV = invoke(eU, "unstake", [toBase58String(bL), dx], nil)
923+ if ((eV == eV))
924+ then {
925+ let cE = bG(toBase58String(dp.transactionId), toBase58String(bL), dx, dp.caller)
926+ let bQ = parseIntValue(cE._9)
927+ let cj = cE._10
928+ let eW = if (if (aC())
929+ then true
930+ else (bQ == p))
931+ then an(("Blocked: " + toString(bQ)))
932+ else true
933+ if ((eW == eW))
934+ then {
935+ let eX = invoke(aA, "burn", [dx], [AttachedPayment(bL, dx)])
936+ if ((eX == eX))
937+ then cj
938+ else throw("Strict value is not equal to itself.")
939+ }
940+ else throw("Strict value is not equal to itself.")
941+ }
942+ else throw("Strict value is not equal to itself.")
943+ }
944+ else throw("Strict value is not equal to itself.")
955945 }
956946
957947
958-@Verifier(eK)
959-func eL () = {
960- let eM = {
961- let as = dk()
962- if ($isInstanceOf(as, "ByteVector"))
963- then {
964- let dp = as
965- dp
966- }
967- else if ($isInstanceOf(as, "Unit"))
968- then eK.senderPublicKey
969- else throw("Match error")
970- }
971- let as = eK
972- if ($isInstanceOf(as, "Order"))
948+
949+@Callable(dp)
950+func activate (eY,eZ) = if ((toString(dp.caller) != toString(aA)))
951+ then an("denied")
952+ else $Tuple2([StringEntry(Z(), eY), StringEntry(aa(), eZ)], "success")
953+
954+
955+
956+@Callable(dp)
957+func setS (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
958+ then dC
959+ else [StringEntry(fa, eW)]
960+
961+
962+
963+@Callable(dp)
964+func setI (fa,eW) = if ((toString(dp.caller) != aw(this, ac())))
965+ then dC
966+ else [IntegerEntry(fa, eW)]
967+
968+
969+
970+@Callable(dp)
971+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
972+
973+
974+
975+@Callable(dp)
976+func getAccBalanceWrapperREADONLY (ba) = $Tuple2(nil, aZ(ba))
977+
978+
979+
980+@Callable(dp)
981+func calcPricesWrapperREADONLY (br,bs,bw) = {
982+ let fb = bv(br, bs, bw)
983+ $Tuple2(nil, [toString(fb[0]), toString(fb[1]), toString(fb[2])])
984+ }
985+
986+
987+
988+@Callable(dp)
989+func fromX18WrapperREADONLY (H,fc) = $Tuple2(nil, G(parseBigIntValue(H), fc))
990+
991+
992+
993+@Callable(dp)
994+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
995+
996+
997+
998+@Callable(dp)
999+func calcPriceBigIntWrapperREADONLY (bc,bd) = $Tuple2(nil, toString(bb(parseBigIntValue(bc), parseBigIntValue(bd))))
1000+
1001+
1002+
1003+@Callable(dp)
1004+func estimatePutOperationWrapperREADONLY (bH,bh,cm,fd,co,fe,ff,cq,cr) = $Tuple2(nil, ck(bH, bh, cm, fd, co, fe, ff, cq, cr, false, 0, ""))
1005+
1006+
1007+
1008+@Callable(dp)
1009+func estimateGetOperationWrapperREADONLY (bH,fg,bJ,ff) = {
1010+ let cE = bG(bH, fg, bJ, addressFromStringValue(ff))
1011+ $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
1012+ }
1013+
1014+
1015+@Verifier(fh)
1016+func fi () = {
1017+ let au = fh
1018+ if ($isInstanceOf(au, "Order"))
9731019 then {
974- let cS = as
975- let eN = aB()
976- let eO = cR(cS)
977- let eP = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
978- let eQ = sigVerify(cS.bodyBytes, cS.proofs[1], eN)
979- if (if (if (eO)
980- then eP
1020+ let dc = au
1021+ let fj = aD()
1022+ let aq = db(dc)
1023+ let fk = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1024+ let fl = sigVerify(dc.bodyBytes, dc.proofs[1], fj)
1025+ if (if (if (aq)
1026+ then fk
9811027 else false)
982- then eQ
1028+ then fl
9831029 else false)
9841030 then true
985- else an(eO, eP, eQ)
1031+ else ap(aq, fk, fl)
9861032 }
987- else if ($isInstanceOf(as, "SetScriptTransaction"))
988- then {
989- let dl = as
990- let eR = blake2b256(value(dl.script))
991- let eS = fromBase64String(value(getString(ay, am())))
992- let eT = scriptHash(this)
993- if (if ((eS == eR))
994- then (eT != eR)
995- else false)
996- then true
997- else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
1033+ else {
1034+ let fm = {
1035+ let fn = dz()
1036+ if ($isInstanceOf(fn, "ByteVector"))
1037+ then {
1038+ let dE = fn
1039+ dE
1040+ }
1041+ else if ($isInstanceOf(fn, "Unit"))
1042+ then fh.senderPublicKey
1043+ else throw("Match error")
9981044 }
999- else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
1045+ sigVerify(fh.bodyBytes, fh.proofs[0], fm)
1046+ }
10001047 }
10011048

github/deemru/w8io/169f3d6 
287.89 ms