tx · ABBiMQsDNeNtLhHUPv8n3jhEKTzTcxKbXFavqvFmUacL

3MqAT6VCwdsABD18Abytrmi7EmaLGSVzNKY:  -0.02900000 Waves

2023.02.22 17:27 [2460975] smart account 3MqAT6VCwdsABD18Abytrmi7EmaLGSVzNKY > SELF 0.00000000 Waves

{ "type": 13, "id": "ABBiMQsDNeNtLhHUPv8n3jhEKTzTcxKbXFavqvFmUacL", "fee": 2900000, "feeAssetId": null, "timestamp": 1677076118300, "version": 1, "sender": "3MqAT6VCwdsABD18Abytrmi7EmaLGSVzNKY", "senderPublicKey": "HfB4CZkBhLMntiSTYMMwjyaM3hzcfaPjay5VZ9Pe71BA", "proofs": [ "5iNV8uADnqmUYDqM675wnC4YHywgQQ8qQu7a7tr8aVJsqM6tRErHmUNg4ijrSScm6AqNL2yLJycvsgF3AqN8ouZt" ], "script": "base64:BgKNAQgCEgoKCAgICAgICAgBEgMKAQgSBgoECAgICBIECgIIGBIDCgEIEgQKAggYEgMKAQgSABIDCgEYEgoKCAgICAgIAQgIEgQKAggBEgMKAQESAwoBARIECgIIARIGCgQICAgIEgQKAggIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCGQABlNDQUxFOAAIAAVNVUxUOACAwtcvAAdTQ0FMRTE4ABIABk1VTFQxOAkAtgIBAICAkLu61q3wDQAOUE9PTFdFSUdIVE1VTFQFBU1VTFQ4AA5HV1h2aXJ0dWFsUE9PTAIOR1dYdmlydHVhbFBPT0wADGxhYmVsUG9vbHNMcAIIUE9PTFNfTFAADWRlZmF1bHRTcHJlYWQAgIl6ABFkZWNpbWFsc011bHRQcmljZQkAaAIJAGgCAGQA6AcA6AcAA1NFUAICX18ABUVNUFRZAgAAClBvb2xBY3RpdmUAAQAPUG9vbFB1dERpc2FibGVkAAIAE1Bvb2xNYXRjaGVyRGlzYWJsZWQAAwAMUG9vbFNodXRkb3duAAQAEmlkeEludGVybmFsQXNzZXRJZAABAA9pZHhSZXN1dEFjdGlvbnMAAgAgaWR4SWZBc3NldElkQ2FsY3VsYXRpb25QZXJmb3JtZWQAAwAOaWR4UG9vbEFkZHJlc3MAAQANaWR4UG9vbFN0YXR1cwACABBpZHhQb29sTFBBc3NldElkAAMADWlkeEFtdEFzc2V0SWQABAAPaWR4UHJpY2VBc3NldElkAAUADmlkeEFtdEFzc2V0RGNtAAYAEGlkeFByaWNlQXNzZXREY20ABwAOaWR4SUFtdEFzc2V0SWQACAAQaWR4SVByaWNlQXNzZXRJZAAJAA1pZHhMUEFzc2V0RGNtAAoAC2lkeFBvb2xUeXBlAAsAE3Bvb2xMYWJlbFd4RW1pc3Npb24CC1dYX0VNSVNTSU9OAA92YWxpZFBvb2xMYWJlbHMJAMwIAgUTcG9vbExhYmVsV3hFbWlzc2lvbgUDbmlsARZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAEha2V5QWxsb3dlZExwU3RhYmxlQWRkb25TY3JpcHRIYXNoAAIiJXNfX2FsbG93ZWRMcFN0YWJsZUFkZG9uU2NyaXB0SGFzaAEQa2V5RmFjdG9yeUNvbmZpZwACESVzX19mYWN0b3J5Q29uZmlnAQ9rZXlMcFRva2Vuc0xpc3QAAhAlc19fbHBUb2tlbnNMaXN0ARFrZXlQb29sU2NyaXB0SGFzaAACFiVzJXNfX3Bvb2xfX3NjcmlwdEhhc2gBDWtleU1hdGNoZXJQdWIAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAACGSVzX19sZWdhY3lGYWN0b3J5Q29udHJhY3QBDmtleUxlZ2FjeVBvb2xzAAIPJXNfX2xlZ2FjeVBvb2xzARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQ9rZXlBZG1pblB1YktleXMAAhAlc19fYWRtaW5QdWJLZXlzARZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAIXJXNfX2Fzc2V0c1N0b3JlQ29udHJhY3QBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAEOa2V5UHJpY2VBc3NldHMACQC5CQIJAMwIAgICJXMJAMwIAgILcHJpY2VBc3NldHMFA25pbAUDU0VQARBrZXlQcmljZURlY2ltYWxzAAIRJXNfX3ByaWNlRGVjaW1hbHMBE2tleUFsbFBvb2xzU2h1dGRvd24AAgwlc19fc2h1dGRvd24BFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAhclc19fbmV4dEludGVybmFsQXNzZXRJZAEPa2V5UG9vbFRvV2VpZ2h0AQtwb29sQWRkcmVzcwkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FC3Bvb2xBZGRyZXNzARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5Agtwb29sQWRkcmVzcwNudW0JAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwULcG9vbEFkZHJlc3MCAl9fCQCkAwEFA251bQEfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAERaW50ZXJuYWxCYXNlQXNzZXQJAKwCAgIoJXMlcyVkX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwkApAMBBRFpbnRlcm5hbEJhc2VBc3NldAEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEMYmFzZUFzc2V0U3RyCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FDGJhc2VBc3NldFN0cgENa2V5UG9vbENvbmZpZwITYW1vdW50QXNzZXRJbnRlcm5hbBJwcmljZUFzc2V0SW50ZXJuYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FE2Ftb3VudEFzc2V0SW50ZXJuYWwCAl9fBRJwcmljZUFzc2V0SW50ZXJuYWwCCF9fY29uZmlnASFrZXlQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQBDmFzc2V0c0ludGVybmFsBAskdDAzNzI3Mzc4OQUOYXNzZXRzSW50ZXJuYWwEE2Ftb3VudEFzc2V0SW50ZXJuYWwIBQskdDAzNzI3Mzc4OQJfMQQScHJpY2VBc3NldEludGVybmFsCAULJHQwMzcyNzM3ODkCXzIJALkJAgkAzAgCAgYlZCVkJXMJAMwIAgkApAMBBRNhbW91bnRBc3NldEludGVybmFsCQDMCAIJAKQDAQUScHJpY2VBc3NldEludGVybmFsCQDMCAICGm9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBQNuaWwFA1NFUAEla2V5QWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAAJALkJAgkAzAgCAgIlcwkAzAgCAhpvbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAUDbmlsBQNTRVABHWtleU1hcHBpbmdMcEFzc2V0VG9Qb29sQXNzZXRzAQpscEFzc2V0U3RyCQCsAgIJAKwCAgIIJXMlcyVzX18FCmxwQXNzZXRTdHICGF9fbWFwcGluZ3NfX2xwQXNzZXQyUG9vbAEda2V5TWFwcGluZ1Bvb2xBc3NldHNUb0xwYXNzZXQCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fBRhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHICAl9fBRdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgIeX19tYXBwaW5nc19fUG9vbEFzc2V0czJMcEFzc2V0AQ1rZXlQb29sU3ByZWFkAQtwb29sQWRkcmVzcwkArAICAg4lcyVzX19zcHJlYWRfXwULcG9vbEFkZHJlc3MBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzARNwb29sQ29udHJhY3RBZGRyZXNzCQCsAgIJAKwCAgIIJXMlcyVzX18FE3Bvb2xDb250cmFjdEFkZHJlc3MCI19fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJQb29sQXNzZXRzASlrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyF2ludGVybmFsUHJpY2VBc3NldElkU3RyCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18JAKQDAQUYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAgJfXwkApAMBBRdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgIjX19tYXBwaW5nc19fcG9vbEFzc2V0czJQb29sQ29udHJhY3QBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBE3Bvb2xDb250cmFjdEFkZHJlc3MJAKwCAgkArAICAgglcyVzJXNfXwUTcG9vbENvbnRyYWN0QWRkcmVzcwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEKbHBBc3NldFN0cgkArAICCQCsAgICCCVzJXMlc19fBQpscEFzc2V0U3RyAiBfX21hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAENa2V5V3hFbWlzc2lvbgINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJAKwCAgkArAICCQCsAgICFCVzJXMlc19fd3hFbWlzc2lvbl9fBQ1hbW91bnRBc3NldElkAgJfXwUMcHJpY2VBc3NldElkAQhrZXlJbkZlZQELcG9vbEFkZHJlc3MJAKwCAgINJXMlc19faW5GZWVfXwULcG9vbEFkZHJlc3MBD2tleUluRmVlRGVmYXVsdAACECVzX19pbkZlZURlZmF1bHQBCWtleU91dEZlZQELcG9vbEFkZHJlc3MJAKwCAgIOJXMlc19fb3V0RmVlX18FC3Bvb2xBZGRyZXNzARBrZXlPdXRGZWVEZWZhdWx0AAIRJXNfX291dEZlZURlZmF1bHQBD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5CQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUDa2V5ARBnZXRCb29sZWFuT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQR0aGlzBQNrZXkJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQNrZXkBDGdldEludE9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUDa2V5CQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUDa2V5ABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAQAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAACABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAADABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAABAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAFABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAABgAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAHABRJZHhGYWN0b3J5Q2ZnRGFvRGFwcAAIABpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcAAJABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAKABZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwAAsBGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAQ5nZXRQcmljZUFzc2V0cwAEByRtYXRjaDAJAKIIAQkBDmtleVByaWNlQXNzZXRzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDADCQAAAgkAsQIBBQFzAAAFA25pbAkAtQkCBQFzBQNTRVAFA25pbAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAQttdXN0TWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAkBCG11c3RUaGlzAQUBaQkAAgECC01hdGNoIGVycm9yARBkYXRhRmFjdG9yeUNmZ1YzCw5zdGFraW5nQWRkcmVzcw9ib29zdGluZ0FkZHJlc3MLaWRvQ29udHJhY3QMdGVhbUNvbnRyYWN0EGVtaXNzaW9uQ29udHJhY3QMcmVzdENvbnRyYWN0EHNsaXBwYWdlQ29udHJhY3QLZGFvQ29udHJhY3QRbWFya2V0aW5nQ29udHJhY3QSZ3d4UmV3YXJkc0NvbnRyYWN0DWJpcmRzQ29udHJhY3QJALkJAgkAzAgCAhYlcyVzJXMlcyVzJXMlcyVzJXMlcyVzCQDMCAIFDnN0YWtpbmdBZGRyZXNzCQDMCAIFD2Jvb3N0aW5nQWRkcmVzcwkAzAgCBQtpZG9Db250cmFjdAkAzAgCBQx0ZWFtQ29udHJhY3QJAMwIAgUQZW1pc3Npb25Db250cmFjdAkAzAgCBQxyZXN0Q29udHJhY3QJAMwIAgUQc2xpcHBhZ2VDb250cmFjdAkAzAgCBQtkYW9Db250cmFjdAkAzAgCBRFtYXJrZXRpbmdDb250cmFjdAkAzAgCBRJnd3hSZXdhcmRzQ29udHJhY3QJAMwIAgUNYmlyZHNDb250cmFjdAUDbmlsBQNTRVABDmRhdGFGYWN0b3J5Q2ZnBw5zdGFraW5nQWRkcmVzcw9ib29zdGluZ0FkZHJlc3MLaWRvQ29udHJhY3QMdGVhbUNvbnRyYWN0EGVtaXNzaW9uQ29udHJhY3QMcmVzdENvbnRyYWN0EHNsaXBwYWdlQ29udHJhY3QJALkJAgkAzAgCAgwlcyVzJXMlcyVzJXMJAMwIAgUOc3Rha2luZ0FkZHJlc3MJAMwIAgUPYm9vc3RpbmdBZGRyZXNzCQDMCAIFC2lkb0NvbnRyYWN0CQDMCAIFDHRlYW1Db250cmFjdAkAzAgCBRBlbWlzc2lvbkNvbnRyYWN0CQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBRBzbGlwcGFnZUNvbnRyYWN0BQNuaWwFA1NFUAELZGF0YVBvb2xDZmcLC3Bvb2xBZGRyZXNzCnBvb2xTdGF0dXMJbHBBc3NldElkDmFtb3VudEFzc2V0U3RyDXByaWNlQXNzZXRTdHITYW1vdW50QXNzZXREZWNpbWFscxJwcmljZUFzc2V0RGVjaW1hbHMVYW1vdW50QXNzZXRJbnRlcm5hbElkFHByaWNlQXNzZXRJbnRlcm5hbElkD2xwQXNzZXREZWNpbWFscwhwb29sVHlwZQkAuQkCCQDMCAICFiVzJWQlcyVzJXMlZCVkJWQlZCVkJXMJAMwIAgULcG9vbEFkZHJlc3MJAMwIAgUKcG9vbFN0YXR1cwkAzAgCBQlscEFzc2V0SWQJAMwIAgUOYW1vdW50QXNzZXRTdHIJAMwIAgUNcHJpY2VBc3NldFN0cgkAzAgCCQCkAwEFE2Ftb3VudEFzc2V0RGVjaW1hbHMJAMwIAgkApAMBBRJwcmljZUFzc2V0RGVjaW1hbHMJAMwIAgkApAMBBRVhbW91bnRBc3NldEludGVybmFsSWQJAMwIAgkApAMBBRRwcmljZUFzc2V0SW50ZXJuYWxJZAkAzAgCCQCkAwEFD2xwQXNzZXREZWNpbWFscwkAzAgCBQhwb29sVHlwZQUDbmlsBQNTRVABFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIWaW50ZXJuYWxBbW91bnRBc3NldFN0chVpbnRlcm5hbFByaWNlQXNzZXRTdHIJALkJAgkAzAgCAgQlZCVkCQDMCAIJAKQDAQUWaW50ZXJuYWxBbW91bnRBc3NldFN0cgkAzAgCCQCkAwEFFWludGVybmFsUHJpY2VBc3NldFN0cgUDbmlsBQNTRVABDWdldFBvb2xDb25maWcBC3Bvb2xBZGRyZXNzBApwb29sQXNzZXRzCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBDWtleVBvb2xDb25maWcCBRNhbW91bnRBc3NldEludGVybmFsBRJwcmljZUFzc2V0SW50ZXJuYWwFA1NFUAEaZ2V0SW50ZXJuYWxBc3NldElkT3JDcmVhdGUCCmFzc2V0SWRTdHILaW5jcmVtZW50b3IED2ludGVybmFsQXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFCmFzc2V0SWRTdHIAAAQYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAABAZyZXN1bHQDCQAAAgUPaW50ZXJuYWxBc3NldElkAAAEEm5ld0ludGVybmFsQXNzZXRJZAkAZAIFGGN1cnJlbnRJbmRleE9mSW50ZXJuYWxJZAULaW5jcmVtZW50b3IJAJUKAwUSbmV3SW50ZXJuYWxBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TmV4dEludGVybmFsQXNzZXRJZAAFEm5ld0ludGVybmFsQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQphc3NldElkU3RyBRJuZXdJbnRlcm5hbEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQBBRJuZXdJbnRlcm5hbEFzc2V0SWQFCmFzc2V0SWRTdHIFA25pbAYJAJUKAwUPaW50ZXJuYWxBc3NldElkBQNuaWwHBQZyZXN1bHQBCW11c3RBZG1pbgEBaQQIYWRtaW5QS3MJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5QWRtaW5QdWJLZXlzAAUFRU1QVFkFA1NFUAMJAQ9jb250YWluc0VsZW1lbnQCBQhhZG1pblBLcwkA2AQBCAUBaQ9jYWxsZXJQdWJsaWNLZXkGBAlpc01hbmFnZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgUJaXNNYW5hZ2VyBQlpc01hbmFnZXIGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARZpbnRPckRlZmF1bHRPckZhbGxiYWNrAwNrZXkKa2V5RGVmYXVsdA12YWx1ZUZhbGxiYWNrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQprZXlEZWZhdWx0BQ12YWx1ZUZhbGxiYWNrFwFpAQtjb25zdHJ1Y3RvcggPc3Rha2luZ0NvbnRyYWN0EGJvb3N0aW5nQ29udHJhY3QLaWRvQ29udHJhY3QMdGVhbUNvbnRyYWN0EGVtaXNzaW9uQ29udHJhY3QMcmVzdENvbnRyYWN0EHNscGlwYWdlQ29udHJhY3QNcHJpY2VEZWNpbWFscwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlGYWN0b3J5Q29uZmlnAAkBDmRhdGFGYWN0b3J5Q2ZnBwUPc3Rha2luZ0NvbnRyYWN0BRBib29zdGluZ0NvbnRyYWN0BQtpZG9Db250cmFjdAUMdGVhbUNvbnRyYWN0BRBlbWlzc2lvbkNvbnRyYWN0BQxyZXN0Q29udHJhY3QFEHNscGlwYWdlQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlQcmljZURlY2ltYWxzAAUNcHJpY2VEZWNpbWFscwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjIBEG1hdGhjaGVyUHViNThTdHIEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQKbWF0aGNlclB1YgkApwgBCQDZBAEFEG1hdGhjaGVyUHViNThTdHIDCQAAAgUKbWF0aGNlclB1YgUKbWF0aGNlclB1YgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TWF0Y2hlclB1YgAFEG1hdGhjaGVyUHViNThTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclYzBAtkYW9Db250cmFjdBFtYXJrZXRpbmdDb250cmFjdBJnd3hSZXdhcmRzQ29udHJhY3QNYmlyZHNDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBApmYWN0b3J5Q2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RmFjdG9yeUNvbmZpZwAJARBkYXRhRmFjdG9yeUNmZ1YzCwkAkQMCBQpmYWN0b3J5Q2ZnAAEJAJEDAgUKZmFjdG9yeUNmZwACCQCRAwIFCmZhY3RvcnlDZmcAAwkAkQMCBQpmYWN0b3J5Q2ZnAAQJAJEDAgUKZmFjdG9yeUNmZwAFCQCRAwIFCmZhY3RvcnlDZmcABgkAkQMCBQpmYWN0b3J5Q2ZnAAcFC2Rhb0NvbnRyYWN0BRFtYXJrZXRpbmdDb250cmFjdAUSZ3d4UmV3YXJkc0NvbnRyYWN0BQ1iaXJkc0NvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNAIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0C2xlZ2FjeVBvb2xzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAAFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGVnYWN5UG9vbHMACQC5CQIFC2xlZ2FjeVBvb2xzBQNTRVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclY1ARNhc3NldHNTdG9yZUNvbnRyYWN0BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABRNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNgIWdm90aW5nRW1pc3Npb25Db250cmFjdAtwcmljZUFzc2V0cwQFY2hla3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkBAiE9AgkApggBBRZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQR1bml0BgIoaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY29udHJhY3QgYWRkcmVzcwUDbmlsAwkAAAIFBWNoZWtzBQVjaGVrcwkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAFFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVByaWNlQXNzZXRzAAkAuQkCBQtwcmljZUFzc2V0cwUDU0VQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJc2V0QWRtaW5zAQxhZG1pblB1YktleXMEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5QWRtaW5QdWJLZXlzAAkAuQkCBQxhZG1pblB1YktleXMFA1NFUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD2FjdGl2YXRlTmV3UG9vbAgLcG9vbEFkZHJlc3MOYW1vdW50QXNzZXRTdHINcHJpY2VBc3NldFN0cgtscEFzc2V0TmFtZQxscEFzc2V0RGVzY3IKcG9vbFdlaWdodAhwb29sVHlwZQRsb2dvBAtjaGVja0NhbGxlcgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyAwkBCWlzRGVmaW5lZAEJAKIIAQkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MJAAIBCQCsAgIJAKwCAgINUG9vbCBhZGRyZXNzIAULcG9vbEFkZHJlc3MCFCBhbHJlYWR5IHJlZ2lzdGVyZWQuBBdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQkBGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAgUOYW1vdW50QXNzZXRTdHIAAQQVaW50ZXJuYWxBbW91bnRBc3NldElkCAUXaW50ZXJuYWxBbW91bnRBc3NldERhdGECXzEEFmludGVybmFsUHJpY2VBc3NldERhdGEJARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIFDXByaWNlQXNzZXRTdHIDCAUXaW50ZXJuYWxBbW91bnRBc3NldERhdGECXzMAAgABBBRpbnRlcm5hbFByaWNlQXNzZXRJZAgFFmludGVybmFsUHJpY2VBc3NldERhdGECXzEEFXBvb2xBY2NvdW50U2NyaXB0SGFzaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDxBwEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzCQCsAgICKU5vIHNjcmlwdCBoYXMgYmVlbiBmb3VuZCBvbiBwb29sIGFjY291bnQgBQtwb29sQWRkcmVzcwQcZXRoYWxvblBvb2xBY2NvdW50U2NyaXB0SGFzaAkBEUBleHRyTmF0aXZlKDEwNTcpAQkBEWtleVBvb2xTY3JpcHRIYXNoAAQKcG9vbENvbmZpZwkAnQgCBQR0aGlzCQENa2V5UG9vbENvbmZpZwIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkAwkBCWlzRGVmaW5lZAEFCnBvb2xDb25maWcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICBVBvb2wgBQ5hbW91bnRBc3NldFN0cgIBLwUNcHJpY2VBc3NldFN0cgIcIGhhcyBhbHJlYWR5IGJlZW4gYWN0aXZhdGVkLgQPcG9vbENvbmZpZ1ZhbHVlCQEFdmFsdWUBCQCdCAIFBHRoaXMJAQ1rZXlQb29sQ29uZmlnAgkApAMBBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAKQDAQUUaW50ZXJuYWxQcmljZUFzc2V0SWQEFGFtb3VudEFzc2V0c0RlY2ltYWxzAwkAAAIFDmFtb3VudEFzc2V0U3RyAgVXQVZFUwURZGVjaW1hbHNNdWx0UHJpY2UJAGwGAAoAAAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQ5hbW91bnRBc3NldFN0cghkZWNpbWFscwAAAAAFBERPV04EE3ByaWNlQXNzZXRzRGVjaW1hbHMDCQAAAgUNcHJpY2VBc3NldFN0cgIFV0FWRVMFEWRlY2ltYWxzTXVsdFByaWNlCQBsBgAKAAAICQEFdmFsdWUBCQDsBwEJANkEAQUNcHJpY2VBc3NldFN0cghkZWNpbWFscwAAAAAFBERPV04EEmxwQXNzZXRJc3N1ZUFjdGlvbgkAwggFBQtscEFzc2V0TmFtZQUMbHBBc3NldERlc2NyAAEACAYECWxwQXNzZXRJZAkAuAgBBRJscEFzc2V0SXNzdWVBY3Rpb24EDGxwQXNzZXRJZFN0cgkA2AQBBQlscEFzc2V0SWQEGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQtwb29sQWRkcmVzcwIIYWN0aXZhdGUJAMwIAgUOYW1vdW50QXNzZXRTdHIJAMwIAgUNcHJpY2VBc3NldFN0cgUDbmlsBQNuaWwDCQAAAgUYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0BRhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQDCQECIT0CBRhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQCB3N1Y2Nlc3MJAAIBAiNQb29sIGluaXRpYWxpc2F0aW9uIGVycm9yIGhhcHBlbmVkLgQTYXNzZXRzU3RvcmVDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBD2dldFN0cmluZ09yRmFpbAEJARZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAQYY3JlYXRlT3JVcGRhdGVMcEFzc2V0SW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCDmNyZWF0ZU9yVXBkYXRlCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQtscEFzc2V0TmFtZQkAzAgCBwUDbmlsBQNuaWwDCQAAAgUYY3JlYXRlT3JVcGRhdGVMcEFzc2V0SW52BRhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYEEmFkZFBvb2xzTHBMYWJlbEludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AghhZGRMYWJlbAkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgUMbGFiZWxQb29sc0xwBQNuaWwFA25pbAMJAAACBRJhZGRQb29sc0xwTGFiZWxJbnYFEmFkZFBvb2xzTHBMYWJlbEludgQKc2V0TG9nb0ludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AgdzZXRMb2dvCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQRsb2dvBQNuaWwFA25pbAMJAAACBQpzZXRMb2dvSW52BQpzZXRMb2dvSW52BBBhZGRBc3NldHNMaW5rSW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCDWFkZEFzc2V0c0xpbmsJAMwIAgUOYW1vdW50QXNzZXRTdHIJAMwIAgUNcHJpY2VBc3NldFN0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDbmlsAwkAAAIFEGFkZEFzc2V0c0xpbmtJbnYFEGFkZEFzc2V0c0xpbmtJbnYEG2luY3JlYXNlQXNzZXRQb29sc051bWJlckludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AhhpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXIJAMwIAgUOYW1vdW50QXNzZXRTdHIFA25pbAUDbmlsAwkAAAIFG2luY3JlYXNlQXNzZXRQb29sc051bWJlckludgUbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52CQCUCgIJAM4IAgkAzggCCAUXaW50ZXJuYWxBbW91bnRBc3NldERhdGECXzIIBRZpbnRlcm5hbFByaWNlQXNzZXREYXRhAl8yCQDMCAIFEmxwQXNzZXRJc3N1ZUFjdGlvbgkAzAgCCQEEQnVybgIFCWxwQXNzZXRJZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlQb29sQ29uZmlnAgkApAMBBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAKQDAQUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAQtkYXRhUG9vbENmZwsFC3Bvb2xBZGRyZXNzCQCkAwEFClBvb2xBY3RpdmUFDGxwQXNzZXRJZFN0cgUOYW1vdW50QXNzZXRTdHIFDXByaWNlQXNzZXRTdHIFFGFtb3VudEFzc2V0c0RlY2ltYWxzBRNwcmljZUFzc2V0c0RlY2ltYWxzBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkBRFkZWNpbWFsc011bHRQcmljZQUIcG9vbFR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBHWtleU1hcHBpbmdMcEFzc2V0VG9Qb29sQXNzZXRzAQUMbHBBc3NldElkU3RyCQEVZGF0YU1hcHBpbmdQb29sQXNzZXRzAgUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEda2V5TWFwcGluZ1Bvb2xBc3NldHNUb0xwYXNzZXQCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkArAICAgQlc19fBQxscEFzc2V0SWRTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MJARVkYXRhTWFwcGluZ1Bvb2xBc3NldHMCBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJASlrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwIFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQFC3Bvb2xBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJASprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQxscEFzc2V0SWRTdHIFC3Bvb2xBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQULcG9vbEFkZHJlc3MFDGxwQXNzZXRJZFN0cgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVBvb2xUb1dlaWdodAEFC3Bvb2xBZGRyZXNzBQpwb29sV2VpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5UG9vbFNwcmVhZAEFC3Bvb2xBZGRyZXNzBQ1kZWZhdWx0U3ByZWFkBQNuaWwFDGxwQXNzZXRJZFN0cgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQptYW5hZ2VQb29sAgtwb29sQWRkcmVzcwluZXdTdGF0dXMEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQKcG9vbENvbmZpZwkBDWdldFBvb2xDb25maWcBBQtwb29sQWRkcmVzcwQKcG9vbFN0YXR1cwkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQb29sU3RhdHVzBAxscEFzc2V0SWRTdHIJAJEDAgUKcG9vbENvbmZpZwUQaWR4UG9vbExQQXNzZXRJZAQOYW1vdW50QXNzZXRTdHIJAJEDAgUKcG9vbENvbmZpZwUNaWR4QW10QXNzZXRJZAQNcHJpY2VBc3NldFN0cgkAkQMCBQpwb29sQ29uZmlnBQ9pZHhQcmljZUFzc2V0SWQEFGFtb3VudEFzc2V0c0RlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUOaWR4QW10QXNzZXREY20EE3ByaWNlQXNzZXRzRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhQcmljZUFzc2V0RGNtBBVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhJQW10QXNzZXRJZAQUaW50ZXJuYWxQcmljZUFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhJUHJpY2VBc3NldElkBApscEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUNaWR4TFBBc3NldERjbQQIcG9vbFR5cGUJAJEDAgUKcG9vbENvbmZpZwULaWR4UG9vbFR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkBC2RhdGFQb29sQ2ZnCwULcG9vbEFkZHJlc3MJAKQDAQUJbmV3U3RhdHVzBQxscEFzc2V0SWRTdHIFDmFtb3VudEFzc2V0U3RyBQ1wcmljZUFzc2V0U3RyBRRhbW91bnRBc3NldHNEZWNpbWFscwUTcHJpY2VBc3NldHNEZWNpbWFscwUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAUKbHBBc3NldERjbQUIcG9vbFR5cGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRlbWl0AQxhbW91bnRUb0VtaXQEBmNhbGxlcggFAWkGY2FsbGVyBAxvcmlnaW5DYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQQbHBBc3NldFJlcXVlc3RlZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQkApQgBBQZjYWxsZXICHUludmFsaWQgTFAgYWRkcmVzcyBjYWxsZWQgbWUuBAdscEFzc2V0CQDZBAEFEGxwQXNzZXRSZXF1ZXN0ZWQEC2xlZ2FjeVBvb2xzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBDmtleUxlZ2FjeVBvb2xzAAUFRU1QVFkFA1NFUAQVbGVnYWN5RmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAACKExlZ2FjeSBmYWN0b3J5IGNvbnRyYWN0IGRvZXMgbm90IGV4aXN0cy4DCQBnAgAABQxhbW91bnRUb0VtaXQFA25pbAMJAQ9jb250YWluc0VsZW1lbnQCBQtsZWdhY3lQb29scwkApQgBBQZjYWxsZXIJAJQKAgUDbmlsBRVsZWdhY3lGYWN0b3J5Q29udHJhY3QJAJQKAgkAzAgCCQEHUmVpc3N1ZQMFB2xwQXNzZXQFDGFtb3VudFRvRW1pdAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxhbW91bnRUb0VtaXQFB2xwQXNzZXQFA25pbAIHc3VjY2VzcwFpAQRidXJuAQxhbW91bnRUb0J1cm4EBmNhbGxlcggFAWkGY2FsbGVyBAxvcmlnaW5DYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABA1wYXltZW50QW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQED2luQW1vdW50QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBBpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQkApQgBBQZjYWxsZXICHUludmFsaWQgTFAgYWRkcmVzcyBjYWxsZWQgbWUuAwkBAiE9AgUPaW5BbW91bnRBc3NldElkBRpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgMJAQIhPQIFDGFtb3VudFRvQnVybgUNcGF5bWVudEFtb3VudAkAAgECFkludmFsaWQgYW1vdW50IHBhc3NlZC4EB2xwQXNzZXQJANkEAQUabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAJQKAgkAzAgCCQEEQnVybgIFB2xwQXNzZXQFDGFtb3VudFRvQnVybgUDbmlsAgdzdWNjZXNzAWkBDG1vZGlmeVdlaWdodAIJbHBBc3NldElkBXNoYXJlBAtjaGVja0NhbGxlcgMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAgAGCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQTcG9vbENvbnRyYWN0QWRkcmVzcwkBD2dldFN0cmluZ09yRmFpbAEJASprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQlscEFzc2V0SWQEDXBvb2xXZWlnaHRLZXkJAQ9rZXlQb29sVG9XZWlnaHQBBRNwb29sQ29udHJhY3RBZGRyZXNzBAxnd3hXZWlnaHRLZXkJAQ9rZXlQb29sVG9XZWlnaHQBBQ5HV1h2aXJ0dWFsUE9PTAQJZ3d4V2VpZ2h0CQELdmFsdWVPckVsc2UCCQCfCAEFDGd3eFdlaWdodEtleQAABApwb29sV2VpZ2h0CQELdmFsdWVPckVsc2UCCQCfCAEFDXBvb2xXZWlnaHRLZXkAAAQNcG9vbFdlaWdodE5ldwUFc2hhcmUECmZhY3RvcnlDZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQBA9zdGFraW5nQ29udHJhY3QJARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcEEW9uTW9kaWZ5V2VpZ2h0SW52CQD8BwQFD3N0YWtpbmdDb250cmFjdAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUJbHBBc3NldElkCQDMCAIFE3Bvb2xDb250cmFjdEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFEW9uTW9kaWZ5V2VpZ2h0SW52BRFvbk1vZGlmeVdlaWdodEludgQVZ3d4VmlydHVhbFBvb2xBY3Rpb25zAwkAAAIFCWd3eFdlaWdodAAABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFDGd3eFdlaWdodEtleQAABQNuaWwEFHBvb2xXZWlnaHRIaXN0b3J5S2V5CQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFE3Bvb2xDb250cmFjdEFkZHJlc3MAAAQXcG9vbFdlaWdodEhpc3RvcnlPclVuaXQJAJ8IAQUUcG9vbFdlaWdodEhpc3RvcnlLZXkEGHBvb2xXZWlnaHRIaXN0b3J5QWN0aW9ucwMJAAACBRdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdAUEdW5pdAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFFHBvb2xXZWlnaHRIaXN0b3J5S2V5BQNuaWwJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1wb29sV2VpZ2h0S2V5BQ1wb29sV2VpZ2h0TmV3BQNuaWwFFWd3eFZpcnR1YWxQb29sQWN0aW9ucwUYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDW1vZGlmeVdlaWdodHMEDmJ0Y1Bvb2xBZGRyZXNzDmV0aFBvb2xBZGRyZXNzEWV0aEJ0Y1Bvb2xBZGRyZXNzE3VzZGNVc2R0UG9vbEFkZHJlc3MEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQPZXRoQnRjV2VpZ2h0TmV3CQBpAgkAaAIABQUOUE9PTFdFSUdIVE1VTFQAZAQRdXNkY1VzZHRXZWlnaHROZXcJAGkCCQBoAgAFBQ5QT09MV0VJR0hUTVVMVABkBA93ZWlnaHREZWNyZW1lbnQJAGkCCQBoAgAFBQ5QT09MV0VJR0hUTVVMVABkBApmYWN0b3J5Q2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAQLc3Rha2luZ0RhcHAJARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcEDWd3eFJld2FyZERhcHAJARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQMYnRjV2VpZ2h0S0VZCQEPa2V5UG9vbFRvV2VpZ2h0AQUOYnRjUG9vbEFkZHJlc3MEDGV0aFdlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFDmV0aFBvb2xBZGRyZXNzBA9ldGhCdGNXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBRFldGhCdGNQb29sQWRkcmVzcwQRdXNkY1VzZHRXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBRN1c2RjVXNkdFBvb2xBZGRyZXNzBAlidGNXZWlnaHQJAQxnZXRJbnRPckZhaWwBBQxidGNXZWlnaHRLRVkECWV0aFdlaWdodAkBDGdldEludE9yRmFpbAEFDGV0aFdlaWdodEtFWQQMYnRjV2VpZ2h0TmV3CQBlAgUJYnRjV2VpZ2h0BQ93ZWlnaHREZWNyZW1lbnQEDGV0aFdlaWdodE5ldwkAZQIFCWV0aFdlaWdodAUPd2VpZ2h0RGVjcmVtZW50AwkAZwIAAAUMYnRjV2VpZ2h0TmV3CQACAQkArAICAhZpbnZhbGlkIGJ0Y1dlaWdodE5ldzogCQCkAwEFDGJ0Y1dlaWdodE5ldwMJAGcCAAAFDGV0aFdlaWdodE5ldwkAAgEJAKwCAgIWaW52YWxpZCBldGhXZWlnaHROZXc6IAkApAMBBQxldGhXZWlnaHROZXcED2J0Y0xwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUOYnRjUG9vbEFkZHJlc3MED2V0aExwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUOZXRoUG9vbEFkZHJlc3MEEmV0aEJ0Y0xwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQURZXRoQnRjUG9vbEFkZHJlc3MEFHVzZGNVc2R0THBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRN1c2RjVXNkdFBvb2xBZGRyZXNzBBFvbk1vZGlmeVdlaWdodEJ0YwkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUPYnRjTHBBc3NldElkU3RyCQDMCAIFDmJ0Y1Bvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRFvbk1vZGlmeVdlaWdodEJ0YwURb25Nb2RpZnlXZWlnaHRCdGMEEW9uTW9kaWZ5V2VpZ2h0RXRoCQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBQ9ldGhMcEFzc2V0SWRTdHIJAMwIAgUOZXRoUG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFEW9uTW9kaWZ5V2VpZ2h0RXRoBRFvbk1vZGlmeVdlaWdodEV0aAQUb25Nb2RpZnlXZWlnaHRFdGhCdGMJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFEmV0aEJ0Y0xwQXNzZXRJZFN0cgkAzAgCBRFldGhCdGNQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUUb25Nb2RpZnlXZWlnaHRFdGhCdGMFFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjBBZvbk1vZGlmeVdlaWdodFVzZGNVc2R0CQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBRR1c2RjVXNkdExwQXNzZXRJZFN0cgkAzAgCBRN1c2RjVXNkdFBvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRZvbk1vZGlmeVdlaWdodFVzZGNVc2R0BRZvbk1vZGlmeVdlaWdodFVzZGNVc2R0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxidGNXZWlnaHRLRVkFDGJ0Y1dlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZXRoV2VpZ2h0S0VZBQxldGhXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFD2V0aEJ0Y1dlaWdodEtFWQUPZXRoQnRjV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF1c2RjVXNkdFdlaWdodEtFWQURdXNkY1VzZHRXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUOYnRjUG9vbEFkZHJlc3MAAAUJYnRjV2VpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFDmV0aFBvb2xBZGRyZXNzAAAFCWV0aFdlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBRFldGhCdGNQb29sQWRkcmVzcwAABQ9ldGhCdGNXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUTdXNkY1VzZHRQb29sQWRkcmVzcwAABRF1c2RjVXNkdFdlaWdodE5ldwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQECWhhdmVMYWJlbAQHJG1hdGNoMAkAoAgBCQENa2V5V3hFbWlzc2lvbgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwkAlAoCBQNuaWwFCWhhdmVMYWJlbAFpARZzZXRXeEVtaXNzaW9uUG9vbExhYmVsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQLY2hlY2tDYWxsZXIJAQltdXN0QWRtaW4BBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQENa2V5V3hFbWlzc2lvbgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAYFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQLY2hlY2tDYWxsZXIDCQEIbXVzdFRoaXMBBQFpBgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleVd4RW1pc3Npb24CBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJvblZlcmlmaWNhdGlvbkxvc3MBB2Fzc2V0SWQEC2NoZWNrQ2FsbGVyAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAACAAYJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAtwcmljZUFzc2V0cwkBDmdldFByaWNlQXNzZXRzAAQUY2hlY2tQcmljZUFzc2V0c1NpemUDCQBmAgkAkAMBBQtwcmljZUFzc2V0cwAABgkAAgECFGludmFsaWQgcHJpY2UgYXNzZXRzAwkAAAIFFGNoZWNrUHJpY2VBc3NldHNTaXplBRRjaGVja1ByaWNlQXNzZXRzU2l6ZQoBAmNiAgNhY2MKcHJpY2VBc3NldAQBcgkA/AcEBQR0aGlzAhlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFB2Fzc2V0SWQJAMwIAgUKcHJpY2VBc3NldAUDbmlsBQNuaWwDCQAAAgUBcgUBcgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQHYWN0aW9ucwoAAiRsBQtwcmljZUFzc2V0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFBHVuaXQKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAmNiAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAxCQEFJGYwXzICCQEFJGYwXzECBQUkYWNjMAAAAAEDCQAAAgUHYWN0aW9ucwUHYWN0aW9ucwkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQELcG9vbEFkZHJlc3MECnBvb2xDb25maWcJAQ1nZXRQb29sQ29uZmlnAQULcG9vbEFkZHJlc3MEDmFzc2V0c0ludGVybmFsCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhJQW10QXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeElQcmljZUFzc2V0SWQEHnBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEha2V5UG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAQUOYXNzZXRzSW50ZXJuYWwHBCJhbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCQELdmFsdWVPckVsc2UCCQCgCAEJASVrZXlBbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAAcJAJQKAgUDbmlsAwUiYWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAYFHnBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAFpARBnZXRJbkZlZVJFQURPTkxZAQtwb29sQWRkcmVzcwQDZmVlCQEWaW50T3JEZWZhdWx0T3JGYWxsYmFjawMJAQhrZXlJbkZlZQEFC3Bvb2xBZGRyZXNzCQEPa2V5SW5GZWVEZWZhdWx0AAAACQCUCgIFA25pbAUDZmVlAWkBEWdldE91dEZlZVJFQURPTkxZAQtwb29sQWRkcmVzcwQDZmVlCQEWaW50T3JEZWZhdWx0T3JGYWxsYmFjawMJAQlrZXlPdXRGZWUBBQtwb29sQWRkcmVzcwkBEGtleU91dEZlZURlZmF1bHQACQBrAwAKBQVNVUxUOACQTgkAlAoCBQNuaWwFA2ZlZQFpARVnZXRQb29sU3RhdHVzUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQXNzZXRzCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleQudyio=", "chainId": 84, "height": 2460975, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5xxbHpLQ1J579DHTyCz9ZbVrAnvUqag8v2WQ9mpFWYLt Next: GVsQMFFRz2Aup8rcxdzD8TKzWCsCaMBRa7QNCskNEdMp Diff:
OldNewDifferences
7272 func H () = "%s__allowedLpStableAddonScriptHash"
7373
7474
75-func I () = "%s__swapContract"
75+func I () = "%s__factoryConfig"
7676
7777
78-func J () = "%s__factoryConfig"
78+func J () = "%s__lpTokensList"
7979
8080
81-func K () = "%s__lpTokensList"
81+func K () = "%s%s__pool__scriptHash"
8282
8383
84-func L () = "%s%s__pool__scriptHash"
84+func L () = "%s%s__matcher__publicKey"
8585
8686
87-func M () = "%s%s__matcher__publicKey"
87+func M () = "%s__legacyFactoryContract"
8888
8989
90-func N () = "%s__legacyFactoryContract"
90+func N () = "%s__legacyPools"
9191
9292
93-func O () = "%s__legacyPools"
93+func O () = "%s__managerPublicKey"
9494
9595
96-func P () = "%s__managerPublicKey"
96+func P () = "%s__pendingManagerPublicKey"
9797
9898
99-func Q () = "%s__pendingManagerPublicKey"
99+func Q () = "%s__adminPubKeys"
100100
101101
102-func R () = "%s__adminPubKeys"
102+func R () = "%s__assetsStoreContract"
103103
104104
105-func S () = "%s__assetsStoreContract"
105+func S () = "%s__votingEmissionContract"
106106
107107
108-func T () = "%s__votingEmissionContract"
108+func T () = makeString(["%s", "priceAssets"], j)
109109
110110
111-func U () = makeString(["%s", "priceAssets"], j)
111+func U () = "%s__priceDecimals"
112112
113113
114-func V () = "%s__priceDecimals"
114+func V () = "%s__shutdown"
115115
116116
117-func W () = "%s__shutdown"
117+func W () = "%s__nextInternalAssetId"
118118
119119
120-func X () = "%s__nextInternalAssetId"
120+func X (Y) = ("%s%s__poolWeight__" + Y)
121121
122122
123-func Y (Z) = ("%s%s__poolWeight__" + Z)
123+func Z (Y,aa) = ((("%s%s__poolWeight__" + Y) + "__") + toString(aa))
124124
125125
126-func aa (Z,ab) = ((("%s%s__poolWeight__" + Z) + "__") + toString(ab))
126+func ab (ac) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ac))
127127
128128
129-func ac (ad) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ad))
129+func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
130130
131131
132-func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
132+func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
133133
134134
135-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136-
137-
138-func aj (ak) = {
139- let al = ak
140- let ah = al._1
141- let ai = al._2
142- makeString(["%d%d%s", toString(ah), toString(ai), "oneTokenOperationsDisabled"], j)
135+func ai (aj) = {
136+ let ak = aj
137+ let ag = ak._1
138+ let ah = ak._2
139+ makeString(["%d%d%s", toString(ag), toString(ah), "oneTokenOperationsDisabled"], j)
143140 }
144141
145142
146-func am () = makeString(["%s", "oneTokenOperationsDisabled"], j)
143+func al () = makeString(["%s", "oneTokenOperationsDisabled"], j)
147144
148145
149-func an (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2Pool")
146+func am (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2Pool")
150147
151148
152-func ap (aq,ar) = (((("%d%d%s%s__" + aq) + "__") + ar) + "__mappings__PoolAssets2LpAsset")
149+func ao (ap,aq) = (((("%d%d%s%s__" + ap) + "__") + aq) + "__mappings__PoolAssets2LpAsset")
153150
154151
155-func as (Z) = ("%s%s__spread__" + Z)
152+func ar (Y) = ("%s%s__spread__" + Y)
156153
157154
158-func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2PoolAssets")
155+func as (at) = (("%s%s%s__" + at) + "__mappings__poolContract2PoolAssets")
159156
160157
161-func av (aq,ar) = (((("%d%d%s%s__" + toString(aq)) + "__") + toString(ar)) + "__mappings__poolAssets2PoolContract")
158+func au (ap,aq) = (((("%d%d%s%s__" + toString(ap)) + "__") + toString(aq)) + "__mappings__poolAssets2PoolContract")
162159
163160
164-func aw (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
161+func av (at) = (("%s%s%s__" + at) + "__mappings__poolContract2LpAsset")
165162
166163
167-func ax (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2PoolContract")
164+func aw (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2PoolContract")
168165
169166
170-func ay (az,aA) = ((("%s%s%s__wxEmission__" + az) + "__") + aA)
167+func ax (ay,az) = ((("%s%s%s__wxEmission__" + ay) + "__") + az)
171168
172169
173-func aB (Z) = ("%s%s__inFee__" + Z)
170+func aA (Y) = ("%s%s__inFee__" + Y)
174171
175172
176-func aC () = "%s__inFeeDefault"
173+func aB () = "%s__inFeeDefault"
177174
178175
179-func aD (Z) = ("%s%s__outFee__" + Z)
176+func aC (Y) = ("%s%s__outFee__" + Y)
180177
181178
182-func aE () = "%s__outFeeDefault"
179+func aD () = "%s__outFeeDefault"
183180
184181
185-func aF (aG) = valueOrErrorMessage(getString(this, aG), ("No data for this.key=" + aG))
182+func aE (aF) = valueOrErrorMessage(getString(this, aF), ("No data for this.key=" + aF))
186183
187184
188-func aH (aG) = valueOrErrorMessage(getBoolean(this, aG), ("No data for this.key=" + aG))
185+func aG (aF) = valueOrErrorMessage(getBoolean(this, aF), ("No data for this.key=" + aF))
189186
190187
191-func aI (aG) = valueOrErrorMessage(getInteger(this, aG), ("No data for this.key=" + aG))
188+func aH (aF) = valueOrErrorMessage(getInteger(this, aF), ("No data for this.key=" + aF))
192189
193190
194-let aJ = 1
191+let aI = 1
195192
196-let aK = 2
193+let aJ = 2
197194
198-let aL = 3
195+let aK = 3
199196
200-let aM = 4
197+let aL = 4
201198
202-let aN = 5
199+let aM = 5
203200
204-let aO = 6
201+let aN = 6
205202
206-let aP = 7
203+let aO = 7
207204
208-let aQ = 8
205+let aP = 8
209206
210-let aR = 9
207+let aQ = 9
211208
212-let aS = 10
209+let aR = 10
213210
214-let aT = 11
211+let aS = 11
215212
216-func aU (aV) = addressFromStringValue(aV[aK])
213+func aT (aU) = addressFromStringValue(aU[aJ])
217214
218215
219-func aW (aV) = addressFromStringValue(aV[aN])
216+func aV (aU) = addressFromStringValue(aU[aM])
220217
221218
222-func aX (aV) = addressFromStringValue(aV[aJ])
219+func aW (aU) = addressFromStringValue(aU[aI])
223220
224221
225-func aY (aV) = addressFromStringValue(aV[aS])
222+func aX (aU) = addressFromStringValue(aU[aR])
226223
227224
228-func aZ () = {
229- let ba = getString(U())
230- if ($isInstanceOf(ba, "String"))
225+func aY () = {
226+ let aZ = getString(T())
227+ if ($isInstanceOf(aZ, "String"))
231228 then {
232- let bb = ba
233- if ((size(bb) == 0))
229+ let ba = aZ
230+ if ((size(ba) == 0))
234231 then nil
235- else split(bb, j)
232+ else split(ba, j)
236233 }
237234 else nil
238235 }
239236
240237
241-func bc () = {
242- let ba = getString(P())
243- if ($isInstanceOf(ba, "String"))
238+func bb () = {
239+ let aZ = getString(O())
240+ if ($isInstanceOf(aZ, "String"))
244241 then {
245- let bb = ba
246- fromBase58String(bb)
242+ let ba = aZ
243+ fromBase58String(ba)
247244 }
248- else if ($isInstanceOf(ba, "Unit"))
245+ else if ($isInstanceOf(aZ, "Unit"))
249246 then unit
250247 else throw("Match error")
251248 }
252249
253250
254-func bd () = {
255- let ba = getString(Q())
256- if ($isInstanceOf(ba, "String"))
251+func bc () = {
252+ let aZ = getString(P())
253+ if ($isInstanceOf(aZ, "String"))
257254 then {
258- let bb = ba
259- fromBase58String(bb)
255+ let ba = aZ
256+ fromBase58String(ba)
260257 }
261- else if ($isInstanceOf(ba, "Unit"))
258+ else if ($isInstanceOf(aZ, "Unit"))
262259 then unit
263260 else throw("Match error")
264261 }
265262
266263
267-let be = throw("Permission denied")
264+let bd = throw("Permission denied")
268265
269-let bf = throw("Test error here")
270-
271-func bg (bh) = if ((bh.caller == this))
266+func be (bf) = if ((bf.caller == this))
272267 then true
273- else be
268+ else bd
274269
275270
276-func bi (bh) = {
277- let ba = bc()
278- if ($isInstanceOf(ba, "ByteVector"))
271+func bg (bf) = {
272+ let aZ = bb()
273+ if ($isInstanceOf(aZ, "ByteVector"))
279274 then {
280- let bj = ba
281- if ((bh.callerPublicKey == bj))
275+ let bh = aZ
276+ if ((bf.callerPublicKey == bh))
282277 then true
283- else be
278+ else bd
284279 }
285- else if ($isInstanceOf(ba, "Unit"))
286- then bg(bh)
280+ else if ($isInstanceOf(aZ, "Unit"))
281+ then be(bf)
287282 else throw("Match error")
288283 }
289284
290285
291-func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv], j)
286+func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt], j)
292287
293288
294-func bw (bl,bm,bn,bo,bp,bq,br) = makeString(["%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br], j)
289+func bu (bj,bk,bl,bm,bn,bo,bp) = makeString(["%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp], j)
295290
296291
297-func bx (Z,by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Z, by, bz, bA, bB, toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), bH], j)
292+func bv (Y,bw,bx,by,bz,bA,bB,bC,bD,bE,bF) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Y, bw, bx, by, bz, toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), bF], j)
298293
299294
300-func bI (bJ,bK) = makeString(["%d%d", toString(bJ), toString(bK)], j)
295+func bG (bH,bI) = makeString(["%d%d", toString(bH), toString(bI)], j)
301296
302297
303-func bL (Z) = {
304- let bM = split(aF(at(Z)), j)
305- let ah = bM[1]
306- let ai = bM[2]
307- split(aF(ag(ah, ai)), j)
298+func bJ (Y) = {
299+ let bK = split(aE(as(Y)), j)
300+ let ag = bK[1]
301+ let ah = bK[2]
302+ split(aE(af(ag, ah)), j)
308303 }
309304
310305
311-func bN (bO,bP) = {
312- let bQ = valueOrElse(getInteger(this, ae(bO)), 0)
313- let bR = valueOrElse(getInteger(this, X()), 0)
314- let bS = if ((bQ == 0))
306+func bL (bM,bN) = {
307+ let bO = valueOrElse(getInteger(this, ad(bM)), 0)
308+ let bP = valueOrElse(getInteger(this, W()), 0)
309+ let bQ = if ((bO == 0))
315310 then {
316- let bT = (bR + bP)
317- $Tuple3(bT, [IntegerEntry(X(), bT), IntegerEntry(ae(bO), bT), StringEntry(ac(bT), bO)], true)
311+ let bR = (bP + bN)
312+ $Tuple3(bR, [IntegerEntry(W(), bR), IntegerEntry(ad(bM), bR), StringEntry(ab(bR), bM)], true)
318313 }
319- else $Tuple3(bQ, nil, false)
320- bS
314+ else $Tuple3(bO, nil, false)
315+ bQ
321316 }
322317
323318
324-func bU (bh) = {
325- let bV = split(valueOrElse(getString(R()), k), j)
326- if (containsElement(bV, toBase58String(bh.callerPublicKey)))
319+func bS (bf) = {
320+ let bT = split(valueOrElse(getString(Q()), k), j)
321+ if (containsElement(bT, toBase58String(bf.callerPublicKey)))
327322 then true
328323 else {
329- let bW = bi(bh)
330- if ((bW == bW))
324+ let bU = bg(bf)
325+ if ((bU == bU))
331326 then true
332327 else throw("Strict value is not equal to itself.")
333328 }
334329 }
335330
336331
337-func bX (aG,bY,bZ) = valueOrElse(getInteger(this, aG), valueOrElse(getInteger(this, bY), bZ))
332+func bV (aF,bW,bX) = valueOrElse(getInteger(this, aF), valueOrElse(getInteger(this, bW), bX))
338333
339334
340-func ca (az,aA) = {
341- let ah = getInteger(ae(az))
342- let ai = getInteger(ae(aA))
343- if (if ((ah == unit))
344- then true
345- else (ai == unit))
346- then false
347- else {
348- let cb = toString(value(ah))
349- let cc = toString(value(ai))
350- let cd = getString(ag(cb, cc))
351- let ce = getString(ag(cc, cb))
352- let cf = if ((cd != unit))
353- then true
354- else (ce != unit)
355- cf
356- }
357- }
358-
359-
360-@Callable(bh)
361-func getSwapContractREADONLY () = $Tuple2(nil, aF(I()))
362-
363-
364-
365-@Callable(bh)
366-func getLpAssetFromPoolAssetsREADONLY (cg,ch) = if (if ((cg == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
367- then (ch == "WAVES")
368- else false)
369- then $Tuple2(nil, unit)
370- else {
371- let ci = value(getInteger(this, ae(cg)))
372- let cj = value(getInteger(this, ae(ch)))
373- let ck = getString(this, ap(toString(ci), toString(cj)))
374- let cl = if ((ck == unit))
375- then unit
376- else drop(value(ck), 4)
377- $Tuple2(nil, cl)
378- }
379-
380-
381-
382-@Callable(bh)
383-func getPoolAddressFromLpAssetREADONLY (cm) = $Tuple2(nil, valueOrElse(getString(this, ax(cm)), ""))
384-
385-
386-
387-@Callable(bh)
388-func constructor (cn,co,bn,bo,bp,bq,cp,cq) = {
389- let cr = bi(bh)
390- if ((cr == cr))
391- then [StringEntry(J(), bw(cn, co, bn, bo, bp, bq, cp)), IntegerEntry(V(), cq)]
335+@Callable(bf)
336+func constructor (bY,bZ,bl,bm,bn,bo,ca,cb) = {
337+ let cc = bg(bf)
338+ if ((cc == cc))
339+ then [StringEntry(I(), bu(bY, bZ, bl, bm, bn, bo, ca)), IntegerEntry(U(), cb)]
392340 else throw("Strict value is not equal to itself.")
393341 }
394342
395343
396344
397-@Callable(bh)
398-func constructorV2 (cs) = {
399- let cr = bi(bh)
400- if ((cr == cr))
345+@Callable(bf)
346+func constructorV2 (cd) = {
347+ let cc = bg(bf)
348+ if ((cc == cc))
401349 then {
402- let ct = addressFromPublicKey(fromBase58String(cs))
403- if ((ct == ct))
404- then [StringEntry(M(), cs)]
350+ let ce = addressFromPublicKey(fromBase58String(cd))
351+ if ((ce == ce))
352+ then [StringEntry(L(), cd)]
405353 else throw("Strict value is not equal to itself.")
406354 }
407355 else throw("Strict value is not equal to itself.")
409357
410358
411359
412-@Callable(bh)
413-func constructorV3 (bs,bt,bu,bv) = {
414- let cr = bi(bh)
415- if ((cr == cr))
360+@Callable(bf)
361+func constructorV3 (bq,br,bs,bt) = {
362+ let cc = bg(bf)
363+ if ((cc == cc))
416364 then {
417- let aV = split(aF(J()), j)
418-[StringEntry(J(), bk(aV[1], aV[2], aV[3], aV[4], aV[5], aV[6], aV[7], bs, bt, bu, bv))]
365+ let aU = split(aE(I()), j)
366+[StringEntry(I(), bi(aU[1], aU[2], aU[3], aU[4], aU[5], aU[6], aU[7], bq, br, bs, bt))]
419367 }
420368 else throw("Strict value is not equal to itself.")
421369 }
422370
423371
424372
425-@Callable(bh)
426-func constructorV4 (cu,cv) = {
427- let cr = bi(bh)
428- if ((cr == cr))
429- then [StringEntry(N(), cu), StringEntry(O(), makeString(cv, j))]
373+@Callable(bf)
374+func constructorV4 (cf,cg) = {
375+ let cc = bg(bf)
376+ if ((cc == cc))
377+ then [StringEntry(M(), cf), StringEntry(N(), makeString(cg, j))]
430378 else throw("Strict value is not equal to itself.")
431379 }
432380
433381
434382
435-@Callable(bh)
436-func constructorV5 (cw) = {
437- let cr = bi(bh)
438- if ((cr == cr))
439- then [StringEntry(S(), cw)]
383+@Callable(bf)
384+func constructorV5 (ch) = {
385+ let cc = bg(bf)
386+ if ((cc == cc))
387+ then [StringEntry(R(), ch)]
440388 else throw("Strict value is not equal to itself.")
441389 }
442390
443391
444392
445-@Callable(bh)
446-func constructorV6 (cx,cy) = {
447- let cz = [bi(bh), if ((addressFromString(cx) != unit))
393+@Callable(bf)
394+func constructorV6 (ci,cj) = {
395+ let ck = [bg(bf), if ((addressFromString(ci) != unit))
448396 then true
449397 else "invalid voting emission contract address"]
450- if ((cz == cz))
451- then [StringEntry(T(), cx), StringEntry(U(), makeString(cy, j))]
398+ if ((ck == ck))
399+ then [StringEntry(S(), ci), StringEntry(T(), makeString(cj, j))]
452400 else throw("Strict value is not equal to itself.")
453401 }
454402
455403
456404
457-@Callable(bh)
458-func setManager (cA) = {
459- let cr = bi(bh)
460- if ((cr == cr))
405+@Callable(bf)
406+func setManager (cl) = {
407+ let cc = bg(bf)
408+ if ((cc == cc))
461409 then {
462- let cB = fromBase58String(cA)
463- if ((cB == cB))
464- then [StringEntry(Q(), cA)]
410+ let cm = fromBase58String(cl)
411+ if ((cm == cm))
412+ then [StringEntry(P(), cl)]
465413 else throw("Strict value is not equal to itself.")
466414 }
467415 else throw("Strict value is not equal to itself.")
469417
470418
471419
472-@Callable(bh)
420+@Callable(bf)
473421 func confirmManager () = {
474- let cC = bd()
475- let cD = if (isDefined(cC))
422+ let cn = bc()
423+ let co = if (isDefined(cn))
476424 then true
477425 else throw("No pending manager")
478- if ((cD == cD))
426+ if ((co == co))
479427 then {
480- let cE = if ((bh.callerPublicKey == value(cC)))
428+ let cp = if ((bf.callerPublicKey == value(cn)))
481429 then true
482430 else throw("You are not pending manager")
483- if ((cE == cE))
484- then [StringEntry(P(), toBase58String(value(cC))), DeleteEntry(Q())]
431+ if ((cp == cp))
432+ then [StringEntry(O(), toBase58String(value(cn))), DeleteEntry(P())]
485433 else throw("Strict value is not equal to itself.")
486434 }
487435 else throw("Strict value is not equal to itself.")
489437
490438
491439
492-@Callable(bh)
493-func setAdmins (cF) = {
494- let cr = bi(bh)
495- if ((cr == cr))
496- then [StringEntry(R(), makeString(cF, j))]
440+@Callable(bf)
441+func setAdmins (cq) = {
442+ let cc = bg(bf)
443+ if ((cc == cc))
444+ then [StringEntry(Q(), makeString(cq, j))]
497445 else throw("Strict value is not equal to itself.")
498446 }
499447
500448
501449
502-@Callable(bh)
503-func activateNewPool (Z,bA,bB,cG,cH,cI,bH,cJ) = {
504- let cr = bU(bh)
505- if ((cr == cr))
506- then if (isDefined(getString(at(Z))))
507- then throw((("Pool address " + Z) + " already registered."))
450+@Callable(bf)
451+func activateNewPool (Y,by,bz,cr,cs,ct,bF,cu) = {
452+ let cc = bS(bf)
453+ if ((cc == cc))
454+ then if (isDefined(getString(as(Y))))
455+ then throw((("Pool address " + Y) + " already registered."))
508456 else {
509- let cK = bN(bA, 1)
510- let cL = cK._1
511- let cM = bN(bB, if (cK._3)
457+ let cv = bL(by, 1)
458+ let cw = cv._1
459+ let cx = bL(bz, if (cv._3)
512460 then 2
513461 else 1)
514- let cN = cM._1
515- let cO = valueOrErrorMessage(scriptHash(addressFromStringValue(Z)), ("No script has been found on pool account " + Z))
516- let cP = getBinaryValue(L())
517- let cQ = ca(bA, bB)
518- if (cQ)
519- then throw((((("Pool " + bA) + "/") + bB) + " has already been activated."))
462+ let cy = cx._1
463+ let cz = valueOrErrorMessage(scriptHash(addressFromStringValue(Y)), ("No script has been found on pool account " + Y))
464+ let cA = getBinaryValue(K())
465+ let cB = getString(this, af(toString(cw), toString(cy)))
466+ if (isDefined(cB))
467+ then throw((((("Pool " + by) + "/") + bz) + " has already been activated."))
520468 else {
521- let cR = value(getString(this, ag(toString(cL), toString(cN))))
522- let cS = if ((bA == "WAVES"))
469+ let cC = value(getString(this, af(toString(cw), toString(cy))))
470+ let cD = if ((by == "WAVES"))
523471 then i
524- else pow(10, 0, value(assetInfo(fromBase58String(bA))).decimals, 0, 0, DOWN)
525- let cT = if ((bB == "WAVES"))
472+ else pow(10, 0, value(assetInfo(fromBase58String(by))).decimals, 0, 0, DOWN)
473+ let cE = if ((bz == "WAVES"))
526474 then i
527- else pow(10, 0, value(assetInfo(fromBase58String(bB))).decimals, 0, 0, DOWN)
528- let cU = Issue(cG, cH, 1, 8, true)
529- let bz = calculateAssetId(cU)
530- let cV = toBase58String(bz)
531- let cW = invoke(addressFromStringValue(Z), "activate", [bA, bB], nil)
532- if ((cW == cW))
533- then if ((cW != "success"))
475+ else pow(10, 0, value(assetInfo(fromBase58String(bz))).decimals, 0, 0, DOWN)
476+ let cF = Issue(cr, cs, 1, 8, true)
477+ let bx = calculateAssetId(cF)
478+ let cG = toBase58String(bx)
479+ let cH = invoke(addressFromStringValue(Y), "activate", [by, bz], nil)
480+ if ((cH == cH))
481+ then if ((cH != "success"))
534482 then throw("Pool initialisation error happened.")
535483 else {
536- let cw = addressFromStringValue(aF(S()))
537- let cX = invoke(cw, "createOrUpdate", [cV, cG, false], nil)
538- if ((cX == cX))
484+ let ch = addressFromStringValue(aE(R()))
485+ let cI = invoke(ch, "createOrUpdate", [cG, cr, false], nil)
486+ if ((cI == cI))
539487 then {
540- let cY = invoke(cw, "addLabel", [cV, g], nil)
541- if ((cY == cY))
488+ let cJ = invoke(ch, "addLabel", [cG, g], nil)
489+ if ((cJ == cJ))
542490 then {
543- let cZ = invoke(cw, "setLogo", [cV, cJ], nil)
544- if ((cZ == cZ))
491+ let cK = invoke(ch, "setLogo", [cG, cu], nil)
492+ if ((cK == cK))
545493 then {
546- let da = invoke(cw, "addAssetsLink", [bA, bB, cV], nil)
547- if ((da == da))
494+ let cL = invoke(ch, "addAssetsLink", [by, bz, cG], nil)
495+ if ((cL == cL))
548496 then {
549- let db = invoke(cw, "increaseAssetPoolsNumber", [bA], nil)
550- if ((db == db))
551- then $Tuple2(((cK._2 ++ cM._2) ++ [cU, Burn(bz, 1), StringEntry(ag(toString(cL), toString(cN)), bx(Z, toString(l), cV, bA, bB, cS, cT, cL, cN, i, bH)), StringEntry(an(cV), bI(cL, cN)), StringEntry(ap(toString(cL), toString(cN)), ("%s__" + cV)), StringEntry(at(Z), bI(cL, cN)), StringEntry(av(cL, cN), Z), StringEntry(ax(cV), Z), StringEntry(aw(Z), cV), IntegerEntry(Y(Z), cI), IntegerEntry(as(Z), h)]), cV)
497+ let cM = invoke(ch, "increaseAssetPoolsNumber", [by], nil)
498+ if ((cM == cM))
499+ then $Tuple2(((cv._2 ++ cx._2) ++ [cF, Burn(bx, 1), StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(l), cG, by, bz, cD, cE, cw, cy, i, bF)), StringEntry(am(cG), bG(cw, cy)), StringEntry(ao(toString(cw), toString(cy)), ("%s__" + cG)), StringEntry(as(Y), bG(cw, cy)), StringEntry(au(cw, cy), Y), StringEntry(aw(cG), Y), StringEntry(av(Y), cG), IntegerEntry(X(Y), ct), IntegerEntry(ar(Y), h)]), cG)
552500 else throw("Strict value is not equal to itself.")
553501 }
554502 else throw("Strict value is not equal to itself.")
567515
568516
569517
570-@Callable(bh)
571-func managePool (Z,dc) = {
572- let cr = bi(bh)
573- if ((cr == cr))
518+@Callable(bf)
519+func managePool (Y,cN) = {
520+ let cc = bg(bf)
521+ if ((cc == cc))
574522 then {
575- let dd = bL(Z)
576- let by = dd[t]
577- let cV = dd[u]
578- let bA = dd[v]
579- let bB = dd[w]
580- let cS = parseIntValue(dd[x])
581- let cT = parseIntValue(dd[y])
582- let cL = parseIntValue(dd[z])
583- let cN = parseIntValue(dd[A])
584- let de = parseIntValue(dd[B])
585- let bH = dd[C]
586-[StringEntry(ag(toString(cL), toString(cN)), bx(Z, toString(dc), cV, bA, bB, cS, cT, cL, cN, de, bH))]
523+ let cB = bJ(Y)
524+ let bw = cB[t]
525+ let cG = cB[u]
526+ let by = cB[v]
527+ let bz = cB[w]
528+ let cD = parseIntValue(cB[x])
529+ let cE = parseIntValue(cB[y])
530+ let cw = parseIntValue(cB[z])
531+ let cy = parseIntValue(cB[A])
532+ let cO = parseIntValue(cB[B])
533+ let bF = cB[C]
534+[StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(cN), cG, by, bz, cD, cE, cw, cy, cO, bF))]
587535 }
588536 else throw("Strict value is not equal to itself.")
589537 }
590538
591539
592540
593-@Callable(bh)
594-func emit (df) = {
595- let dg = bh.caller
596- let dh = bh.originCaller
597- let di = valueOrErrorMessage(getString(aw(toString(dg))), "Invalid LP address called me.")
598- let dj = fromBase58String(di)
599- let cv = split(valueOrElse(getString(O()), k), j)
600- let cu = addressFromStringValue(valueOrErrorMessage(getString(N()), "Legacy factory contract does not exists."))
601- if ((0 >= df))
541+@Callable(bf)
542+func emit (cP) = {
543+ let cQ = bf.caller
544+ let cR = bf.originCaller
545+ let cS = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
546+ let cT = fromBase58String(cS)
547+ let cg = split(valueOrElse(getString(N()), k), j)
548+ let cf = addressFromStringValue(valueOrErrorMessage(getString(M()), "Legacy factory contract does not exists."))
549+ if ((0 >= cP))
602550 then nil
603- else if (containsElement(cv, toString(dg)))
604- then $Tuple2(nil, cu)
605- else $Tuple2([Reissue(dj, df, true), ScriptTransfer(bh.caller, df, dj)], "success")
551+ else if (containsElement(cg, toString(cQ)))
552+ then $Tuple2(nil, cf)
553+ else $Tuple2([Reissue(cT, cP, true), ScriptTransfer(bf.caller, cP, cT)], "success")
606554 }
607555
608556
609557
610-@Callable(bh)
611-func burn (dk) = {
612- let dg = bh.caller
613- let dh = bh.originCaller
614- let dl = value(bh.payments[0])
615- let dm = value(dl.amount)
616- let dn = toBase58String(value(dl.assetId))
617- let do = valueOrErrorMessage(getString(aw(toString(dg))), "Invalid LP address called me.")
618- if ((dn != do))
558+@Callable(bf)
559+func burn (cU) = {
560+ let cQ = bf.caller
561+ let cR = bf.originCaller
562+ let cV = value(bf.payments[0])
563+ let cW = value(cV.amount)
564+ let cX = toBase58String(value(cV.assetId))
565+ let cY = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
566+ if ((cX != cY))
619567 then throw("Invalid asset passed.")
620- else if ((dk != dm))
568+ else if ((cU != cW))
621569 then throw("Invalid amount passed.")
622570 else {
623- let dj = fromBase58String(do)
624- $Tuple2([Burn(dj, dk)], "success")
571+ let cT = fromBase58String(cY)
572+ $Tuple2([Burn(cT, cU)], "success")
625573 }
626574 }
627575
628576
629577
630-@Callable(bh)
631-func modifyWeight (bz,dp) = {
632- let cr = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, T()), "")))
578+@Callable(bf)
579+func modifyWeight (bx,cZ) = {
580+ let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, S()), "")))
633581 then true
634- else bi(bh)
635- if ((cr == cr))
582+ else bg(bf)
583+ if ((cc == cc))
636584 then {
637- let au = aF(ax(bz))
638- let dq = Y(au)
639- let dr = Y(f)
640- let ds = valueOrElse(getInteger(dr), 0)
641- let cI = valueOrElse(getInteger(dq), 0)
642- let dt = dp
643- let aV = split(aF(J()), j)
644- let cn = aX(aV)
645- let du = invoke(cn, "onModifyWeight", [bz, au], nil)
646- if ((du == du))
585+ let at = aE(aw(bx))
586+ let da = X(at)
587+ let db = X(f)
588+ let dc = valueOrElse(getInteger(db), 0)
589+ let ct = valueOrElse(getInteger(da), 0)
590+ let dd = cZ
591+ let aU = split(aE(I()), j)
592+ let bY = aW(aU)
593+ let de = invoke(bY, "onModifyWeight", [bx, at], nil)
594+ if ((de == de))
647595 then {
648- let dv = if ((ds == 0))
596+ let df = if ((dc == 0))
649597 then nil
650- else [IntegerEntry(dr, 0)]
651- let dw = aa(au, 0)
652- let dx = getInteger(dw)
653- let dy = if ((dx == unit))
598+ else [IntegerEntry(db, 0)]
599+ let dg = Z(at, 0)
600+ let dh = getInteger(dg)
601+ let di = if ((dh == unit))
654602 then nil
655- else [DeleteEntry(dw)]
656- (([IntegerEntry(dq, dt)] ++ dv) ++ dy)
603+ else [DeleteEntry(dg)]
604+ (([IntegerEntry(da, dd)] ++ df) ++ di)
657605 }
658606 else throw("Strict value is not equal to itself.")
659607 }
662610
663611
664612
665-@Callable(bh)
666-func modifyWeights (dz,dA,dB,dC) = {
667- let cr = bi(bh)
668- if ((cr == cr))
613+@Callable(bf)
614+func modifyWeights (dj,dk,dl,dm) = {
615+ let cc = bg(bf)
616+ if ((cc == cc))
669617 then {
670- let dD = ((5 * e) / 100)
671- let dE = ((5 * e) / 100)
672- let dF = ((5 * e) / 100)
673- let aV = split(aF(J()), j)
674- let dG = aX(aV)
675- let dH = aY(aV)
676- let dI = Y(dz)
677- let dJ = Y(dA)
678- let dK = Y(dB)
679- let dL = Y(dC)
680- let dM = aI(dI)
681- let dN = aI(dJ)
682- let dO = (dM - dF)
683- let dP = (dN - dF)
684- if ((0 >= dO))
685- then throw(("invalid btcWeightNew: " + toString(dO)))
686- else if ((0 >= dP))
687- then throw(("invalid ethWeightNew: " + toString(dP)))
618+ let dn = ((5 * e) / 100)
619+ let do = ((5 * e) / 100)
620+ let dp = ((5 * e) / 100)
621+ let aU = split(aE(I()), j)
622+ let dq = aW(aU)
623+ let dr = aX(aU)
624+ let ds = X(dj)
625+ let dt = X(dk)
626+ let du = X(dl)
627+ let dv = X(dm)
628+ let dw = aH(ds)
629+ let dx = aH(dt)
630+ let dy = (dw - dp)
631+ let dz = (dx - dp)
632+ if ((0 >= dy))
633+ then throw(("invalid btcWeightNew: " + toString(dy)))
634+ else if ((0 >= dz))
635+ then throw(("invalid ethWeightNew: " + toString(dz)))
688636 else {
689- let dQ = aF(aw(dz))
690- let dR = aF(aw(dA))
691- let dS = aF(aw(dB))
692- let dT = aF(aw(dC))
693- let dU = invoke(dG, "onModifyWeight", [dQ, dz], nil)
694- if ((dU == dU))
637+ let dA = aE(av(dj))
638+ let dB = aE(av(dk))
639+ let dC = aE(av(dl))
640+ let dD = aE(av(dm))
641+ let dE = invoke(dq, "onModifyWeight", [dA, dj], nil)
642+ if ((dE == dE))
695643 then {
696- let dV = invoke(dG, "onModifyWeight", [dR, dA], nil)
697- if ((dV == dV))
644+ let dF = invoke(dq, "onModifyWeight", [dB, dk], nil)
645+ if ((dF == dF))
698646 then {
699- let dW = invoke(dG, "onModifyWeight", [dS, dB], nil)
700- if ((dW == dW))
647+ let dG = invoke(dq, "onModifyWeight", [dC, dl], nil)
648+ if ((dG == dG))
701649 then {
702- let dX = invoke(dG, "onModifyWeight", [dT, dC], nil)
703- if ((dX == dX))
704- then [IntegerEntry(dI, dO), IntegerEntry(dJ, dP), IntegerEntry(dK, dD), IntegerEntry(dL, dE), IntegerEntry(aa(dz, 0), dM), IntegerEntry(aa(dA, 0), dN), IntegerEntry(aa(dB, 0), dD), IntegerEntry(aa(dC, 0), dE)]
650+ let dH = invoke(dq, "onModifyWeight", [dD, dm], nil)
651+ if ((dH == dH))
652+ then [IntegerEntry(ds, dy), IntegerEntry(dt, dz), IntegerEntry(du, dn), IntegerEntry(dv, do), IntegerEntry(Z(dj, 0), dw), IntegerEntry(Z(dk, 0), dx), IntegerEntry(Z(dl, 0), dn), IntegerEntry(Z(dm, 0), do)]
705653 else throw("Strict value is not equal to itself.")
706654 }
707655 else throw("Strict value is not equal to itself.")
716664
717665
718666
719-@Callable(bh)
720-func checkWxEmissionPoolLabel (az,aA) = {
721- let dY = {
722- let ba = getBoolean(ay(az, aA))
723- if ($isInstanceOf(ba, "Boolean"))
667+@Callable(bf)
668+func checkWxEmissionPoolLabel (ay,az) = {
669+ let dI = {
670+ let aZ = getBoolean(ax(ay, az))
671+ if ($isInstanceOf(aZ, "Boolean"))
724672 then {
725- let dZ = ba
726- dZ
673+ let dJ = aZ
674+ dJ
727675 }
728676 else false
729677 }
730- $Tuple2(nil, dY)
678+ $Tuple2(nil, dI)
731679 }
732680
733681
734682
735-@Callable(bh)
736-func setWxEmissionPoolLabel (az,aA) = {
737- let cr = bU(bh)
738- if ((cr == cr))
739- then $Tuple2([BooleanEntry(ay(az, aA), true)], unit)
683+@Callable(bf)
684+func setWxEmissionPoolLabel (ay,az) = {
685+ let cc = bS(bf)
686+ if ((cc == cc))
687+ then $Tuple2([BooleanEntry(ax(ay, az), true)], unit)
740688 else throw("Strict value is not equal to itself.")
741689 }
742690
743691
744692
745-@Callable(bh)
746-func deleteWxEmissionPoolLabel (az,aA) = {
747- let cr = if (bg(bh))
693+@Callable(bf)
694+func deleteWxEmissionPoolLabel (ay,az) = {
695+ let cc = if (be(bf))
748696 then true
749- else bU(bh)
750- if ((cr == cr))
751- then $Tuple2([DeleteEntry(ay(az, aA))], unit)
697+ else bS(bf)
698+ if ((cc == cc))
699+ then $Tuple2([DeleteEntry(ax(ay, az))], unit)
752700 else throw("Strict value is not equal to itself.")
753701 }
754702
755703
756704
757-@Callable(bh)
758-func onVerificationLoss (ea) = {
759- let cr = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, S()), "")))
705+@Callable(bf)
706+func onVerificationLoss (dK) = {
707+ let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, R()), "")))
760708 then true
761- else bi(bh)
762- if ((cr == cr))
709+ else bg(bf)
710+ if ((cc == cc))
763711 then {
764- let cy = aZ()
765- let eb = if ((size(cy) > 0))
712+ let cj = aY()
713+ let dL = if ((size(cj) > 0))
766714 then true
767715 else throw("invalid price assets")
768- if ((eb == eb))
716+ if ((dL == dL))
769717 then {
770- func ec (ed,ee) = {
771- let ef = invoke(this, "deleteWxEmissionPoolLabel", [ea, ee], nil)
772- if ((ef == ef))
718+ func dM (dN,dO) = {
719+ let dP = invoke(this, "deleteWxEmissionPoolLabel", [dK, dO], nil)
720+ if ((dP == dP))
773721 then unit
774722 else throw("Strict value is not equal to itself.")
775723 }
776724
777- let eg = {
778- let eh = cy
779- let ei = size(eh)
780- let ej = unit
781- func ek (el,em) = if ((em >= ei))
782- then el
783- else ec(el, eh[em])
725+ let dQ = {
726+ let dR = cj
727+ let dS = size(dR)
728+ let dT = unit
729+ func dU (dV,dW) = if ((dW >= dS))
730+ then dV
731+ else dM(dV, dR[dW])
784732
785- func en (el,em) = if ((em >= ei))
786- then el
733+ func dX (dV,dW) = if ((dW >= dS))
734+ then dV
787735 else throw("List size exceeds 1")
788736
789- en(ek(ej, 0), 1)
737+ dX(dU(dT, 0), 1)
790738 }
791- if ((eg == eg))
739+ if ((dQ == dQ))
792740 then $Tuple2(nil, unit)
793741 else throw("Strict value is not equal to itself.")
794742 }
799747
800748
801749
802-@Callable(bh)
803-func isPoolOneTokenOperationsDisabledREADONLY (Z) = {
804- let dd = bL(Z)
805- let ak = $Tuple2(parseIntValue(dd[z]), parseIntValue(dd[A]))
806- let eo = valueOrElse(getBoolean(aj(ak)), false)
807- let ep = valueOrElse(getBoolean(am()), false)
808- $Tuple2(nil, if (ep)
750+@Callable(bf)
751+func isPoolOneTokenOperationsDisabledREADONLY (Y) = {
752+ let cB = bJ(Y)
753+ let aj = $Tuple2(parseIntValue(cB[z]), parseIntValue(cB[A]))
754+ let dY = valueOrElse(getBoolean(ai(aj)), false)
755+ let dZ = valueOrElse(getBoolean(al()), false)
756+ $Tuple2(nil, if (dZ)
809757 then true
810- else eo)
758+ else dY)
811759 }
812760
813761
814762
815-@Callable(bh)
816-func getInFeeREADONLY (Z) = {
817- let eq = bX(aB(Z), aC(), 0)
818- $Tuple2(nil, eq)
763+@Callable(bf)
764+func getInFeeREADONLY (Y) = {
765+ let ea = bV(aA(Y), aB(), 0)
766+ $Tuple2(nil, ea)
819767 }
820768
821769
822770
823-@Callable(bh)
824-func getOutFeeREADONLY (Z) = {
825- let eq = bX(aD(Z), aE(), fraction(10, b, 10000))
826- $Tuple2(nil, eq)
771+@Callable(bf)
772+func getOutFeeREADONLY (Y) = {
773+ let ea = bV(aC(Y), aD(), fraction(10, b, 10000))
774+ $Tuple2(nil, ea)
827775 }
828776
829777
830778
831-@Callable(bh)
832-func getPoolStatusREADONLY (Z) = {
833- let bM = split(aF(at(Z)), j)
834- let ah = bM[1]
835- let ai = bM[2]
836- let cd = split(aF(ag(ah, ai)), j)
837- $Tuple2(nil, parseIntValue(cd[t]))
779+@Callable(bf)
780+func getPoolStatusREADONLY (Y) = {
781+ let bK = split(aE(as(Y)), j)
782+ let ag = bK[1]
783+ let ah = bK[2]
784+ let eb = split(aE(af(ag, ah)), j)
785+ $Tuple2(nil, parseIntValue(eb[t]))
838786 }
839787
840788
841-
842-@Callable(bh)
843-func getPoolConfigREADONLY (Z) = {
844- let bM = split(aF(at(Z)), j)
845- let ah = bM[1]
846- let ai = bM[2]
847- let cd = split(aF(ag(ah, ai)), j)
848- $Tuple2(nil, cd)
849- }
850-
851-
852-
853-@Callable(bh)
854-func poolExistsREADONLY (az,aA) = $Tuple2(nil, ca(az, aA))
855-
856-
857-@Verifier(er)
858-func es () = {
859- let et = {
860- let ba = bc()
861- if ($isInstanceOf(ba, "ByteVector"))
789+@Verifier(ec)
790+func ed () = {
791+ let ee = {
792+ let aZ = bb()
793+ if ($isInstanceOf(aZ, "ByteVector"))
862794 then {
863- let bj = ba
864- bj
795+ let bh = aZ
796+ bh
865797 }
866- else if ($isInstanceOf(ba, "Unit"))
867- then er.senderPublicKey
798+ else if ($isInstanceOf(aZ, "Unit"))
799+ then ec.senderPublicKey
868800 else throw("Match error")
869801 }
870- sigVerify(er.bodyBytes, er.proofs[0], et)
802+ sigVerify(ec.bodyBytes, ec.proofs[0], ee)
871803 }
872804
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = b
1313
1414 let f = "GWXvirtualPOOL"
1515
1616 let g = "POOLS_LP"
1717
1818 let h = 2000000
1919
2020 let i = ((100 * 1000) * 1000)
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = 3
4545
4646 let v = 4
4747
4848 let w = 5
4949
5050 let x = 6
5151
5252 let y = 7
5353
5454 let z = 8
5555
5656 let A = 9
5757
5858 let B = 10
5959
6060 let C = 11
6161
6262 let D = "WX_EMISSION"
6363
6464 let E = [D]
6565
6666 func F () = "%s__allowedLpScriptHash"
6767
6868
6969 func G () = "%s__allowedLpStableScriptHash"
7070
7171
7272 func H () = "%s__allowedLpStableAddonScriptHash"
7373
7474
75-func I () = "%s__swapContract"
75+func I () = "%s__factoryConfig"
7676
7777
78-func J () = "%s__factoryConfig"
78+func J () = "%s__lpTokensList"
7979
8080
81-func K () = "%s__lpTokensList"
81+func K () = "%s%s__pool__scriptHash"
8282
8383
84-func L () = "%s%s__pool__scriptHash"
84+func L () = "%s%s__matcher__publicKey"
8585
8686
87-func M () = "%s%s__matcher__publicKey"
87+func M () = "%s__legacyFactoryContract"
8888
8989
90-func N () = "%s__legacyFactoryContract"
90+func N () = "%s__legacyPools"
9191
9292
93-func O () = "%s__legacyPools"
93+func O () = "%s__managerPublicKey"
9494
9595
96-func P () = "%s__managerPublicKey"
96+func P () = "%s__pendingManagerPublicKey"
9797
9898
99-func Q () = "%s__pendingManagerPublicKey"
99+func Q () = "%s__adminPubKeys"
100100
101101
102-func R () = "%s__adminPubKeys"
102+func R () = "%s__assetsStoreContract"
103103
104104
105-func S () = "%s__assetsStoreContract"
105+func S () = "%s__votingEmissionContract"
106106
107107
108-func T () = "%s__votingEmissionContract"
108+func T () = makeString(["%s", "priceAssets"], j)
109109
110110
111-func U () = makeString(["%s", "priceAssets"], j)
111+func U () = "%s__priceDecimals"
112112
113113
114-func V () = "%s__priceDecimals"
114+func V () = "%s__shutdown"
115115
116116
117-func W () = "%s__shutdown"
117+func W () = "%s__nextInternalAssetId"
118118
119119
120-func X () = "%s__nextInternalAssetId"
120+func X (Y) = ("%s%s__poolWeight__" + Y)
121121
122122
123-func Y (Z) = ("%s%s__poolWeight__" + Z)
123+func Z (Y,aa) = ((("%s%s__poolWeight__" + Y) + "__") + toString(aa))
124124
125125
126-func aa (Z,ab) = ((("%s%s__poolWeight__" + Z) + "__") + toString(ab))
126+func ab (ac) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ac))
127127
128128
129-func ac (ad) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ad))
129+func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
130130
131131
132-func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
132+func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
133133
134134
135-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136-
137-
138-func aj (ak) = {
139- let al = ak
140- let ah = al._1
141- let ai = al._2
142- makeString(["%d%d%s", toString(ah), toString(ai), "oneTokenOperationsDisabled"], j)
135+func ai (aj) = {
136+ let ak = aj
137+ let ag = ak._1
138+ let ah = ak._2
139+ makeString(["%d%d%s", toString(ag), toString(ah), "oneTokenOperationsDisabled"], j)
143140 }
144141
145142
146-func am () = makeString(["%s", "oneTokenOperationsDisabled"], j)
143+func al () = makeString(["%s", "oneTokenOperationsDisabled"], j)
147144
148145
149-func an (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2Pool")
146+func am (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2Pool")
150147
151148
152-func ap (aq,ar) = (((("%d%d%s%s__" + aq) + "__") + ar) + "__mappings__PoolAssets2LpAsset")
149+func ao (ap,aq) = (((("%d%d%s%s__" + ap) + "__") + aq) + "__mappings__PoolAssets2LpAsset")
153150
154151
155-func as (Z) = ("%s%s__spread__" + Z)
152+func ar (Y) = ("%s%s__spread__" + Y)
156153
157154
158-func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2PoolAssets")
155+func as (at) = (("%s%s%s__" + at) + "__mappings__poolContract2PoolAssets")
159156
160157
161-func av (aq,ar) = (((("%d%d%s%s__" + toString(aq)) + "__") + toString(ar)) + "__mappings__poolAssets2PoolContract")
158+func au (ap,aq) = (((("%d%d%s%s__" + toString(ap)) + "__") + toString(aq)) + "__mappings__poolAssets2PoolContract")
162159
163160
164-func aw (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
161+func av (at) = (("%s%s%s__" + at) + "__mappings__poolContract2LpAsset")
165162
166163
167-func ax (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2PoolContract")
164+func aw (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2PoolContract")
168165
169166
170-func ay (az,aA) = ((("%s%s%s__wxEmission__" + az) + "__") + aA)
167+func ax (ay,az) = ((("%s%s%s__wxEmission__" + ay) + "__") + az)
171168
172169
173-func aB (Z) = ("%s%s__inFee__" + Z)
170+func aA (Y) = ("%s%s__inFee__" + Y)
174171
175172
176-func aC () = "%s__inFeeDefault"
173+func aB () = "%s__inFeeDefault"
177174
178175
179-func aD (Z) = ("%s%s__outFee__" + Z)
176+func aC (Y) = ("%s%s__outFee__" + Y)
180177
181178
182-func aE () = "%s__outFeeDefault"
179+func aD () = "%s__outFeeDefault"
183180
184181
185-func aF (aG) = valueOrErrorMessage(getString(this, aG), ("No data for this.key=" + aG))
182+func aE (aF) = valueOrErrorMessage(getString(this, aF), ("No data for this.key=" + aF))
186183
187184
188-func aH (aG) = valueOrErrorMessage(getBoolean(this, aG), ("No data for this.key=" + aG))
185+func aG (aF) = valueOrErrorMessage(getBoolean(this, aF), ("No data for this.key=" + aF))
189186
190187
191-func aI (aG) = valueOrErrorMessage(getInteger(this, aG), ("No data for this.key=" + aG))
188+func aH (aF) = valueOrErrorMessage(getInteger(this, aF), ("No data for this.key=" + aF))
192189
193190
194-let aJ = 1
191+let aI = 1
195192
196-let aK = 2
193+let aJ = 2
197194
198-let aL = 3
195+let aK = 3
199196
200-let aM = 4
197+let aL = 4
201198
202-let aN = 5
199+let aM = 5
203200
204-let aO = 6
201+let aN = 6
205202
206-let aP = 7
203+let aO = 7
207204
208-let aQ = 8
205+let aP = 8
209206
210-let aR = 9
207+let aQ = 9
211208
212-let aS = 10
209+let aR = 10
213210
214-let aT = 11
211+let aS = 11
215212
216-func aU (aV) = addressFromStringValue(aV[aK])
213+func aT (aU) = addressFromStringValue(aU[aJ])
217214
218215
219-func aW (aV) = addressFromStringValue(aV[aN])
216+func aV (aU) = addressFromStringValue(aU[aM])
220217
221218
222-func aX (aV) = addressFromStringValue(aV[aJ])
219+func aW (aU) = addressFromStringValue(aU[aI])
223220
224221
225-func aY (aV) = addressFromStringValue(aV[aS])
222+func aX (aU) = addressFromStringValue(aU[aR])
226223
227224
228-func aZ () = {
229- let ba = getString(U())
230- if ($isInstanceOf(ba, "String"))
225+func aY () = {
226+ let aZ = getString(T())
227+ if ($isInstanceOf(aZ, "String"))
231228 then {
232- let bb = ba
233- if ((size(bb) == 0))
229+ let ba = aZ
230+ if ((size(ba) == 0))
234231 then nil
235- else split(bb, j)
232+ else split(ba, j)
236233 }
237234 else nil
238235 }
239236
240237
241-func bc () = {
242- let ba = getString(P())
243- if ($isInstanceOf(ba, "String"))
238+func bb () = {
239+ let aZ = getString(O())
240+ if ($isInstanceOf(aZ, "String"))
244241 then {
245- let bb = ba
246- fromBase58String(bb)
242+ let ba = aZ
243+ fromBase58String(ba)
247244 }
248- else if ($isInstanceOf(ba, "Unit"))
245+ else if ($isInstanceOf(aZ, "Unit"))
249246 then unit
250247 else throw("Match error")
251248 }
252249
253250
254-func bd () = {
255- let ba = getString(Q())
256- if ($isInstanceOf(ba, "String"))
251+func bc () = {
252+ let aZ = getString(P())
253+ if ($isInstanceOf(aZ, "String"))
257254 then {
258- let bb = ba
259- fromBase58String(bb)
255+ let ba = aZ
256+ fromBase58String(ba)
260257 }
261- else if ($isInstanceOf(ba, "Unit"))
258+ else if ($isInstanceOf(aZ, "Unit"))
262259 then unit
263260 else throw("Match error")
264261 }
265262
266263
267-let be = throw("Permission denied")
264+let bd = throw("Permission denied")
268265
269-let bf = throw("Test error here")
270-
271-func bg (bh) = if ((bh.caller == this))
266+func be (bf) = if ((bf.caller == this))
272267 then true
273- else be
268+ else bd
274269
275270
276-func bi (bh) = {
277- let ba = bc()
278- if ($isInstanceOf(ba, "ByteVector"))
271+func bg (bf) = {
272+ let aZ = bb()
273+ if ($isInstanceOf(aZ, "ByteVector"))
279274 then {
280- let bj = ba
281- if ((bh.callerPublicKey == bj))
275+ let bh = aZ
276+ if ((bf.callerPublicKey == bh))
282277 then true
283- else be
278+ else bd
284279 }
285- else if ($isInstanceOf(ba, "Unit"))
286- then bg(bh)
280+ else if ($isInstanceOf(aZ, "Unit"))
281+ then be(bf)
287282 else throw("Match error")
288283 }
289284
290285
291-func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv], j)
286+func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt], j)
292287
293288
294-func bw (bl,bm,bn,bo,bp,bq,br) = makeString(["%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br], j)
289+func bu (bj,bk,bl,bm,bn,bo,bp) = makeString(["%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp], j)
295290
296291
297-func bx (Z,by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Z, by, bz, bA, bB, toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), bH], j)
292+func bv (Y,bw,bx,by,bz,bA,bB,bC,bD,bE,bF) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Y, bw, bx, by, bz, toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), bF], j)
298293
299294
300-func bI (bJ,bK) = makeString(["%d%d", toString(bJ), toString(bK)], j)
295+func bG (bH,bI) = makeString(["%d%d", toString(bH), toString(bI)], j)
301296
302297
303-func bL (Z) = {
304- let bM = split(aF(at(Z)), j)
305- let ah = bM[1]
306- let ai = bM[2]
307- split(aF(ag(ah, ai)), j)
298+func bJ (Y) = {
299+ let bK = split(aE(as(Y)), j)
300+ let ag = bK[1]
301+ let ah = bK[2]
302+ split(aE(af(ag, ah)), j)
308303 }
309304
310305
311-func bN (bO,bP) = {
312- let bQ = valueOrElse(getInteger(this, ae(bO)), 0)
313- let bR = valueOrElse(getInteger(this, X()), 0)
314- let bS = if ((bQ == 0))
306+func bL (bM,bN) = {
307+ let bO = valueOrElse(getInteger(this, ad(bM)), 0)
308+ let bP = valueOrElse(getInteger(this, W()), 0)
309+ let bQ = if ((bO == 0))
315310 then {
316- let bT = (bR + bP)
317- $Tuple3(bT, [IntegerEntry(X(), bT), IntegerEntry(ae(bO), bT), StringEntry(ac(bT), bO)], true)
311+ let bR = (bP + bN)
312+ $Tuple3(bR, [IntegerEntry(W(), bR), IntegerEntry(ad(bM), bR), StringEntry(ab(bR), bM)], true)
318313 }
319- else $Tuple3(bQ, nil, false)
320- bS
314+ else $Tuple3(bO, nil, false)
315+ bQ
321316 }
322317
323318
324-func bU (bh) = {
325- let bV = split(valueOrElse(getString(R()), k), j)
326- if (containsElement(bV, toBase58String(bh.callerPublicKey)))
319+func bS (bf) = {
320+ let bT = split(valueOrElse(getString(Q()), k), j)
321+ if (containsElement(bT, toBase58String(bf.callerPublicKey)))
327322 then true
328323 else {
329- let bW = bi(bh)
330- if ((bW == bW))
324+ let bU = bg(bf)
325+ if ((bU == bU))
331326 then true
332327 else throw("Strict value is not equal to itself.")
333328 }
334329 }
335330
336331
337-func bX (aG,bY,bZ) = valueOrElse(getInteger(this, aG), valueOrElse(getInteger(this, bY), bZ))
332+func bV (aF,bW,bX) = valueOrElse(getInteger(this, aF), valueOrElse(getInteger(this, bW), bX))
338333
339334
340-func ca (az,aA) = {
341- let ah = getInteger(ae(az))
342- let ai = getInteger(ae(aA))
343- if (if ((ah == unit))
344- then true
345- else (ai == unit))
346- then false
347- else {
348- let cb = toString(value(ah))
349- let cc = toString(value(ai))
350- let cd = getString(ag(cb, cc))
351- let ce = getString(ag(cc, cb))
352- let cf = if ((cd != unit))
353- then true
354- else (ce != unit)
355- cf
356- }
357- }
358-
359-
360-@Callable(bh)
361-func getSwapContractREADONLY () = $Tuple2(nil, aF(I()))
362-
363-
364-
365-@Callable(bh)
366-func getLpAssetFromPoolAssetsREADONLY (cg,ch) = if (if ((cg == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
367- then (ch == "WAVES")
368- else false)
369- then $Tuple2(nil, unit)
370- else {
371- let ci = value(getInteger(this, ae(cg)))
372- let cj = value(getInteger(this, ae(ch)))
373- let ck = getString(this, ap(toString(ci), toString(cj)))
374- let cl = if ((ck == unit))
375- then unit
376- else drop(value(ck), 4)
377- $Tuple2(nil, cl)
378- }
379-
380-
381-
382-@Callable(bh)
383-func getPoolAddressFromLpAssetREADONLY (cm) = $Tuple2(nil, valueOrElse(getString(this, ax(cm)), ""))
384-
385-
386-
387-@Callable(bh)
388-func constructor (cn,co,bn,bo,bp,bq,cp,cq) = {
389- let cr = bi(bh)
390- if ((cr == cr))
391- then [StringEntry(J(), bw(cn, co, bn, bo, bp, bq, cp)), IntegerEntry(V(), cq)]
335+@Callable(bf)
336+func constructor (bY,bZ,bl,bm,bn,bo,ca,cb) = {
337+ let cc = bg(bf)
338+ if ((cc == cc))
339+ then [StringEntry(I(), bu(bY, bZ, bl, bm, bn, bo, ca)), IntegerEntry(U(), cb)]
392340 else throw("Strict value is not equal to itself.")
393341 }
394342
395343
396344
397-@Callable(bh)
398-func constructorV2 (cs) = {
399- let cr = bi(bh)
400- if ((cr == cr))
345+@Callable(bf)
346+func constructorV2 (cd) = {
347+ let cc = bg(bf)
348+ if ((cc == cc))
401349 then {
402- let ct = addressFromPublicKey(fromBase58String(cs))
403- if ((ct == ct))
404- then [StringEntry(M(), cs)]
350+ let ce = addressFromPublicKey(fromBase58String(cd))
351+ if ((ce == ce))
352+ then [StringEntry(L(), cd)]
405353 else throw("Strict value is not equal to itself.")
406354 }
407355 else throw("Strict value is not equal to itself.")
408356 }
409357
410358
411359
412-@Callable(bh)
413-func constructorV3 (bs,bt,bu,bv) = {
414- let cr = bi(bh)
415- if ((cr == cr))
360+@Callable(bf)
361+func constructorV3 (bq,br,bs,bt) = {
362+ let cc = bg(bf)
363+ if ((cc == cc))
416364 then {
417- let aV = split(aF(J()), j)
418-[StringEntry(J(), bk(aV[1], aV[2], aV[3], aV[4], aV[5], aV[6], aV[7], bs, bt, bu, bv))]
365+ let aU = split(aE(I()), j)
366+[StringEntry(I(), bi(aU[1], aU[2], aU[3], aU[4], aU[5], aU[6], aU[7], bq, br, bs, bt))]
419367 }
420368 else throw("Strict value is not equal to itself.")
421369 }
422370
423371
424372
425-@Callable(bh)
426-func constructorV4 (cu,cv) = {
427- let cr = bi(bh)
428- if ((cr == cr))
429- then [StringEntry(N(), cu), StringEntry(O(), makeString(cv, j))]
373+@Callable(bf)
374+func constructorV4 (cf,cg) = {
375+ let cc = bg(bf)
376+ if ((cc == cc))
377+ then [StringEntry(M(), cf), StringEntry(N(), makeString(cg, j))]
430378 else throw("Strict value is not equal to itself.")
431379 }
432380
433381
434382
435-@Callable(bh)
436-func constructorV5 (cw) = {
437- let cr = bi(bh)
438- if ((cr == cr))
439- then [StringEntry(S(), cw)]
383+@Callable(bf)
384+func constructorV5 (ch) = {
385+ let cc = bg(bf)
386+ if ((cc == cc))
387+ then [StringEntry(R(), ch)]
440388 else throw("Strict value is not equal to itself.")
441389 }
442390
443391
444392
445-@Callable(bh)
446-func constructorV6 (cx,cy) = {
447- let cz = [bi(bh), if ((addressFromString(cx) != unit))
393+@Callable(bf)
394+func constructorV6 (ci,cj) = {
395+ let ck = [bg(bf), if ((addressFromString(ci) != unit))
448396 then true
449397 else "invalid voting emission contract address"]
450- if ((cz == cz))
451- then [StringEntry(T(), cx), StringEntry(U(), makeString(cy, j))]
398+ if ((ck == ck))
399+ then [StringEntry(S(), ci), StringEntry(T(), makeString(cj, j))]
452400 else throw("Strict value is not equal to itself.")
453401 }
454402
455403
456404
457-@Callable(bh)
458-func setManager (cA) = {
459- let cr = bi(bh)
460- if ((cr == cr))
405+@Callable(bf)
406+func setManager (cl) = {
407+ let cc = bg(bf)
408+ if ((cc == cc))
461409 then {
462- let cB = fromBase58String(cA)
463- if ((cB == cB))
464- then [StringEntry(Q(), cA)]
410+ let cm = fromBase58String(cl)
411+ if ((cm == cm))
412+ then [StringEntry(P(), cl)]
465413 else throw("Strict value is not equal to itself.")
466414 }
467415 else throw("Strict value is not equal to itself.")
468416 }
469417
470418
471419
472-@Callable(bh)
420+@Callable(bf)
473421 func confirmManager () = {
474- let cC = bd()
475- let cD = if (isDefined(cC))
422+ let cn = bc()
423+ let co = if (isDefined(cn))
476424 then true
477425 else throw("No pending manager")
478- if ((cD == cD))
426+ if ((co == co))
479427 then {
480- let cE = if ((bh.callerPublicKey == value(cC)))
428+ let cp = if ((bf.callerPublicKey == value(cn)))
481429 then true
482430 else throw("You are not pending manager")
483- if ((cE == cE))
484- then [StringEntry(P(), toBase58String(value(cC))), DeleteEntry(Q())]
431+ if ((cp == cp))
432+ then [StringEntry(O(), toBase58String(value(cn))), DeleteEntry(P())]
485433 else throw("Strict value is not equal to itself.")
486434 }
487435 else throw("Strict value is not equal to itself.")
488436 }
489437
490438
491439
492-@Callable(bh)
493-func setAdmins (cF) = {
494- let cr = bi(bh)
495- if ((cr == cr))
496- then [StringEntry(R(), makeString(cF, j))]
440+@Callable(bf)
441+func setAdmins (cq) = {
442+ let cc = bg(bf)
443+ if ((cc == cc))
444+ then [StringEntry(Q(), makeString(cq, j))]
497445 else throw("Strict value is not equal to itself.")
498446 }
499447
500448
501449
502-@Callable(bh)
503-func activateNewPool (Z,bA,bB,cG,cH,cI,bH,cJ) = {
504- let cr = bU(bh)
505- if ((cr == cr))
506- then if (isDefined(getString(at(Z))))
507- then throw((("Pool address " + Z) + " already registered."))
450+@Callable(bf)
451+func activateNewPool (Y,by,bz,cr,cs,ct,bF,cu) = {
452+ let cc = bS(bf)
453+ if ((cc == cc))
454+ then if (isDefined(getString(as(Y))))
455+ then throw((("Pool address " + Y) + " already registered."))
508456 else {
509- let cK = bN(bA, 1)
510- let cL = cK._1
511- let cM = bN(bB, if (cK._3)
457+ let cv = bL(by, 1)
458+ let cw = cv._1
459+ let cx = bL(bz, if (cv._3)
512460 then 2
513461 else 1)
514- let cN = cM._1
515- let cO = valueOrErrorMessage(scriptHash(addressFromStringValue(Z)), ("No script has been found on pool account " + Z))
516- let cP = getBinaryValue(L())
517- let cQ = ca(bA, bB)
518- if (cQ)
519- then throw((((("Pool " + bA) + "/") + bB) + " has already been activated."))
462+ let cy = cx._1
463+ let cz = valueOrErrorMessage(scriptHash(addressFromStringValue(Y)), ("No script has been found on pool account " + Y))
464+ let cA = getBinaryValue(K())
465+ let cB = getString(this, af(toString(cw), toString(cy)))
466+ if (isDefined(cB))
467+ then throw((((("Pool " + by) + "/") + bz) + " has already been activated."))
520468 else {
521- let cR = value(getString(this, ag(toString(cL), toString(cN))))
522- let cS = if ((bA == "WAVES"))
469+ let cC = value(getString(this, af(toString(cw), toString(cy))))
470+ let cD = if ((by == "WAVES"))
523471 then i
524- else pow(10, 0, value(assetInfo(fromBase58String(bA))).decimals, 0, 0, DOWN)
525- let cT = if ((bB == "WAVES"))
472+ else pow(10, 0, value(assetInfo(fromBase58String(by))).decimals, 0, 0, DOWN)
473+ let cE = if ((bz == "WAVES"))
526474 then i
527- else pow(10, 0, value(assetInfo(fromBase58String(bB))).decimals, 0, 0, DOWN)
528- let cU = Issue(cG, cH, 1, 8, true)
529- let bz = calculateAssetId(cU)
530- let cV = toBase58String(bz)
531- let cW = invoke(addressFromStringValue(Z), "activate", [bA, bB], nil)
532- if ((cW == cW))
533- then if ((cW != "success"))
475+ else pow(10, 0, value(assetInfo(fromBase58String(bz))).decimals, 0, 0, DOWN)
476+ let cF = Issue(cr, cs, 1, 8, true)
477+ let bx = calculateAssetId(cF)
478+ let cG = toBase58String(bx)
479+ let cH = invoke(addressFromStringValue(Y), "activate", [by, bz], nil)
480+ if ((cH == cH))
481+ then if ((cH != "success"))
534482 then throw("Pool initialisation error happened.")
535483 else {
536- let cw = addressFromStringValue(aF(S()))
537- let cX = invoke(cw, "createOrUpdate", [cV, cG, false], nil)
538- if ((cX == cX))
484+ let ch = addressFromStringValue(aE(R()))
485+ let cI = invoke(ch, "createOrUpdate", [cG, cr, false], nil)
486+ if ((cI == cI))
539487 then {
540- let cY = invoke(cw, "addLabel", [cV, g], nil)
541- if ((cY == cY))
488+ let cJ = invoke(ch, "addLabel", [cG, g], nil)
489+ if ((cJ == cJ))
542490 then {
543- let cZ = invoke(cw, "setLogo", [cV, cJ], nil)
544- if ((cZ == cZ))
491+ let cK = invoke(ch, "setLogo", [cG, cu], nil)
492+ if ((cK == cK))
545493 then {
546- let da = invoke(cw, "addAssetsLink", [bA, bB, cV], nil)
547- if ((da == da))
494+ let cL = invoke(ch, "addAssetsLink", [by, bz, cG], nil)
495+ if ((cL == cL))
548496 then {
549- let db = invoke(cw, "increaseAssetPoolsNumber", [bA], nil)
550- if ((db == db))
551- then $Tuple2(((cK._2 ++ cM._2) ++ [cU, Burn(bz, 1), StringEntry(ag(toString(cL), toString(cN)), bx(Z, toString(l), cV, bA, bB, cS, cT, cL, cN, i, bH)), StringEntry(an(cV), bI(cL, cN)), StringEntry(ap(toString(cL), toString(cN)), ("%s__" + cV)), StringEntry(at(Z), bI(cL, cN)), StringEntry(av(cL, cN), Z), StringEntry(ax(cV), Z), StringEntry(aw(Z), cV), IntegerEntry(Y(Z), cI), IntegerEntry(as(Z), h)]), cV)
497+ let cM = invoke(ch, "increaseAssetPoolsNumber", [by], nil)
498+ if ((cM == cM))
499+ then $Tuple2(((cv._2 ++ cx._2) ++ [cF, Burn(bx, 1), StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(l), cG, by, bz, cD, cE, cw, cy, i, bF)), StringEntry(am(cG), bG(cw, cy)), StringEntry(ao(toString(cw), toString(cy)), ("%s__" + cG)), StringEntry(as(Y), bG(cw, cy)), StringEntry(au(cw, cy), Y), StringEntry(aw(cG), Y), StringEntry(av(Y), cG), IntegerEntry(X(Y), ct), IntegerEntry(ar(Y), h)]), cG)
552500 else throw("Strict value is not equal to itself.")
553501 }
554502 else throw("Strict value is not equal to itself.")
555503 }
556504 else throw("Strict value is not equal to itself.")
557505 }
558506 else throw("Strict value is not equal to itself.")
559507 }
560508 else throw("Strict value is not equal to itself.")
561509 }
562510 else throw("Strict value is not equal to itself.")
563511 }
564512 }
565513 else throw("Strict value is not equal to itself.")
566514 }
567515
568516
569517
570-@Callable(bh)
571-func managePool (Z,dc) = {
572- let cr = bi(bh)
573- if ((cr == cr))
518+@Callable(bf)
519+func managePool (Y,cN) = {
520+ let cc = bg(bf)
521+ if ((cc == cc))
574522 then {
575- let dd = bL(Z)
576- let by = dd[t]
577- let cV = dd[u]
578- let bA = dd[v]
579- let bB = dd[w]
580- let cS = parseIntValue(dd[x])
581- let cT = parseIntValue(dd[y])
582- let cL = parseIntValue(dd[z])
583- let cN = parseIntValue(dd[A])
584- let de = parseIntValue(dd[B])
585- let bH = dd[C]
586-[StringEntry(ag(toString(cL), toString(cN)), bx(Z, toString(dc), cV, bA, bB, cS, cT, cL, cN, de, bH))]
523+ let cB = bJ(Y)
524+ let bw = cB[t]
525+ let cG = cB[u]
526+ let by = cB[v]
527+ let bz = cB[w]
528+ let cD = parseIntValue(cB[x])
529+ let cE = parseIntValue(cB[y])
530+ let cw = parseIntValue(cB[z])
531+ let cy = parseIntValue(cB[A])
532+ let cO = parseIntValue(cB[B])
533+ let bF = cB[C]
534+[StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(cN), cG, by, bz, cD, cE, cw, cy, cO, bF))]
587535 }
588536 else throw("Strict value is not equal to itself.")
589537 }
590538
591539
592540
593-@Callable(bh)
594-func emit (df) = {
595- let dg = bh.caller
596- let dh = bh.originCaller
597- let di = valueOrErrorMessage(getString(aw(toString(dg))), "Invalid LP address called me.")
598- let dj = fromBase58String(di)
599- let cv = split(valueOrElse(getString(O()), k), j)
600- let cu = addressFromStringValue(valueOrErrorMessage(getString(N()), "Legacy factory contract does not exists."))
601- if ((0 >= df))
541+@Callable(bf)
542+func emit (cP) = {
543+ let cQ = bf.caller
544+ let cR = bf.originCaller
545+ let cS = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
546+ let cT = fromBase58String(cS)
547+ let cg = split(valueOrElse(getString(N()), k), j)
548+ let cf = addressFromStringValue(valueOrErrorMessage(getString(M()), "Legacy factory contract does not exists."))
549+ if ((0 >= cP))
602550 then nil
603- else if (containsElement(cv, toString(dg)))
604- then $Tuple2(nil, cu)
605- else $Tuple2([Reissue(dj, df, true), ScriptTransfer(bh.caller, df, dj)], "success")
551+ else if (containsElement(cg, toString(cQ)))
552+ then $Tuple2(nil, cf)
553+ else $Tuple2([Reissue(cT, cP, true), ScriptTransfer(bf.caller, cP, cT)], "success")
606554 }
607555
608556
609557
610-@Callable(bh)
611-func burn (dk) = {
612- let dg = bh.caller
613- let dh = bh.originCaller
614- let dl = value(bh.payments[0])
615- let dm = value(dl.amount)
616- let dn = toBase58String(value(dl.assetId))
617- let do = valueOrErrorMessage(getString(aw(toString(dg))), "Invalid LP address called me.")
618- if ((dn != do))
558+@Callable(bf)
559+func burn (cU) = {
560+ let cQ = bf.caller
561+ let cR = bf.originCaller
562+ let cV = value(bf.payments[0])
563+ let cW = value(cV.amount)
564+ let cX = toBase58String(value(cV.assetId))
565+ let cY = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
566+ if ((cX != cY))
619567 then throw("Invalid asset passed.")
620- else if ((dk != dm))
568+ else if ((cU != cW))
621569 then throw("Invalid amount passed.")
622570 else {
623- let dj = fromBase58String(do)
624- $Tuple2([Burn(dj, dk)], "success")
571+ let cT = fromBase58String(cY)
572+ $Tuple2([Burn(cT, cU)], "success")
625573 }
626574 }
627575
628576
629577
630-@Callable(bh)
631-func modifyWeight (bz,dp) = {
632- let cr = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, T()), "")))
578+@Callable(bf)
579+func modifyWeight (bx,cZ) = {
580+ let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, S()), "")))
633581 then true
634- else bi(bh)
635- if ((cr == cr))
582+ else bg(bf)
583+ if ((cc == cc))
636584 then {
637- let au = aF(ax(bz))
638- let dq = Y(au)
639- let dr = Y(f)
640- let ds = valueOrElse(getInteger(dr), 0)
641- let cI = valueOrElse(getInteger(dq), 0)
642- let dt = dp
643- let aV = split(aF(J()), j)
644- let cn = aX(aV)
645- let du = invoke(cn, "onModifyWeight", [bz, au], nil)
646- if ((du == du))
585+ let at = aE(aw(bx))
586+ let da = X(at)
587+ let db = X(f)
588+ let dc = valueOrElse(getInteger(db), 0)
589+ let ct = valueOrElse(getInteger(da), 0)
590+ let dd = cZ
591+ let aU = split(aE(I()), j)
592+ let bY = aW(aU)
593+ let de = invoke(bY, "onModifyWeight", [bx, at], nil)
594+ if ((de == de))
647595 then {
648- let dv = if ((ds == 0))
596+ let df = if ((dc == 0))
649597 then nil
650- else [IntegerEntry(dr, 0)]
651- let dw = aa(au, 0)
652- let dx = getInteger(dw)
653- let dy = if ((dx == unit))
598+ else [IntegerEntry(db, 0)]
599+ let dg = Z(at, 0)
600+ let dh = getInteger(dg)
601+ let di = if ((dh == unit))
654602 then nil
655- else [DeleteEntry(dw)]
656- (([IntegerEntry(dq, dt)] ++ dv) ++ dy)
603+ else [DeleteEntry(dg)]
604+ (([IntegerEntry(da, dd)] ++ df) ++ di)
657605 }
658606 else throw("Strict value is not equal to itself.")
659607 }
660608 else throw("Strict value is not equal to itself.")
661609 }
662610
663611
664612
665-@Callable(bh)
666-func modifyWeights (dz,dA,dB,dC) = {
667- let cr = bi(bh)
668- if ((cr == cr))
613+@Callable(bf)
614+func modifyWeights (dj,dk,dl,dm) = {
615+ let cc = bg(bf)
616+ if ((cc == cc))
669617 then {
670- let dD = ((5 * e) / 100)
671- let dE = ((5 * e) / 100)
672- let dF = ((5 * e) / 100)
673- let aV = split(aF(J()), j)
674- let dG = aX(aV)
675- let dH = aY(aV)
676- let dI = Y(dz)
677- let dJ = Y(dA)
678- let dK = Y(dB)
679- let dL = Y(dC)
680- let dM = aI(dI)
681- let dN = aI(dJ)
682- let dO = (dM - dF)
683- let dP = (dN - dF)
684- if ((0 >= dO))
685- then throw(("invalid btcWeightNew: " + toString(dO)))
686- else if ((0 >= dP))
687- then throw(("invalid ethWeightNew: " + toString(dP)))
618+ let dn = ((5 * e) / 100)
619+ let do = ((5 * e) / 100)
620+ let dp = ((5 * e) / 100)
621+ let aU = split(aE(I()), j)
622+ let dq = aW(aU)
623+ let dr = aX(aU)
624+ let ds = X(dj)
625+ let dt = X(dk)
626+ let du = X(dl)
627+ let dv = X(dm)
628+ let dw = aH(ds)
629+ let dx = aH(dt)
630+ let dy = (dw - dp)
631+ let dz = (dx - dp)
632+ if ((0 >= dy))
633+ then throw(("invalid btcWeightNew: " + toString(dy)))
634+ else if ((0 >= dz))
635+ then throw(("invalid ethWeightNew: " + toString(dz)))
688636 else {
689- let dQ = aF(aw(dz))
690- let dR = aF(aw(dA))
691- let dS = aF(aw(dB))
692- let dT = aF(aw(dC))
693- let dU = invoke(dG, "onModifyWeight", [dQ, dz], nil)
694- if ((dU == dU))
637+ let dA = aE(av(dj))
638+ let dB = aE(av(dk))
639+ let dC = aE(av(dl))
640+ let dD = aE(av(dm))
641+ let dE = invoke(dq, "onModifyWeight", [dA, dj], nil)
642+ if ((dE == dE))
695643 then {
696- let dV = invoke(dG, "onModifyWeight", [dR, dA], nil)
697- if ((dV == dV))
644+ let dF = invoke(dq, "onModifyWeight", [dB, dk], nil)
645+ if ((dF == dF))
698646 then {
699- let dW = invoke(dG, "onModifyWeight", [dS, dB], nil)
700- if ((dW == dW))
647+ let dG = invoke(dq, "onModifyWeight", [dC, dl], nil)
648+ if ((dG == dG))
701649 then {
702- let dX = invoke(dG, "onModifyWeight", [dT, dC], nil)
703- if ((dX == dX))
704- then [IntegerEntry(dI, dO), IntegerEntry(dJ, dP), IntegerEntry(dK, dD), IntegerEntry(dL, dE), IntegerEntry(aa(dz, 0), dM), IntegerEntry(aa(dA, 0), dN), IntegerEntry(aa(dB, 0), dD), IntegerEntry(aa(dC, 0), dE)]
650+ let dH = invoke(dq, "onModifyWeight", [dD, dm], nil)
651+ if ((dH == dH))
652+ then [IntegerEntry(ds, dy), IntegerEntry(dt, dz), IntegerEntry(du, dn), IntegerEntry(dv, do), IntegerEntry(Z(dj, 0), dw), IntegerEntry(Z(dk, 0), dx), IntegerEntry(Z(dl, 0), dn), IntegerEntry(Z(dm, 0), do)]
705653 else throw("Strict value is not equal to itself.")
706654 }
707655 else throw("Strict value is not equal to itself.")
708656 }
709657 else throw("Strict value is not equal to itself.")
710658 }
711659 else throw("Strict value is not equal to itself.")
712660 }
713661 }
714662 else throw("Strict value is not equal to itself.")
715663 }
716664
717665
718666
719-@Callable(bh)
720-func checkWxEmissionPoolLabel (az,aA) = {
721- let dY = {
722- let ba = getBoolean(ay(az, aA))
723- if ($isInstanceOf(ba, "Boolean"))
667+@Callable(bf)
668+func checkWxEmissionPoolLabel (ay,az) = {
669+ let dI = {
670+ let aZ = getBoolean(ax(ay, az))
671+ if ($isInstanceOf(aZ, "Boolean"))
724672 then {
725- let dZ = ba
726- dZ
673+ let dJ = aZ
674+ dJ
727675 }
728676 else false
729677 }
730- $Tuple2(nil, dY)
678+ $Tuple2(nil, dI)
731679 }
732680
733681
734682
735-@Callable(bh)
736-func setWxEmissionPoolLabel (az,aA) = {
737- let cr = bU(bh)
738- if ((cr == cr))
739- then $Tuple2([BooleanEntry(ay(az, aA), true)], unit)
683+@Callable(bf)
684+func setWxEmissionPoolLabel (ay,az) = {
685+ let cc = bS(bf)
686+ if ((cc == cc))
687+ then $Tuple2([BooleanEntry(ax(ay, az), true)], unit)
740688 else throw("Strict value is not equal to itself.")
741689 }
742690
743691
744692
745-@Callable(bh)
746-func deleteWxEmissionPoolLabel (az,aA) = {
747- let cr = if (bg(bh))
693+@Callable(bf)
694+func deleteWxEmissionPoolLabel (ay,az) = {
695+ let cc = if (be(bf))
748696 then true
749- else bU(bh)
750- if ((cr == cr))
751- then $Tuple2([DeleteEntry(ay(az, aA))], unit)
697+ else bS(bf)
698+ if ((cc == cc))
699+ then $Tuple2([DeleteEntry(ax(ay, az))], unit)
752700 else throw("Strict value is not equal to itself.")
753701 }
754702
755703
756704
757-@Callable(bh)
758-func onVerificationLoss (ea) = {
759- let cr = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, S()), "")))
705+@Callable(bf)
706+func onVerificationLoss (dK) = {
707+ let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, R()), "")))
760708 then true
761- else bi(bh)
762- if ((cr == cr))
709+ else bg(bf)
710+ if ((cc == cc))
763711 then {
764- let cy = aZ()
765- let eb = if ((size(cy) > 0))
712+ let cj = aY()
713+ let dL = if ((size(cj) > 0))
766714 then true
767715 else throw("invalid price assets")
768- if ((eb == eb))
716+ if ((dL == dL))
769717 then {
770- func ec (ed,ee) = {
771- let ef = invoke(this, "deleteWxEmissionPoolLabel", [ea, ee], nil)
772- if ((ef == ef))
718+ func dM (dN,dO) = {
719+ let dP = invoke(this, "deleteWxEmissionPoolLabel", [dK, dO], nil)
720+ if ((dP == dP))
773721 then unit
774722 else throw("Strict value is not equal to itself.")
775723 }
776724
777- let eg = {
778- let eh = cy
779- let ei = size(eh)
780- let ej = unit
781- func ek (el,em) = if ((em >= ei))
782- then el
783- else ec(el, eh[em])
725+ let dQ = {
726+ let dR = cj
727+ let dS = size(dR)
728+ let dT = unit
729+ func dU (dV,dW) = if ((dW >= dS))
730+ then dV
731+ else dM(dV, dR[dW])
784732
785- func en (el,em) = if ((em >= ei))
786- then el
733+ func dX (dV,dW) = if ((dW >= dS))
734+ then dV
787735 else throw("List size exceeds 1")
788736
789- en(ek(ej, 0), 1)
737+ dX(dU(dT, 0), 1)
790738 }
791- if ((eg == eg))
739+ if ((dQ == dQ))
792740 then $Tuple2(nil, unit)
793741 else throw("Strict value is not equal to itself.")
794742 }
795743 else throw("Strict value is not equal to itself.")
796744 }
797745 else throw("Strict value is not equal to itself.")
798746 }
799747
800748
801749
802-@Callable(bh)
803-func isPoolOneTokenOperationsDisabledREADONLY (Z) = {
804- let dd = bL(Z)
805- let ak = $Tuple2(parseIntValue(dd[z]), parseIntValue(dd[A]))
806- let eo = valueOrElse(getBoolean(aj(ak)), false)
807- let ep = valueOrElse(getBoolean(am()), false)
808- $Tuple2(nil, if (ep)
750+@Callable(bf)
751+func isPoolOneTokenOperationsDisabledREADONLY (Y) = {
752+ let cB = bJ(Y)
753+ let aj = $Tuple2(parseIntValue(cB[z]), parseIntValue(cB[A]))
754+ let dY = valueOrElse(getBoolean(ai(aj)), false)
755+ let dZ = valueOrElse(getBoolean(al()), false)
756+ $Tuple2(nil, if (dZ)
809757 then true
810- else eo)
758+ else dY)
811759 }
812760
813761
814762
815-@Callable(bh)
816-func getInFeeREADONLY (Z) = {
817- let eq = bX(aB(Z), aC(), 0)
818- $Tuple2(nil, eq)
763+@Callable(bf)
764+func getInFeeREADONLY (Y) = {
765+ let ea = bV(aA(Y), aB(), 0)
766+ $Tuple2(nil, ea)
819767 }
820768
821769
822770
823-@Callable(bh)
824-func getOutFeeREADONLY (Z) = {
825- let eq = bX(aD(Z), aE(), fraction(10, b, 10000))
826- $Tuple2(nil, eq)
771+@Callable(bf)
772+func getOutFeeREADONLY (Y) = {
773+ let ea = bV(aC(Y), aD(), fraction(10, b, 10000))
774+ $Tuple2(nil, ea)
827775 }
828776
829777
830778
831-@Callable(bh)
832-func getPoolStatusREADONLY (Z) = {
833- let bM = split(aF(at(Z)), j)
834- let ah = bM[1]
835- let ai = bM[2]
836- let cd = split(aF(ag(ah, ai)), j)
837- $Tuple2(nil, parseIntValue(cd[t]))
779+@Callable(bf)
780+func getPoolStatusREADONLY (Y) = {
781+ let bK = split(aE(as(Y)), j)
782+ let ag = bK[1]
783+ let ah = bK[2]
784+ let eb = split(aE(af(ag, ah)), j)
785+ $Tuple2(nil, parseIntValue(eb[t]))
838786 }
839787
840788
841-
842-@Callable(bh)
843-func getPoolConfigREADONLY (Z) = {
844- let bM = split(aF(at(Z)), j)
845- let ah = bM[1]
846- let ai = bM[2]
847- let cd = split(aF(ag(ah, ai)), j)
848- $Tuple2(nil, cd)
849- }
850-
851-
852-
853-@Callable(bh)
854-func poolExistsREADONLY (az,aA) = $Tuple2(nil, ca(az, aA))
855-
856-
857-@Verifier(er)
858-func es () = {
859- let et = {
860- let ba = bc()
861- if ($isInstanceOf(ba, "ByteVector"))
789+@Verifier(ec)
790+func ed () = {
791+ let ee = {
792+ let aZ = bb()
793+ if ($isInstanceOf(aZ, "ByteVector"))
862794 then {
863- let bj = ba
864- bj
795+ let bh = aZ
796+ bh
865797 }
866- else if ($isInstanceOf(ba, "Unit"))
867- then er.senderPublicKey
798+ else if ($isInstanceOf(aZ, "Unit"))
799+ then ec.senderPublicKey
868800 else throw("Match error")
869801 }
870- sigVerify(er.bodyBytes, er.proofs[0], et)
802+ sigVerify(ec.bodyBytes, ec.proofs[0], ee)
871803 }
872804

github/deemru/w8io/169f3d6 
285.68 ms