tx · 6x3UjL7Ym2YEAsP3rYhjtr9wPsMSSRvNPc2EoemmqMmR 3MoyY7JSaeScGuAX9zYEz8oJGmCTxT6ZXFT: -0.03200000 Waves 2023.03.10 09:28 [2483612] smart account 3MoyY7JSaeScGuAX9zYEz8oJGmCTxT6ZXFT > SELF 0.00000000 Waves
{ "type": 13, "id": "6x3UjL7Ym2YEAsP3rYhjtr9wPsMSSRvNPc2EoemmqMmR", "fee": 3200000, "feeAssetId": null, "timestamp": 1678429687097, "version": 1, "sender": "3MoyY7JSaeScGuAX9zYEz8oJGmCTxT6ZXFT", "senderPublicKey": "5a1aoVTAmt3S5Mng77UMBwNYwo6fs474DSf3KJRvg8Hg", "proofs": [ "2SELrCPKHf1YbNGeJCAEzoZhajNfDf4hAUKs5aiKFtMeedenLKWpMCqUMhGspki7xi5xmvxCwEJ8Abm7DtMTZ2gu" ], "script": "base64:BgKrAQgCEgASBAoCCAgSAwoBCBIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEIEgASAwoBGBIKCggICAgICAEICBIECgIIARIDCgEBEgMKAQESBAoCCAESBgoECAgICBIECgIICBIECgIICBIECgIICBIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggIEgMKAQgSAwoBCBIECgIICGkABlNDQUxFOAAIAAVNVUxUOACAwtcvAAdTQ0FMRTE4ABIABk1VTFQxOAkAtgIBAICAkLu61q3wDQAOUE9PTFdFSUdIVE1VTFQFBU1VTFQ4AA5HV1h2aXJ0dWFsUE9PTAIOR1dYdmlydHVhbFBPT0wADGxhYmVsUG9vbHNMcAIIUE9PTFNfTFAADWRlZmF1bHRTcHJlYWQAgIl6AAt3YXZlc1N0cmluZwIFV0FWRVMAEWRlY2ltYWxzTXVsdFByaWNlCQBoAgkAaAIAZADoBwDoBwADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAA9Qb29sUHV0RGlzYWJsZWQAAgATUG9vbE1hdGNoZXJEaXNhYmxlZAADAAxQb29sU2h1dGRvd24ABAASaWR4SW50ZXJuYWxBc3NldElkAAEAD2lkeFJlc3V0QWN0aW9ucwACACBpZHhJZkFzc2V0SWRDYWxjdWxhdGlvblBlcmZvcm1lZAADAA5pZHhQb29sQWRkcmVzcwABAA1pZHhQb29sU3RhdHVzAAIAEGlkeFBvb2xMUEFzc2V0SWQAAwANaWR4QW10QXNzZXRJZAAEAA9pZHhQcmljZUFzc2V0SWQABQAOaWR4QW10QXNzZXREY20ABgAQaWR4UHJpY2VBc3NldERjbQAHAA5pZHhJQW10QXNzZXRJZAAIABBpZHhJUHJpY2VBc3NldElkAAkADWlkeExQQXNzZXREY20ACgALaWR4UG9vbFR5cGUACwATcG9vbExhYmVsV3hFbWlzc2lvbgILV1hfRU1JU1NJT04AD3ZhbGlkUG9vbExhYmVscwkAzAgCBRNwb29sTGFiZWxXeEVtaXNzaW9uBQNuaWwBFmtleUFsbG93ZWRMcFNjcmlwdEhhc2gAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoASFrZXlBbGxvd2VkTHBTdGFibGVBZGRvblNjcmlwdEhhc2gAAiIlc19fYWxsb3dlZExwU3RhYmxlQWRkb25TY3JpcHRIYXNoAQxzd2FwQ29udHJhY3QAAhAlc19fc3dhcENvbnRyYWN0ARBrZXlGYWN0b3J5Q29uZmlnAAIRJXNfX2ZhY3RvcnlDb25maWcBD2tleUxwVG9rZW5zTGlzdAACECVzX19scFRva2Vuc0xpc3QBEWtleVBvb2xTY3JpcHRIYXNoAAIWJXMlc19fcG9vbF9fc2NyaXB0SGFzaAENa2V5TWF0Y2hlclB1YgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQEYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAIZJXNfX2xlZ2FjeUZhY3RvcnlDb250cmFjdAEOa2V5TGVnYWN5UG9vbHMAAg8lc19fbGVnYWN5UG9vbHMBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBD2tleUFkbWluUHViS2V5cwACECVzX19hZG1pblB1YktleXMBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAAhclc19fYXNzZXRzU3RvcmVDb250cmFjdAEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAACGiVzX192b3RpbmdFbWlzc2lvbkNvbnRyYWN0AQ5rZXlQcmljZUFzc2V0cwAJALkJAgkAzAgCAgIlcwkAzAgCAgtwcmljZUFzc2V0cwUDbmlsBQNTRVABEGtleVByaWNlRGVjaW1hbHMAAhElc19fcHJpY2VEZWNpbWFscwETa2V5QWxsUG9vbHNTaHV0ZG93bgACDCVzX19zaHV0ZG93bgEWa2V5TmV4dEludGVybmFsQXNzZXRJZAACFyVzX19uZXh0SW50ZXJuYWxBc3NldElkAQ9rZXlQb29sVG9XZWlnaHQBC3Bvb2xBZGRyZXNzCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwULcG9vbEFkZHJlc3MBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCC3Bvb2xBZGRyZXNzA251bQkArAICCQCsAgIJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQtwb29sQWRkcmVzcwICX18JAKQDAQUDbnVtAR9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkARFpbnRlcm5hbEJhc2VBc3NldAkArAICAiglcyVzJWRfX21hcHBpbmdzX19pbnRlcm5hbDJiYXNlQXNzZXRJZF9fCQCkAwEFEWludGVybmFsQmFzZUFzc2V0AR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQxiYXNlQXNzZXRTdHIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUMYmFzZUFzc2V0U3RyAQ1rZXlQb29sQ29uZmlnAhNhbW91bnRBc3NldEludGVybmFsEnByaWNlQXNzZXRJbnRlcm5hbAkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUTYW1vdW50QXNzZXRJbnRlcm5hbAICX18FEnByaWNlQXNzZXRJbnRlcm5hbAIIX19jb25maWcBIWtleVBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAEOYXNzZXRzSW50ZXJuYWwECyR0MDM4MjUzODg3BQ5hc3NldHNJbnRlcm5hbAQTYW1vdW50QXNzZXRJbnRlcm5hbAgFCyR0MDM4MjUzODg3Al8xBBJwcmljZUFzc2V0SW50ZXJuYWwIBQskdDAzODI1Mzg4NwJfMgkAuQkCCQDMCAICBiVkJWQlcwkAzAgCCQCkAwEFE2Ftb3VudEFzc2V0SW50ZXJuYWwJAMwIAgkApAMBBRJwcmljZUFzc2V0SW50ZXJuYWwJAMwIAgIab25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQFA25pbAUDU0VQASVrZXlBbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkAAkAuQkCCQDMCAICAiVzCQDMCAICGm9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBQNuaWwFA1NFUAEda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMBCmxwQXNzZXRTdHIJAKwCAgkArAICAgglcyVzJXNfXwUKbHBBc3NldFN0cgIYX19tYXBwaW5nc19fbHBBc3NldDJQb29sAR1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyF2ludGVybmFsUHJpY2VBc3NldElkU3RyCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18FGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18FF2ludGVybmFsUHJpY2VBc3NldElkU3RyAh5fX21hcHBpbmdzX19Qb29sQXNzZXRzMkxwQXNzZXQBDWtleVBvb2xTcHJlYWQBC3Bvb2xBZGRyZXNzCQCsAgICDiVzJXNfX3NwcmVhZF9fBQtwb29sQWRkcmVzcwEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBE3Bvb2xDb250cmFjdEFkZHJlc3MJAKwCAgkArAICAgglcyVzJXNfXwUTcG9vbENvbnRyYWN0QWRkcmVzcwIjX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MlBvb2xBc3NldHMBKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHIJAKwCAgkArAICCQCsAgIJAKwCAgIKJWQlZCVzJXNfXwkApAMBBRhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHICAl9fCQCkAwEFF2ludGVybmFsUHJpY2VBc3NldElkU3RyAiNfX21hcHBpbmdzX19wb29sQXNzZXRzMlBvb2xDb250cmFjdAEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQpscEFzc2V0U3RyCQCsAgIJAKwCAgIIJXMlcyVzX18FCmxwQXNzZXRTdHICIF9fbWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0AQ1rZXlXeEVtaXNzaW9uAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAkArAICCQCsAgIJAKwCAgIUJXMlcyVzX193eEVtaXNzaW9uX18FDWFtb3VudEFzc2V0SWQCAl9fBQxwcmljZUFzc2V0SWQBCGtleUluRmVlAQtwb29sQWRkcmVzcwkArAICAg0lcyVzX19pbkZlZV9fBQtwb29sQWRkcmVzcwEPa2V5SW5GZWVEZWZhdWx0AAIQJXNfX2luRmVlRGVmYXVsdAEJa2V5T3V0RmVlAQtwb29sQWRkcmVzcwkArAICAg4lcyVzX19vdXRGZWVfXwULcG9vbEFkZHJlc3MBEGtleU91dEZlZURlZmF1bHQAAhElc19fb3V0RmVlRGVmYXVsdAEPZ2V0U3RyaW5nT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQNrZXkJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQNrZXkBEGdldEJvb2xlYW5PckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCbCAIFBHRoaXMFA2tleQkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FA2tleQEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQNrZXkBDHBhcnNlQXNzZXRJZAEFaW5wdXQDCQAAAgUFaW5wdXQFC3dhdmVzU3RyaW5nBQR1bml0CQDZBAEFBWlucHV0ABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAQAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAACABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAADABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAABAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAFABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAABgAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAHABRJZHhGYWN0b3J5Q2ZnRGFvRGFwcAAIABpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcAAJABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAKABZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwAAsBGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAQ5nZXRQcmljZUFzc2V0cwAEByRtYXRjaDAJAKIIAQkBDmtleVByaWNlQXNzZXRzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDADCQAAAgkAsQIBBQFzAAAFA25pbAkAtQkCBQFzBQNTRVAFA25pbAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAAJdGVzdEVycm9yCQACAQIPVGVzdCBlcnJvciBoZXJlAQhtdXN0VGhpcwEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0CQEIbXVzdFRoaXMBBQFpCQACAQILTWF0Y2ggZXJyb3IBEGRhdGFGYWN0b3J5Q2ZnVjMLDnN0YWtpbmdBZGRyZXNzD2Jvb3N0aW5nQWRkcmVzcwtpZG9Db250cmFjdAx0ZWFtQ29udHJhY3QQZW1pc3Npb25Db250cmFjdAxyZXN0Q29udHJhY3QQc2xpcHBhZ2VDb250cmFjdAtkYW9Db250cmFjdBFtYXJrZXRpbmdDb250cmFjdBJnd3hSZXdhcmRzQ29udHJhY3QNYmlyZHNDb250cmFjdAkAuQkCCQDMCAICFiVzJXMlcyVzJXMlcyVzJXMlcyVzJXMJAMwIAgUOc3Rha2luZ0FkZHJlc3MJAMwIAgUPYm9vc3RpbmdBZGRyZXNzCQDMCAIFC2lkb0NvbnRyYWN0CQDMCAIFDHRlYW1Db250cmFjdAkAzAgCBRBlbWlzc2lvbkNvbnRyYWN0CQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBRBzbGlwcGFnZUNvbnRyYWN0CQDMCAIFC2Rhb0NvbnRyYWN0CQDMCAIFEW1hcmtldGluZ0NvbnRyYWN0CQDMCAIFEmd3eFJld2FyZHNDb250cmFjdAkAzAgCBQ1iaXJkc0NvbnRyYWN0BQNuaWwFA1NFUAEOZGF0YUZhY3RvcnlDZmcHDnN0YWtpbmdBZGRyZXNzD2Jvb3N0aW5nQWRkcmVzcwtpZG9Db250cmFjdAx0ZWFtQ29udHJhY3QQZW1pc3Npb25Db250cmFjdAxyZXN0Q29udHJhY3QQc2xpcHBhZ2VDb250cmFjdAkAuQkCCQDMCAICDCVzJXMlcyVzJXMlcwkAzAgCBQ5zdGFraW5nQWRkcmVzcwkAzAgCBQ9ib29zdGluZ0FkZHJlc3MJAMwIAgULaWRvQ29udHJhY3QJAMwIAgUMdGVhbUNvbnRyYWN0CQDMCAIFEGVtaXNzaW9uQ29udHJhY3QJAMwIAgUMcmVzdENvbnRyYWN0CQDMCAIFEHNsaXBwYWdlQ29udHJhY3QFA25pbAUDU0VQAQtkYXRhUG9vbENmZwsLcG9vbEFkZHJlc3MKcG9vbFN0YXR1cwlscEFzc2V0SWQOYW1vdW50QXNzZXRTdHINcHJpY2VBc3NldFN0chNhbW91bnRBc3NldERlY2ltYWxzEnByaWNlQXNzZXREZWNpbWFscxVhbW91bnRBc3NldEludGVybmFsSWQUcHJpY2VBc3NldEludGVybmFsSWQPbHBBc3NldERlY2ltYWxzCHBvb2xUeXBlCQC5CQIJAMwIAgIWJXMlZCVzJXMlcyVkJWQlZCVkJWQlcwkAzAgCBQtwb29sQWRkcmVzcwkAzAgCBQpwb29sU3RhdHVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyCQDMCAIJAKQDAQUTYW1vdW50QXNzZXREZWNpbWFscwkAzAgCCQCkAwEFEnByaWNlQXNzZXREZWNpbWFscwkAzAgCCQCkAwEFFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAzAgCCQCkAwEFFHByaWNlQXNzZXRJbnRlcm5hbElkCQDMCAIJAKQDAQUPbHBBc3NldERlY2ltYWxzCQDMCAIFCHBvb2xUeXBlBQNuaWwFA1NFUAEVZGF0YU1hcHBpbmdQb29sQXNzZXRzAhZpbnRlcm5hbEFtb3VudEFzc2V0U3RyFWludGVybmFsUHJpY2VBc3NldFN0cgkAuQkCCQDMCAICBCVkJWQJAMwIAgkApAMBBRZpbnRlcm5hbEFtb3VudEFzc2V0U3RyCQDMCAIJAKQDAQUVaW50ZXJuYWxQcmljZUFzc2V0U3RyBQNuaWwFA1NFUAENZ2V0UG9vbENvbmZpZwELcG9vbEFkZHJlc3MECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIKYXNzZXRJZFN0cgtpbmNyZW1lbnRvcgQPaW50ZXJuYWxBc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUKYXNzZXRJZFN0cgAABBhjdXJyZW50SW5kZXhPZkludGVybmFsSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAEBnJlc3VsdAMJAAACBQ9pbnRlcm5hbEFzc2V0SWQAAAQSbmV3SW50ZXJuYWxBc3NldElkCQBkAgUYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkBQtpbmNyZW1lbnRvcgkAlQoDBRJuZXdJbnRlcm5hbEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAUSbmV3SW50ZXJuYWxBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFCmFzc2V0SWRTdHIFEm5ld0ludGVybmFsQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAEFEm5ld0ludGVybmFsQXNzZXRJZAUKYXNzZXRJZFN0cgUDbmlsBgkAlQoDBQ9pbnRlcm5hbEFzc2V0SWQFA25pbAcFBnJlc3VsdAEJbXVzdEFkbWluAQFpBAhhZG1pblBLcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlBZG1pblB1YktleXMABQVFTVBUWQUDU0VQAwkBD2NvbnRhaW5zRWxlbWVudAIFCGFkbWluUEtzCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQYECWlzTWFuYWdlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQlpc01hbmFnZXIFCWlzTWFuYWdlcgYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDA2tleQprZXlEZWZhdWx0DXZhbHVlRmFsbGJhY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCmtleURlZmF1bHQFDXZhbHVlRmFsbGJhY2sBEnBvb2xFeGlzdHNJbnRlcm5hbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJ8IAQkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQ1hbW91bnRBc3NldElkBBJwcmljZUFzc2V0SW50ZXJuYWwJAJ8IAQkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQxwcmljZUFzc2V0SWQDAwkAAAIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFBHVuaXQGCQAAAgUScHJpY2VBc3NldEludGVybmFsBQR1bml0BwQEYW1BcwkApAMBCQEFdmFsdWUBBRNhbW91bnRBc3NldEludGVybmFsBARwckFzCQCkAwEJAQV2YWx1ZQEFEnByaWNlQXNzZXRJbnRlcm5hbAQDY2ZnCQCiCAEJAQ1rZXlQb29sQ29uZmlnAgUEYW1BcwUEcHJBcwQKY2ZnUmV2ZXJzZQkAoggBCQENa2V5UG9vbENvbmZpZwIFBHByQXMFBGFtQXMEBmV4aXN0cwMJAQIhPQIFA2NmZwUEdW5pdAYJAQIhPQIFCmNmZ1JldmVyc2UFBHVuaXQFBmV4aXN0cx0BaQEXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkACQCUCgIFA25pbAkBD2dldFN0cmluZ09yRmFpbAEJAQxzd2FwQ29udHJhY3QAAWkBIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZAgZhc3NldDEGYXNzZXQyAwMJAAACBQZhc3NldDECLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTCQAAAgUGYXNzZXQyAgVXQVZFUwcJAJQKAgUDbmlsBQR1bml0BAlhc3NldE51bTEJAQV2YWx1ZQEJAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQZhc3NldDEECWFzc2V0TnVtMgkBBXZhbHVlAQkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFBmFzc2V0MgQCZWUJAJ0IAgUEdGhpcwkBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AgkApAMBBQlhc3NldE51bTEJAKQDAQUJYXNzZXROdW0yBANyZXMDCQAAAgUCZWUFBHVuaXQFBHVuaXQJALACAgkBBXZhbHVlAQUCZWUABAkAlAoCBQNuaWwFA3JlcwFpASFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkBAmxwCQCUCgIFA25pbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUCbHACAAFpAQtjb25zdHJ1Y3RvcggPc3Rha2luZ0NvbnRyYWN0EGJvb3N0aW5nQ29udHJhY3QLaWRvQ29udHJhY3QMdGVhbUNvbnRyYWN0EGVtaXNzaW9uQ29udHJhY3QMcmVzdENvbnRyYWN0EHNscGlwYWdlQ29udHJhY3QNcHJpY2VEZWNpbWFscwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlGYWN0b3J5Q29uZmlnAAkBDmRhdGFGYWN0b3J5Q2ZnBwUPc3Rha2luZ0NvbnRyYWN0BRBib29zdGluZ0NvbnRyYWN0BQtpZG9Db250cmFjdAUMdGVhbUNvbnRyYWN0BRBlbWlzc2lvbkNvbnRyYWN0BQxyZXN0Q29udHJhY3QFEHNscGlwYWdlQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlQcmljZURlY2ltYWxzAAUNcHJpY2VEZWNpbWFscwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjIBEG1hdGhjaGVyUHViNThTdHIEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQKbWF0aGNlclB1YgkApwgBCQDZBAEFEG1hdGhjaGVyUHViNThTdHIDCQAAAgUKbWF0aGNlclB1YgUKbWF0aGNlclB1YgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TWF0Y2hlclB1YgAFEG1hdGhjaGVyUHViNThTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclYzBAtkYW9Db250cmFjdBFtYXJrZXRpbmdDb250cmFjdBJnd3hSZXdhcmRzQ29udHJhY3QNYmlyZHNDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBApmYWN0b3J5Q2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RmFjdG9yeUNvbmZpZwAJARBkYXRhRmFjdG9yeUNmZ1YzCwkAkQMCBQpmYWN0b3J5Q2ZnAAEJAJEDAgUKZmFjdG9yeUNmZwACCQCRAwIFCmZhY3RvcnlDZmcAAwkAkQMCBQpmYWN0b3J5Q2ZnAAQJAJEDAgUKZmFjdG9yeUNmZwAFCQCRAwIFCmZhY3RvcnlDZmcABgkAkQMCBQpmYWN0b3J5Q2ZnAAcFC2Rhb0NvbnRyYWN0BRFtYXJrZXRpbmdDb250cmFjdAUSZ3d4UmV3YXJkc0NvbnRyYWN0BQ1iaXJkc0NvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNAIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0C2xlZ2FjeVBvb2xzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAAFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGVnYWN5UG9vbHMACQC5CQIFC2xlZ2FjeVBvb2xzBQNTRVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclY1ARNhc3NldHNTdG9yZUNvbnRyYWN0BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABRNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNgIWdm90aW5nRW1pc3Npb25Db250cmFjdAtwcmljZUFzc2V0cwQFY2hla3MJAMwIAgkBC211c3RNYW5hZ2VyAQUBaQkAzAgCAwkBAiE9AgkApggBBRZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQR1bml0BgIoaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY29udHJhY3QgYWRkcmVzcwUDbmlsAwkAAAIFBWNoZWtzBQVjaGVrcwkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAFFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVByaWNlQXNzZXRzAAkAuQkCBQtwcmljZUFzc2V0cwUDU0VQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJc2V0QWRtaW5zAQxhZG1pblB1YktleXMEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5QWRtaW5QdWJLZXlzAAkAuQkCBQxhZG1pblB1YktleXMFA1NFUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD2FjdGl2YXRlTmV3UG9vbAgLcG9vbEFkZHJlc3MOYW1vdW50QXNzZXRTdHINcHJpY2VBc3NldFN0cgtscEFzc2V0TmFtZQxscEFzc2V0RGVzY3IKcG9vbFdlaWdodAhwb29sVHlwZQRsb2dvBAtjaGVja0NhbGxlcgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyAwkBCWlzRGVmaW5lZAEJAKIIAQkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MJAAIBCQCsAgIJAKwCAgINUG9vbCBhZGRyZXNzIAULcG9vbEFkZHJlc3MCFCBhbHJlYWR5IHJlZ2lzdGVyZWQuBBdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQkBGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAgUOYW1vdW50QXNzZXRTdHIAAQQVaW50ZXJuYWxBbW91bnRBc3NldElkCAUXaW50ZXJuYWxBbW91bnRBc3NldERhdGECXzEEFmludGVybmFsUHJpY2VBc3NldERhdGEJARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIFDXByaWNlQXNzZXRTdHIDCAUXaW50ZXJuYWxBbW91bnRBc3NldERhdGECXzMAAgABBBRpbnRlcm5hbFByaWNlQXNzZXRJZAgFFmludGVybmFsUHJpY2VBc3NldERhdGECXzEEFXBvb2xBY2NvdW50U2NyaXB0SGFzaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDxBwEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzCQCsAgICKU5vIHNjcmlwdCBoYXMgYmVlbiBmb3VuZCBvbiBwb29sIGFjY291bnQgBQtwb29sQWRkcmVzcwQcZXRoYWxvblBvb2xBY2NvdW50U2NyaXB0SGFzaAkBEUBleHRyTmF0aXZlKDEwNTcpAQkBEWtleVBvb2xTY3JpcHRIYXNoAAQKcG9vbEV4aXN0cwkBEnBvb2xFeGlzdHNJbnRlcm5hbAIFDmFtb3VudEFzc2V0U3RyBQ1wcmljZUFzc2V0U3RyAwUKcG9vbEV4aXN0cwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIFUG9vbCAFDmFtb3VudEFzc2V0U3RyAgEvBQ1wcmljZUFzc2V0U3RyAhwgaGFzIGFscmVhZHkgYmVlbiBhY3RpdmF0ZWQuBA9wb29sQ29uZmlnVmFsdWUJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAQUYW1vdW50QXNzZXRzRGVjaW1hbHMDCQAAAgUOYW1vdW50QXNzZXRTdHICBVdBVkVTBRFkZWNpbWFsc011bHRQcmljZQkAbAYACgAACAkBBXZhbHVlAQkA7AcBCQDZBAEFDmFtb3VudEFzc2V0U3RyCGRlY2ltYWxzAAAAAAUERE9XTgQTcHJpY2VBc3NldHNEZWNpbWFscwMJAAACBQ1wcmljZUFzc2V0U3RyAgVXQVZFUwURZGVjaW1hbHNNdWx0UHJpY2UJAGwGAAoAAAgJAQV2YWx1ZQEJAOwHAQkA2QQBBQ1wcmljZUFzc2V0U3RyCGRlY2ltYWxzAAAAAAUERE9XTgQSbHBBc3NldElzc3VlQWN0aW9uCQDCCAUFC2xwQXNzZXROYW1lBQxscEFzc2V0RGVzY3IAAQAIBgQJbHBBc3NldElkCQC4CAEFEmxwQXNzZXRJc3N1ZUFjdGlvbgQMbHBBc3NldElkU3RyCQDYBAEFCWxwQXNzZXRJZAQYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzAghhY3RpdmF0ZQkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyBQNuaWwFA25pbAMJAAACBRhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQFGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAMJAQIhPQIFGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAIHc3VjY2VzcwkAAgECI1Bvb2wgaW5pdGlhbGlzYXRpb24gZXJyb3IgaGFwcGVuZWQuBBNhc3NldHNTdG9yZUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QABBhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIOY3JlYXRlT3JVcGRhdGUJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFC2xwQXNzZXROYW1lCQDMCAIHBQNuaWwFA25pbAMJAAACBRhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYFGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgQSYWRkUG9vbHNMcExhYmVsSW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCCGFkZExhYmVsCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQxsYWJlbFBvb2xzTHAFA25pbAUDbmlsAwkAAAIFEmFkZFBvb2xzTHBMYWJlbEludgUSYWRkUG9vbHNMcExhYmVsSW52BApzZXRMb2dvSW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCB3NldExvZ28JAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFBGxvZ28FA25pbAUDbmlsAwkAAAIFCnNldExvZ29JbnYFCnNldExvZ29JbnYEEGFkZEFzc2V0c0xpbmtJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAINYWRkQXNzZXRzTGluawkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNuaWwDCQAAAgUQYWRkQXNzZXRzTGlua0ludgUQYWRkQXNzZXRzTGlua0ludgQbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52CQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCGGluY3JlYXNlQXNzZXRQb29sc051bWJlcgkAzAgCBQ5hbW91bnRBc3NldFN0cgUDbmlsBQNuaWwDCQAAAgUbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52BRtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYJAJQKAgkAzggCCQDOCAIIBRdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQJfMggFFmludGVybmFsUHJpY2VBc3NldERhdGECXzIJAMwIAgUSbHBBc3NldElzc3VlQWN0aW9uCQDMCAIJAQRCdXJuAgUJbHBBc3NldElkAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkBC2RhdGFQb29sQ2ZnCwULcG9vbEFkZHJlc3MJAKQDAQUKUG9vbEFjdGl2ZQUMbHBBc3NldElkU3RyBQ5hbW91bnRBc3NldFN0cgUNcHJpY2VBc3NldFN0cgUUYW1vdW50QXNzZXRzRGVjaW1hbHMFE3ByaWNlQXNzZXRzRGVjaW1hbHMFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQFEWRlY2ltYWxzTXVsdFByaWNlBQhwb29sVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMBBQxscEFzc2V0SWRTdHIJARVkYXRhTWFwcGluZ1Bvb2xBc3NldHMCBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQCsAgICBCVzX18FDGxwQXNzZXRJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQEpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMBBQtwb29sQWRkcmVzcwkBFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAgUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAULcG9vbEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFDGxwQXNzZXRJZFN0cgULcG9vbEFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBQtwb29sQWRkcmVzcwUMbHBBc3NldElkU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UG9vbFRvV2VpZ2h0AQULcG9vbEFkZHJlc3MFCnBvb2xXZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlQb29sU3ByZWFkAQULcG9vbEFkZHJlc3MFDWRlZmF1bHRTcHJlYWQFA25pbAUMbHBBc3NldElkU3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCm1hbmFnZVBvb2wCC3Bvb2xBZGRyZXNzCW5ld1N0YXR1cwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFC3Bvb2xBZGRyZXNzBApwb29sU3RhdHVzCQCRAwIFCnBvb2xDb25maWcFDWlkeFBvb2xTdGF0dXMEDGxwQXNzZXRJZFN0cgkAkQMCBQpwb29sQ29uZmlnBRBpZHhQb29sTFBBc3NldElkBA5hbW91bnRBc3NldFN0cgkAkQMCBQpwb29sQ29uZmlnBQ1pZHhBbXRBc3NldElkBA1wcmljZUFzc2V0U3RyCQCRAwIFCnBvb2xDb25maWcFD2lkeFByaWNlQXNzZXRJZAQUYW1vdW50QXNzZXRzRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhBbXRBc3NldERjbQQTcHJpY2VBc3NldHNEZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeFByaWNlQXNzZXREY20EFWludGVybmFsQW1vdW50QXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDmlkeElBbXRBc3NldElkBBRpbnRlcm5hbFByaWNlQXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeElQcmljZUFzc2V0SWQECmxwQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhMUEFzc2V0RGNtBAhwb29sVHlwZQkAkQMCBQpwb29sQ29uZmlnBQtpZHhQb29sVHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UG9vbENvbmZpZwIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQELZGF0YVBvb2xDZmcLBQtwb29sQWRkcmVzcwkApAMBBQluZXdTdGF0dXMFDGxwQXNzZXRJZFN0cgUOYW1vdW50QXNzZXRTdHIFDXByaWNlQXNzZXRTdHIFFGFtb3VudEFzc2V0c0RlY2ltYWxzBRNwcmljZUFzc2V0c0RlY2ltYWxzBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkBQpscEFzc2V0RGNtBQhwb29sVHlwZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBGVtaXQBDGFtb3VudFRvRW1pdAQGY2FsbGVyCAUBaQZjYWxsZXIEDG9yaWdpbkNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBBBscEFzc2V0UmVxdWVzdGVkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQClCAEFBmNhbGxlcgIdSW52YWxpZCBMUCBhZGRyZXNzIGNhbGxlZCBtZS4EB2xwQXNzZXQJANkEAQUQbHBBc3NldFJlcXVlc3RlZAQLbGVnYWN5UG9vbHMJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEOa2V5TGVnYWN5UG9vbHMABQVFTVBUWQUDU0VQBBVsZWdhY3lGYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAIoTGVnYWN5IGZhY3RvcnkgY29udHJhY3QgZG9lcyBub3QgZXhpc3RzLgMJAGcCAAAFDGFtb3VudFRvRW1pdAUDbmlsAwkBD2NvbnRhaW5zRWxlbWVudAIFC2xlZ2FjeVBvb2xzCQClCAEFBmNhbGxlcgkAlAoCBQNuaWwFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkAlAoCCQDMCAIJAQdSZWlzc3VlAwUHbHBBc3NldAUMYW1vdW50VG9FbWl0BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDGFtb3VudFRvRW1pdAUHbHBBc3NldAUDbmlsAgdzdWNjZXNzAWkBBGJ1cm4BDGFtb3VudFRvQnVybgQGY2FsbGVyCAUBaQZjYWxsZXIEDG9yaWdpbkNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEDXBheW1lbnRBbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAQPaW5BbW91bnRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQEGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBCQClCAEFBmNhbGxlcgIdSW52YWxpZCBMUCBhZGRyZXNzIGNhbGxlZCBtZS4DCQECIT0CBQ9pbkFtb3VudEFzc2V0SWQFGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuAwkBAiE9AgUMYW1vdW50VG9CdXJuBQ1wYXltZW50QW1vdW50CQACAQIWSW52YWxpZCBhbW91bnQgcGFzc2VkLgQHbHBBc3NldAkA2QQBBRpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkAlAoCCQDMCAIJAQRCdXJuAgUHbHBBc3NldAUMYW1vdW50VG9CdXJuBQNuaWwCB3N1Y2Nlc3MBaQEMbW9kaWZ5V2VpZ2h0AglscEFzc2V0SWQFc2hhcmUEC2NoZWNrQ2FsbGVyAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAACAAYJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBNwb29sQ29udHJhY3RBZGRyZXNzCQEPZ2V0U3RyaW5nT3JGYWlsAQkBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFCWxwQXNzZXRJZAQNcG9vbFdlaWdodEtleQkBD2tleVBvb2xUb1dlaWdodAEFE3Bvb2xDb250cmFjdEFkZHJlc3MEDGd3eFdlaWdodEtleQkBD2tleVBvb2xUb1dlaWdodAEFDkdXWHZpcnR1YWxQT09MBAlnd3hXZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUMZ3d4V2VpZ2h0S2V5AAAECnBvb2xXZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNcG9vbFdlaWdodEtleQAABA1wb29sV2VpZ2h0TmV3BQVzaGFyZQQKZmFjdG9yeUNmZwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEGtleUZhY3RvcnlDb25maWcABQNTRVAED3N0YWtpbmdDb250cmFjdAkBF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQRb25Nb2RpZnlXZWlnaHRJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Ag5vbk1vZGlmeVdlaWdodAkAzAgCBQlscEFzc2V0SWQJAMwIAgUTcG9vbENvbnRyYWN0QWRkcmVzcwUDbmlsBQNuaWwDCQAAAgURb25Nb2RpZnlXZWlnaHRJbnYFEW9uTW9kaWZ5V2VpZ2h0SW52BBVnd3hWaXJ0dWFsUG9vbEFjdGlvbnMDCQAAAgUJZ3d4V2VpZ2h0AAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZ3d4V2VpZ2h0S2V5AAAFA25pbAQUcG9vbFdlaWdodEhpc3RvcnlLZXkJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUTcG9vbENvbnRyYWN0QWRkcmVzcwAABBdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdAkAnwgBBRRwb29sV2VpZ2h0SGlzdG9yeUtleQQYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zAwkAAAIFF3Bvb2xXZWlnaHRIaXN0b3J5T3JVbml0BQR1bml0BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUUcG9vbFdlaWdodEhpc3RvcnlLZXkFA25pbAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFDXBvb2xXZWlnaHRLZXkFDXBvb2xXZWlnaHROZXcFA25pbAUVZ3d4VmlydHVhbFBvb2xBY3Rpb25zBRhwb29sV2VpZ2h0SGlzdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENbW9kaWZ5V2VpZ2h0cwQOYnRjUG9vbEFkZHJlc3MOZXRoUG9vbEFkZHJlc3MRZXRoQnRjUG9vbEFkZHJlc3MTdXNkY1VzZHRQb29sQWRkcmVzcwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBA9ldGhCdGNXZWlnaHROZXcJAGkCCQBoAgAFBQ5QT09MV0VJR0hUTVVMVABkBBF1c2RjVXNkdFdlaWdodE5ldwkAaQIJAGgCAAUFDlBPT0xXRUlHSFRNVUxUAGQED3dlaWdodERlY3JlbWVudAkAaQIJAGgCAAUFDlBPT0xXRUlHSFRNVUxUAGQECmZhY3RvcnlDZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJARBrZXlGYWN0b3J5Q29uZmlnAAUDU0VQBAtzdGFraW5nRGFwcAkBF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwQNZ3d4UmV3YXJkRGFwcAkBGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnBAxidGNXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBQ5idGNQb29sQWRkcmVzcwQMZXRoV2VpZ2h0S0VZCQEPa2V5UG9vbFRvV2VpZ2h0AQUOZXRoUG9vbEFkZHJlc3MED2V0aEJ0Y1dlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFEWV0aEJ0Y1Bvb2xBZGRyZXNzBBF1c2RjVXNkdFdlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFE3VzZGNVc2R0UG9vbEFkZHJlc3MECWJ0Y1dlaWdodAkBDGdldEludE9yRmFpbAEFDGJ0Y1dlaWdodEtFWQQJZXRoV2VpZ2h0CQEMZ2V0SW50T3JGYWlsAQUMZXRoV2VpZ2h0S0VZBAxidGNXZWlnaHROZXcJAGUCBQlidGNXZWlnaHQFD3dlaWdodERlY3JlbWVudAQMZXRoV2VpZ2h0TmV3CQBlAgUJZXRoV2VpZ2h0BQ93ZWlnaHREZWNyZW1lbnQDCQBnAgAABQxidGNXZWlnaHROZXcJAAIBCQCsAgICFmludmFsaWQgYnRjV2VpZ2h0TmV3OiAJAKQDAQUMYnRjV2VpZ2h0TmV3AwkAZwIAAAUMZXRoV2VpZ2h0TmV3CQACAQkArAICAhZpbnZhbGlkIGV0aFdlaWdodE5ldzogCQCkAwEFDGV0aFdlaWdodE5ldwQPYnRjTHBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBQ5idGNQb29sQWRkcmVzcwQPZXRoTHBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBQ5ldGhQb29sQWRkcmVzcwQSZXRoQnRjTHBBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRFldGhCdGNQb29sQWRkcmVzcwQUdXNkY1VzZHRMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFE3VzZGNVc2R0UG9vbEFkZHJlc3MEEW9uTW9kaWZ5V2VpZ2h0QnRjCQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBQ9idGNMcEFzc2V0SWRTdHIJAMwIAgUOYnRjUG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFEW9uTW9kaWZ5V2VpZ2h0QnRjBRFvbk1vZGlmeVdlaWdodEJ0YwQRb25Nb2RpZnlXZWlnaHRFdGgJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFD2V0aExwQXNzZXRJZFN0cgkAzAgCBQ5ldGhQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgURb25Nb2RpZnlXZWlnaHRFdGgFEW9uTW9kaWZ5V2VpZ2h0RXRoBBRvbk1vZGlmeVdlaWdodEV0aEJ0YwkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUSZXRoQnRjTHBBc3NldElkU3RyCQDMCAIFEWV0aEJ0Y1Bvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRRvbk1vZGlmeVdlaWdodEV0aEJ0YwUUb25Nb2RpZnlXZWlnaHRFdGhCdGMEFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFFHVzZGNVc2R0THBBc3NldElkU3RyCQDMCAIFE3VzZGNVc2R0UG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQFFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDGJ0Y1dlaWdodEtFWQUMYnRjV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxldGhXZWlnaHRLRVkFDGV0aFdlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPZXRoQnRjV2VpZ2h0S0VZBQ9ldGhCdGNXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFEXVzZGNVc2R0V2VpZ2h0S0VZBRF1c2RjVXNkdFdlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBQ5idGNQb29sQWRkcmVzcwAABQlidGNXZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgUOZXRoUG9vbEFkZHJlc3MAAAUJZXRoV2VpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFEWV0aEJ0Y1Bvb2xBZGRyZXNzAAAFD2V0aEJ0Y1dlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBRN1c2RjVXNkdFBvb2xBZGRyZXNzAAAFEXVzZGNVc2R0V2VpZ2h0TmV3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQJaGF2ZUxhYmVsBAckbWF0Y2gwCQCgCAEJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWIFByRtYXRjaDAFAWIHCQCUCgIFA25pbAUJaGF2ZUxhYmVsAWkBFnNldFd4RW1pc3Npb25Qb29sTGFiZWwCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBAtjaGVja0NhbGxlcgkBCW11c3RBZG1pbgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBAtjaGVja0NhbGxlcgMJAQhtdXN0VGhpcwEFAWkGCQEJbXVzdEFkbWluAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5V3hFbWlzc2lvbgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEm9uVmVyaWZpY2F0aW9uTG9zcwEHYXNzZXRJZAQLY2hlY2tDYWxsZXIDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAIABgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3ByaWNlQXNzZXRzCQEOZ2V0UHJpY2VBc3NldHMABBRjaGVja1ByaWNlQXNzZXRzU2l6ZQMJAGYCCQCQAwEFC3ByaWNlQXNzZXRzAAAGCQACAQIUaW52YWxpZCBwcmljZSBhc3NldHMDCQAAAgUUY2hlY2tQcmljZUFzc2V0c1NpemUFFGNoZWNrUHJpY2VBc3NldHNTaXplCgECY2ICA2FjYwpwcmljZUFzc2V0BAFyCQD8BwQFBHRoaXMCGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwJAMwIAgUHYXNzZXRJZAkAzAgCBQpwcmljZUFzc2V0BQNuaWwFA25pbAMJAAACBQFyBQFyBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAdhY3Rpb25zCgACJGwFC3ByaWNlQXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQECY2ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDIJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAwkAAAIFB2FjdGlvbnMFB2FjdGlvbnMJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFC3Bvb2xBZGRyZXNzBA5hc3NldHNJbnRlcm5hbAkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUOaWR4SUFtdEFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhJUHJpY2VBc3NldElkBB5wb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBIWtleVBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAEFDmFzc2V0c0ludGVybmFsBwQiYWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEla2V5QWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAAHCQCUCgIFA25pbAMFImFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQGBR5wb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQBaQEQZ2V0SW5GZWVSRUFET05MWQELcG9vbEFkZHJlc3MEA2ZlZQkBFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDCQEIa2V5SW5GZWUBBQtwb29sQWRkcmVzcwkBD2tleUluRmVlRGVmYXVsdAAAAAkAlAoCBQNuaWwFA2ZlZQFpARFnZXRPdXRGZWVSRUFET05MWQELcG9vbEFkZHJlc3MEA2ZlZQkBFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDCQEJa2V5T3V0RmVlAQULcG9vbEFkZHJlc3MJARBrZXlPdXRGZWVEZWZhdWx0AAkAawMACgUFTVVMVDgAkE4JAJQKAgUDbmlsBQNmZWUBaQEQcG9vbEluZm9SRUFET05MWQIQYW1vdW50QXNzZXRJZFN0cg9wcmljZUFzc2V0SWRTdHIEG2Ftb3VudEFzc2V0SW50ZXJuYWxJZE9wdGlvbgkAmggCBQR0aGlzCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFEGFtb3VudEFzc2V0SWRTdHIEGnByaWNlQXNzZXRJbnRlcm5hbElkT3B0aW9uCQCaCAIFBHRoaXMJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUPcHJpY2VBc3NldElkU3RyBBlwb29sQ29udHJhY3RBZGRyZXNzT3B0aW9uCQCdCAIFBHRoaXMJASlrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwIJAQV2YWx1ZQEFG2Ftb3VudEFzc2V0SW50ZXJuYWxJZE9wdGlvbgkBBXZhbHVlAQUacHJpY2VBc3NldEludGVybmFsSWRPcHRpb24ED2xwQXNzZXRJZE9wdGlvbgkAnQgCBQR0aGlzCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEJAQV2YWx1ZQEFGXBvb2xDb250cmFjdEFkZHJlc3NPcHRpb24ECnBvb2xFeGlzdHMDAwkBCWlzRGVmaW5lZAEFG2Ftb3VudEFzc2V0SW50ZXJuYWxJZE9wdGlvbgkBCWlzRGVmaW5lZAEFGnByaWNlQXNzZXRJbnRlcm5hbElkT3B0aW9uBwkBCWlzRGVmaW5lZAEFGXBvb2xDb250cmFjdEFkZHJlc3NPcHRpb24HBAhwb29sSW5mbwMFCnBvb2xFeGlzdHMJAJQKAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUZcG9vbENvbnRyYWN0QWRkcmVzc09wdGlvbgkBDHBhcnNlQXNzZXRJZAEJAQV2YWx1ZQEFD2xwQXNzZXRJZE9wdGlvbgUEdW5pdAkAlAoCBQNuaWwFCHBvb2xJbmZvAWkBFWdldFBvb2xTdGF0dXNSRUFET05MWQELcG9vbEFkZHJlc3MECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACBANjZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQ1rZXlQb29sQ29uZmlnAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsBQNTRVAJAJQKAgUDbmlsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzAWkBFWdldFBvb2xDb25maWdSRUFET05MWQELcG9vbEFkZHJlc3MECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACBANjZmcJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQ1rZXlQb29sQ29uZmlnAgUTYW1vdW50QXNzZXRJbnRlcm5hbAUScHJpY2VBc3NldEludGVybmFsBQNTRVAJAJQKAgUDbmlsBQNjZmcBaQEScG9vbEV4aXN0c1JFQURPTkxZAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAkAlAoCBQNuaWwJARJwb29sRXhpc3RzSW50ZXJuYWwCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXmQd2Z1", "chainId": 84, "height": 2483612, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 35uzU88cbk1Uc9gZ3FESPVfMBLM5h14LPzZdoFLmbdM3 Next: 8GauiF72wi24yv4Zh9VAhvFcntCAsehQjHQjEk8MGxVT Diff:
Old | New | Differences | |
---|---|---|---|
17 | 17 | ||
18 | 18 | let h = 2000000 | |
19 | 19 | ||
20 | - | let i = | |
20 | + | let i = "WAVES" | |
21 | 21 | ||
22 | - | let j = | |
22 | + | let j = ((100 * 1000) * 1000) | |
23 | 23 | ||
24 | - | let k = "" | |
24 | + | let k = "__" | |
25 | 25 | ||
26 | - | let l = | |
26 | + | let l = "" | |
27 | 27 | ||
28 | - | let m = | |
28 | + | let m = 1 | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = 2 | |
31 | 31 | ||
32 | - | let o = | |
32 | + | let o = 3 | |
33 | 33 | ||
34 | - | let p = | |
34 | + | let p = 4 | |
35 | 35 | ||
36 | - | let q = | |
36 | + | let q = 1 | |
37 | 37 | ||
38 | - | let r = | |
38 | + | let r = 2 | |
39 | 39 | ||
40 | - | let s = | |
40 | + | let s = 3 | |
41 | 41 | ||
42 | - | let t = | |
42 | + | let t = 1 | |
43 | 43 | ||
44 | - | let u = | |
44 | + | let u = 2 | |
45 | 45 | ||
46 | - | let v = | |
46 | + | let v = 3 | |
47 | 47 | ||
48 | - | let w = | |
48 | + | let w = 4 | |
49 | 49 | ||
50 | - | let x = | |
50 | + | let x = 5 | |
51 | 51 | ||
52 | - | let y = | |
52 | + | let y = 6 | |
53 | 53 | ||
54 | - | let z = | |
54 | + | let z = 7 | |
55 | 55 | ||
56 | - | let A = | |
56 | + | let A = 8 | |
57 | 57 | ||
58 | - | let B = | |
58 | + | let B = 9 | |
59 | 59 | ||
60 | - | let C = | |
60 | + | let C = 10 | |
61 | 61 | ||
62 | - | let D = | |
62 | + | let D = 11 | |
63 | 63 | ||
64 | - | let E = | |
64 | + | let E = "WX_EMISSION" | |
65 | 65 | ||
66 | - | func F () = "%s__allowedLpScriptHash" | |
66 | + | let F = [E] | |
67 | + | ||
68 | + | func G () = "%s__allowedLpScriptHash" | |
67 | 69 | ||
68 | 70 | ||
69 | - | func | |
71 | + | func H () = "%s__allowedLpStableScriptHash" | |
70 | 72 | ||
71 | 73 | ||
72 | - | func | |
74 | + | func I () = "%s__allowedLpStableAddonScriptHash" | |
73 | 75 | ||
74 | 76 | ||
75 | - | func | |
77 | + | func J () = "%s__swapContract" | |
76 | 78 | ||
77 | 79 | ||
78 | - | func | |
80 | + | func K () = "%s__factoryConfig" | |
79 | 81 | ||
80 | 82 | ||
81 | - | func | |
83 | + | func L () = "%s__lpTokensList" | |
82 | 84 | ||
83 | 85 | ||
84 | - | func | |
86 | + | func M () = "%s%s__pool__scriptHash" | |
85 | 87 | ||
86 | 88 | ||
87 | - | func | |
89 | + | func N () = "%s%s__matcher__publicKey" | |
88 | 90 | ||
89 | 91 | ||
90 | - | func | |
92 | + | func O () = "%s__legacyFactoryContract" | |
91 | 93 | ||
92 | 94 | ||
93 | - | func | |
95 | + | func P () = "%s__legacyPools" | |
94 | 96 | ||
95 | 97 | ||
96 | - | func | |
98 | + | func Q () = "%s__managerPublicKey" | |
97 | 99 | ||
98 | 100 | ||
99 | - | func | |
101 | + | func R () = "%s__pendingManagerPublicKey" | |
100 | 102 | ||
101 | 103 | ||
102 | - | func | |
104 | + | func S () = "%s__adminPubKeys" | |
103 | 105 | ||
104 | 106 | ||
105 | - | func | |
107 | + | func T () = "%s__assetsStoreContract" | |
106 | 108 | ||
107 | 109 | ||
108 | - | func | |
110 | + | func U () = "%s__votingEmissionContract" | |
109 | 111 | ||
110 | 112 | ||
111 | - | func | |
113 | + | func V () = makeString(["%s", "priceAssets"], k) | |
112 | 114 | ||
113 | 115 | ||
114 | - | func | |
116 | + | func W () = "%s__priceDecimals" | |
115 | 117 | ||
116 | 118 | ||
117 | - | func | |
119 | + | func X () = "%s__shutdown" | |
118 | 120 | ||
119 | 121 | ||
120 | - | func | |
122 | + | func Y () = "%s__nextInternalAssetId" | |
121 | 123 | ||
122 | 124 | ||
123 | - | func Z ( | |
125 | + | func Z (aa) = ("%s%s__poolWeight__" + aa) | |
124 | 126 | ||
125 | 127 | ||
126 | - | func ab (ac) = ("%s%s | |
128 | + | func ab (aa,ac) = ((("%s%s__poolWeight__" + aa) + "__") + toString(ac)) | |
127 | 129 | ||
128 | 130 | ||
129 | - | func ad (ae) = ("%s%s% | |
131 | + | func ad (ae) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ae)) | |
130 | 132 | ||
131 | 133 | ||
132 | - | func af (ag | |
134 | + | func af (ag) = ("%s%s%s__mappings__baseAsset2internalId__" + ag) | |
133 | 135 | ||
134 | 136 | ||
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) | |
137 | + | func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config") | |
138 | + | ||
139 | + | ||
140 | + | func ak (al) = { | |
141 | + | let am = al | |
142 | + | let ai = am._1 | |
143 | + | let aj = am._2 | |
144 | + | makeString(["%d%d%s", toString(ai), toString(aj), "oneTokenOperationsDisabled"], k) | |
140 | 145 | } | |
141 | 146 | ||
142 | 147 | ||
143 | - | func | |
148 | + | func an () = makeString(["%s", "oneTokenOperationsDisabled"], k) | |
144 | 149 | ||
145 | 150 | ||
146 | - | func | |
151 | + | func ao (ap) = (("%s%s%s__" + ap) + "__mappings__lpAsset2Pool") | |
147 | 152 | ||
148 | 153 | ||
149 | - | func | |
154 | + | func aq (ar,as) = (((("%d%d%s%s__" + ar) + "__") + as) + "__mappings__PoolAssets2LpAsset") | |
150 | 155 | ||
151 | 156 | ||
152 | - | func | |
157 | + | func at (aa) = ("%s%s__spread__" + aa) | |
153 | 158 | ||
154 | 159 | ||
155 | - | func | |
160 | + | func au (av) = (("%s%s%s__" + av) + "__mappings__poolContract2PoolAssets") | |
156 | 161 | ||
157 | 162 | ||
158 | - | func | |
163 | + | func aw (ar,as) = (((("%d%d%s%s__" + toString(ar)) + "__") + toString(as)) + "__mappings__poolAssets2PoolContract") | |
159 | 164 | ||
160 | 165 | ||
161 | - | func | |
166 | + | func ax (av) = (("%s%s%s__" + av) + "__mappings__poolContract2LpAsset") | |
162 | 167 | ||
163 | 168 | ||
164 | - | func | |
169 | + | func ay (ap) = (("%s%s%s__" + ap) + "__mappings__lpAsset2PoolContract") | |
165 | 170 | ||
166 | 171 | ||
167 | - | func | |
172 | + | func az (aA,aB) = ((("%s%s%s__wxEmission__" + aA) + "__") + aB) | |
168 | 173 | ||
169 | 174 | ||
170 | - | func | |
175 | + | func aC (aa) = ("%s%s__inFee__" + aa) | |
171 | 176 | ||
172 | 177 | ||
173 | - | func | |
178 | + | func aD () = "%s__inFeeDefault" | |
174 | 179 | ||
175 | 180 | ||
176 | - | func | |
181 | + | func aE (aa) = ("%s%s__outFee__" + aa) | |
177 | 182 | ||
178 | 183 | ||
179 | - | func | |
184 | + | func aF () = "%s__outFeeDefault" | |
180 | 185 | ||
181 | 186 | ||
182 | - | func | |
187 | + | func aG (aH) = valueOrErrorMessage(getString(this, aH), ("No data for this.key=" + aH)) | |
183 | 188 | ||
184 | 189 | ||
185 | - | func | |
190 | + | func aI (aH) = valueOrErrorMessage(getBoolean(this, aH), ("No data for this.key=" + aH)) | |
186 | 191 | ||
187 | 192 | ||
188 | - | func | |
193 | + | func aJ (aH) = valueOrErrorMessage(getInteger(this, aH), ("No data for this.key=" + aH)) | |
189 | 194 | ||
190 | 195 | ||
191 | - | let aI = 1 | |
192 | - | ||
193 | - | let aJ = 2 | |
194 | - | ||
195 | - | let aK = 3 | |
196 | - | ||
197 | - | let aL = 4 | |
198 | - | ||
199 | - | let aM = 5 | |
200 | - | ||
201 | - | let aN = 6 | |
202 | - | ||
203 | - | let aO = 7 | |
204 | - | ||
205 | - | let aP = 8 | |
206 | - | ||
207 | - | let aQ = 9 | |
208 | - | ||
209 | - | let aR = 10 | |
210 | - | ||
211 | - | let aS = 11 | |
212 | - | ||
213 | - | func aT (aU) = addressFromStringValue(aU[aJ]) | |
196 | + | func aK (aL) = if ((aL == i)) | |
197 | + | then unit | |
198 | + | else fromBase58String(aL) | |
214 | 199 | ||
215 | 200 | ||
216 | - | func aV (aU) = addressFromStringValue(aU[aM]) | |
201 | + | let aM = 1 | |
202 | + | ||
203 | + | let aN = 2 | |
204 | + | ||
205 | + | let aO = 3 | |
206 | + | ||
207 | + | let aP = 4 | |
208 | + | ||
209 | + | let aQ = 5 | |
210 | + | ||
211 | + | let aR = 6 | |
212 | + | ||
213 | + | let aS = 7 | |
214 | + | ||
215 | + | let aT = 8 | |
216 | + | ||
217 | + | let aU = 9 | |
218 | + | ||
219 | + | let aV = 10 | |
220 | + | ||
221 | + | let aW = 11 | |
222 | + | ||
223 | + | func aX (aY) = addressFromStringValue(aY[aN]) | |
217 | 224 | ||
218 | 225 | ||
219 | - | func | |
226 | + | func aZ (aY) = addressFromStringValue(aY[aQ]) | |
220 | 227 | ||
221 | 228 | ||
222 | - | func | |
229 | + | func ba (aY) = addressFromStringValue(aY[aM]) | |
223 | 230 | ||
224 | 231 | ||
225 | - | func aY () = { | |
226 | - | let aZ = getString(T()) | |
227 | - | if ($isInstanceOf(aZ, "String")) | |
232 | + | func bb (aY) = addressFromStringValue(aY[aV]) | |
233 | + | ||
234 | + | ||
235 | + | func bc () = { | |
236 | + | let bd = getString(V()) | |
237 | + | if ($isInstanceOf(bd, "String")) | |
228 | 238 | then { | |
229 | - | let | |
230 | - | if ((size( | |
239 | + | let be = bd | |
240 | + | if ((size(be) == 0)) | |
231 | 241 | then nil | |
232 | - | else split( | |
242 | + | else split(be, k) | |
233 | 243 | } | |
234 | 244 | else nil | |
235 | 245 | } | |
236 | 246 | ||
237 | 247 | ||
238 | - | func | |
239 | - | let | |
240 | - | if ($isInstanceOf( | |
248 | + | func bf () = { | |
249 | + | let bd = getString(Q()) | |
250 | + | if ($isInstanceOf(bd, "String")) | |
241 | 251 | then { | |
242 | - | let | |
243 | - | fromBase58String( | |
252 | + | let be = bd | |
253 | + | fromBase58String(be) | |
244 | 254 | } | |
245 | - | else if ($isInstanceOf( | |
255 | + | else if ($isInstanceOf(bd, "Unit")) | |
246 | 256 | then unit | |
247 | 257 | else throw("Match error") | |
248 | 258 | } | |
249 | 259 | ||
250 | 260 | ||
251 | - | func | |
252 | - | let | |
253 | - | if ($isInstanceOf( | |
261 | + | func bg () = { | |
262 | + | let bd = getString(R()) | |
263 | + | if ($isInstanceOf(bd, "String")) | |
254 | 264 | then { | |
255 | - | let | |
256 | - | fromBase58String( | |
265 | + | let be = bd | |
266 | + | fromBase58String(be) | |
257 | 267 | } | |
258 | - | else if ($isInstanceOf( | |
268 | + | else if ($isInstanceOf(bd, "Unit")) | |
259 | 269 | then unit | |
260 | 270 | else throw("Match error") | |
261 | 271 | } | |
262 | 272 | ||
263 | 273 | ||
264 | - | let | |
274 | + | let bh = throw("Permission denied") | |
265 | 275 | ||
266 | - | func be (bf) = if ((bf.caller == this)) | |
276 | + | let bi = throw("Test error here") | |
277 | + | ||
278 | + | func bj (bk) = if ((bk.caller == this)) | |
267 | 279 | then true | |
268 | - | else | |
280 | + | else bh | |
269 | 281 | ||
270 | 282 | ||
271 | - | func | |
272 | - | let | |
273 | - | if ($isInstanceOf( | |
283 | + | func bl (bk) = { | |
284 | + | let bd = bf() | |
285 | + | if ($isInstanceOf(bd, "ByteVector")) | |
274 | 286 | then { | |
275 | - | let | |
276 | - | if (( | |
287 | + | let bm = bd | |
288 | + | if ((bk.callerPublicKey == bm)) | |
277 | 289 | then true | |
278 | - | else | |
290 | + | else bh | |
279 | 291 | } | |
280 | - | else if ($isInstanceOf( | |
281 | - | then | |
292 | + | else if ($isInstanceOf(bd, "Unit")) | |
293 | + | then bj(bk) | |
282 | 294 | else throw("Match error") | |
283 | 295 | } | |
284 | 296 | ||
285 | 297 | ||
286 | - | func | |
298 | + | func bn (bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by], k) | |
287 | 299 | ||
288 | 300 | ||
289 | - | func | |
301 | + | func bz (bo,bp,bq,br,bs,bt,bu) = makeString(["%s%s%s%s%s%s", bo, bp, bq, br, bs, bt, bu], k) | |
290 | 302 | ||
291 | 303 | ||
292 | - | func | |
304 | + | func bA (aa,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", aa, bB, bC, bD, bE, toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), bK], k) | |
293 | 305 | ||
294 | 306 | ||
295 | - | func | |
307 | + | func bL (bM,bN) = makeString(["%d%d", toString(bM), toString(bN)], k) | |
296 | 308 | ||
297 | 309 | ||
298 | - | func | |
299 | - | let | |
300 | - | let | |
301 | - | let | |
302 | - | split( | |
310 | + | func bO (aa) = { | |
311 | + | let bP = split(aG(au(aa)), k) | |
312 | + | let ai = bP[1] | |
313 | + | let aj = bP[2] | |
314 | + | split(aG(ah(ai, aj)), k) | |
303 | 315 | } | |
304 | 316 | ||
305 | 317 | ||
306 | - | func | |
307 | - | let | |
308 | - | let | |
309 | - | let | |
318 | + | func bQ (bR,bS) = { | |
319 | + | let bT = valueOrElse(getInteger(this, af(bR)), 0) | |
320 | + | let bU = valueOrElse(getInteger(this, Y()), 0) | |
321 | + | let bV = if ((bT == 0)) | |
310 | 322 | then { | |
311 | - | let | |
312 | - | $Tuple3( | |
323 | + | let bW = (bU + bS) | |
324 | + | $Tuple3(bW, [IntegerEntry(Y(), bW), IntegerEntry(af(bR), bW), StringEntry(ad(bW), bR)], true) | |
313 | 325 | } | |
314 | - | else $Tuple3( | |
315 | - | | |
326 | + | else $Tuple3(bT, nil, false) | |
327 | + | bV | |
316 | 328 | } | |
317 | 329 | ||
318 | 330 | ||
319 | - | func | |
320 | - | let | |
321 | - | if (containsElement( | |
331 | + | func bX (bk) = { | |
332 | + | let bY = split(valueOrElse(getString(S()), l), k) | |
333 | + | if (containsElement(bY, toBase58String(bk.callerPublicKey))) | |
322 | 334 | then true | |
323 | 335 | else { | |
324 | - | let | |
325 | - | if (( | |
336 | + | let bZ = bl(bk) | |
337 | + | if ((bZ == bZ)) | |
326 | 338 | then true | |
327 | 339 | else throw("Strict value is not equal to itself.") | |
328 | 340 | } | |
329 | 341 | } | |
330 | 342 | ||
331 | 343 | ||
332 | - | func | |
344 | + | func ca (aH,cb,cc) = valueOrElse(getInteger(this, aH), valueOrElse(getInteger(this, cb), cc)) | |
333 | 345 | ||
334 | 346 | ||
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)] | |
347 | + | func cd (aA,aB) = { | |
348 | + | let ai = getInteger(af(aA)) | |
349 | + | let aj = getInteger(af(aB)) | |
350 | + | if (if ((ai == unit)) | |
351 | + | then true | |
352 | + | else (aj == unit)) | |
353 | + | then false | |
354 | + | else { | |
355 | + | let ce = toString(value(ai)) | |
356 | + | let cf = toString(value(aj)) | |
357 | + | let cg = getString(ah(ce, cf)) | |
358 | + | let ch = getString(ah(cf, ce)) | |
359 | + | let ci = if ((cg != unit)) | |
360 | + | then true | |
361 | + | else (ch != unit) | |
362 | + | ci | |
363 | + | } | |
364 | + | } | |
365 | + | ||
366 | + | ||
367 | + | @Callable(bk) | |
368 | + | func getSwapContractREADONLY () = $Tuple2(nil, aG(J())) | |
369 | + | ||
370 | + | ||
371 | + | ||
372 | + | @Callable(bk) | |
373 | + | func getLpAssetFromPoolAssetsREADONLY (cj,ck) = if (if ((cj == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS")) | |
374 | + | then (ck == "WAVES") | |
375 | + | else false) | |
376 | + | then $Tuple2(nil, unit) | |
377 | + | else { | |
378 | + | let cl = value(getInteger(this, af(cj))) | |
379 | + | let cm = value(getInteger(this, af(ck))) | |
380 | + | let cn = getString(this, aq(toString(cl), toString(cm))) | |
381 | + | let co = if ((cn == unit)) | |
382 | + | then unit | |
383 | + | else drop(value(cn), 4) | |
384 | + | $Tuple2(nil, co) | |
385 | + | } | |
386 | + | ||
387 | + | ||
388 | + | ||
389 | + | @Callable(bk) | |
390 | + | func getPoolAddressFromLpAssetREADONLY (cp) = $Tuple2(nil, valueOrElse(getString(this, ay(cp)), "")) | |
391 | + | ||
392 | + | ||
393 | + | ||
394 | + | @Callable(bk) | |
395 | + | func constructor (cq,cr,bq,br,bs,bt,cs,ct) = { | |
396 | + | let cu = bl(bk) | |
397 | + | if ((cu == cu)) | |
398 | + | then [StringEntry(K(), bz(cq, cr, bq, br, bs, bt, cs)), IntegerEntry(W(), ct)] | |
340 | 399 | else throw("Strict value is not equal to itself.") | |
341 | 400 | } | |
342 | 401 | ||
343 | 402 | ||
344 | 403 | ||
345 | - | @Callable( | |
346 | - | func constructorV2 ( | |
347 | - | let | |
348 | - | if (( | |
404 | + | @Callable(bk) | |
405 | + | func constructorV2 (cv) = { | |
406 | + | let cu = bl(bk) | |
407 | + | if ((cu == cu)) | |
349 | 408 | then { | |
350 | - | let | |
351 | - | if (( | |
352 | - | then [StringEntry( | |
409 | + | let cw = addressFromPublicKey(fromBase58String(cv)) | |
410 | + | if ((cw == cw)) | |
411 | + | then [StringEntry(N(), cv)] | |
353 | 412 | else throw("Strict value is not equal to itself.") | |
354 | 413 | } | |
355 | 414 | else throw("Strict value is not equal to itself.") | |
357 | 416 | ||
358 | 417 | ||
359 | 418 | ||
360 | - | @Callable( | |
361 | - | func constructorV3 ( | |
362 | - | let | |
363 | - | if (( | |
419 | + | @Callable(bk) | |
420 | + | func constructorV3 (bv,bw,bx,by) = { | |
421 | + | let cu = bl(bk) | |
422 | + | if ((cu == cu)) | |
364 | 423 | then { | |
365 | - | let | |
366 | - | [StringEntry( | |
424 | + | let aY = split(aG(K()), k) | |
425 | + | [StringEntry(K(), bn(aY[1], aY[2], aY[3], aY[4], aY[5], aY[6], aY[7], bv, bw, bx, by))] | |
367 | 426 | } | |
368 | 427 | else throw("Strict value is not equal to itself.") | |
369 | 428 | } | |
370 | 429 | ||
371 | 430 | ||
372 | 431 | ||
373 | - | @Callable( | |
374 | - | func constructorV4 ( | |
375 | - | let | |
376 | - | if (( | |
377 | - | then [StringEntry( | |
432 | + | @Callable(bk) | |
433 | + | func constructorV4 (cx,cy) = { | |
434 | + | let cu = bl(bk) | |
435 | + | if ((cu == cu)) | |
436 | + | then [StringEntry(O(), cx), StringEntry(P(), makeString(cy, k))] | |
378 | 437 | else throw("Strict value is not equal to itself.") | |
379 | 438 | } | |
380 | 439 | ||
381 | 440 | ||
382 | 441 | ||
383 | - | @Callable( | |
384 | - | func constructorV5 ( | |
385 | - | let | |
386 | - | if (( | |
387 | - | then [StringEntry( | |
442 | + | @Callable(bk) | |
443 | + | func constructorV5 (cz) = { | |
444 | + | let cu = bl(bk) | |
445 | + | if ((cu == cu)) | |
446 | + | then [StringEntry(T(), cz)] | |
388 | 447 | else throw("Strict value is not equal to itself.") | |
389 | 448 | } | |
390 | 449 | ||
391 | 450 | ||
392 | 451 | ||
393 | - | @Callable( | |
394 | - | func constructorV6 ( | |
395 | - | let | |
452 | + | @Callable(bk) | |
453 | + | func constructorV6 (cA,cB) = { | |
454 | + | let cC = [bl(bk), if ((addressFromString(cA) != unit)) | |
396 | 455 | then true | |
397 | 456 | else "invalid voting emission contract address"] | |
398 | - | if (( | |
399 | - | then [StringEntry( | |
457 | + | if ((cC == cC)) | |
458 | + | then [StringEntry(U(), cA), StringEntry(V(), makeString(cB, k))] | |
400 | 459 | else throw("Strict value is not equal to itself.") | |
401 | 460 | } | |
402 | 461 | ||
403 | 462 | ||
404 | 463 | ||
405 | - | @Callable( | |
406 | - | func setManager ( | |
407 | - | let | |
408 | - | if (( | |
464 | + | @Callable(bk) | |
465 | + | func setManager (cD) = { | |
466 | + | let cu = bl(bk) | |
467 | + | if ((cu == cu)) | |
409 | 468 | then { | |
410 | - | let | |
411 | - | if (( | |
412 | - | then [StringEntry( | |
469 | + | let cE = fromBase58String(cD) | |
470 | + | if ((cE == cE)) | |
471 | + | then [StringEntry(R(), cD)] | |
413 | 472 | else throw("Strict value is not equal to itself.") | |
414 | 473 | } | |
415 | 474 | else throw("Strict value is not equal to itself.") | |
417 | 476 | ||
418 | 477 | ||
419 | 478 | ||
420 | - | @Callable( | |
479 | + | @Callable(bk) | |
421 | 480 | func confirmManager () = { | |
422 | - | let | |
423 | - | let | |
481 | + | let cF = bg() | |
482 | + | let cG = if (isDefined(cF)) | |
424 | 483 | then true | |
425 | 484 | else throw("No pending manager") | |
426 | - | if (( | |
485 | + | if ((cG == cG)) | |
427 | 486 | then { | |
428 | - | let | |
487 | + | let cH = if ((bk.callerPublicKey == value(cF))) | |
429 | 488 | then true | |
430 | 489 | else throw("You are not pending manager") | |
431 | - | if (( | |
432 | - | then [StringEntry( | |
490 | + | if ((cH == cH)) | |
491 | + | then [StringEntry(Q(), toBase58String(value(cF))), DeleteEntry(R())] | |
433 | 492 | else throw("Strict value is not equal to itself.") | |
434 | 493 | } | |
435 | 494 | else throw("Strict value is not equal to itself.") | |
437 | 496 | ||
438 | 497 | ||
439 | 498 | ||
440 | - | @Callable( | |
441 | - | func setAdmins ( | |
442 | - | let | |
443 | - | if (( | |
444 | - | then [StringEntry( | |
499 | + | @Callable(bk) | |
500 | + | func setAdmins (cI) = { | |
501 | + | let cu = bl(bk) | |
502 | + | if ((cu == cu)) | |
503 | + | then [StringEntry(S(), makeString(cI, k))] | |
445 | 504 | else throw("Strict value is not equal to itself.") | |
446 | 505 | } | |
447 | 506 | ||
448 | 507 | ||
449 | 508 | ||
450 | - | @Callable( | |
451 | - | func activateNewPool ( | |
452 | - | let | |
453 | - | if (( | |
454 | - | then if (isDefined(getString( | |
455 | - | then throw((("Pool address " + | |
509 | + | @Callable(bk) | |
510 | + | func activateNewPool (aa,bD,bE,cJ,cK,cL,bK,cM) = { | |
511 | + | let cu = bX(bk) | |
512 | + | if ((cu == cu)) | |
513 | + | then if (isDefined(getString(au(aa)))) | |
514 | + | then throw((("Pool address " + aa) + " already registered.")) | |
456 | 515 | else { | |
457 | - | let | |
458 | - | let | |
459 | - | let | |
516 | + | let cN = bQ(bD, 1) | |
517 | + | let cO = cN._1 | |
518 | + | let cP = bQ(bE, if (cN._3) | |
460 | 519 | then 2 | |
461 | 520 | else 1) | |
462 | - | let | |
463 | - | let | |
464 | - | let | |
465 | - | let | |
466 | - | if ( | |
467 | - | then throw((((("Pool " + | |
521 | + | let cQ = cP._1 | |
522 | + | let cR = valueOrErrorMessage(scriptHash(addressFromStringValue(aa)), ("No script has been found on pool account " + aa)) | |
523 | + | let cS = getBinaryValue(M()) | |
524 | + | let cT = cd(bD, bE) | |
525 | + | if (cT) | |
526 | + | then throw((((("Pool " + bD) + "/") + bE) + " has already been activated.")) | |
468 | 527 | else { | |
469 | - | let | |
470 | - | let | |
471 | - | then | |
472 | - | else pow(10, 0, value(assetInfo(fromBase58String( | |
473 | - | let | |
474 | - | then | |
475 | - | else pow(10, 0, value(assetInfo(fromBase58String( | |
476 | - | let | |
477 | - | let | |
478 | - | let | |
479 | - | let | |
480 | - | if (( | |
481 | - | then if (( | |
528 | + | let cU = value(getString(this, ah(toString(cO), toString(cQ)))) | |
529 | + | let cV = if ((bD == "WAVES")) | |
530 | + | then j | |
531 | + | else pow(10, 0, value(assetInfo(fromBase58String(bD))).decimals, 0, 0, DOWN) | |
532 | + | let cW = if ((bE == "WAVES")) | |
533 | + | then j | |
534 | + | else pow(10, 0, value(assetInfo(fromBase58String(bE))).decimals, 0, 0, DOWN) | |
535 | + | let cX = Issue(cJ, cK, 1, 8, true) | |
536 | + | let bC = calculateAssetId(cX) | |
537 | + | let cY = toBase58String(bC) | |
538 | + | let cZ = invoke(addressFromStringValue(aa), "activate", [bD, bE], nil) | |
539 | + | if ((cZ == cZ)) | |
540 | + | then if ((cZ != "success")) | |
482 | 541 | then throw("Pool initialisation error happened.") | |
483 | 542 | else { | |
484 | - | let | |
485 | - | let | |
486 | - | if (( | |
543 | + | let cz = addressFromStringValue(aG(T())) | |
544 | + | let da = invoke(cz, "createOrUpdate", [cY, cJ, false], nil) | |
545 | + | if ((da == da)) | |
487 | 546 | then { | |
488 | - | let | |
489 | - | if (( | |
547 | + | let db = invoke(cz, "addLabel", [cY, g], nil) | |
548 | + | if ((db == db)) | |
490 | 549 | then { | |
491 | - | let | |
492 | - | if (( | |
550 | + | let dc = invoke(cz, "setLogo", [cY, cM], nil) | |
551 | + | if ((dc == dc)) | |
493 | 552 | then { | |
494 | - | let | |
495 | - | if (( | |
553 | + | let dd = invoke(cz, "addAssetsLink", [bD, bE, cY], nil) | |
554 | + | if ((dd == dd)) | |
496 | 555 | then { | |
497 | - | let | |
498 | - | if (( | |
499 | - | then $Tuple2((( | |
556 | + | let de = invoke(cz, "increaseAssetPoolsNumber", [bD], nil) | |
557 | + | if ((de == de)) | |
558 | + | then $Tuple2(((cN._2 ++ cP._2) ++ [cX, Burn(bC, 1), StringEntry(ah(toString(cO), toString(cQ)), bA(aa, toString(m), cY, bD, bE, cV, cW, cO, cQ, j, bK)), StringEntry(ao(cY), bL(cO, cQ)), StringEntry(aq(toString(cO), toString(cQ)), ("%s__" + cY)), StringEntry(au(aa), bL(cO, cQ)), StringEntry(aw(cO, cQ), aa), StringEntry(ay(cY), aa), StringEntry(ax(aa), cY), IntegerEntry(Z(aa), cL), IntegerEntry(at(aa), h)]), cY) | |
500 | 559 | else throw("Strict value is not equal to itself.") | |
501 | 560 | } | |
502 | 561 | else throw("Strict value is not equal to itself.") | |
515 | 574 | ||
516 | 575 | ||
517 | 576 | ||
518 | - | @Callable( | |
519 | - | func managePool ( | |
520 | - | let | |
521 | - | if (( | |
577 | + | @Callable(bk) | |
578 | + | func managePool (aa,df) = { | |
579 | + | let cu = bl(bk) | |
580 | + | if ((cu == cu)) | |
522 | 581 | then { | |
523 | - | let | |
524 | - | let | |
525 | - | let | |
526 | - | let | |
527 | - | let | |
528 | - | let | |
529 | - | let | |
530 | - | let | |
531 | - | let | |
532 | - | let | |
533 | - | let | |
534 | - | [StringEntry( | |
582 | + | let dg = bO(aa) | |
583 | + | let bB = dg[u] | |
584 | + | let cY = dg[v] | |
585 | + | let bD = dg[w] | |
586 | + | let bE = dg[x] | |
587 | + | let cV = parseIntValue(dg[y]) | |
588 | + | let cW = parseIntValue(dg[z]) | |
589 | + | let cO = parseIntValue(dg[A]) | |
590 | + | let cQ = parseIntValue(dg[B]) | |
591 | + | let dh = parseIntValue(dg[C]) | |
592 | + | let bK = dg[D] | |
593 | + | [StringEntry(ah(toString(cO), toString(cQ)), bA(aa, toString(df), cY, bD, bE, cV, cW, cO, cQ, dh, bK))] | |
535 | 594 | } | |
536 | 595 | else throw("Strict value is not equal to itself.") | |
537 | 596 | } | |
538 | 597 | ||
539 | 598 | ||
540 | 599 | ||
541 | - | @Callable( | |
542 | - | func emit ( | |
543 | - | let | |
544 | - | let | |
545 | - | let | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | if ((0 >= | |
600 | + | @Callable(bk) | |
601 | + | func emit (di) = { | |
602 | + | let dj = bk.caller | |
603 | + | let dk = bk.originCaller | |
604 | + | let dl = valueOrErrorMessage(getString(ax(toString(dj))), "Invalid LP address called me.") | |
605 | + | let dm = fromBase58String(dl) | |
606 | + | let cy = split(valueOrElse(getString(P()), l), k) | |
607 | + | let cx = addressFromStringValue(valueOrErrorMessage(getString(O()), "Legacy factory contract does not exists.")) | |
608 | + | if ((0 >= di)) | |
550 | 609 | then nil | |
551 | - | else if (containsElement( | |
552 | - | then $Tuple2(nil, | |
553 | - | else $Tuple2([Reissue( | |
610 | + | else if (containsElement(cy, toString(dj))) | |
611 | + | then $Tuple2(nil, cx) | |
612 | + | else $Tuple2([Reissue(dm, di, true), ScriptTransfer(bk.caller, di, dm)], "success") | |
554 | 613 | } | |
555 | 614 | ||
556 | 615 | ||
557 | 616 | ||
558 | - | @Callable( | |
559 | - | func burn ( | |
560 | - | let | |
561 | - | let | |
562 | - | let | |
563 | - | let | |
564 | - | let | |
565 | - | let | |
566 | - | if (( | |
617 | + | @Callable(bk) | |
618 | + | func burn (dn) = { | |
619 | + | let dj = bk.caller | |
620 | + | let dk = bk.originCaller | |
621 | + | let do = value(bk.payments[0]) | |
622 | + | let dp = value(do.amount) | |
623 | + | let dq = toBase58String(value(do.assetId)) | |
624 | + | let dr = valueOrErrorMessage(getString(ax(toString(dj))), "Invalid LP address called me.") | |
625 | + | if ((dq != dr)) | |
567 | 626 | then throw("Invalid asset passed.") | |
568 | - | else if (( | |
627 | + | else if ((dn != dp)) | |
569 | 628 | then throw("Invalid amount passed.") | |
570 | 629 | else { | |
571 | - | let | |
572 | - | $Tuple2([Burn( | |
630 | + | let dm = fromBase58String(dr) | |
631 | + | $Tuple2([Burn(dm, dn)], "success") | |
573 | 632 | } | |
574 | 633 | } | |
575 | 634 | ||
576 | 635 | ||
577 | 636 | ||
578 | - | @Callable( | |
579 | - | func modifyWeight ( | |
580 | - | let | |
637 | + | @Callable(bk) | |
638 | + | func modifyWeight (bC,ds) = { | |
639 | + | let cu = if ((toBase58String(bk.caller.bytes) == valueOrElse(getString(this, U()), ""))) | |
581 | 640 | then true | |
582 | - | else | |
583 | - | if (( | |
641 | + | else bl(bk) | |
642 | + | if ((cu == cu)) | |
584 | 643 | then { | |
585 | - | let | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
593 | - | let | |
594 | - | if (( | |
644 | + | let av = aG(ay(bC)) | |
645 | + | let dt = Z(av) | |
646 | + | let du = Z(f) | |
647 | + | let dv = valueOrElse(getInteger(du), 0) | |
648 | + | let cL = valueOrElse(getInteger(dt), 0) | |
649 | + | let dw = ds | |
650 | + | let aY = split(aG(K()), k) | |
651 | + | let cq = ba(aY) | |
652 | + | let dx = invoke(cq, "onModifyWeight", [bC, av], nil) | |
653 | + | if ((dx == dx)) | |
595 | 654 | then { | |
596 | - | let | |
655 | + | let dy = if ((dv == 0)) | |
597 | 656 | then nil | |
598 | - | else [IntegerEntry( | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
657 | + | else [IntegerEntry(du, 0)] | |
658 | + | let dz = ab(av, 0) | |
659 | + | let dA = getInteger(dz) | |
660 | + | let dB = if ((dA == unit)) | |
602 | 661 | then nil | |
603 | - | else [DeleteEntry( | |
604 | - | (([IntegerEntry( | |
662 | + | else [DeleteEntry(dz)] | |
663 | + | (([IntegerEntry(dt, dw)] ++ dy) ++ dB) | |
605 | 664 | } | |
606 | 665 | else throw("Strict value is not equal to itself.") | |
607 | 666 | } | |
610 | 669 | ||
611 | 670 | ||
612 | 671 | ||
613 | - | @Callable( | |
614 | - | func modifyWeights ( | |
615 | - | let | |
616 | - | if (( | |
672 | + | @Callable(bk) | |
673 | + | func modifyWeights (dC,dD,dE,dF) = { | |
674 | + | let cu = bl(bk) | |
675 | + | if ((cu == cu)) | |
617 | 676 | then { | |
618 | - | let | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
622 | - | let | |
623 | - | let | |
624 | - | let | |
625 | - | let | |
626 | - | let | |
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
632 | - | if ((0 >= | |
633 | - | then throw(("invalid btcWeightNew: " + toString( | |
634 | - | else if ((0 >= | |
635 | - | then throw(("invalid ethWeightNew: " + toString( | |
677 | + | let dG = ((5 * e) / 100) | |
678 | + | let dH = ((5 * e) / 100) | |
679 | + | let dI = ((5 * e) / 100) | |
680 | + | let aY = split(aG(K()), k) | |
681 | + | let dJ = ba(aY) | |
682 | + | let dK = bb(aY) | |
683 | + | let dL = Z(dC) | |
684 | + | let dM = Z(dD) | |
685 | + | let dN = Z(dE) | |
686 | + | let dO = Z(dF) | |
687 | + | let dP = aJ(dL) | |
688 | + | let dQ = aJ(dM) | |
689 | + | let dR = (dP - dI) | |
690 | + | let dS = (dQ - dI) | |
691 | + | if ((0 >= dR)) | |
692 | + | then throw(("invalid btcWeightNew: " + toString(dR))) | |
693 | + | else if ((0 >= dS)) | |
694 | + | then throw(("invalid ethWeightNew: " + toString(dS))) | |
636 | 695 | else { | |
637 | - | let | |
638 | - | let | |
639 | - | let | |
640 | - | let | |
641 | - | let | |
642 | - | if (( | |
696 | + | let dT = aG(ax(dC)) | |
697 | + | let dU = aG(ax(dD)) | |
698 | + | let dV = aG(ax(dE)) | |
699 | + | let dW = aG(ax(dF)) | |
700 | + | let dX = invoke(dJ, "onModifyWeight", [dT, dC], nil) | |
701 | + | if ((dX == dX)) | |
643 | 702 | then { | |
644 | - | let | |
645 | - | if (( | |
703 | + | let dY = invoke(dJ, "onModifyWeight", [dU, dD], nil) | |
704 | + | if ((dY == dY)) | |
646 | 705 | then { | |
647 | - | let | |
648 | - | if (( | |
706 | + | let dZ = invoke(dJ, "onModifyWeight", [dV, dE], nil) | |
707 | + | if ((dZ == dZ)) | |
649 | 708 | then { | |
650 | - | let | |
651 | - | if (( | |
652 | - | then [IntegerEntry( | |
709 | + | let ea = invoke(dJ, "onModifyWeight", [dW, dF], nil) | |
710 | + | if ((ea == ea)) | |
711 | + | then [IntegerEntry(dL, dR), IntegerEntry(dM, dS), IntegerEntry(dN, dG), IntegerEntry(dO, dH), IntegerEntry(ab(dC, 0), dP), IntegerEntry(ab(dD, 0), dQ), IntegerEntry(ab(dE, 0), dG), IntegerEntry(ab(dF, 0), dH)] | |
653 | 712 | else throw("Strict value is not equal to itself.") | |
654 | 713 | } | |
655 | 714 | else throw("Strict value is not equal to itself.") | |
664 | 723 | ||
665 | 724 | ||
666 | 725 | ||
667 | - | @Callable( | |
668 | - | func checkWxEmissionPoolLabel ( | |
669 | - | let | |
670 | - | let | |
671 | - | if ($isInstanceOf( | |
726 | + | @Callable(bk) | |
727 | + | func checkWxEmissionPoolLabel (aA,aB) = { | |
728 | + | let eb = { | |
729 | + | let bd = getBoolean(az(aA, aB)) | |
730 | + | if ($isInstanceOf(bd, "Boolean")) | |
672 | 731 | then { | |
673 | - | let | |
674 | - | | |
732 | + | let ec = bd | |
733 | + | ec | |
675 | 734 | } | |
676 | 735 | else false | |
677 | 736 | } | |
678 | - | $Tuple2(nil, | |
737 | + | $Tuple2(nil, eb) | |
679 | 738 | } | |
680 | 739 | ||
681 | 740 | ||
682 | 741 | ||
683 | - | @Callable( | |
684 | - | func setWxEmissionPoolLabel ( | |
685 | - | let | |
686 | - | if (( | |
687 | - | then $Tuple2([BooleanEntry( | |
742 | + | @Callable(bk) | |
743 | + | func setWxEmissionPoolLabel (aA,aB) = { | |
744 | + | let cu = bX(bk) | |
745 | + | if ((cu == cu)) | |
746 | + | then $Tuple2([BooleanEntry(az(aA, aB), true)], unit) | |
688 | 747 | else throw("Strict value is not equal to itself.") | |
689 | 748 | } | |
690 | 749 | ||
691 | 750 | ||
692 | 751 | ||
693 | - | @Callable( | |
694 | - | func deleteWxEmissionPoolLabel ( | |
695 | - | let | |
752 | + | @Callable(bk) | |
753 | + | func deleteWxEmissionPoolLabel (aA,aB) = { | |
754 | + | let cu = if (bj(bk)) | |
696 | 755 | then true | |
697 | - | else | |
698 | - | if (( | |
699 | - | then $Tuple2([DeleteEntry( | |
756 | + | else bX(bk) | |
757 | + | if ((cu == cu)) | |
758 | + | then $Tuple2([DeleteEntry(az(aA, aB))], unit) | |
700 | 759 | else throw("Strict value is not equal to itself.") | |
701 | 760 | } | |
702 | 761 | ||
703 | 762 | ||
704 | 763 | ||
705 | - | @Callable( | |
706 | - | func onVerificationLoss ( | |
707 | - | let | |
764 | + | @Callable(bk) | |
765 | + | func onVerificationLoss (ed) = { | |
766 | + | let cu = if ((toBase58String(bk.caller.bytes) == valueOrElse(getString(this, T()), ""))) | |
708 | 767 | then true | |
709 | - | else | |
710 | - | if (( | |
768 | + | else bl(bk) | |
769 | + | if ((cu == cu)) | |
711 | 770 | then { | |
712 | - | let | |
713 | - | let | |
771 | + | let cB = bc() | |
772 | + | let ee = if ((size(cB) > 0)) | |
714 | 773 | then true | |
715 | 774 | else throw("invalid price assets") | |
716 | - | if (( | |
775 | + | if ((ee == ee)) | |
717 | 776 | then { | |
718 | - | func | |
719 | - | let | |
720 | - | if (( | |
777 | + | func ef (eg,eh) = { | |
778 | + | let ei = invoke(this, "deleteWxEmissionPoolLabel", [ed, eh], nil) | |
779 | + | if ((ei == ei)) | |
721 | 780 | then unit | |
722 | 781 | else throw("Strict value is not equal to itself.") | |
723 | 782 | } | |
724 | 783 | ||
725 | - | let | |
726 | - | let | |
727 | - | let | |
728 | - | let | |
729 | - | func | |
730 | - | then | |
731 | - | else | |
784 | + | let ej = { | |
785 | + | let ek = cB | |
786 | + | let el = size(ek) | |
787 | + | let em = unit | |
788 | + | func en (eo,ep) = if ((ep >= el)) | |
789 | + | then eo | |
790 | + | else ef(eo, ek[ep]) | |
732 | 791 | ||
733 | - | func | |
734 | - | then | |
735 | - | else throw("List size exceeds | |
792 | + | func eq (eo,ep) = if ((ep >= el)) | |
793 | + | then eo | |
794 | + | else throw("List size exceeds 2") | |
736 | 795 | ||
737 | - | | |
796 | + | eq(en(en(em, 0), 1), 2) | |
738 | 797 | } | |
739 | - | if (( | |
798 | + | if ((ej == ej)) | |
740 | 799 | then $Tuple2(nil, unit) | |
741 | 800 | else throw("Strict value is not equal to itself.") | |
742 | 801 | } | |
747 | 806 | ||
748 | 807 | ||
749 | 808 | ||
750 | - | @Callable( | |
751 | - | func isPoolOneTokenOperationsDisabledREADONLY ( | |
752 | - | let | |
753 | - | let | |
754 | - | let | |
755 | - | let | |
756 | - | $Tuple2(nil, if ( | |
809 | + | @Callable(bk) | |
810 | + | func isPoolOneTokenOperationsDisabledREADONLY (aa) = { | |
811 | + | let dg = bO(aa) | |
812 | + | let al = $Tuple2(parseIntValue(dg[A]), parseIntValue(dg[B])) | |
813 | + | let er = valueOrElse(getBoolean(ak(al)), false) | |
814 | + | let es = valueOrElse(getBoolean(an()), false) | |
815 | + | $Tuple2(nil, if (es) | |
757 | 816 | then true | |
758 | - | else | |
817 | + | else er) | |
759 | 818 | } | |
760 | 819 | ||
761 | 820 | ||
762 | 821 | ||
763 | - | @Callable( | |
764 | - | func getInFeeREADONLY ( | |
765 | - | let | |
766 | - | $Tuple2(nil, | |
822 | + | @Callable(bk) | |
823 | + | func getInFeeREADONLY (aa) = { | |
824 | + | let et = ca(aC(aa), aD(), 0) | |
825 | + | $Tuple2(nil, et) | |
767 | 826 | } | |
768 | 827 | ||
769 | 828 | ||
770 | 829 | ||
771 | - | @Callable( | |
772 | - | func getOutFeeREADONLY ( | |
773 | - | let | |
774 | - | $Tuple2(nil, | |
830 | + | @Callable(bk) | |
831 | + | func getOutFeeREADONLY (aa) = { | |
832 | + | let et = ca(aE(aa), aF(), fraction(10, b, 10000)) | |
833 | + | $Tuple2(nil, et) | |
775 | 834 | } | |
776 | 835 | ||
777 | 836 | ||
778 | 837 | ||
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])) | |
838 | + | @Callable(bk) | |
839 | + | func poolInfoREADONLY (eu,ev) = { | |
840 | + | let ew = getInteger(this, af(eu)) | |
841 | + | let ex = getInteger(this, af(ev)) | |
842 | + | let ey = getString(this, aw(value(ew), value(ex))) | |
843 | + | let ez = getString(this, ax(value(ey))) | |
844 | + | let cT = if (if (isDefined(ew)) | |
845 | + | then isDefined(ex) | |
846 | + | else false) | |
847 | + | then isDefined(ey) | |
848 | + | else false | |
849 | + | let eA = if (cT) | |
850 | + | then $Tuple2(addressFromStringValue(value(ey)), aK(value(ez))) | |
851 | + | else unit | |
852 | + | $Tuple2(nil, eA) | |
786 | 853 | } | |
787 | 854 | ||
788 | 855 | ||
789 | - | @Verifier(ec) | |
790 | - | func ed () = { | |
791 | - | let ee = { | |
792 | - | let aZ = bb() | |
793 | - | if ($isInstanceOf(aZ, "ByteVector")) | |
856 | + | ||
857 | + | @Callable(bk) | |
858 | + | func getPoolStatusREADONLY (aa) = { | |
859 | + | let bP = split(aG(au(aa)), k) | |
860 | + | let ai = bP[1] | |
861 | + | let aj = bP[2] | |
862 | + | let cg = split(aG(ah(ai, aj)), k) | |
863 | + | $Tuple2(nil, parseIntValue(cg[u])) | |
864 | + | } | |
865 | + | ||
866 | + | ||
867 | + | ||
868 | + | @Callable(bk) | |
869 | + | func getPoolConfigREADONLY (aa) = { | |
870 | + | let bP = split(aG(au(aa)), k) | |
871 | + | let ai = bP[1] | |
872 | + | let aj = bP[2] | |
873 | + | let cg = split(aG(ah(ai, aj)), k) | |
874 | + | $Tuple2(nil, cg) | |
875 | + | } | |
876 | + | ||
877 | + | ||
878 | + | ||
879 | + | @Callable(bk) | |
880 | + | func poolExistsREADONLY (aA,aB) = $Tuple2(nil, cd(aA, aB)) | |
881 | + | ||
882 | + | ||
883 | + | @Verifier(eB) | |
884 | + | func eC () = { | |
885 | + | let eD = { | |
886 | + | let bd = bf() | |
887 | + | if ($isInstanceOf(bd, "ByteVector")) | |
794 | 888 | then { | |
795 | - | let | |
796 | - | | |
889 | + | let bm = bd | |
890 | + | bm | |
797 | 891 | } | |
798 | - | else if ($isInstanceOf( | |
799 | - | then | |
892 | + | else if ($isInstanceOf(bd, "Unit")) | |
893 | + | then eB.senderPublicKey | |
800 | 894 | else throw("Match error") | |
801 | 895 | } | |
802 | - | sigVerify( | |
896 | + | sigVerify(eB.bodyBytes, eB.proofs[0], eD) | |
803 | 897 | } | |
804 | 898 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 8 | |
5 | 5 | ||
6 | 6 | let b = 100000000 | |
7 | 7 | ||
8 | 8 | let c = 18 | |
9 | 9 | ||
10 | 10 | let d = toBigInt(1000000000000000000) | |
11 | 11 | ||
12 | 12 | let e = b | |
13 | 13 | ||
14 | 14 | let f = "GWXvirtualPOOL" | |
15 | 15 | ||
16 | 16 | let g = "POOLS_LP" | |
17 | 17 | ||
18 | 18 | let h = 2000000 | |
19 | 19 | ||
20 | - | let i = | |
20 | + | let i = "WAVES" | |
21 | 21 | ||
22 | - | let j = | |
22 | + | let j = ((100 * 1000) * 1000) | |
23 | 23 | ||
24 | - | let k = "" | |
24 | + | let k = "__" | |
25 | 25 | ||
26 | - | let l = | |
26 | + | let l = "" | |
27 | 27 | ||
28 | - | let m = | |
28 | + | let m = 1 | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = 2 | |
31 | 31 | ||
32 | - | let o = | |
32 | + | let o = 3 | |
33 | 33 | ||
34 | - | let p = | |
34 | + | let p = 4 | |
35 | 35 | ||
36 | - | let q = | |
36 | + | let q = 1 | |
37 | 37 | ||
38 | - | let r = | |
38 | + | let r = 2 | |
39 | 39 | ||
40 | - | let s = | |
40 | + | let s = 3 | |
41 | 41 | ||
42 | - | let t = | |
42 | + | let t = 1 | |
43 | 43 | ||
44 | - | let u = | |
44 | + | let u = 2 | |
45 | 45 | ||
46 | - | let v = | |
46 | + | let v = 3 | |
47 | 47 | ||
48 | - | let w = | |
48 | + | let w = 4 | |
49 | 49 | ||
50 | - | let x = | |
50 | + | let x = 5 | |
51 | 51 | ||
52 | - | let y = | |
52 | + | let y = 6 | |
53 | 53 | ||
54 | - | let z = | |
54 | + | let z = 7 | |
55 | 55 | ||
56 | - | let A = | |
56 | + | let A = 8 | |
57 | 57 | ||
58 | - | let B = | |
58 | + | let B = 9 | |
59 | 59 | ||
60 | - | let C = | |
60 | + | let C = 10 | |
61 | 61 | ||
62 | - | let D = | |
62 | + | let D = 11 | |
63 | 63 | ||
64 | - | let E = | |
64 | + | let E = "WX_EMISSION" | |
65 | 65 | ||
66 | - | func F () = "%s__allowedLpScriptHash" | |
66 | + | let F = [E] | |
67 | + | ||
68 | + | func G () = "%s__allowedLpScriptHash" | |
67 | 69 | ||
68 | 70 | ||
69 | - | func | |
71 | + | func H () = "%s__allowedLpStableScriptHash" | |
70 | 72 | ||
71 | 73 | ||
72 | - | func | |
74 | + | func I () = "%s__allowedLpStableAddonScriptHash" | |
73 | 75 | ||
74 | 76 | ||
75 | - | func | |
77 | + | func J () = "%s__swapContract" | |
76 | 78 | ||
77 | 79 | ||
78 | - | func | |
80 | + | func K () = "%s__factoryConfig" | |
79 | 81 | ||
80 | 82 | ||
81 | - | func | |
83 | + | func L () = "%s__lpTokensList" | |
82 | 84 | ||
83 | 85 | ||
84 | - | func | |
86 | + | func M () = "%s%s__pool__scriptHash" | |
85 | 87 | ||
86 | 88 | ||
87 | - | func | |
89 | + | func N () = "%s%s__matcher__publicKey" | |
88 | 90 | ||
89 | 91 | ||
90 | - | func | |
92 | + | func O () = "%s__legacyFactoryContract" | |
91 | 93 | ||
92 | 94 | ||
93 | - | func | |
95 | + | func P () = "%s__legacyPools" | |
94 | 96 | ||
95 | 97 | ||
96 | - | func | |
98 | + | func Q () = "%s__managerPublicKey" | |
97 | 99 | ||
98 | 100 | ||
99 | - | func | |
101 | + | func R () = "%s__pendingManagerPublicKey" | |
100 | 102 | ||
101 | 103 | ||
102 | - | func | |
104 | + | func S () = "%s__adminPubKeys" | |
103 | 105 | ||
104 | 106 | ||
105 | - | func | |
107 | + | func T () = "%s__assetsStoreContract" | |
106 | 108 | ||
107 | 109 | ||
108 | - | func | |
110 | + | func U () = "%s__votingEmissionContract" | |
109 | 111 | ||
110 | 112 | ||
111 | - | func | |
113 | + | func V () = makeString(["%s", "priceAssets"], k) | |
112 | 114 | ||
113 | 115 | ||
114 | - | func | |
116 | + | func W () = "%s__priceDecimals" | |
115 | 117 | ||
116 | 118 | ||
117 | - | func | |
119 | + | func X () = "%s__shutdown" | |
118 | 120 | ||
119 | 121 | ||
120 | - | func | |
122 | + | func Y () = "%s__nextInternalAssetId" | |
121 | 123 | ||
122 | 124 | ||
123 | - | func Z ( | |
125 | + | func Z (aa) = ("%s%s__poolWeight__" + aa) | |
124 | 126 | ||
125 | 127 | ||
126 | - | func ab (ac) = ("%s%s | |
128 | + | func ab (aa,ac) = ((("%s%s__poolWeight__" + aa) + "__") + toString(ac)) | |
127 | 129 | ||
128 | 130 | ||
129 | - | func ad (ae) = ("%s%s% | |
131 | + | func ad (ae) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ae)) | |
130 | 132 | ||
131 | 133 | ||
132 | - | func af (ag | |
134 | + | func af (ag) = ("%s%s%s__mappings__baseAsset2internalId__" + ag) | |
133 | 135 | ||
134 | 136 | ||
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) | |
137 | + | func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config") | |
138 | + | ||
139 | + | ||
140 | + | func ak (al) = { | |
141 | + | let am = al | |
142 | + | let ai = am._1 | |
143 | + | let aj = am._2 | |
144 | + | makeString(["%d%d%s", toString(ai), toString(aj), "oneTokenOperationsDisabled"], k) | |
140 | 145 | } | |
141 | 146 | ||
142 | 147 | ||
143 | - | func | |
148 | + | func an () = makeString(["%s", "oneTokenOperationsDisabled"], k) | |
144 | 149 | ||
145 | 150 | ||
146 | - | func | |
151 | + | func ao (ap) = (("%s%s%s__" + ap) + "__mappings__lpAsset2Pool") | |
147 | 152 | ||
148 | 153 | ||
149 | - | func | |
154 | + | func aq (ar,as) = (((("%d%d%s%s__" + ar) + "__") + as) + "__mappings__PoolAssets2LpAsset") | |
150 | 155 | ||
151 | 156 | ||
152 | - | func | |
157 | + | func at (aa) = ("%s%s__spread__" + aa) | |
153 | 158 | ||
154 | 159 | ||
155 | - | func | |
160 | + | func au (av) = (("%s%s%s__" + av) + "__mappings__poolContract2PoolAssets") | |
156 | 161 | ||
157 | 162 | ||
158 | - | func | |
163 | + | func aw (ar,as) = (((("%d%d%s%s__" + toString(ar)) + "__") + toString(as)) + "__mappings__poolAssets2PoolContract") | |
159 | 164 | ||
160 | 165 | ||
161 | - | func | |
166 | + | func ax (av) = (("%s%s%s__" + av) + "__mappings__poolContract2LpAsset") | |
162 | 167 | ||
163 | 168 | ||
164 | - | func | |
169 | + | func ay (ap) = (("%s%s%s__" + ap) + "__mappings__lpAsset2PoolContract") | |
165 | 170 | ||
166 | 171 | ||
167 | - | func | |
172 | + | func az (aA,aB) = ((("%s%s%s__wxEmission__" + aA) + "__") + aB) | |
168 | 173 | ||
169 | 174 | ||
170 | - | func | |
175 | + | func aC (aa) = ("%s%s__inFee__" + aa) | |
171 | 176 | ||
172 | 177 | ||
173 | - | func | |
178 | + | func aD () = "%s__inFeeDefault" | |
174 | 179 | ||
175 | 180 | ||
176 | - | func | |
181 | + | func aE (aa) = ("%s%s__outFee__" + aa) | |
177 | 182 | ||
178 | 183 | ||
179 | - | func | |
184 | + | func aF () = "%s__outFeeDefault" | |
180 | 185 | ||
181 | 186 | ||
182 | - | func | |
187 | + | func aG (aH) = valueOrErrorMessage(getString(this, aH), ("No data for this.key=" + aH)) | |
183 | 188 | ||
184 | 189 | ||
185 | - | func | |
190 | + | func aI (aH) = valueOrErrorMessage(getBoolean(this, aH), ("No data for this.key=" + aH)) | |
186 | 191 | ||
187 | 192 | ||
188 | - | func | |
193 | + | func aJ (aH) = valueOrErrorMessage(getInteger(this, aH), ("No data for this.key=" + aH)) | |
189 | 194 | ||
190 | 195 | ||
191 | - | let aI = 1 | |
192 | - | ||
193 | - | let aJ = 2 | |
194 | - | ||
195 | - | let aK = 3 | |
196 | - | ||
197 | - | let aL = 4 | |
198 | - | ||
199 | - | let aM = 5 | |
200 | - | ||
201 | - | let aN = 6 | |
202 | - | ||
203 | - | let aO = 7 | |
204 | - | ||
205 | - | let aP = 8 | |
206 | - | ||
207 | - | let aQ = 9 | |
208 | - | ||
209 | - | let aR = 10 | |
210 | - | ||
211 | - | let aS = 11 | |
212 | - | ||
213 | - | func aT (aU) = addressFromStringValue(aU[aJ]) | |
196 | + | func aK (aL) = if ((aL == i)) | |
197 | + | then unit | |
198 | + | else fromBase58String(aL) | |
214 | 199 | ||
215 | 200 | ||
216 | - | func aV (aU) = addressFromStringValue(aU[aM]) | |
201 | + | let aM = 1 | |
202 | + | ||
203 | + | let aN = 2 | |
204 | + | ||
205 | + | let aO = 3 | |
206 | + | ||
207 | + | let aP = 4 | |
208 | + | ||
209 | + | let aQ = 5 | |
210 | + | ||
211 | + | let aR = 6 | |
212 | + | ||
213 | + | let aS = 7 | |
214 | + | ||
215 | + | let aT = 8 | |
216 | + | ||
217 | + | let aU = 9 | |
218 | + | ||
219 | + | let aV = 10 | |
220 | + | ||
221 | + | let aW = 11 | |
222 | + | ||
223 | + | func aX (aY) = addressFromStringValue(aY[aN]) | |
217 | 224 | ||
218 | 225 | ||
219 | - | func | |
226 | + | func aZ (aY) = addressFromStringValue(aY[aQ]) | |
220 | 227 | ||
221 | 228 | ||
222 | - | func | |
229 | + | func ba (aY) = addressFromStringValue(aY[aM]) | |
223 | 230 | ||
224 | 231 | ||
225 | - | func aY () = { | |
226 | - | let aZ = getString(T()) | |
227 | - | if ($isInstanceOf(aZ, "String")) | |
232 | + | func bb (aY) = addressFromStringValue(aY[aV]) | |
233 | + | ||
234 | + | ||
235 | + | func bc () = { | |
236 | + | let bd = getString(V()) | |
237 | + | if ($isInstanceOf(bd, "String")) | |
228 | 238 | then { | |
229 | - | let | |
230 | - | if ((size( | |
239 | + | let be = bd | |
240 | + | if ((size(be) == 0)) | |
231 | 241 | then nil | |
232 | - | else split( | |
242 | + | else split(be, k) | |
233 | 243 | } | |
234 | 244 | else nil | |
235 | 245 | } | |
236 | 246 | ||
237 | 247 | ||
238 | - | func | |
239 | - | let | |
240 | - | if ($isInstanceOf( | |
248 | + | func bf () = { | |
249 | + | let bd = getString(Q()) | |
250 | + | if ($isInstanceOf(bd, "String")) | |
241 | 251 | then { | |
242 | - | let | |
243 | - | fromBase58String( | |
252 | + | let be = bd | |
253 | + | fromBase58String(be) | |
244 | 254 | } | |
245 | - | else if ($isInstanceOf( | |
255 | + | else if ($isInstanceOf(bd, "Unit")) | |
246 | 256 | then unit | |
247 | 257 | else throw("Match error") | |
248 | 258 | } | |
249 | 259 | ||
250 | 260 | ||
251 | - | func | |
252 | - | let | |
253 | - | if ($isInstanceOf( | |
261 | + | func bg () = { | |
262 | + | let bd = getString(R()) | |
263 | + | if ($isInstanceOf(bd, "String")) | |
254 | 264 | then { | |
255 | - | let | |
256 | - | fromBase58String( | |
265 | + | let be = bd | |
266 | + | fromBase58String(be) | |
257 | 267 | } | |
258 | - | else if ($isInstanceOf( | |
268 | + | else if ($isInstanceOf(bd, "Unit")) | |
259 | 269 | then unit | |
260 | 270 | else throw("Match error") | |
261 | 271 | } | |
262 | 272 | ||
263 | 273 | ||
264 | - | let | |
274 | + | let bh = throw("Permission denied") | |
265 | 275 | ||
266 | - | func be (bf) = if ((bf.caller == this)) | |
276 | + | let bi = throw("Test error here") | |
277 | + | ||
278 | + | func bj (bk) = if ((bk.caller == this)) | |
267 | 279 | then true | |
268 | - | else | |
280 | + | else bh | |
269 | 281 | ||
270 | 282 | ||
271 | - | func | |
272 | - | let | |
273 | - | if ($isInstanceOf( | |
283 | + | func bl (bk) = { | |
284 | + | let bd = bf() | |
285 | + | if ($isInstanceOf(bd, "ByteVector")) | |
274 | 286 | then { | |
275 | - | let | |
276 | - | if (( | |
287 | + | let bm = bd | |
288 | + | if ((bk.callerPublicKey == bm)) | |
277 | 289 | then true | |
278 | - | else | |
290 | + | else bh | |
279 | 291 | } | |
280 | - | else if ($isInstanceOf( | |
281 | - | then | |
292 | + | else if ($isInstanceOf(bd, "Unit")) | |
293 | + | then bj(bk) | |
282 | 294 | else throw("Match error") | |
283 | 295 | } | |
284 | 296 | ||
285 | 297 | ||
286 | - | func | |
298 | + | func bn (bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by], k) | |
287 | 299 | ||
288 | 300 | ||
289 | - | func | |
301 | + | func bz (bo,bp,bq,br,bs,bt,bu) = makeString(["%s%s%s%s%s%s", bo, bp, bq, br, bs, bt, bu], k) | |
290 | 302 | ||
291 | 303 | ||
292 | - | func | |
304 | + | func bA (aa,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", aa, bB, bC, bD, bE, toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), bK], k) | |
293 | 305 | ||
294 | 306 | ||
295 | - | func | |
307 | + | func bL (bM,bN) = makeString(["%d%d", toString(bM), toString(bN)], k) | |
296 | 308 | ||
297 | 309 | ||
298 | - | func | |
299 | - | let | |
300 | - | let | |
301 | - | let | |
302 | - | split( | |
310 | + | func bO (aa) = { | |
311 | + | let bP = split(aG(au(aa)), k) | |
312 | + | let ai = bP[1] | |
313 | + | let aj = bP[2] | |
314 | + | split(aG(ah(ai, aj)), k) | |
303 | 315 | } | |
304 | 316 | ||
305 | 317 | ||
306 | - | func | |
307 | - | let | |
308 | - | let | |
309 | - | let | |
318 | + | func bQ (bR,bS) = { | |
319 | + | let bT = valueOrElse(getInteger(this, af(bR)), 0) | |
320 | + | let bU = valueOrElse(getInteger(this, Y()), 0) | |
321 | + | let bV = if ((bT == 0)) | |
310 | 322 | then { | |
311 | - | let | |
312 | - | $Tuple3( | |
323 | + | let bW = (bU + bS) | |
324 | + | $Tuple3(bW, [IntegerEntry(Y(), bW), IntegerEntry(af(bR), bW), StringEntry(ad(bW), bR)], true) | |
313 | 325 | } | |
314 | - | else $Tuple3( | |
315 | - | | |
326 | + | else $Tuple3(bT, nil, false) | |
327 | + | bV | |
316 | 328 | } | |
317 | 329 | ||
318 | 330 | ||
319 | - | func | |
320 | - | let | |
321 | - | if (containsElement( | |
331 | + | func bX (bk) = { | |
332 | + | let bY = split(valueOrElse(getString(S()), l), k) | |
333 | + | if (containsElement(bY, toBase58String(bk.callerPublicKey))) | |
322 | 334 | then true | |
323 | 335 | else { | |
324 | - | let | |
325 | - | if (( | |
336 | + | let bZ = bl(bk) | |
337 | + | if ((bZ == bZ)) | |
326 | 338 | then true | |
327 | 339 | else throw("Strict value is not equal to itself.") | |
328 | 340 | } | |
329 | 341 | } | |
330 | 342 | ||
331 | 343 | ||
332 | - | func | |
344 | + | func ca (aH,cb,cc) = valueOrElse(getInteger(this, aH), valueOrElse(getInteger(this, cb), cc)) | |
333 | 345 | ||
334 | 346 | ||
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)] | |
347 | + | func cd (aA,aB) = { | |
348 | + | let ai = getInteger(af(aA)) | |
349 | + | let aj = getInteger(af(aB)) | |
350 | + | if (if ((ai == unit)) | |
351 | + | then true | |
352 | + | else (aj == unit)) | |
353 | + | then false | |
354 | + | else { | |
355 | + | let ce = toString(value(ai)) | |
356 | + | let cf = toString(value(aj)) | |
357 | + | let cg = getString(ah(ce, cf)) | |
358 | + | let ch = getString(ah(cf, ce)) | |
359 | + | let ci = if ((cg != unit)) | |
360 | + | then true | |
361 | + | else (ch != unit) | |
362 | + | ci | |
363 | + | } | |
364 | + | } | |
365 | + | ||
366 | + | ||
367 | + | @Callable(bk) | |
368 | + | func getSwapContractREADONLY () = $Tuple2(nil, aG(J())) | |
369 | + | ||
370 | + | ||
371 | + | ||
372 | + | @Callable(bk) | |
373 | + | func getLpAssetFromPoolAssetsREADONLY (cj,ck) = if (if ((cj == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS")) | |
374 | + | then (ck == "WAVES") | |
375 | + | else false) | |
376 | + | then $Tuple2(nil, unit) | |
377 | + | else { | |
378 | + | let cl = value(getInteger(this, af(cj))) | |
379 | + | let cm = value(getInteger(this, af(ck))) | |
380 | + | let cn = getString(this, aq(toString(cl), toString(cm))) | |
381 | + | let co = if ((cn == unit)) | |
382 | + | then unit | |
383 | + | else drop(value(cn), 4) | |
384 | + | $Tuple2(nil, co) | |
385 | + | } | |
386 | + | ||
387 | + | ||
388 | + | ||
389 | + | @Callable(bk) | |
390 | + | func getPoolAddressFromLpAssetREADONLY (cp) = $Tuple2(nil, valueOrElse(getString(this, ay(cp)), "")) | |
391 | + | ||
392 | + | ||
393 | + | ||
394 | + | @Callable(bk) | |
395 | + | func constructor (cq,cr,bq,br,bs,bt,cs,ct) = { | |
396 | + | let cu = bl(bk) | |
397 | + | if ((cu == cu)) | |
398 | + | then [StringEntry(K(), bz(cq, cr, bq, br, bs, bt, cs)), IntegerEntry(W(), ct)] | |
340 | 399 | else throw("Strict value is not equal to itself.") | |
341 | 400 | } | |
342 | 401 | ||
343 | 402 | ||
344 | 403 | ||
345 | - | @Callable( | |
346 | - | func constructorV2 ( | |
347 | - | let | |
348 | - | if (( | |
404 | + | @Callable(bk) | |
405 | + | func constructorV2 (cv) = { | |
406 | + | let cu = bl(bk) | |
407 | + | if ((cu == cu)) | |
349 | 408 | then { | |
350 | - | let | |
351 | - | if (( | |
352 | - | then [StringEntry( | |
409 | + | let cw = addressFromPublicKey(fromBase58String(cv)) | |
410 | + | if ((cw == cw)) | |
411 | + | then [StringEntry(N(), cv)] | |
353 | 412 | else throw("Strict value is not equal to itself.") | |
354 | 413 | } | |
355 | 414 | else throw("Strict value is not equal to itself.") | |
356 | 415 | } | |
357 | 416 | ||
358 | 417 | ||
359 | 418 | ||
360 | - | @Callable( | |
361 | - | func constructorV3 ( | |
362 | - | let | |
363 | - | if (( | |
419 | + | @Callable(bk) | |
420 | + | func constructorV3 (bv,bw,bx,by) = { | |
421 | + | let cu = bl(bk) | |
422 | + | if ((cu == cu)) | |
364 | 423 | then { | |
365 | - | let | |
366 | - | [StringEntry( | |
424 | + | let aY = split(aG(K()), k) | |
425 | + | [StringEntry(K(), bn(aY[1], aY[2], aY[3], aY[4], aY[5], aY[6], aY[7], bv, bw, bx, by))] | |
367 | 426 | } | |
368 | 427 | else throw("Strict value is not equal to itself.") | |
369 | 428 | } | |
370 | 429 | ||
371 | 430 | ||
372 | 431 | ||
373 | - | @Callable( | |
374 | - | func constructorV4 ( | |
375 | - | let | |
376 | - | if (( | |
377 | - | then [StringEntry( | |
432 | + | @Callable(bk) | |
433 | + | func constructorV4 (cx,cy) = { | |
434 | + | let cu = bl(bk) | |
435 | + | if ((cu == cu)) | |
436 | + | then [StringEntry(O(), cx), StringEntry(P(), makeString(cy, k))] | |
378 | 437 | else throw("Strict value is not equal to itself.") | |
379 | 438 | } | |
380 | 439 | ||
381 | 440 | ||
382 | 441 | ||
383 | - | @Callable( | |
384 | - | func constructorV5 ( | |
385 | - | let | |
386 | - | if (( | |
387 | - | then [StringEntry( | |
442 | + | @Callable(bk) | |
443 | + | func constructorV5 (cz) = { | |
444 | + | let cu = bl(bk) | |
445 | + | if ((cu == cu)) | |
446 | + | then [StringEntry(T(), cz)] | |
388 | 447 | else throw("Strict value is not equal to itself.") | |
389 | 448 | } | |
390 | 449 | ||
391 | 450 | ||
392 | 451 | ||
393 | - | @Callable( | |
394 | - | func constructorV6 ( | |
395 | - | let | |
452 | + | @Callable(bk) | |
453 | + | func constructorV6 (cA,cB) = { | |
454 | + | let cC = [bl(bk), if ((addressFromString(cA) != unit)) | |
396 | 455 | then true | |
397 | 456 | else "invalid voting emission contract address"] | |
398 | - | if (( | |
399 | - | then [StringEntry( | |
457 | + | if ((cC == cC)) | |
458 | + | then [StringEntry(U(), cA), StringEntry(V(), makeString(cB, k))] | |
400 | 459 | else throw("Strict value is not equal to itself.") | |
401 | 460 | } | |
402 | 461 | ||
403 | 462 | ||
404 | 463 | ||
405 | - | @Callable( | |
406 | - | func setManager ( | |
407 | - | let | |
408 | - | if (( | |
464 | + | @Callable(bk) | |
465 | + | func setManager (cD) = { | |
466 | + | let cu = bl(bk) | |
467 | + | if ((cu == cu)) | |
409 | 468 | then { | |
410 | - | let | |
411 | - | if (( | |
412 | - | then [StringEntry( | |
469 | + | let cE = fromBase58String(cD) | |
470 | + | if ((cE == cE)) | |
471 | + | then [StringEntry(R(), cD)] | |
413 | 472 | else throw("Strict value is not equal to itself.") | |
414 | 473 | } | |
415 | 474 | else throw("Strict value is not equal to itself.") | |
416 | 475 | } | |
417 | 476 | ||
418 | 477 | ||
419 | 478 | ||
420 | - | @Callable( | |
479 | + | @Callable(bk) | |
421 | 480 | func confirmManager () = { | |
422 | - | let | |
423 | - | let | |
481 | + | let cF = bg() | |
482 | + | let cG = if (isDefined(cF)) | |
424 | 483 | then true | |
425 | 484 | else throw("No pending manager") | |
426 | - | if (( | |
485 | + | if ((cG == cG)) | |
427 | 486 | then { | |
428 | - | let | |
487 | + | let cH = if ((bk.callerPublicKey == value(cF))) | |
429 | 488 | then true | |
430 | 489 | else throw("You are not pending manager") | |
431 | - | if (( | |
432 | - | then [StringEntry( | |
490 | + | if ((cH == cH)) | |
491 | + | then [StringEntry(Q(), toBase58String(value(cF))), DeleteEntry(R())] | |
433 | 492 | else throw("Strict value is not equal to itself.") | |
434 | 493 | } | |
435 | 494 | else throw("Strict value is not equal to itself.") | |
436 | 495 | } | |
437 | 496 | ||
438 | 497 | ||
439 | 498 | ||
440 | - | @Callable( | |
441 | - | func setAdmins ( | |
442 | - | let | |
443 | - | if (( | |
444 | - | then [StringEntry( | |
499 | + | @Callable(bk) | |
500 | + | func setAdmins (cI) = { | |
501 | + | let cu = bl(bk) | |
502 | + | if ((cu == cu)) | |
503 | + | then [StringEntry(S(), makeString(cI, k))] | |
445 | 504 | else throw("Strict value is not equal to itself.") | |
446 | 505 | } | |
447 | 506 | ||
448 | 507 | ||
449 | 508 | ||
450 | - | @Callable( | |
451 | - | func activateNewPool ( | |
452 | - | let | |
453 | - | if (( | |
454 | - | then if (isDefined(getString( | |
455 | - | then throw((("Pool address " + | |
509 | + | @Callable(bk) | |
510 | + | func activateNewPool (aa,bD,bE,cJ,cK,cL,bK,cM) = { | |
511 | + | let cu = bX(bk) | |
512 | + | if ((cu == cu)) | |
513 | + | then if (isDefined(getString(au(aa)))) | |
514 | + | then throw((("Pool address " + aa) + " already registered.")) | |
456 | 515 | else { | |
457 | - | let | |
458 | - | let | |
459 | - | let | |
516 | + | let cN = bQ(bD, 1) | |
517 | + | let cO = cN._1 | |
518 | + | let cP = bQ(bE, if (cN._3) | |
460 | 519 | then 2 | |
461 | 520 | else 1) | |
462 | - | let | |
463 | - | let | |
464 | - | let | |
465 | - | let | |
466 | - | if ( | |
467 | - | then throw((((("Pool " + | |
521 | + | let cQ = cP._1 | |
522 | + | let cR = valueOrErrorMessage(scriptHash(addressFromStringValue(aa)), ("No script has been found on pool account " + aa)) | |
523 | + | let cS = getBinaryValue(M()) | |
524 | + | let cT = cd(bD, bE) | |
525 | + | if (cT) | |
526 | + | then throw((((("Pool " + bD) + "/") + bE) + " has already been activated.")) | |
468 | 527 | else { | |
469 | - | let | |
470 | - | let | |
471 | - | then | |
472 | - | else pow(10, 0, value(assetInfo(fromBase58String( | |
473 | - | let | |
474 | - | then | |
475 | - | else pow(10, 0, value(assetInfo(fromBase58String( | |
476 | - | let | |
477 | - | let | |
478 | - | let | |
479 | - | let | |
480 | - | if (( | |
481 | - | then if (( | |
528 | + | let cU = value(getString(this, ah(toString(cO), toString(cQ)))) | |
529 | + | let cV = if ((bD == "WAVES")) | |
530 | + | then j | |
531 | + | else pow(10, 0, value(assetInfo(fromBase58String(bD))).decimals, 0, 0, DOWN) | |
532 | + | let cW = if ((bE == "WAVES")) | |
533 | + | then j | |
534 | + | else pow(10, 0, value(assetInfo(fromBase58String(bE))).decimals, 0, 0, DOWN) | |
535 | + | let cX = Issue(cJ, cK, 1, 8, true) | |
536 | + | let bC = calculateAssetId(cX) | |
537 | + | let cY = toBase58String(bC) | |
538 | + | let cZ = invoke(addressFromStringValue(aa), "activate", [bD, bE], nil) | |
539 | + | if ((cZ == cZ)) | |
540 | + | then if ((cZ != "success")) | |
482 | 541 | then throw("Pool initialisation error happened.") | |
483 | 542 | else { | |
484 | - | let | |
485 | - | let | |
486 | - | if (( | |
543 | + | let cz = addressFromStringValue(aG(T())) | |
544 | + | let da = invoke(cz, "createOrUpdate", [cY, cJ, false], nil) | |
545 | + | if ((da == da)) | |
487 | 546 | then { | |
488 | - | let | |
489 | - | if (( | |
547 | + | let db = invoke(cz, "addLabel", [cY, g], nil) | |
548 | + | if ((db == db)) | |
490 | 549 | then { | |
491 | - | let | |
492 | - | if (( | |
550 | + | let dc = invoke(cz, "setLogo", [cY, cM], nil) | |
551 | + | if ((dc == dc)) | |
493 | 552 | then { | |
494 | - | let | |
495 | - | if (( | |
553 | + | let dd = invoke(cz, "addAssetsLink", [bD, bE, cY], nil) | |
554 | + | if ((dd == dd)) | |
496 | 555 | then { | |
497 | - | let | |
498 | - | if (( | |
499 | - | then $Tuple2((( | |
556 | + | let de = invoke(cz, "increaseAssetPoolsNumber", [bD], nil) | |
557 | + | if ((de == de)) | |
558 | + | then $Tuple2(((cN._2 ++ cP._2) ++ [cX, Burn(bC, 1), StringEntry(ah(toString(cO), toString(cQ)), bA(aa, toString(m), cY, bD, bE, cV, cW, cO, cQ, j, bK)), StringEntry(ao(cY), bL(cO, cQ)), StringEntry(aq(toString(cO), toString(cQ)), ("%s__" + cY)), StringEntry(au(aa), bL(cO, cQ)), StringEntry(aw(cO, cQ), aa), StringEntry(ay(cY), aa), StringEntry(ax(aa), cY), IntegerEntry(Z(aa), cL), IntegerEntry(at(aa), h)]), cY) | |
500 | 559 | else throw("Strict value is not equal to itself.") | |
501 | 560 | } | |
502 | 561 | else throw("Strict value is not equal to itself.") | |
503 | 562 | } | |
504 | 563 | else throw("Strict value is not equal to itself.") | |
505 | 564 | } | |
506 | 565 | else throw("Strict value is not equal to itself.") | |
507 | 566 | } | |
508 | 567 | else throw("Strict value is not equal to itself.") | |
509 | 568 | } | |
510 | 569 | else throw("Strict value is not equal to itself.") | |
511 | 570 | } | |
512 | 571 | } | |
513 | 572 | else throw("Strict value is not equal to itself.") | |
514 | 573 | } | |
515 | 574 | ||
516 | 575 | ||
517 | 576 | ||
518 | - | @Callable( | |
519 | - | func managePool ( | |
520 | - | let | |
521 | - | if (( | |
577 | + | @Callable(bk) | |
578 | + | func managePool (aa,df) = { | |
579 | + | let cu = bl(bk) | |
580 | + | if ((cu == cu)) | |
522 | 581 | then { | |
523 | - | let | |
524 | - | let | |
525 | - | let | |
526 | - | let | |
527 | - | let | |
528 | - | let | |
529 | - | let | |
530 | - | let | |
531 | - | let | |
532 | - | let | |
533 | - | let | |
534 | - | [StringEntry( | |
582 | + | let dg = bO(aa) | |
583 | + | let bB = dg[u] | |
584 | + | let cY = dg[v] | |
585 | + | let bD = dg[w] | |
586 | + | let bE = dg[x] | |
587 | + | let cV = parseIntValue(dg[y]) | |
588 | + | let cW = parseIntValue(dg[z]) | |
589 | + | let cO = parseIntValue(dg[A]) | |
590 | + | let cQ = parseIntValue(dg[B]) | |
591 | + | let dh = parseIntValue(dg[C]) | |
592 | + | let bK = dg[D] | |
593 | + | [StringEntry(ah(toString(cO), toString(cQ)), bA(aa, toString(df), cY, bD, bE, cV, cW, cO, cQ, dh, bK))] | |
535 | 594 | } | |
536 | 595 | else throw("Strict value is not equal to itself.") | |
537 | 596 | } | |
538 | 597 | ||
539 | 598 | ||
540 | 599 | ||
541 | - | @Callable( | |
542 | - | func emit ( | |
543 | - | let | |
544 | - | let | |
545 | - | let | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | if ((0 >= | |
600 | + | @Callable(bk) | |
601 | + | func emit (di) = { | |
602 | + | let dj = bk.caller | |
603 | + | let dk = bk.originCaller | |
604 | + | let dl = valueOrErrorMessage(getString(ax(toString(dj))), "Invalid LP address called me.") | |
605 | + | let dm = fromBase58String(dl) | |
606 | + | let cy = split(valueOrElse(getString(P()), l), k) | |
607 | + | let cx = addressFromStringValue(valueOrErrorMessage(getString(O()), "Legacy factory contract does not exists.")) | |
608 | + | if ((0 >= di)) | |
550 | 609 | then nil | |
551 | - | else if (containsElement( | |
552 | - | then $Tuple2(nil, | |
553 | - | else $Tuple2([Reissue( | |
610 | + | else if (containsElement(cy, toString(dj))) | |
611 | + | then $Tuple2(nil, cx) | |
612 | + | else $Tuple2([Reissue(dm, di, true), ScriptTransfer(bk.caller, di, dm)], "success") | |
554 | 613 | } | |
555 | 614 | ||
556 | 615 | ||
557 | 616 | ||
558 | - | @Callable( | |
559 | - | func burn ( | |
560 | - | let | |
561 | - | let | |
562 | - | let | |
563 | - | let | |
564 | - | let | |
565 | - | let | |
566 | - | if (( | |
617 | + | @Callable(bk) | |
618 | + | func burn (dn) = { | |
619 | + | let dj = bk.caller | |
620 | + | let dk = bk.originCaller | |
621 | + | let do = value(bk.payments[0]) | |
622 | + | let dp = value(do.amount) | |
623 | + | let dq = toBase58String(value(do.assetId)) | |
624 | + | let dr = valueOrErrorMessage(getString(ax(toString(dj))), "Invalid LP address called me.") | |
625 | + | if ((dq != dr)) | |
567 | 626 | then throw("Invalid asset passed.") | |
568 | - | else if (( | |
627 | + | else if ((dn != dp)) | |
569 | 628 | then throw("Invalid amount passed.") | |
570 | 629 | else { | |
571 | - | let | |
572 | - | $Tuple2([Burn( | |
630 | + | let dm = fromBase58String(dr) | |
631 | + | $Tuple2([Burn(dm, dn)], "success") | |
573 | 632 | } | |
574 | 633 | } | |
575 | 634 | ||
576 | 635 | ||
577 | 636 | ||
578 | - | @Callable( | |
579 | - | func modifyWeight ( | |
580 | - | let | |
637 | + | @Callable(bk) | |
638 | + | func modifyWeight (bC,ds) = { | |
639 | + | let cu = if ((toBase58String(bk.caller.bytes) == valueOrElse(getString(this, U()), ""))) | |
581 | 640 | then true | |
582 | - | else | |
583 | - | if (( | |
641 | + | else bl(bk) | |
642 | + | if ((cu == cu)) | |
584 | 643 | then { | |
585 | - | let | |
586 | - | let | |
587 | - | let | |
588 | - | let | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
593 | - | let | |
594 | - | if (( | |
644 | + | let av = aG(ay(bC)) | |
645 | + | let dt = Z(av) | |
646 | + | let du = Z(f) | |
647 | + | let dv = valueOrElse(getInteger(du), 0) | |
648 | + | let cL = valueOrElse(getInteger(dt), 0) | |
649 | + | let dw = ds | |
650 | + | let aY = split(aG(K()), k) | |
651 | + | let cq = ba(aY) | |
652 | + | let dx = invoke(cq, "onModifyWeight", [bC, av], nil) | |
653 | + | if ((dx == dx)) | |
595 | 654 | then { | |
596 | - | let | |
655 | + | let dy = if ((dv == 0)) | |
597 | 656 | then nil | |
598 | - | else [IntegerEntry( | |
599 | - | let | |
600 | - | let | |
601 | - | let | |
657 | + | else [IntegerEntry(du, 0)] | |
658 | + | let dz = ab(av, 0) | |
659 | + | let dA = getInteger(dz) | |
660 | + | let dB = if ((dA == unit)) | |
602 | 661 | then nil | |
603 | - | else [DeleteEntry( | |
604 | - | (([IntegerEntry( | |
662 | + | else [DeleteEntry(dz)] | |
663 | + | (([IntegerEntry(dt, dw)] ++ dy) ++ dB) | |
605 | 664 | } | |
606 | 665 | else throw("Strict value is not equal to itself.") | |
607 | 666 | } | |
608 | 667 | else throw("Strict value is not equal to itself.") | |
609 | 668 | } | |
610 | 669 | ||
611 | 670 | ||
612 | 671 | ||
613 | - | @Callable( | |
614 | - | func modifyWeights ( | |
615 | - | let | |
616 | - | if (( | |
672 | + | @Callable(bk) | |
673 | + | func modifyWeights (dC,dD,dE,dF) = { | |
674 | + | let cu = bl(bk) | |
675 | + | if ((cu == cu)) | |
617 | 676 | then { | |
618 | - | let | |
619 | - | let | |
620 | - | let | |
621 | - | let | |
622 | - | let | |
623 | - | let | |
624 | - | let | |
625 | - | let | |
626 | - | let | |
627 | - | let | |
628 | - | let | |
629 | - | let | |
630 | - | let | |
631 | - | let | |
632 | - | if ((0 >= | |
633 | - | then throw(("invalid btcWeightNew: " + toString( | |
634 | - | else if ((0 >= | |
635 | - | then throw(("invalid ethWeightNew: " + toString( | |
677 | + | let dG = ((5 * e) / 100) | |
678 | + | let dH = ((5 * e) / 100) | |
679 | + | let dI = ((5 * e) / 100) | |
680 | + | let aY = split(aG(K()), k) | |
681 | + | let dJ = ba(aY) | |
682 | + | let dK = bb(aY) | |
683 | + | let dL = Z(dC) | |
684 | + | let dM = Z(dD) | |
685 | + | let dN = Z(dE) | |
686 | + | let dO = Z(dF) | |
687 | + | let dP = aJ(dL) | |
688 | + | let dQ = aJ(dM) | |
689 | + | let dR = (dP - dI) | |
690 | + | let dS = (dQ - dI) | |
691 | + | if ((0 >= dR)) | |
692 | + | then throw(("invalid btcWeightNew: " + toString(dR))) | |
693 | + | else if ((0 >= dS)) | |
694 | + | then throw(("invalid ethWeightNew: " + toString(dS))) | |
636 | 695 | else { | |
637 | - | let | |
638 | - | let | |
639 | - | let | |
640 | - | let | |
641 | - | let | |
642 | - | if (( | |
696 | + | let dT = aG(ax(dC)) | |
697 | + | let dU = aG(ax(dD)) | |
698 | + | let dV = aG(ax(dE)) | |
699 | + | let dW = aG(ax(dF)) | |
700 | + | let dX = invoke(dJ, "onModifyWeight", [dT, dC], nil) | |
701 | + | if ((dX == dX)) | |
643 | 702 | then { | |
644 | - | let | |
645 | - | if (( | |
703 | + | let dY = invoke(dJ, "onModifyWeight", [dU, dD], nil) | |
704 | + | if ((dY == dY)) | |
646 | 705 | then { | |
647 | - | let | |
648 | - | if (( | |
706 | + | let dZ = invoke(dJ, "onModifyWeight", [dV, dE], nil) | |
707 | + | if ((dZ == dZ)) | |
649 | 708 | then { | |
650 | - | let | |
651 | - | if (( | |
652 | - | then [IntegerEntry( | |
709 | + | let ea = invoke(dJ, "onModifyWeight", [dW, dF], nil) | |
710 | + | if ((ea == ea)) | |
711 | + | then [IntegerEntry(dL, dR), IntegerEntry(dM, dS), IntegerEntry(dN, dG), IntegerEntry(dO, dH), IntegerEntry(ab(dC, 0), dP), IntegerEntry(ab(dD, 0), dQ), IntegerEntry(ab(dE, 0), dG), IntegerEntry(ab(dF, 0), dH)] | |
653 | 712 | else throw("Strict value is not equal to itself.") | |
654 | 713 | } | |
655 | 714 | else throw("Strict value is not equal to itself.") | |
656 | 715 | } | |
657 | 716 | else throw("Strict value is not equal to itself.") | |
658 | 717 | } | |
659 | 718 | else throw("Strict value is not equal to itself.") | |
660 | 719 | } | |
661 | 720 | } | |
662 | 721 | else throw("Strict value is not equal to itself.") | |
663 | 722 | } | |
664 | 723 | ||
665 | 724 | ||
666 | 725 | ||
667 | - | @Callable( | |
668 | - | func checkWxEmissionPoolLabel ( | |
669 | - | let | |
670 | - | let | |
671 | - | if ($isInstanceOf( | |
726 | + | @Callable(bk) | |
727 | + | func checkWxEmissionPoolLabel (aA,aB) = { | |
728 | + | let eb = { | |
729 | + | let bd = getBoolean(az(aA, aB)) | |
730 | + | if ($isInstanceOf(bd, "Boolean")) | |
672 | 731 | then { | |
673 | - | let | |
674 | - | | |
732 | + | let ec = bd | |
733 | + | ec | |
675 | 734 | } | |
676 | 735 | else false | |
677 | 736 | } | |
678 | - | $Tuple2(nil, | |
737 | + | $Tuple2(nil, eb) | |
679 | 738 | } | |
680 | 739 | ||
681 | 740 | ||
682 | 741 | ||
683 | - | @Callable( | |
684 | - | func setWxEmissionPoolLabel ( | |
685 | - | let | |
686 | - | if (( | |
687 | - | then $Tuple2([BooleanEntry( | |
742 | + | @Callable(bk) | |
743 | + | func setWxEmissionPoolLabel (aA,aB) = { | |
744 | + | let cu = bX(bk) | |
745 | + | if ((cu == cu)) | |
746 | + | then $Tuple2([BooleanEntry(az(aA, aB), true)], unit) | |
688 | 747 | else throw("Strict value is not equal to itself.") | |
689 | 748 | } | |
690 | 749 | ||
691 | 750 | ||
692 | 751 | ||
693 | - | @Callable( | |
694 | - | func deleteWxEmissionPoolLabel ( | |
695 | - | let | |
752 | + | @Callable(bk) | |
753 | + | func deleteWxEmissionPoolLabel (aA,aB) = { | |
754 | + | let cu = if (bj(bk)) | |
696 | 755 | then true | |
697 | - | else | |
698 | - | if (( | |
699 | - | then $Tuple2([DeleteEntry( | |
756 | + | else bX(bk) | |
757 | + | if ((cu == cu)) | |
758 | + | then $Tuple2([DeleteEntry(az(aA, aB))], unit) | |
700 | 759 | else throw("Strict value is not equal to itself.") | |
701 | 760 | } | |
702 | 761 | ||
703 | 762 | ||
704 | 763 | ||
705 | - | @Callable( | |
706 | - | func onVerificationLoss ( | |
707 | - | let | |
764 | + | @Callable(bk) | |
765 | + | func onVerificationLoss (ed) = { | |
766 | + | let cu = if ((toBase58String(bk.caller.bytes) == valueOrElse(getString(this, T()), ""))) | |
708 | 767 | then true | |
709 | - | else | |
710 | - | if (( | |
768 | + | else bl(bk) | |
769 | + | if ((cu == cu)) | |
711 | 770 | then { | |
712 | - | let | |
713 | - | let | |
771 | + | let cB = bc() | |
772 | + | let ee = if ((size(cB) > 0)) | |
714 | 773 | then true | |
715 | 774 | else throw("invalid price assets") | |
716 | - | if (( | |
775 | + | if ((ee == ee)) | |
717 | 776 | then { | |
718 | - | func | |
719 | - | let | |
720 | - | if (( | |
777 | + | func ef (eg,eh) = { | |
778 | + | let ei = invoke(this, "deleteWxEmissionPoolLabel", [ed, eh], nil) | |
779 | + | if ((ei == ei)) | |
721 | 780 | then unit | |
722 | 781 | else throw("Strict value is not equal to itself.") | |
723 | 782 | } | |
724 | 783 | ||
725 | - | let | |
726 | - | let | |
727 | - | let | |
728 | - | let | |
729 | - | func | |
730 | - | then | |
731 | - | else | |
784 | + | let ej = { | |
785 | + | let ek = cB | |
786 | + | let el = size(ek) | |
787 | + | let em = unit | |
788 | + | func en (eo,ep) = if ((ep >= el)) | |
789 | + | then eo | |
790 | + | else ef(eo, ek[ep]) | |
732 | 791 | ||
733 | - | func | |
734 | - | then | |
735 | - | else throw("List size exceeds | |
792 | + | func eq (eo,ep) = if ((ep >= el)) | |
793 | + | then eo | |
794 | + | else throw("List size exceeds 2") | |
736 | 795 | ||
737 | - | | |
796 | + | eq(en(en(em, 0), 1), 2) | |
738 | 797 | } | |
739 | - | if (( | |
798 | + | if ((ej == ej)) | |
740 | 799 | then $Tuple2(nil, unit) | |
741 | 800 | else throw("Strict value is not equal to itself.") | |
742 | 801 | } | |
743 | 802 | else throw("Strict value is not equal to itself.") | |
744 | 803 | } | |
745 | 804 | else throw("Strict value is not equal to itself.") | |
746 | 805 | } | |
747 | 806 | ||
748 | 807 | ||
749 | 808 | ||
750 | - | @Callable( | |
751 | - | func isPoolOneTokenOperationsDisabledREADONLY ( | |
752 | - | let | |
753 | - | let | |
754 | - | let | |
755 | - | let | |
756 | - | $Tuple2(nil, if ( | |
809 | + | @Callable(bk) | |
810 | + | func isPoolOneTokenOperationsDisabledREADONLY (aa) = { | |
811 | + | let dg = bO(aa) | |
812 | + | let al = $Tuple2(parseIntValue(dg[A]), parseIntValue(dg[B])) | |
813 | + | let er = valueOrElse(getBoolean(ak(al)), false) | |
814 | + | let es = valueOrElse(getBoolean(an()), false) | |
815 | + | $Tuple2(nil, if (es) | |
757 | 816 | then true | |
758 | - | else | |
817 | + | else er) | |
759 | 818 | } | |
760 | 819 | ||
761 | 820 | ||
762 | 821 | ||
763 | - | @Callable( | |
764 | - | func getInFeeREADONLY ( | |
765 | - | let | |
766 | - | $Tuple2(nil, | |
822 | + | @Callable(bk) | |
823 | + | func getInFeeREADONLY (aa) = { | |
824 | + | let et = ca(aC(aa), aD(), 0) | |
825 | + | $Tuple2(nil, et) | |
767 | 826 | } | |
768 | 827 | ||
769 | 828 | ||
770 | 829 | ||
771 | - | @Callable( | |
772 | - | func getOutFeeREADONLY ( | |
773 | - | let | |
774 | - | $Tuple2(nil, | |
830 | + | @Callable(bk) | |
831 | + | func getOutFeeREADONLY (aa) = { | |
832 | + | let et = ca(aE(aa), aF(), fraction(10, b, 10000)) | |
833 | + | $Tuple2(nil, et) | |
775 | 834 | } | |
776 | 835 | ||
777 | 836 | ||
778 | 837 | ||
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])) | |
838 | + | @Callable(bk) | |
839 | + | func poolInfoREADONLY (eu,ev) = { | |
840 | + | let ew = getInteger(this, af(eu)) | |
841 | + | let ex = getInteger(this, af(ev)) | |
842 | + | let ey = getString(this, aw(value(ew), value(ex))) | |
843 | + | let ez = getString(this, ax(value(ey))) | |
844 | + | let cT = if (if (isDefined(ew)) | |
845 | + | then isDefined(ex) | |
846 | + | else false) | |
847 | + | then isDefined(ey) | |
848 | + | else false | |
849 | + | let eA = if (cT) | |
850 | + | then $Tuple2(addressFromStringValue(value(ey)), aK(value(ez))) | |
851 | + | else unit | |
852 | + | $Tuple2(nil, eA) | |
786 | 853 | } | |
787 | 854 | ||
788 | 855 | ||
789 | - | @Verifier(ec) | |
790 | - | func ed () = { | |
791 | - | let ee = { | |
792 | - | let aZ = bb() | |
793 | - | if ($isInstanceOf(aZ, "ByteVector")) | |
856 | + | ||
857 | + | @Callable(bk) | |
858 | + | func getPoolStatusREADONLY (aa) = { | |
859 | + | let bP = split(aG(au(aa)), k) | |
860 | + | let ai = bP[1] | |
861 | + | let aj = bP[2] | |
862 | + | let cg = split(aG(ah(ai, aj)), k) | |
863 | + | $Tuple2(nil, parseIntValue(cg[u])) | |
864 | + | } | |
865 | + | ||
866 | + | ||
867 | + | ||
868 | + | @Callable(bk) | |
869 | + | func getPoolConfigREADONLY (aa) = { | |
870 | + | let bP = split(aG(au(aa)), k) | |
871 | + | let ai = bP[1] | |
872 | + | let aj = bP[2] | |
873 | + | let cg = split(aG(ah(ai, aj)), k) | |
874 | + | $Tuple2(nil, cg) | |
875 | + | } | |
876 | + | ||
877 | + | ||
878 | + | ||
879 | + | @Callable(bk) | |
880 | + | func poolExistsREADONLY (aA,aB) = $Tuple2(nil, cd(aA, aB)) | |
881 | + | ||
882 | + | ||
883 | + | @Verifier(eB) | |
884 | + | func eC () = { | |
885 | + | let eD = { | |
886 | + | let bd = bf() | |
887 | + | if ($isInstanceOf(bd, "ByteVector")) | |
794 | 888 | then { | |
795 | - | let | |
796 | - | | |
889 | + | let bm = bd | |
890 | + | bm | |
797 | 891 | } | |
798 | - | else if ($isInstanceOf( | |
799 | - | then | |
892 | + | else if ($isInstanceOf(bd, "Unit")) | |
893 | + | then eB.senderPublicKey | |
800 | 894 | else throw("Match error") | |
801 | 895 | } | |
802 | - | sigVerify( | |
896 | + | sigVerify(eB.bodyBytes, eB.proofs[0], eD) | |
803 | 897 | } | |
804 | 898 |
github/deemru/w8io/169f3d6 306.41 ms ◑