tx · 8AuaVNPo7iDLwAstfa4Qmt9MiXWXfznN2NXdLJvZsQeN

3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn:  -0.02400000 Waves

2023.08.18 13:37 [2715930] smart account 3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn > SELF 0.00000000 Waves

{ "type": 13, "id": "8AuaVNPo7iDLwAstfa4Qmt9MiXWXfznN2NXdLJvZsQeN", "fee": 2400000, "feeAssetId": null, "timestamp": 1692355070401, "version": 2, "chainId": 84, "sender": "3N2M4PztorHwrfENp7D6LhYGgGodjiD1fjn", "senderPublicKey": "Fj9LPkCtmW3pDnVU6wPQnvqpZJCBieWSvZqY5FAGeCyp", "proofs": [ "TuZo9hzscHqPVsxjre9k1tPeKeKqDX3SMd5KvV6AgopHKVAd6yzjtNqeaZhoriwHSyqEKNQbuBRd9PtBpJhJ4WA", "2E7HqLTF2Fr5qt1RUvwAdeYbb7DvWymNYxaZBfgHJhq4Ak7gxK3bQ5p3FG2afQqnSrvDMJc34cGJy3GsJgg42mFx" ], "script": "base64:BgIhCAISABIAEgQKAggIEgMKAQgSBwoFCAgIAQESAwoBCBIAUQAGU0NBTEU4AIDC1y8AC0xFTkRFUlNfQVBSCQDMCAIAlgEJAMwIAgB4CQDMCAIAZAkAzAgCAFAJAMwIAgA8CQDMCAIAKAkAzAgCAB4JAMwIAgAUCQDMCAIACgUDbmlsABNMRU5ERVJTX0FQUl9QRVJJT0RTCQDMCAICAzEtMQkAzAgCAgMyLTIJAMwIAgIDMy0zCQDMCAICAzQtNAkAzAgCAgM1LTgJAMwIAgIEOS0xMgkAzAgCAgUxNC0xNgkAzAgCAgUxNy0yMAkAzAgCAgYyMC0xMDQFA25pbAATTEVOREVSU19NQVhfUEVSSU9EUwBoAAZMUF9BUFIJAMwIAgCWAQkAzAgCAHgJAMwIAgBkCQDMCAIAUAkAzAgCADwJAMwIAgAoBQNuaWwADkxQX0FQUl9QRVJJT0RTCQDMCAICAzEtMQkAzAgCAgMyLTIJAMwIAgIDMy0zCQDMCAICAzQtNAkAzAgCAgM1LTgJAMwIAgIEOS0xMgUDbmlsAA5MUF9NQVhfUEVSSU9EUwAMAAxrU3RhcnRIZWlnaHQCC3N0YXJ0SGVpZ2h0AA1rUGVyaW9kTGVuZ3RoAgxwZXJpb2RMZW5ndGgAEWtMZW5kZXJzTWF4QW1vdW50AhFsZW5kUmV3YXJkc0Ftb3VudAAMa0xQTWF4QW1vdW50Ag5scFJld2FyZEFtb3VudAAHa1Rva2VucwIGdG9rZW5zAAtrVXNlclN1cHBseQIQX3VzZXJUb3RhbFN1cHBseQAOa1Rva2VuSW50ZXJlc3QCDl90b2tlbkludGVyZXN0ABRrVG9rZW5JbnRlcmVzdEhlaWdodAIUX3Rva2VuSW50ZXJlc3RIZWlnaHQAFGtUb2tlblJld2FyZFBlckJsb2NrAhRfdG9rZW5SZXdhcmRQZXJCbG9jawATa1Jld2FyZFVwZGF0ZUhlaWdodAIScmV3YXJkVXBkYXRlSGVpZ2h0ABFrVXNlckxlbmRJbnRlcmVzdAIRX3VzZXJMYW5kSW50ZXJlc3QAF2tVc2VyTGVuZEF2YWlsYWJsZUNsYWltAhdfdXNlckxlbmRBdmFpbGFibGVDbGFpbQAVa1VzZXJMcEF2YWlsYWJsZUNsYWltAhVfdXNlckxwQXZhaWxhYmxlQ2xhaW0AC2tMcEludGVyZXN0AgpscEludGVyZXN0ABFrTHBJbnRlcmVzdEhlaWdodAIQbHBJbnRlcmVzdEhlaWdodAANa1ByZXZMUFN1cHBseQIRcHJldkxQVG90YWxTdXBwbHkAEWtMcFJld2FyZFBlckJsb2NrAhBscFJld2FyZFBlckJsb2NrAA9rVXNlckxwSW50ZXJlc3QCD191c2VyTHBJbnRlcmVzdAAOa1ByaWNlSW5PcmFjbGUCB190d2FwNUIAFGtQcmV2TGVuZFRva2VuU3VwcGx5AhRfcHJldkxlbmRUb3RhbFN1cHBseQAMa0FYTFlUb2tlbklkAgtheGx5VG9rZW5JZAAQa0xlbmRUb2tlblN1cHBseQIPdG90YWxfc3VwcGxpZWRfAA9rTGVuZFVzZXJTdXBwbHkCCl9zdXBwbGllZF8AEGtMZW5kU2V0dXBUb2tlbnMCDHNldHVwX3Rva2VucwAOa1NGVG90YWxTdXBwbHkCGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkABJrU0ZVc2VyVG90YWxTdXBwbHkCFF9zaGFyZV90b2tlbnNfbG9ja2VkAAlrQXhseVBvb2wCCGF4bHlQb29sAAVrTHBJZAIOc2hhcmVfYXNzZXRfaWQADGtQcmljZU9yYWNsZQIMcHJpY2Vfb3JhY2xlABFrQXhseU1haW5Db250cmFjdAIMbWFpbkNvbnRyYWN0ABZrQXhseVRva2Vub21pY0NvbnRyYWN0AhF0b2tlbm9taWNDb250cmFjdAASa1NGRmFybWluZ0NvbnRyYWN0AhNzd29wZmlfZmFybWluZ19hZGRyAA1rTGVuZENvbnRyYWN0AhFsZW5kX3NlcnZpY2VfYWRkcgAJa0FkbWluMVBLAhVncm91cDFfYWRtaW4xX3B1Yl9rZXkACWtBZG1pbjJQSwIVZ3JvdXAxX2FkbWluMl9wdWJfa2V5AAlrQWRtaW4zUEsCFWdyb3VwMV9hZG1pbjNfcHViX2tleQAPa09wZXJhdG9yQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkACGF4bHlQb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUJa0F4bHlQb29sAhZDYW4ndCBnZXQgYXhseVBvb2wga2V5AAxtYWluQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRFrQXhseU1haW5Db250cmFjdAIZQ2FuJ3QgZ2V0IG1haW5Db250YWN0IGtleQANdG9rZW5Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFFmtBeGx5VG9rZW5vbWljQ29udHJhY3QCH0Nhbid0IGdldCB0b2tlbm9taWNDb250cmFjdCBrZXkADGxlbmRDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUNa0xlbmRDb250cmFjdAIfQ2FuJ3QgZ2V0IGxlbmRfc2VydmljZV9hZGRyIGtleQARc2ZGYXJtaW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFEmtTRkZhcm1pbmdDb250cmFjdAIhQ2FuJ3QgZ2V0IHN3b3BmaV9mYXJtaW5nX2FkZHIga2V5AA9wcmljZU9yYWNsZUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFDGtQcmljZU9yYWNsZQIaQ2FuJ3QgZ2V0IHByaWNlX29yYWNsZSBrZXkACGFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFCWtBZG1pbjFQSwISQ2FuJ3QgZ2V0IGFkbWluMVBLAAhhZG1pbjJQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMbWFpbkNvbnRyYWN0BQlrQWRtaW4yUEsCEkNhbid0IGdldCBhZG1pbjJQSwAIYWRtaW4zUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUJa0FkbWluM1BLAhRDYW4ndCBnZXQgb3BlcmF0b3JQSwAKb3BlcmF0b3JQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa09wZXJhdG9yQ2FsbFBLAhRDYW4ndCBnZXQgb3BlcmF0b3JQSwAGYXhseUlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNdG9rZW5Db250cmFjdAUMa0FYTFlUb2tlbklkAhdDYW4ndCBnZXQgQXhseSB0b2tlbiBpZAALc3RhcnRIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtTdGFydEhlaWdodAAMcGVyaW9kTGVuZ3RoCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rUGVyaW9kTGVuZ3RoAAljdXJQZXJpb2QJAJYDAQkAzAgCAAEJAMwIAgkAaQIJAGUCBQZoZWlnaHQFC3N0YXJ0SGVpZ2h0BQxwZXJpb2RMZW5ndGgFA25pbAANbGVuZE1heEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUNdG9rZW5Db250cmFjdAURa0xlbmRlcnNNYXhBbW91bnQAE2xlbmRNYXhQZXJpb2RBbW91bnQJAGkCBQ1sZW5kTWF4QW1vdW50BRNMRU5ERVJTX01BWF9QRVJJT0RTAAtscE1heEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUNdG9rZW5Db250cmFjdAUMa0xQTWF4QW1vdW50ABFscE1heFBlcmlvZEFtb3VudAkAaQIFC2xwTWF4QW1vdW50BQ5MUF9NQVhfUEVSSU9EUwELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhZG1pbjFQSwkAzAgCBQhhZG1pbjJQSwkAzAgCBQhhZG1pbjNQSwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAihPbmx5IGFkbWluIGdyb3VwMSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BDmlzT3BlcmF0b3JDYWxsAQFpAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUKb3BlcmF0b3JQSwUEdW5pdAkAAgECJE9ubHkgb3BlcmF0b3IgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNMYW5kQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFDGxlbmRDb250cmFjdAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQ9pc1NGRmFybWluZ0NhbGwBAWkDCQAAAggFAWkGY2FsbGVyBRFzZkZhcm1pbmdDb250cmFjdAUEdW5pdAkAAgECKU9ubHkgbGFuZCBjb250cmFjdCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQxnZXRBbGxUb2tlbnMABAZ0b2tlbnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUHa1Rva2VucwIAAwkAAAIFBnRva2VucwIABQNuaWwJALUJAgUGdG9rZW5zAgEsAQ1nZXRBc3NldFByaWNlAQdhc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUHYXNzZXRJZAUOa1ByaWNlSW5PcmFjbGUBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0ARFnZXRBc3NldFByZWNpc2lvbgEHYXNzZXRJZAkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB2Fzc2V0SWQAAAAABQRET1dOARVnZXRBZG9wdGVkQVBSQnlQZXJpb2QDBnBlcmlvZAphcHJQZXJpb2RzA2FwcgoBA2ZvcgIBYQdhcGVyaW9kBAskdDA1NDI5NTQ1MQUBYQQFaW5kZXgIBQskdDA1NDI5NTQ1MQJfMQQFZm91bmQIBQskdDA1NDI5NTQ1MQJfMgQCZnQJALUJAgUHYXBlcmlvZAIBLQQLJHQwNTQ4ODU1NTEJAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZ0AAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJmdAABBARmcm9tCAULJHQwNTQ4ODU1NTECXzEEAnRvCAULJHQwNTQ4ODU1NTECXzIDBQVmb3VuZAUBYQMDCQBnAgUGcGVyaW9kBQRmcm9tCQBnAgUCdG8FBnBlcmlvZAcJAJQKAgUFaW5kZXgGCQCUCgIJAGQCBQVpbmRleAABBwQLJHQwNTY4ODU3NTQKAAIkbAUTTEVOREVSU19BUFJfUEVSSU9EUwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDZm9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJBAVpbmRleAgFCyR0MDU2ODg1NzU0Al8xBAVmb3VuZAgFCyR0MDU2ODg1NzU0Al8yAwUFZm91bmQJAGsDCQBoAgkAkQMCBQtMRU5ERVJTX0FQUgUFaW5kZXgFBlNDQUxFOAAHAO0CAAABF2dldFRvdGFsU3VwcGx5QWxsVG9rZW5zAAoBA2ZvcgIBYQd0b2tlbklkBAskdDA1OTQyNTk5OAUBYQQLdG90YWxTdXBwbHkIBQskdDA1OTQyNTk5OAJfMQQOdG90YWxTdXBwbHlVc2QIBQskdDA1OTQyNTk5OAJfMgQRdG90YWxTdXBwbHlVc2RBbGwIBQskdDA1OTQyNTk5OAJfMwQHdFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxsZW5kQ29udHJhY3QJAKwCAgUQa0xlbmRUb2tlblN1cHBseQUHdG9rZW5JZAAABAphc3NldFByaWNlCQENZ2V0QXNzZXRQcmljZQEFB3Rva2VuSWQEDmFzc2V0UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQd0b2tlbklkBAp0U3VwcGx5VXNkCQBrAwUHdFN1cHBseQUKYXNzZXRQcmljZQUOYXNzZXRQcmVjaXNpb24JAJUKAwkAzQgCBQt0b3RhbFN1cHBseQUHdFN1cHBseQkAzQgCBQ50b3RhbFN1cHBseVVzZAUKdFN1cHBseVVzZAkAZAIFEXRvdGFsU3VwcGx5VXNkQWxsBQp0U3VwcGx5VXNkCgACJGwJAQxnZXRBbGxUb2tlbnMACgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNmb3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeARFnZXRUb3RhbFN1cHBseVVzZAEHdG9rZW5JZAQHdFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQxsZW5kQ29udHJhY3QJAKwCAgUQa0xlbmRUb2tlblN1cHBseQUHdG9rZW5JZAAABAphc3NldFByaWNlCQENZ2V0QXNzZXRQcmljZQEFB3Rva2VuSWQEDmFzc2V0UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQd0b2tlbklkCQBrAwUHdFN1cHBseQUKYXNzZXRQcmljZQUOYXNzZXRQcmVjaXNpb24BFGNhbGNOZXdUb2tlbkludGVyZXN0Agd0b2tlbklkC3RvdGFsU3VwcGx5AwkAZwIFC3N0YXJ0SGVpZ2h0BQZoZWlnaHQAAAQOcmV3YXJkUGVyQmxvY2sJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sEC29sZEludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB3Rva2VuSWQFDmtUb2tlbkludGVyZXN0BAx1cGRhdGVIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUHdG9rZW5JZAUUa1Rva2VuSW50ZXJlc3RIZWlnaHQEBnJld2FyZAkAaAIJAGUCBQZoZWlnaHQFDHVwZGF0ZUhlaWdodAUOcmV3YXJkUGVyQmxvY2sECGludGVyZXN0AwkAZgIFC3RvdGFsU3VwcGx5AAAJAGsDBQZyZXdhcmQFBlNDQUxFOAULdG90YWxTdXBwbHkAAAkAZAIFC29sZEludGVyZXN0BQhpbnRlcmVzdAERY2FsY05ld0xwSW50ZXJlc3QBC3RvdGFsU3VwcGx5AwkAZwIFC3N0YXJ0SGVpZ2h0BQZoZWlnaHQAAAQOcmV3YXJkUGVyQmxvY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURa0xwUmV3YXJkUGVyQmxvY2sAAAQLb2xkSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa0xwSW50ZXJlc3QAAAQMdXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtMcEludGVyZXN0SGVpZ2h0BQZoZWlnaHQEBnJld2FyZAkAaAIJAGUCBQZoZWlnaHQFDHVwZGF0ZUhlaWdodAUOcmV3YXJkUGVyQmxvY2sECGludGVyZXN0AwkAZgIFC3RvdGFsU3VwcGx5AAAJAGsDBQZyZXdhcmQFBlNDQUxFOAULdG90YWxTdXBwbHkAAAkAZAIFC29sZEludGVyZXN0BQhpbnRlcmVzdAESY2FsY0xlbmRVc2VyUmV3YXJkAgR1c2VyB3Rva2VuSWQEC3RvdGFsU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFDGxlbmRDb250cmFjdAkArAICBRBrTGVuZFRva2VuU3VwcGx5BQd0b2tlbklkAAAEDXRva2VuSW50ZXJlc3QJARRjYWxjTmV3VG9rZW5JbnRlcmVzdAIFB3Rva2VuSWQFC3RvdGFsU3VwcGx5BAp1c2VyU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFDGxlbmRDb250cmFjdAkArAICCQCsAgIFBHVzZXIFD2tMZW5kVXNlclN1cHBseQUHdG9rZW5JZAAABBF1c2VyVG9rZW5JbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQd0b2tlbklkAgFfBQR1c2VyBRFrVXNlckxlbmRJbnRlcmVzdAMJAAACBQp1c2VyU3VwcGx5AAAFDXRva2VuSW50ZXJlc3QAAAQGcmV3YXJkCQBrAwUKdXNlclN1cHBseQkAZQIFDXRva2VuSW50ZXJlc3QFEXVzZXJUb2tlbkludGVyZXN0BQZTQ0FMRTgJAJUKAwUGcmV3YXJkBQ10b2tlbkludGVyZXN0BQp1c2VyU3VwcGx5ARBjYWxjTHBVc2VyUmV3YXJkAQR1c2VyBAt0b3RhbFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBRFzZkZhcm1pbmdDb250cmFjdAkArAICBQhheGx5UG9vbAUOa1NGVG90YWxTdXBwbHkAAAQNdG9rZW5JbnRlcmVzdAkBEWNhbGNOZXdMcEludGVyZXN0AQULdG90YWxTdXBwbHkECnVzZXJTdXBwbHkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMbGVuZENvbnRyYWN0CQCsAgIJAKwCAgkArAICBQhheGx5UG9vbAIBXwUEdXNlcgUSa1NGVXNlclRvdGFsU3VwcGx5AAAEEXVzZXJUb2tlbkludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEdXNlcgUPa1VzZXJMcEludGVyZXN0AwkAAAIFCnVzZXJTdXBwbHkAAAUNdG9rZW5JbnRlcmVzdAAABAZyZXdhcmQJAGsDBQp1c2VyU3VwcGx5CQBlAgUNdG9rZW5JbnRlcmVzdAURdXNlclRva2VuSW50ZXJlc3QFBlNDQUxFOAkAlQoDBQZyZXdhcmQFDXRva2VuSW50ZXJlc3QFCnVzZXJTdXBwbHkBGGNsYWltTGVuZGVyUmV3YXJkc0NvbW1vbgIEdXNlcghyZWFkT25seQoBBWNsYWltAgFhB3Rva2VuSWQECyR0MDg4ODI4OTI2BQFhBAh0b2tlbklkcwgFCyR0MDg4ODI4OTI2Al8xBAdjQW1vdW50CAULJHQwODg4Mjg5MjYCXzIEBXRvdGFsCAULJHQwODg4Mjg5MjYCXzMECGVudGVyaWVzCAULJHQwODg4Mjg5MjYCXzQEEnVzZXJBdmFpbGFibGVDbGFpbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQd0b2tlbklkAgFfBQR1c2VyBRdrVXNlckxlbmRBdmFpbGFibGVDbGFpbQAABAskdDA5MDM5OTExOAkBEmNhbGNMZW5kVXNlclJld2FyZAIFBHVzZXIFB3Rva2VuSWQEB3VSZXdhcmQIBQskdDA5MDM5OTExOAJfMQQQbmV3VG9rZW5JbnRlcmVzdAgFCyR0MDkwMzk5MTE4Al8yBAp1c2VyU3VwcGx5CAULJHQwOTAzOTkxMTgCXzMEDHRvdGFsVG9DbGFpbQkAZAIFEnVzZXJBdmFpbGFibGVDbGFpbQUHdVJld2FyZAMDCQBmAgUMdG90YWxUb0NsYWltAAAGCQBmAgUKdXNlclN1cHBseQAABAxuZXdFbnRyZXJpZXMDAwUIcmVhZE9ubHkGCQAAAgUMdG90YWxUb0NsYWltAAAFCGVudGVyaWVzCQDOCAIFCGVudGVyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQd0b2tlbklkAgFfBQR1c2VyBRFrVXNlckxlbmRJbnRlcmVzdAUQbmV3VG9rZW5JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUHdG9rZW5JZAIBXwUEdXNlcgUXa1VzZXJMZW5kQXZhaWxhYmxlQ2xhaW0AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAUQbmV3VG9rZW5JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrVG9rZW5JbnRlcmVzdEhlaWdodAUGaGVpZ2h0BQNuaWwJAJYKBAkAzQgCBQh0b2tlbklkcwUHdG9rZW5JZAkAzQgCBQdjQW1vdW50BQx0b3RhbFRvQ2xhaW0JAGQCBQV0b3RhbAUMdG90YWxUb0NsYWltBQxuZXdFbnRyZXJpZXMJAJYKBAUIdG9rZW5JZHMFB2NBbW91bnQFBXRvdGFsBQhlbnRlcmllcwoAAiRsCQEMZ2V0QWxsVG9rZW5zAAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBQNuaWwAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVjbGFpbQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMzAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4BFGNsYWltTHBSZXdhcmRzQ29tbW9uAgR1c2VyCHJlYWRPbmx5BBJ1c2VyQXZhaWxhYmxlQ2xhaW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQR1c2VyBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0AAAQNJHQwMTAwNTAxMDExNQkBEGNhbGNMcFVzZXJSZXdhcmQBBQR1c2VyBAd1UmV3YXJkCAUNJHQwMTAwNTAxMDExNQJfMQQNbmV3THBJbnRlcmVzdAgFDSR0MDEwMDUwMTAxMTUCXzIECnVzZXJTdXBwbHkIBQ0kdDAxMDA1MDEwMTE1Al8zBAx0b3RhbFRvQ2xhaW0JAGQCBRJ1c2VyQXZhaWxhYmxlQ2xhaW0FB3VSZXdhcmQDAwUIcmVhZE9ubHkGCQAAAgUMdG90YWxUb0NsYWltAAAJAJQKAgUMdG90YWxUb0NsYWltBQNuaWwJAJQKAgUMdG90YWxUb0NsYWltCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFD2tVc2VyTHBJbnRlcmVzdAUNbmV3THBJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgULa0xwSW50ZXJlc3QFDW5ld0xwSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtMcEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAENZ2V0VG9rZW5zQVBScwAECWF4bHlQcmljZQkBDWdldEFzc2V0UHJpY2UBBQZheGx5SWQEDWF4bHlQcmVjaXNpb24JARFnZXRBc3NldFByZWNpc2lvbgEFBmF4bHlJZAoBCnRva2Vuc0FwcnMCA2Fwcgd0b2tlbklkBARyd3BiCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sAAAQHcndwYlVzZAkAawMFBHJ3cGIFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQGcndZZWFyCQBoAgkAaAIFB3J3cGJVc2QFDHBlcmlvZExlbmd0aAA0BA50b3RhbFN1cHBseVVzZAkBEWdldFRvdGFsU3VwcGx5VXNkAQUHdG9rZW5JZAkAzQgCBQNhcHIJAGsDBQZyd1llYXIFBlNDQUxFOAUOdG90YWxTdXBwbHlVc2QEBGFwcnMKAAIkbAkBDGdldEFsbFRva2VucwAKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCnRva2Vuc0FwcnMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeBA1scFRvdGFsU3VwcGx5CQERQGV4dHJOYXRpdmUoMTA1MCkCBRFzZkZhcm1pbmdDb250cmFjdAkArAICBQhheGx5UG9vbAUOa1NGVG90YWxTdXBwbHkEBGxwSWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGF4bHlQb29sBQVrTHBJZAQLbHBQcmVjaXNpb24JARFnZXRBc3NldFByZWNpc2lvbgEFBGxwSWQEB2xwUHJpY2UKAAFACQCRAwIKAAFACQD8BwQFDG1haW5Db250cmFjdAIaZ2V0U2hhcmVBc3NldFByaWNlUkVBRE9OTFkJAMwIAgkAzAgCBQRscElkBQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQQbHBUb3RhbFN1cHBseVVzZAkAawMFDWxwVG90YWxTdXBwbHkFB2xwUHJpY2UFC2xwUHJlY2lzaW9uBARyd3BiCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtMcFJld2FyZFBlckJsb2NrAAAEB3J3cGJVc2QJAGsDBQRyd3BiBQlheGx5UHJpY2UFDWF4bHlQcmVjaXNpb24EBnJ3WWVhcgkAaAIJAGgCBQdyd3BiVXNkBQxwZXJpb2RMZW5ndGgANAQFbHBBcHIJAGsDBQZyd1llYXIFBlNDQUxFOAUQbHBUb3RhbFN1cHBseVVzZAkAlQoDCQEMZ2V0QWxsVG9rZW5zAAUEYXBycwUFbHBBcHIHAWkBEmNsYWltTGVuZGVyUmV3YXJkcwAECGNsYWltUmVzCQEYY2xhaW1MZW5kZXJSZXdhcmRzQ29tbW9uAgkApQgBCAUBaQZjYWxsZXIHAwkAAAIIBQhjbGFpbVJlcwJfMwAACQACAQIjY2xhaW0gYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAEA2ludgkA/AcEBQ10b2tlbkNvbnRyYWN0AhJ3aXRoZHJhd0xlbmRSZXdhcmQJAMwIAggFCGNsYWltUmVzAl8zCQDMCAIJAKUIAQgFAWkGY2FsbGVyBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludggFCGNsYWltUmVzAl80CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNsYWltTHBSZXdhcmRzAAQIY2xhaW1SZXMJARRjbGFpbUxwUmV3YXJkc0NvbW1vbgIJAKUIAQgFAWkGY2FsbGVyBwMJAAACCAUIY2xhaW1SZXMCXzEAAAkAAgECI2NsYWltIGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwBANpbnYJAPwHBAUNdG9rZW5Db250cmFjdAIQd2l0aGRyYXdMcFJld2FyZAkAzAgCCAUIY2xhaW1SZXMCXzEJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CAUIY2xhaW1SZXMCXzIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKbGVuZEFjdGlvbgIEdXNlcgd0b2tlbklkCQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEEnVzZXJBdmFpbGFibGVDbGFpbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFB3Rva2VuSWQFF2tVc2VyTGVuZEF2YWlsYWJsZUNsYWltAAAEDSR0MDEyNDg3MTI1NTQJARJjYWxjTGVuZFVzZXJSZXdhcmQCBQR1c2VyBQd0b2tlbklkBAd1UmV3YXJkCAUNJHQwMTI0ODcxMjU1NAJfMQQQbmV3VG9rZW5JbnRlcmVzdAgFDSR0MDEyNDg3MTI1NTQCXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FB3Rva2VuSWQFEWtVc2VyTGVuZEludGVyZXN0BRBuZXdUb2tlbkludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQd0b2tlbklkBRdrVXNlckxlbmRBdmFpbGFibGVDbGFpbQkAZAIFEnVzZXJBdmFpbGFibGVDbGFpbQUHdVJld2FyZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAUQbmV3VG9rZW5JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrVG9rZW5JbnRlcmVzdEhlaWdodAUGaGVpZ2h0BQNuaWwBaQEIbHBBY3Rpb24BBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQ9pc1NGRmFybWluZ0NhbGwBBQFpBBJ1c2VyQXZhaWxhYmxlQ2xhaW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa1VzZXJMcEF2YWlsYWJsZUNsYWltAAAEDSR0MDEzMDE5MTMwNzIJARBjYWxjTHBVc2VyUmV3YXJkAQUEdXNlcgQHdVJld2FyZAgFDSR0MDEzMDE5MTMwNzICXzEEDW5ld0xwSW50ZXJlc3QIBQ0kdDAxMzAxOTEzMDcyAl8yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXIFD2tVc2VyTHBJbnRlcmVzdAUNbmV3THBJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRVrVXNlckxwQXZhaWxhYmxlQ2xhaW0JAGQCBRJ1c2VyQXZhaWxhYmxlQ2xhaW0FB3VSZXdhcmQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgULa0xwSW50ZXJlc3QFDW5ld0xwSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgURa0xwSW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBBGluaXQFFGF4bHlNYWluQ29udHJhY3RBZGRyGWF4bHlUb2tlbm9taWNDb250cmFjdEFkZHIMYXhseVBvb2xBZGRyEmZhcm1pbmdTdGFydEhlaWdodAxwZXJpb2RMZW5ndGgJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUUYXhseU1haW5Db250cmFjdEFkZHIJAAIBAhVXcm9uZyBmYXJtaW5nIGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFGWF4bHlUb2tlbm9taWNDb250cmFjdEFkZHIJAAIBAhtXcm9uZyBtYWluIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgURa0F4bHlNYWluQ29udHJhY3QFFGF4bHlNYWluQ29udHJhY3RBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtBeGx5VG9rZW5vbWljQ29udHJhY3QFGWF4bHlUb2tlbm9taWNDb250cmFjdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0F4bHlQb29sBQxheGx5UG9vbEFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtTdGFydEhlaWdodAUSZmFybWluZ1N0YXJ0SGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rUGVyaW9kTGVuZ3RoBQxwZXJpb2RMZW5ndGgFA25pbAFpAQxpbml0TmV3VG9rZW4BB3Rva2VuSWQJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIFB3Rva2VuSWQFDmtUb2tlbkludGVyZXN0CQACAQIUdG9rZW4gYWxyZWFkeSBpbml0ZWQDCQEBIQEJAQhjb250YWlucwIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDGxlbmRDb250cmFjdAUQa0xlbmRTZXR1cFRva2VucwUHdG9rZW5JZAkAAgECE25vIHRva2VuIG9uIGxhbmRpbmcEDG5ld0FsbFRva2VucwkAzQgCCQEMZ2V0QWxsVG9rZW5zAAUHdG9rZW5JZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBQ5rVG9rZW5JbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0CQCWAwEJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUGaGVpZ2h0BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1Rva2VucwkAuQkCBQxuZXdBbGxUb2tlbnMCASwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sAAAUDbmlsAWkBDXVwZGF0ZVJld2FyZHMACQELdmFsdWVPckVsc2UCCQEOaXNPcGVyYXRvckNhbGwBBQFpBBBsYXN0VXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tSZXdhcmRVcGRhdGVIZWlnaHQAAAMJAGYCCQBkAgUQbGFzdFVwZGF0ZUhlaWdodAUMcGVyaW9kTGVuZ3RoBQZoZWlnaHQJAAIBAiVyZXdhcmRzIGFscmVkeSB1cGRhdGVkIGluIHRoaXMgcGVyaW9kBA0kdDAxNDgzOTE0OTE5CQEXZ2V0VG90YWxTdXBwbHlBbGxUb2tlbnMABAt0b3RhbFN1cHBseQgFDSR0MDE0ODM5MTQ5MTkCXzEEDnRvdGFsU3VwcGx5VXNkCAUNJHQwMTQ4MzkxNDkxOQJfMgQRdG90YWxTdXBwbHlVc2RBbGwIBQ0kdDAxNDgzOTE0OTE5Al8zBAlheGx5UHJpY2UJAQ1nZXRBc3NldFByaWNlAQUGYXhseUlkBA1heGx5UHJlY2lzaW9uCQERZ2V0QXNzZXRQcmVjaXNpb24BBQZheGx5SWQEBm1heEFQUgkBFWdldEFkb3B0ZWRBUFJCeVBlcmlvZAMFCWN1clBlcmlvZAUTTEVOREVSU19BUFJfUEVSSU9EUwULTEVOREVSU19BUFIKAQx1cGRhdGVSZXdhcmQCAWEHdG9rZW5JZAQNJHQwMTUxNjgxNTIxMgUBYQQIZW50ZXJpZXMIBQ0kdDAxNTE2ODE1MjEyAl8xBBF0b3RhbFBlcmlvZFJld2FyZAgFDSR0MDE1MTY4MTUyMTICXzIEBWluZGV4CAUNJHQwMTUxNjgxNTIxMgJfMwMJAAACCQCRAwIFC3RvdGFsU3VwcGx5BQVpbmRleAAACQCVCgMJAM4IAgUIZW50ZXJpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1ByZXZMZW5kVG9rZW5TdXBwbHkJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlblJld2FyZFBlckJsb2NrAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUOa1Rva2VuSW50ZXJlc3QJARRjYWxjTmV3VG9rZW5JbnRlcmVzdAIFB3Rva2VuSWQJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFFGtUb2tlbkludGVyZXN0SGVpZ2h0CQCWAwEJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUGaGVpZ2h0BQNuaWwFA25pbAURdG90YWxQZXJpb2RSZXdhcmQJAGQCBQVpbmRleAABBAVzaGFyZQkAawMJAJEDAgUOdG90YWxTdXBwbHlVc2QFBWluZGV4BQZTQ0FMRTgFEXRvdGFsU3VwcGx5VXNkQWxsBAltYXhSZXdhcmQJAGsDBQVzaGFyZQUTbGVuZE1heFBlcmlvZEFtb3VudAUGU0NBTEU4BAxtYXhSZXdhcmRVc2QJAGsDBQltYXhSZXdhcmQFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQPcHJldlRvdGFsU3VwcGx5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFGtQcmV2TGVuZFRva2VuU3VwcGx5AAAEBnJ0Q29lZgMDCQAAAgUPcHJldlRvdGFsU3VwcGx5AAAGCQAAAgkAkQMCBQt0b3RhbFN1cHBseQUFaW5kZXgAAAAACQBrAwUPcHJldlRvdGFsU3VwcGx5BQZTQ0FMRTgJAJEDAgULdG90YWxTdXBwbHkFBWluZGV4BAZyZXdhcmQJAGkCCQBpAgkAlwMBCQDMCAIJAGgCBQZtYXhBUFIJAGQCBQZTQ0FMRTgFBnJ0Q29lZgkAzAgCCQBrAwUGbWF4QVBSCQBoAgAPBQZTQ0FMRTgACgUDbmlsBQZTQ0FMRTgAZAQJcmV3YXJkVXNkCQCXAwEJAMwIAgUMbWF4UmV3YXJkVXNkCQDMCAIJAGsDCQCRAwIFDnRvdGFsU3VwcGx5VXNkBQVpbmRleAUGcmV3YXJkBQZTQ0FMRTgFA25pbAQMcmV3YXJkUGVyaW9kCQBrAwUJcmV3YXJkVXNkBQ1heGx5UHJlY2lzaW9uBQlheGx5UHJpY2UEDnJld2FyZFBlckJsb2NrCQBpAgUMcmV3YXJkUGVyaW9kBQxwZXJpb2RMZW5ndGgJAJUKAwkAzggCBQhlbnRlcmllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrUHJldkxlbmRUb2tlblN1cHBseQkAkQMCBQt0b3RhbFN1cHBseQUFaW5kZXgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHdG9rZW5JZAUUa1Rva2VuUmV3YXJkUGVyQmxvY2sFDnJld2FyZFBlckJsb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB3Rva2VuSWQFDmtUb2tlbkludGVyZXN0CQEUY2FsY05ld1Rva2VuSW50ZXJlc3QCBQd0b2tlbklkCQCRAwIFC3RvdGFsU3VwcGx5BQVpbmRleAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQd0b2tlbklkBRRrVG9rZW5JbnRlcmVzdEhlaWdodAkAlgMBCQDMCAIFC3N0YXJ0SGVpZ2h0CQDMCAIFBmhlaWdodAUDbmlsBQNuaWwJAGQCBRF0b3RhbFBlcmlvZFJld2FyZAUMcmV3YXJkUGVyaW9kCQBkAgUFaW5kZXgAAQQNJHQwMTY4NzQxNjk3MgoAAiRsCQEMZ2V0QWxsVG9rZW5zAAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMdXBkYXRlUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgQOdG9rZW5zRW50ZXJpZXMIBQ0kdDAxNjg3NDE2OTcyAl8xBBB0b3RhbFRva2VuUmV3YXJkCAUNJHQwMTY4NzQxNjk3MgJfMgQFaW5kZXgIBQ0kdDAxNjg3NDE2OTcyAl8zBAhscE1heEFQUgkBFWdldEFkb3B0ZWRBUFJCeVBlcmlvZAMFCWN1clBlcmlvZAUOTFBfQVBSX1BFUklPRFMFBkxQX0FQUgQNbHBUb3RhbFN1cHBseQkBEUBleHRyTmF0aXZlKDEwNTApAgURc2ZGYXJtaW5nQ29udHJhY3QJAKwCAgUIYXhseVBvb2wFDmtTRlRvdGFsU3VwcGx5BAtwcmVMUFN1cHBseQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ1rUHJldkxQU3VwcGx5AAAEBGxwSWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGF4bHlQb29sBQVrTHBJZAQLbHBQcmVjaXNpb24JARFnZXRBc3NldFByZWNpc2lvbgEFBGxwSWQEB2xwUHJpY2UKAAFACQD8BwQFDG1haW5Db250cmFjdAIaZ2V0U2hhcmVBc3NldFByaWNlUkVBRE9OTFkJAMwIAgUEbHBJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BBBscFRvdGFsU3VwcGx5VXNkCQBrAwUNbHBUb3RhbFN1cHBseQUHbHBQcmljZQULbHBQcmVjaXNpb24EDm1heExQUmV3YXJkVXNkCQBrAwURbHBNYXhQZXJpb2RBbW91bnQFCWF4bHlQcmljZQUNYXhseVByZWNpc2lvbgQIcnRMUENvZWYDAwkAAAIFC3ByZUxQU3VwcGx5AAAGCQAAAgUNbHBUb3RhbFN1cHBseQAAAAAJAGsDBQtwcmVMUFN1cHBseQUGU0NBTEU4BQ1scFRvdGFsU3VwcGx5BAhyZXdhcmRMcAkAaQIJAGkCCQCXAwEJAMwIAgkAaAIFCGxwTWF4QVBSCQBkAgUGU0NBTEU4BQhydExQQ29lZgkAzAgCCQBrAwUIbHBNYXhBUFIJAGgCAA8FBlNDQUxFOAAKBQNuaWwFBlNDQUxFOABkBAtyZXdhcmRMcFVzZAkAlwMBCQDMCAIFDm1heExQUmV3YXJkVXNkCQDMCAIJAGsDBRBscFRvdGFsU3VwcGx5VXNkBQhyZXdhcmRMcAUGU0NBTEU4BQNuaWwEDnJld2FyZExwUGVyaW9kCQBrAwULcmV3YXJkTHBVc2QFDWF4bHlQcmVjaXNpb24FCWF4bHlQcmljZQQQcmV3YXJkTHBQZXJCbG9jawkAaQIFDnJld2FyZExwUGVyaW9kBQxwZXJpb2RMZW5ndGgECGJ1cm5MZW5kCQBlAgUTbGVuZE1heFBlcmlvZEFtb3VudAUQdG90YWxUb2tlblJld2FyZAQGYnVybkxwCQBlAgURbHBNYXhQZXJpb2RBbW91bnQFDnJld2FyZExwUGVyaW9kBANpbnYJAPwHBAUNdG9rZW5Db250cmFjdAIQd2l0aGRyYXdMcFJld2FyZAkAzAgCCQBkAgUIYnVybkxlbmQFBmJ1cm5McAkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BApscEVudGVyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rUHJldkxQU3VwcGx5BQ1scFRvdGFsU3VwcGx5CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrTHBSZXdhcmRQZXJCbG9jawUQcmV3YXJkTHBQZXJCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgULa0xwSW50ZXJlc3QJARFjYWxjTmV3THBJbnRlcmVzdAEFDWxwVG90YWxTdXBwbHkJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtMcEludGVyZXN0SGVpZ2h0CQCWAwEJAMwIAgULc3RhcnRIZWlnaHQJAMwIAgUGaGVpZ2h0BQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBARoBVCeRLDw6Cc0O274F1dPN7wpIGPs2Az2GuwUIYnVybkxlbmQJANkEAQUGYXhseUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQEaAVQnkSw8OgnNDtu+BdXTze8KSBj7NgM9hrsFBmJ1cm5McAkA2QQBBQZheGx5SWQFA25pbAkAzQgCCQDOCAIFCmxwRW50ZXJpZXMFDnRva2Vuc0VudGVyaWVzCQEMSW50ZWdlckVudHJ5AgUTa1Jld2FyZFVwZGF0ZUhlaWdodAkAlgMBCQDMCAIFC3N0YXJ0SGVpZ2h0CQDMCAIFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQTbXVsdGlTaWduZWRCeUFkbWlucwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUIYWRtaW4xUEsAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQhhZG1pbjJQSwABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCGFkbWluM1BLAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaW52BQckbWF0Y2gwBAZpc1NlbGYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECmlzUmlnaHRGZWUDCQAAAggFA2ludgNmZWUAoPc2CQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwQKaXNJbml0Q2FsbAkAAAIIBQNpbnYIZnVuY3Rpb24CBGluaXQEDGlzbm9QYXltZW50cwkAAAIJAJADAQgFA2ludghwYXltZW50cwAAAwMDAwUKaXNSaWdodEZlZQUKaXNJbml0Q2FsbAcFBmlzU2VsZgcFDGlzbm9QYXltZW50cwcGBRNtdWx0aVNpZ25lZEJ5QWRtaW5zBRNtdWx0aVNpZ25lZEJ5QWRtaW5zmB287g==", "height": 2715930, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ykTKbLEcRtaFDPrcdb5cTFjiVT4HqnaX2qt9kUNwz5C Next: 9qikQpxQPDTk39w9Dj9TghbyidC8J4XQbYAjrGBzoVSv Diff:
OldNewDifferences
253253 }
254254
255255
256-func bf (aV,aX) = if ((height >= ad))
256+func bf (aV,aX) = if ((ad >= height))
257257 then 0
258258 else {
259259 let bg = getIntegerValue(this, (aV + p))
267267 }
268268
269269
270-func bl (aX) = if ((height >= ad))
270+func bl (aX) = if ((ad >= height))
271271 then 0
272272 else {
273273 let bg = valueOrElse(getInteger(this, x), 0)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = [150, 120, 100, 80, 60, 40, 30, 20, 10]
77
88 let c = ["1-1", "2-2", "3-3", "4-4", "5-8", "9-12", "14-16", "17-20", "20-104"]
99
1010 let d = 104
1111
1212 let e = [150, 120, 100, 80, 60, 40]
1313
1414 let f = ["1-1", "2-2", "3-3", "4-4", "5-8", "9-12"]
1515
1616 let g = 12
1717
1818 let h = "startHeight"
1919
2020 let i = "periodLength"
2121
2222 let j = "lendRewardsAmount"
2323
2424 let k = "lpRewardAmount"
2525
2626 let l = "tokens"
2727
2828 let m = "_userTotalSupply"
2929
3030 let n = "_tokenInterest"
3131
3232 let o = "_tokenInterestHeight"
3333
3434 let p = "_tokenRewardPerBlock"
3535
3636 let q = "rewardUpdateHeight"
3737
3838 let r = "_userLandInterest"
3939
4040 let s = "_userLendAvailableClaim"
4141
4242 let t = "_userLpAvailableClaim"
4343
4444 let u = "lpInterest"
4545
4646 let v = "lpInterestHeight"
4747
4848 let w = "prevLPTotalSupply"
4949
5050 let x = "lpRewardPerBlock"
5151
5252 let y = "_userLpInterest"
5353
5454 let z = "_twap5B"
5555
5656 let A = "_prevLendTotalSupply"
5757
5858 let B = "axlyTokenId"
5959
6060 let C = "total_supplied_"
6161
6262 let D = "_supplied_"
6363
6464 let E = "setup_tokens"
6565
6666 let F = "_total_share_tokens_locked"
6767
6868 let G = "_share_tokens_locked"
6969
7070 let H = "axlyPool"
7171
7272 let I = "share_asset_id"
7373
7474 let J = "price_oracle"
7575
7676 let K = "mainContract"
7777
7878 let L = "tokenomicContract"
7979
8080 let M = "swopfi_farming_addr"
8181
8282 let N = "lend_service_addr"
8383
8484 let O = "group1_admin1_pub_key"
8585
8686 let P = "group1_admin2_pub_key"
8787
8888 let Q = "group1_admin3_pub_key"
8989
9090 let R = "admin_call_pub_key"
9191
9292 let S = valueOrErrorMessage(getString(this, H), "Can't get axlyPool key")
9393
9494 let T = addressFromStringValue(valueOrErrorMessage(getString(this, K), "Can't get mainContact key"))
9595
9696 let U = addressFromStringValue(valueOrErrorMessage(getString(this, L), "Can't get tokenomicContract key"))
9797
9898 let V = addressFromStringValue(valueOrErrorMessage(getString(T, N), "Can't get lend_service_addr key"))
9999
100100 let W = addressFromStringValue(valueOrErrorMessage(getString(T, M), "Can't get swopfi_farming_addr key"))
101101
102102 let X = addressFromStringValue(valueOrErrorMessage(getString(T, J), "Can't get price_oracle key"))
103103
104104 let Y = fromBase58String(valueOrErrorMessage(getString(T, O), "Can't get admin1PK"))
105105
106106 let Z = fromBase58String(valueOrErrorMessage(getString(T, P), "Can't get admin2PK"))
107107
108108 let aa = fromBase58String(valueOrErrorMessage(getString(T, Q), "Can't get operatorPK"))
109109
110110 let ab = fromBase58String(valueOrErrorMessage(getString(this, R), "Can't get operatorPK"))
111111
112112 let ac = valueOrErrorMessage(getString(U, B), "Can't get Axly token id")
113113
114114 let ad = getIntegerValue(this, h)
115115
116116 let ae = getIntegerValue(this, i)
117117
118118 let af = max([1, ((height - ad) / ae)])
119119
120120 let ag = getIntegerValue(U, j)
121121
122122 let ah = (ag / d)
123123
124124 let ai = getIntegerValue(U, k)
125125
126126 let aj = (ai / g)
127127
128128 func ak (al) = if (containsElement([Y, Z, aa], al.callerPublicKey))
129129 then unit
130130 else throw("Only admin group1 can call this function")
131131
132132
133133 func am (al) = if ((al.caller == this))
134134 then unit
135135 else throw("Only contract itself can call this function")
136136
137137
138138 func an (al) = if ((al.callerPublicKey == ab))
139139 then unit
140140 else throw("Only operator can call this function")
141141
142142
143143 func ao (al) = if ((al.caller == V))
144144 then unit
145145 else throw("Only land contract can call this function")
146146
147147
148148 func ap (al) = if ((al.caller == W))
149149 then unit
150150 else throw("Only land contract can call this function")
151151
152152
153153 func aq () = {
154154 let ar = valueOrElse(getString(this, l), "")
155155 if ((ar == ""))
156156 then nil
157157 else split(ar, ",")
158158 }
159159
160160
161161 func as (at) = getIntegerValue(X, (at + z))
162162
163163
164164 func au (at) = if ((at == "WAVES"))
165165 then 8
166166 else {
167167 let av = assetInfo(fromBase58String(at))
168168 if ($isInstanceOf(av, "Asset"))
169169 then {
170170 let aw = av
171171 aw.decimals
172172 }
173173 else throw("Can't find asset")
174174 }
175175
176176
177177 func ax (at) = pow(10, 0, au(at), 0, 0, DOWN)
178178
179179
180180 func ay (az,aA,aB) = {
181181 func aC (aD,aE) = {
182182 let aF = aD
183183 let aG = aF._1
184184 let aH = aF._2
185185 let aI = split(aE, "-")
186186 let aJ = $Tuple2(parseIntValue(aI[0]), parseIntValue(aI[1]))
187187 let aK = aJ._1
188188 let aL = aJ._2
189189 if (aH)
190190 then aD
191191 else if (if ((az >= aK))
192192 then (aL >= az)
193193 else false)
194194 then $Tuple2(aG, true)
195195 else $Tuple2((aG + 1), false)
196196 }
197197
198198 let aM = {
199199 let aN = c
200200 let aO = size(aN)
201201 let aP = $Tuple2(0, false)
202202 func aQ (aR,aS) = if ((aS >= aO))
203203 then aR
204204 else aC(aR, aN[aS])
205205
206206 func aT (aR,aS) = if ((aS >= aO))
207207 then aR
208208 else throw("List size exceeds 9")
209209
210210 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
211211 }
212212 let aG = aM._1
213213 let aH = aM._2
214214 if (aH)
215215 then fraction((b[aG] * a), 7, 365)
216216 else 0
217217 }
218218
219219
220220 func aU () = {
221221 func aC (aD,aV) = {
222222 let aW = aD
223223 let aX = aW._1
224224 let aY = aW._2
225225 let aZ = aW._3
226226 let ba = valueOrElse(getInteger(V, (C + aV)), 0)
227227 let bb = as(aV)
228228 let bc = ax(aV)
229229 let bd = fraction(ba, bb, bc)
230230 $Tuple3((aX :+ ba), (aY :+ bd), (aZ + bd))
231231 }
232232
233233 let aN = aq()
234234 let aO = size(aN)
235235 let aP = $Tuple3(nil, nil, 0)
236236 func aQ (aR,aS) = if ((aS >= aO))
237237 then aR
238238 else aC(aR, aN[aS])
239239
240240 func aT (aR,aS) = if ((aS >= aO))
241241 then aR
242242 else throw("List size exceeds 30")
243243
244244 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
245245 }
246246
247247
248248 func be (aV) = {
249249 let ba = valueOrElse(getInteger(V, (C + aV)), 0)
250250 let bb = as(aV)
251251 let bc = ax(aV)
252252 fraction(ba, bb, bc)
253253 }
254254
255255
256-func bf (aV,aX) = if ((height >= ad))
256+func bf (aV,aX) = if ((ad >= height))
257257 then 0
258258 else {
259259 let bg = getIntegerValue(this, (aV + p))
260260 let bh = getIntegerValue(this, (aV + n))
261261 let bi = getIntegerValue(this, (aV + o))
262262 let bj = ((height - bi) * bg)
263263 let bk = if ((aX > 0))
264264 then fraction(bj, a, aX)
265265 else 0
266266 (bh + bk)
267267 }
268268
269269
270-func bl (aX) = if ((height >= ad))
270+func bl (aX) = if ((ad >= height))
271271 then 0
272272 else {
273273 let bg = valueOrElse(getInteger(this, x), 0)
274274 let bh = valueOrElse(getInteger(this, u), 0)
275275 let bi = valueOrElse(getInteger(this, v), height)
276276 let bj = ((height - bi) * bg)
277277 let bk = if ((aX > 0))
278278 then fraction(bj, a, aX)
279279 else 0
280280 (bh + bk)
281281 }
282282
283283
284284 func bm (bn,aV) = {
285285 let aX = valueOrElse(getInteger(V, (C + aV)), 0)
286286 let bo = bf(aV, aX)
287287 let bp = valueOrElse(getInteger(V, ((bn + D) + aV)), 0)
288288 let bq = valueOrElse(getInteger(this, (((aV + "_") + bn) + r)), if ((bp == 0))
289289 then bo
290290 else 0)
291291 let bj = fraction(bp, (bo - bq), a)
292292 $Tuple3(bj, bo, bp)
293293 }
294294
295295
296296 func br (bn) = {
297297 let aX = valueOrElse(getInteger(W, (S + F)), 0)
298298 let bo = bl(aX)
299299 let bp = valueOrElse(getInteger(V, (((S + "_") + bn) + G)), 0)
300300 let bq = valueOrElse(getInteger(this, (bn + y)), if ((bp == 0))
301301 then bo
302302 else 0)
303303 let bj = fraction(bp, (bo - bq), a)
304304 $Tuple3(bj, bo, bp)
305305 }
306306
307307
308308 func bs (bn,bt) = {
309309 func bu (aD,aV) = {
310310 let bv = aD
311311 let bw = bv._1
312312 let bx = bv._2
313313 let by = bv._3
314314 let bz = bv._4
315315 let bA = valueOrElse(getInteger(this, (((aV + "_") + bn) + s)), 0)
316316 let bB = bm(bn, aV)
317317 let bC = bB._1
318318 let bD = bB._2
319319 let bp = bB._3
320320 let bE = (bA + bC)
321321 if (if ((bE > 0))
322322 then true
323323 else (bp > 0))
324324 then {
325325 let bF = if (if (bt)
326326 then true
327327 else (bE == 0))
328328 then bz
329329 else (bz ++ [IntegerEntry((((aV + "_") + bn) + r), bD), IntegerEntry((((aV + "_") + bn) + s), 0), IntegerEntry((aV + n), bD), IntegerEntry((aV + o), height)])
330330 $Tuple4((bw :+ aV), (bx :+ bE), (by + bE), bF)
331331 }
332332 else $Tuple4(bw, bx, by, bz)
333333 }
334334
335335 let aN = aq()
336336 let aO = size(aN)
337337 let aP = $Tuple4(nil, nil, 0, nil)
338338 func aQ (aR,aS) = if ((aS >= aO))
339339 then aR
340340 else bu(aR, aN[aS])
341341
342342 func aT (aR,aS) = if ((aS >= aO))
343343 then aR
344344 else throw("List size exceeds 30")
345345
346346 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
347347 }
348348
349349
350350 func bG (bn,bt) = {
351351 let bA = valueOrElse(getInteger(this, (bn + t)), 0)
352352 let bH = br(bn)
353353 let bC = bH._1
354354 let bI = bH._2
355355 let bp = bH._3
356356 let bE = (bA + bC)
357357 if (if (bt)
358358 then true
359359 else (bE == 0))
360360 then $Tuple2(bE, nil)
361361 else $Tuple2(bE, [IntegerEntry((bn + y), bI), IntegerEntry((bn + t), 0), IntegerEntry(u, bI), IntegerEntry(v, height)])
362362 }
363363
364364
365365 func bJ () = {
366366 let bK = as(ac)
367367 let bL = ax(ac)
368368 func bM (aB,aV) = {
369369 let bN = valueOrElse(getInteger(this, (aV + p)), 0)
370370 let bO = fraction(bN, bK, bL)
371371 let bP = ((bO * ae) * 52)
372372 let aY = be(aV)
373373 (aB :+ fraction(bP, a, aY))
374374 }
375375
376376 let bQ = {
377377 let aN = aq()
378378 let aO = size(aN)
379379 let aP = nil
380380 func aQ (aR,aS) = if ((aS >= aO))
381381 then aR
382382 else bM(aR, aN[aS])
383383
384384 func aT (aR,aS) = if ((aS >= aO))
385385 then aR
386386 else throw("List size exceeds 30")
387387
388388 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
389389 }
390390 let bR = getIntegerValue(W, (S + F))
391391 let bS = getStringValue(addressFromStringValue(S), I)
392392 let bT = ax(bS)
393393 let bU = {
394394 let bV = ({
395395 let bV = invoke(T, "getShareAssetPriceREADONLY", [[bS]], nil)
396396 if ($isInstanceOf(bV, "List[Any]"))
397397 then bV
398398 else throw(($getType(bV) + " couldn't be cast to List[Any]"))
399399 })[0]
400400 if ($isInstanceOf(bV, "Int"))
401401 then bV
402402 else throw(($getType(bV) + " couldn't be cast to Int"))
403403 }
404404 let bW = fraction(bR, bU, bT)
405405 let bN = valueOrElse(getInteger(this, x), 0)
406406 let bO = fraction(bN, bK, bL)
407407 let bP = ((bO * ae) * 52)
408408 let bX = fraction(bP, a, bW)
409409 $Tuple3(aq(), bQ, bX)
410410 }
411411
412412
413413 @Callable(al)
414414 func claimLenderRewards () = {
415415 let bY = bs(toString(al.caller), false)
416416 if ((bY._3 == 0))
417417 then throw("claim amount must be greater than 0")
418418 else {
419419 let bZ = invoke(U, "withdrawLendReward", [bY._3, toString(al.caller)], nil)
420420 if ((bZ == bZ))
421421 then bY._4
422422 else throw("Strict value is not equal to itself.")
423423 }
424424 }
425425
426426
427427
428428 @Callable(al)
429429 func claimLpRewards () = {
430430 let bY = bG(toString(al.caller), false)
431431 if ((bY._1 == 0))
432432 then throw("claim amount must be greater than 0")
433433 else {
434434 let bZ = invoke(U, "withdrawLpReward", [bY._1, toString(al.caller)], nil)
435435 if ((bZ == bZ))
436436 then bY._2
437437 else throw("Strict value is not equal to itself.")
438438 }
439439 }
440440
441441
442442
443443 @Callable(al)
444444 func lendAction (bn,aV) = valueOrElse(ao(al), {
445445 let bA = valueOrElse(getInteger(this, (aV + s)), 0)
446446 let ca = bm(bn, aV)
447447 let bC = ca._1
448448 let bD = ca._2
449449 [IntegerEntry((((bn + "_") + aV) + r), bD), IntegerEntry((((bn + "_") + aV) + s), (bA + bC)), IntegerEntry((aV + n), bD), IntegerEntry((aV + o), height)]
450450 })
451451
452452
453453
454454 @Callable(al)
455455 func lpAction (bn) = valueOrElse(ap(al), {
456456 let bA = valueOrElse(getInteger(this, t), 0)
457457 let cb = br(bn)
458458 let bC = cb._1
459459 let bI = cb._2
460460 [IntegerEntry((bn + y), bI), IntegerEntry((bn + t), (bA + bC)), IntegerEntry((bn + u), bI), IntegerEntry((bn + v), height)]
461461 })
462462
463463
464464
465465 @Callable(al)
466466 func init (cc,cd,ce,cf,ae) = valueOrElse(am(al), if (!(isDefined(addressFromString(cc))))
467467 then throw("Wrong farming address")
468468 else if (!(isDefined(addressFromString(cd))))
469469 then throw("Wrong main contract address")
470470 else [StringEntry(K, cc), StringEntry(L, cd), StringEntry(H, ce), IntegerEntry(h, cf), IntegerEntry(i, ae)])
471471
472472
473473
474474 @Callable(al)
475475 func initNewToken (aV) = valueOrElse(ak(al), if (isDefined(getInteger(this, (aV + n))))
476476 then throw("token already inited")
477477 else if (!(contains(getStringValue(V, E), aV)))
478478 then throw("no token on landing")
479479 else {
480480 let cg = (aq() :+ aV)
481481 [IntegerEntry((aV + n), 0), IntegerEntry((aV + o), max([ad, height])), StringEntry(l, makeString(cg, ",")), IntegerEntry((aV + p), 0)]
482482 })
483483
484484
485485
486486 @Callable(al)
487487 func updateRewards () = valueOrElse(an(al), {
488488 let ch = valueOrElse(getInteger(this, q), 0)
489489 if (((ch + ae) > height))
490490 then throw("rewards alredy updated in this period")
491491 else {
492492 let ci = aU()
493493 let aX = ci._1
494494 let aY = ci._2
495495 let aZ = ci._3
496496 let bK = as(ac)
497497 let bL = ax(ac)
498498 let cj = ay(af, c, b)
499499 func ck (aD,aV) = {
500500 let cl = aD
501501 let bz = cl._1
502502 let cm = cl._2
503503 let aG = cl._3
504504 if ((aX[aG] == 0))
505505 then $Tuple3((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), 0), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), cm, (aG + 1))
506506 else {
507507 let cn = fraction(aY[aG], a, aZ)
508508 let co = fraction(cn, ah, a)
509509 let cp = fraction(co, bK, bL)
510510 let cq = valueOrElse(getInteger(this, A), 0)
511511 let cr = if (if ((cq == 0))
512512 then true
513513 else (aX[aG] == 0))
514514 then 0
515515 else fraction(cq, a, aX[aG])
516516 let bj = ((min([(cj * (a + cr)), fraction(cj, (15 * a), 10)]) / a) / 100)
517517 let cs = min([cp, fraction(aY[aG], bj, a)])
518518 let ct = fraction(cs, bL, bK)
519519 let bg = (ct / ae)
520520 $Tuple3((bz ++ [IntegerEntry((aV + A), aX[aG]), IntegerEntry((aV + p), bg), IntegerEntry((aV + n), bf(aV, aX[aG])), IntegerEntry((aV + o), max([ad, height]))]), (cm + ct), (aG + 1))
521521 }
522522 }
523523
524524 let cu = {
525525 let aN = aq()
526526 let aO = size(aN)
527527 let aP = $Tuple3(nil, 0, 0)
528528 func aQ (aR,aS) = if ((aS >= aO))
529529 then aR
530530 else ck(aR, aN[aS])
531531
532532 func aT (aR,aS) = if ((aS >= aO))
533533 then aR
534534 else throw("List size exceeds 30")
535535
536536 aT(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aQ(aP, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
537537 }
538538 let cv = cu._1
539539 let cw = cu._2
540540 let aG = cu._3
541541 let cx = ay(af, f, e)
542542 let bR = getIntegerValue(W, (S + F))
543543 let cy = valueOrElse(getInteger(this, w), 0)
544544 let bS = getStringValue(addressFromStringValue(S), I)
545545 let bT = ax(bS)
546546 let bU = {
547547 let bV = invoke(T, "getShareAssetPriceREADONLY", [bS], nil)
548548 if ($isInstanceOf(bV, "Int"))
549549 then bV
550550 else throw(($getType(bV) + " couldn't be cast to Int"))
551551 }
552552 let bW = fraction(bR, bU, bT)
553553 let cz = fraction(aj, bK, bL)
554554 let cA = if (if ((cy == 0))
555555 then true
556556 else (bR == 0))
557557 then 0
558558 else fraction(cy, a, bR)
559559 let cB = ((min([(cx * (a + cA)), fraction(cx, (15 * a), 10)]) / a) / 100)
560560 let cC = min([cz, fraction(bW, cB, a)])
561561 let cD = fraction(cC, bL, bK)
562562 let cE = (cD / ae)
563563 let cF = (ah - cw)
564564 let cG = (aj - cD)
565565 let bZ = invoke(U, "withdrawLpReward", [(cF + cG), toString(this)], nil)
566566 if ((bZ == bZ))
567567 then {
568568 let cH = [IntegerEntry(w, bR), IntegerEntry(x, cE), IntegerEntry(u, bl(bR)), IntegerEntry(v, max([ad, height])), ScriptTransfer(Address(base58'3MsXJ3BesPECkYejzBQGHZPJT8GVYy4Fd3Q'), cF, fromBase58String(ac)), ScriptTransfer(Address(base58'3MsXJ3BesPECkYejzBQGHZPJT8GVYy4Fd3Q'), cG, fromBase58String(ac))]
569569 ((cH ++ cv) :+ IntegerEntry(q, max([ad, height])))
570570 }
571571 else throw("Strict value is not equal to itself.")
572572 }
573573 })
574574
575575
576576 @Verifier(cI)
577577 func cJ () = {
578578 let cK = {
579579 let cL = if (sigVerify(cI.bodyBytes, cI.proofs[0], Y))
580580 then 1
581581 else 0
582582 let cM = if (sigVerify(cI.bodyBytes, cI.proofs[1], Z))
583583 then 1
584584 else 0
585585 let cN = if (sigVerify(cI.bodyBytes, cI.proofs[2], aa))
586586 then 1
587587 else 0
588588 (((cL + cM) + cN) >= 2)
589589 }
590590 let av = cI
591591 if ($isInstanceOf(av, "InvokeScriptTransaction"))
592592 then {
593593 let bZ = av
594594 let cO = sigVerify(cI.bodyBytes, cI.proofs[0], cI.senderPublicKey)
595595 let cP = if ((bZ.fee == 900000))
596596 then (bZ.feeAssetId == unit)
597597 else false
598598 let cQ = (bZ.function == "init")
599599 let cR = (size(bZ.payments) == 0)
600600 if (if (if (if (cP)
601601 then cQ
602602 else false)
603603 then cO
604604 else false)
605605 then cR
606606 else false)
607607 then true
608608 else cK
609609 }
610610 else cK
611611 }
612612

github/deemru/w8io/026f985 
61.75 ms