tx · 9khcGcKbVZBTyuWjNqQnNUcWM6mrNoodvr5VBGiQLAVy

3PBeerh759eA1eGFuw77RowaZfZNohzJzvz:  -0.01700000 Waves

2023.03.09 01:12 [3547200] smart account 3PBeerh759eA1eGFuw77RowaZfZNohzJzvz > SELF 0.00000000 Waves

{ "type": 13, "id": "9khcGcKbVZBTyuWjNqQnNUcWM6mrNoodvr5VBGiQLAVy", "fee": 1700000, "feeAssetId": null, "timestamp": 1678313575802, "version": 2, "chainId": 87, "sender": "3PBeerh759eA1eGFuw77RowaZfZNohzJzvz", "senderPublicKey": "Fw5NUe1f5xvDWNgCRm1CuYRnJGm2JqeSjqEBioaPvwaR", "proofs": [ "3WM6YA7NHo2B7neHw3LEA6AyQow5tdAmvs1afWm5PfFRi3AwRmEEWJN8nn6Jf7EEYWoz7yq6nidSgs7jYko7cDqe" ], "script": "base64:BgJaCAISCQoHCAEICAgIBBIJCgcICAgICAgBEg0KCwgICAgIBAgIAQgEEgsKCQgICAgICAgIARIRCg8ICAgICAQICAgECAgBCAQSEQoPCAgICAgECAgIBAgIAQgEDgAKcnVsZXJfdGVzdAIsQmd4cENtNHd4Ylc4U0tMUEtabmY0S1UyRDZaVTI5b3Y4TWdacmthU0FxcFkABXJ1bGVyAiw3ek5VSkJWb1BNQkNSc3RQM1IxQXZ4aHhyTjUxU1FrbjVCTWkyaUo5Y2lBZAAGcnVsZXIyAiw5ZmU2N2V3enh0YUxvemVQWjJVM1NHNzFaUUZ5R0xBWFdtbW1IUkVwRmVNQwAGcnVsZXIzAixGZU1YNmhRYVJLc0xza2k3N3hWSEhER1JrajlWdUp6bVAyTUFDYkFXRGpESwAGcnVsZXI0AiwzUFNLN2I2Yk1mMWdCRHZqSFJiR1E5ekdjNjhVaXJlcUJqMmV1YlZpMXE1cgAGcnVsZXI1Aiw2NnJDdjlkZmRvdXFRM1NSRzlYcktuUmlGbU1id2taUWdtaFMxZnRuQ3RxbQAGcnVsZXI2AixGZU1YNmhRYVJLc0xza2k3N3hWSEhER1JrajlWdUp6bVAyTUFDYkFXRGpESwAKYWJyYWNhZGJyYQIsOXdGalR4NHJLNlp4ZkhhM3o2NUJIaFA2QTdna1pMaW94VnJENHAyRnJqam4BA3ZpcAEDa2trAwMDAwMDCQAAAgUDa2trBQVydWxlcgYJAAACBQNra2sFBnJ1bGVyMgYJAAACBQNra2sFBnJ1bGVyMwYJAAACBQNra2sFBnJ1bGVyNAYJAAACBQNra2sFBnJ1bGVyNQYJAAACBQNra2sFBnJ1bGVyNgYHAQpnZXRBc3NldElkAQNwbXQEByRtYXRjaDAFA3BtdAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFwBQckbWF0Y2gwBQNwbXQFBHVuaXQBDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBDWdldEFzc2V0Qnl0ZXMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEJbXlCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAPAHAgUEdGhpcwUBYggJAO8HAQUEdGhpcwlhdmFpbGFibGUBDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAYBaQEEZmFrZQcEYV9pbgZhbW91bnQFYV9vdXQCcG8FcG9fdHkOd3hfbHBfYXNzZXRfaWQJaXNfc3RhYmxlBAdhc3NldEluCQENZ2V0QXNzZXRCeXRlcwEFBGFfaW4ECGFtb3VudEluBQZhbW91bnQEBXB1dE9wAwUJaXNfc3RhYmxlAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAVnZXRPcAMFCWlzX3N0YWJsZQILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQUYW1vdW50X2JlZl9hc3NldF9vdXQJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBWFfb3V0AwkAAAIFFGFtb3VudF9iZWZfYXNzZXRfb3V0BRRhbW91bnRfYmVmX2Fzc2V0X291dAQGZW50cnkxAwkAAAIFBXBvX3R5AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwbwIEc3dhcAkAzAgCBQVhX291dAkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQVwb190eQIBcwkA/AcECQEHQWRkcmVzcwEJANkEAQUCcG8CCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsBANwdXQJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnBvBQVwdXRPcAkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwdXQFA3B1dAQLd3hfbHBfYXNzZXQJAQ1nZXRBc3NldEJ5dGVzAQUOd3hfbHBfYXNzZXRfaWQECWxwQmFsYW5jZQkBCW15QmFsYW5jZQEFC3d4X2xwX2Fzc2V0AwkAAAIFCWxwQmFsYW5jZQUJbHBCYWxhbmNlCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwbwUFZ2V0T3AJAMwIAgUFYV9vdXQJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3d4X2xwX2Fzc2V0BQlscEJhbGFuY2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQWYW1vdW50X2FmdGVyX2Fzc2V0X291dAkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUFYV9vdXQDCQAAAgUWYW1vdW50X2FmdGVyX2Fzc2V0X291dAUWYW1vdW50X2FmdGVyX2Fzc2V0X291dAQEcmVzdQkAZQIFFmFtb3VudF9hZnRlcl9hc3NldF9vdXQFFGFtb3VudF9iZWZfYXNzZXRfb3V0CQACAQkApAMBBQRyZXN1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXRyYWRlBwFhAmFvAnAxA3AxdAJwMgNwMnQDbWluBAljYWxsZXJQYmsJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBCQEDdmlwAQUJY2FsbGVyUGJrCQACAQIITm8tbm8tbm8EA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldEluCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQECGFtb3VudEluCQEFdmFsdWUBCAUDcG10BmFtb3VudAQRYW1vdW50X2JlZl9hc3NldDEJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAWEDCQAAAgURYW1vdW50X2JlZl9hc3NldDEFEWFtb3VudF9iZWZfYXNzZXQxBAZlbnRyeTEDCQAAAgUDcDF0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIEc3dhcAkAzAgCBQFhCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SW4FCGFtb3VudEluBQNuaWwDCQAAAgUGZW50cnkxBQZlbnRyeTEEAm5iCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUBYQURYW1vdW50X2JlZl9hc3NldDEDCQAAAgUCbmIFAm5iBBVhbW91bnRfYmVmX2Jhc2VfYXNzZXQJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAmFvAwkAAAIFFWFtb3VudF9iZWZfYmFzZV9hc3NldAUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0BAZlbnRyeTIDCQAAAgUDcDJ0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIEc3dhcAkAzAgCBQJhbwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAMJAAACBQZlbnRyeTIFBmVudHJ5MgQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYW8FFWFtb3VudF9iZWZfYmFzZV9hc3NldAMJAAACBQNuYjIFA25iMgMJAGYCBQNuYjIFA21pbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFA25iMgkBDWdldEFzc2V0Qnl0ZXMBBQJhbwUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBywgb3V0OiAJAKQDAQUDbmIyAgcsIG1pbjogCQCkAwEFA21pbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQd0cmFkZV93CwFhAmFvAnAxA3AxdBB3eF9scF9hc3NldF9pZF8xC2lzX3N0YWJsZV8xAnAyA3AydANtaW4Qd3hfbHBfYXNzZXRfaWRfMgtpc19zdGFibGVfMgQJY2FsbGVyUGJrCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQMJAQEhAQkBA3ZpcAEFCWNhbGxlclBiawkAAgECCE5vLW5vLW5vBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJbgkBCmdldEFzc2V0SWQBCAUDcG10B2Fzc2V0SWQECGFtb3VudEluCQEFdmFsdWUBCAUDcG10BmFtb3VudAQRYW1vdW50X2JlZl9hc3NldDEJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAWEDCQAAAgURYW1vdW50X2JlZl9hc3NldDEFEWFtb3VudF9iZWZfYXNzZXQxBAZwdXRPcDEDBQtpc19zdGFibGVfMQILcHV0T25lVGtuVjICCXB1dE9uZVRrbgQGZ2V0T3AxAwULaXNfc3RhYmxlXzECC2dldE9uZVRrblYyAglnZXRPbmVUa24EBnB1dE9wMgMFC2lzX3N0YWJsZV8yAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAZnZXRPcDIDBQtpc19zdGFibGVfMgILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQGZW50cnkxAwkAAAIFA3AxdAIBcAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDECBHN3YXAJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwMXQCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAQDcHV0CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQUGcHV0T3AxCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsAwkAAAIFA3B1dAUDcHV0BA13eF9scF9hc3NldF8xCQENZ2V0QXNzZXRCeXRlcwEFEHd4X2xwX2Fzc2V0X2lkXzEEC2xwQmFsYW5jZV8xCQEJbXlCYWxhbmNlAQUNd3hfbHBfYXNzZXRfMQMJAAACBQtscEJhbGFuY2VfMQULbHBCYWxhbmNlXzEJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxBQZnZXRPcDEJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMQULbHBCYWxhbmNlXzEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQCbmIJAGUCCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhBRFhbW91bnRfYmVmX2Fzc2V0MQMJAAACBQJuYgUCbmIEFWFtb3VudF9iZWZfYmFzZV9hc3NldAkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYW8DCQAAAgUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0BRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQEBmVudHJ5MgMJAAACBQNwMnQCAXAJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAyAgRzd2FwCQDMCAIFAmFvCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcDJ0AgFzCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAQDcHV0CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgUGcHV0T3AyCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcHV0BQNwdXQEDXd4X2xwX2Fzc2V0XzIJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMgQLbHBCYWxhbmNlXzIJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8yAwkAAAIFC2xwQmFsYW5jZV8yBQtscEJhbGFuY2VfMgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBmdldE9wMgkAzAgCBQJhbwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMgULbHBCYWxhbmNlXzIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTIFBmVudHJ5MgQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYW8FFWFtb3VudF9iZWZfYmFzZV9hc3NldAMJAAACBQNuYjIFA25iMgMJAGYCBQNuYjIFA21pbgQHaHVqYWJyYQkAZQIFA25iMgUIYW1vdW50SW4EBHJldHUFCGFtb3VudEluCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUEcmV0dQUHYXNzZXRJbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQCnCAEJAJsDAQUKYWJyYWNhZGJyYQUHaHVqYWJyYQUHYXNzZXRJbgUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBywgb3V0OiAJAKQDAQUDbmIyAgcsIG1pbjogCQCkAwEFA21pbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQl0cmlwdHJhZGUJAWECYTICcDEDcDF0AnAyA3AydAJwMwNwM3QDbWluBAljYWxsZXJQYmsJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBCQEDdmlwAQUJY2FsbGVyUGJrCQACAQIITm8tbm8tbm8EA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldEluCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQECGFtb3VudEluCQEFdmFsdWUBCAUDcG10BmFtb3VudAQRYW1vdW50X2JlZl9hc3NldDEJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAWEDCQAAAgURYW1vdW50X2JlZl9hc3NldDEFEWFtb3VudF9iZWZfYXNzZXQxBAZlbnRyeTEDCQAAAgUDcDF0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIEc3dhcAkAzAgCBQFhCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SW4FCGFtb3VudEluBQNuaWwDCQAAAgUGZW50cnkxBQZlbnRyeTEEAm5iCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUBYQURYW1vdW50X2JlZl9hc3NldDEDCQAAAgUCbmIFAm5iBBFhbW91bnRfYmVmX2Fzc2V0MgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIDCQAAAgURYW1vdW50X2JlZl9hc3NldDIFEWFtb3VudF9iZWZfYXNzZXQyBAZlbnRyeTIDCQAAAgUDcDJ0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIEc3dhcAkAzAgCBQJhMgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAMJAAACBQZlbnRyeTIFBmVudHJ5MgQVYW1vdW50X2JlZl9iYXNlX2Fzc2V0CQEJbXlCYWxhbmNlAQUHYXNzZXRJbgMJAAACBRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQFFWFtb3VudF9iZWZfYmFzZV9hc3NldAQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFEWFtb3VudF9iZWZfYXNzZXQyAwkAAAIFA25iMgUDbmIyBAZlbnRyeTMDCQAAAgUDcDN0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDMCCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAMJAAACBQZlbnRyeTMFBmVudHJ5MwQDbmIzCQBlAgkBCW15QmFsYW5jZQEFB2Fzc2V0SW4FFWFtb3VudF9iZWZfYmFzZV9hc3NldAMJAAACBQNuYjMFA25iMwMJAGYCBQNuYjMFA21pbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFA25iMwUHYXNzZXRJbgUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgILT29vcHMsIGluOiAJAKQDAQUIYW1vdW50SW4CBSwgMTogCQCkAwEFAm5iAgUsIDI6IAkApAMBBQNuYjICBywgb3V0OiAJAKQDAQUDbmIzAgcsIG1pbjogCQCkAwEFA21pbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt0cmlwdHJhZGVfdw8BYQJhMgJwMQNwMXQQd3hfbHBfYXNzZXRfaWRfMQtpc19zdGFibGVfMQJwMgNwMnQQd3hfbHBfYXNzZXRfaWRfMgtpc19zdGFibGVfMgJwMwNwM3QDbWluEHd4X2xwX2Fzc2V0X2lkXzMLaXNfc3RhYmxlXzMECWNhbGxlclBiawkA2AQBCAUBaQ9jYWxsZXJQdWJsaWNLZXkDCQEBIQEJAQN2aXABBQljYWxsZXJQYmsJAAIBAghOby1uby1ubwQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SW4JAQpnZXRBc3NldElkAQgFA3BtdAdhc3NldElkBAhhbW91bnRJbgkBBXZhbHVlAQgFA3BtdAZhbW91bnQEEWFtb3VudF9iZWZfYXNzZXQxCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhAwkAAAIFEWFtb3VudF9iZWZfYXNzZXQxBRFhbW91bnRfYmVmX2Fzc2V0MQQGcHV0T3AxAwULaXNfc3RhYmxlXzECC3B1dE9uZVRrblYyAglwdXRPbmVUa24EBmdldE9wMQMFC2lzX3N0YWJsZV8xAgtnZXRPbmVUa25WMgIJZ2V0T25lVGtuBAZwdXRPcDIDBQtpc19zdGFibGVfMgILcHV0T25lVGtuVjICCXB1dE9uZVRrbgQGZ2V0T3AyAwULaXNfc3RhYmxlXzICC2dldE9uZVRrblYyAglnZXRPbmVUa24EBnB1dE9wMwMFC2lzX3N0YWJsZV8zAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAZnZXRPcDMDBQtpc19zdGFibGVfMwILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQGZW50cnkxAwkAAAIFA3AxdAIBcAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDECBHN3YXAJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwMXQCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAQEcHV0MQkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDEFBnB1dE9wMQkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQRwdXQxBQRwdXQxBA13eF9scF9hc3NldF8xCQENZ2V0QXNzZXRCeXRlcwEFEHd4X2xwX2Fzc2V0X2lkXzEEC2xwQmFsYW5jZV8xCQEJbXlCYWxhbmNlAQUNd3hfbHBfYXNzZXRfMQMJAAACBQtscEJhbGFuY2VfMQULbHBCYWxhbmNlXzEJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxBQZnZXRPcDEJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMQULbHBCYWxhbmNlXzEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQCbmIJAGUCCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhBRFhbW91bnRfYmVmX2Fzc2V0MQMJAAACBQJuYgUCbmIEEWFtb3VudF9iZWZfYXNzZXQyCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQJhMgMJAAACBRFhbW91bnRfYmVmX2Fzc2V0MgURYW1vdW50X2JlZl9hc3NldDIEBmVudHJ5MgMJAAACBQNwMnQCAXAJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAyAgRzd2FwCQDMCAIFAmEyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcDJ0AgFzCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAQEcHV0MgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBnB1dE9wMgkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsAwkAAAIFBHB1dDIFBHB1dDIEDXd4X2xwX2Fzc2V0XzIJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMgQLbHBCYWxhbmNlXzIJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8yAwkAAAIFC2xwQmFsYW5jZV8yBQtscEJhbGFuY2VfMgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBmdldE9wMgkAzAgCBQJhMgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMgULbHBCYWxhbmNlXzIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTIFBmVudHJ5MgQVYW1vdW50X2JlZl9iYXNlX2Fzc2V0CQEJbXlCYWxhbmNlAQUHYXNzZXRJbgMJAAACBRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQFFWFtb3VudF9iZWZfYmFzZV9hc3NldAQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFEWFtb3VudF9iZWZfYXNzZXQyAwkAAAIFA25iMgUDbmIyBAZlbnRyeTMDCQAAAgUDcDN0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAMJAAACBQNwM3QCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQJhMgUDbmIyBQNuaWwEBHB1dDMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzBQZwdXRPcDMJAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFA25iMgUDbmlsAwkAAAIFBHB1dDMFBHB1dDMEDXd4X2xwX2Fzc2V0XzMJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMwQLbHBCYWxhbmNlXzMJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8zAwkAAAIFC2xwQmFsYW5jZV8zBQtscEJhbGFuY2VfMwkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDMFBmdldE9wMwkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ13eF9scF9hc3NldF8zBQtscEJhbGFuY2VfMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBmVudHJ5MwUGZW50cnkzBANuYjMJAGUCCQEJbXlCYWxhbmNlAQUHYXNzZXRJbgUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0AwkAAAIFA25iMwUDbmIzAwkAZgIFA25iMwUDbWluBAdodWphYnJhCQBlAgUDbmIzBQhhbW91bnRJbgQEcmV0dQUIYW1vdW50SW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQRyZXR1BQdhc3NldEluCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAKcIAQkAmwMBBQphYnJhY2FkYnJhBQdodWphYnJhBQdhc3NldEluBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBSwgMjogCQCkAwEFA25iMgIHLCBvdXQ6IAkApAMBBQNuYjMCBywgbWluOiAJAKQDAQUDbWluCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF2FsbGlnYXRvcl9SRVhfaXNfY29taW5nDwFhAmEyAnAxA3AxdBB3eF9scF9hc3NldF9pZF8xC2lzX3N0YWJsZV8xAnAyA3AydBB3eF9scF9hc3NldF9pZF8yC2lzX3N0YWJsZV8yAnAzA3AzdANtaW4Qd3hfbHBfYXNzZXRfaWRfMwtpc19zdGFibGVfMwQJY2FsbGVyUGJrCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQMJAQEhAQkBA3ZpcAEFCWNhbGxlclBiawkAAgECIU5vLW5vLW5vLCB1cGQgdmlwIGxpc3Qgb3IgZ28gYXdheQQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SW4JAQpnZXRBc3NldElkAQgFA3BtdAdhc3NldElkBAhhbW91bnRJbgkBBXZhbHVlAQgFA3BtdAZhbW91bnQEEWFtb3VudF9iZWZfYXNzZXQxCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhAwkAAAIFEWFtb3VudF9iZWZfYXNzZXQxBRFhbW91bnRfYmVmX2Fzc2V0MQQGcHV0T3AxAwULaXNfc3RhYmxlXzECC3B1dE9uZVRrblYyAglwdXRPbmVUa24EBmdldE9wMQMFC2lzX3N0YWJsZV8xAgtnZXRPbmVUa25WMgIJZ2V0T25lVGtuBAZwdXRPcDIDBQtpc19zdGFibGVfMgILcHV0T25lVGtuVjICCXB1dE9uZVRrbgQGZ2V0T3AyAwULaXNfc3RhYmxlXzICC2dldE9uZVRrblYyAglnZXRPbmVUa24EBnB1dE9wMwMFC2lzX3N0YWJsZV8zAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAZnZXRPcDMDBQtpc19zdGFibGVfMwILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQGZW50cnkxAwkAAAIFA3AxdAIBcAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDECBHN3YXAJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwMXQCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAQEcHV0MQkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDEFBnB1dE9wMQkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQRwdXQxBQRwdXQxBA13eF9scF9hc3NldF8xCQENZ2V0QXNzZXRCeXRlcwEFEHd4X2xwX2Fzc2V0X2lkXzEEC2xwQmFsYW5jZV8xCQEJbXlCYWxhbmNlAQUNd3hfbHBfYXNzZXRfMQMJAAACBQtscEJhbGFuY2VfMQULbHBCYWxhbmNlXzEJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxBQZnZXRPcDEJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMQULbHBCYWxhbmNlXzEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQCbmIJAGUCCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhBRFhbW91bnRfYmVmX2Fzc2V0MQMJAAACBQJuYgUCbmIEEWFtb3VudF9iZWZfYXNzZXQyCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQJhMgMJAAACBRFhbW91bnRfYmVmX2Fzc2V0MgURYW1vdW50X2JlZl9hc3NldDIEBmVudHJ5MgMJAAACBQNwMnQCAXAJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAyAgRzd2FwCQDMCAIFAmEyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcDJ0AgFzCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAQEcHV0MgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBnB1dE9wMgkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsAwkAAAIFBHB1dDIFBHB1dDIEDXd4X2xwX2Fzc2V0XzIJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMgQLbHBCYWxhbmNlXzIJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8yAwkAAAIFC2xwQmFsYW5jZV8yBQtscEJhbGFuY2VfMgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBmdldE9wMgkAzAgCBQJhMgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMgULbHBCYWxhbmNlXzIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTIFBmVudHJ5MgQVYW1vdW50X2JlZl9iYXNlX2Fzc2V0CQEJbXlCYWxhbmNlAQUHYXNzZXRJbgMJAAACBRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQFFWFtb3VudF9iZWZfYmFzZV9hc3NldAQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFEWFtb3VudF9iZWZfYXNzZXQyAwkAAAIFA25iMgUDbmIyBAZlbnRyeTMDCQAAAgUDcDN0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAMJAAACBQNwM3QCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQJhMgUDbmIyBQNuaWwEBHB1dDMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzBQZwdXRPcDMJAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFA25iMgUDbmlsAwkAAAIFBHB1dDMFBHB1dDMEDXd4X2xwX2Fzc2V0XzMJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMwQLbHBCYWxhbmNlXzMJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8zAwkAAAIFC2xwQmFsYW5jZV8zBQtscEJhbGFuY2VfMwkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDMFBmdldE9wMwkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ13eF9scF9hc3NldF8zBQtscEJhbGFuY2VfMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBmVudHJ5MwUGZW50cnkzBANuYjMJAGUCCQEJbXlCYWxhbmNlAQUHYXNzZXRJbgUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0AwkAAAIFA25iMwUDbmIzAwkAZgIFA25iMwUDbWluCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUDbmIzBQdhc3NldEluBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBSwgMjogCQCkAwEFA25iMgIHLCBvdXQ6IAkApAMBBQNuYjMCBywgbWluOiAJAKQDAQUDbWluCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleWKD5aw=", "height": 3547200, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3cjigJtBHiCSAxHQsf9RmJ2KoCZ6LoafpQ5HTDA7D6TR Next: FWjFzaTYQK8Ew7QAkPCADjRj5SaXR9LBpjgK6X3Qj7F6 Diff:
OldNewDifferences
1414 let ruler5 = "66rCv9dfdouqQ3SRG9XrKnRiFmMbwkZQgmhS1ftnCtqm"
1515
1616 let ruler6 = "FeMX6hQaRKsLski77xVHHDGRkj9VuJzmP2MACbAWDjDK"
17+
18+let abracadbra = "9wFjTx4rK6ZxfHa3z65BHhP6A7gkZLioxVrD4p2Frjjn"
1719
1820 func vip (kkk) = if (if (if (if (if (if ((kkk == ruler))
1921 then true
228230 let nb2 = (myBalance(getAssetBytes(ao)) - amount_bef_base_asset)
229231 if ((nb2 == nb2))
230232 then if ((nb2 > min))
231- then [ScriptTransfer(i.caller, nb2, getAssetBytes(ao))]
233+ then {
234+ let hujabra = (nb2 - amountIn)
235+ let retu = amountIn
236+[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
237+ }
232238 else throw(((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", out: ") + toString(nb2)) + ", min: ") + toString(min)))
233239 else throw("Strict value is not equal to itself.")
234240 }
411417 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
412418 if ((nb3 == nb3))
413419 then if ((nb3 > min))
414- then [ScriptTransfer(i.caller, nb3, assetIn)]
420+ then {
421+ let hujabra = (nb3 - amountIn)
422+ let retu = amountIn
423+[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
424+ }
415425 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
416426 else throw("Strict value is not equal to itself.")
417427 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ruler_test = "BgxpCm4wxbW8SKLPKZnf4KU2D6ZU29ov8MgZrkaSAqpY"
55
66 let ruler = "7zNUJBVoPMBCRstP3R1AvxhxrN51SQkn5BMi2iJ9ciAd"
77
88 let ruler2 = "9fe67ewzxtaLozePZ2U3SG71ZQFyGLAXWmmmHREpFeMC"
99
1010 let ruler3 = "FeMX6hQaRKsLski77xVHHDGRkj9VuJzmP2MACbAWDjDK"
1111
1212 let ruler4 = "3PSK7b6bMf1gBDvjHRbGQ9zGc68UireqBj2eubVi1q5r"
1313
1414 let ruler5 = "66rCv9dfdouqQ3SRG9XrKnRiFmMbwkZQgmhS1ftnCtqm"
1515
1616 let ruler6 = "FeMX6hQaRKsLski77xVHHDGRkj9VuJzmP2MACbAWDjDK"
17+
18+let abracadbra = "9wFjTx4rK6ZxfHa3z65BHhP6A7gkZLioxVrD4p2Frjjn"
1719
1820 func vip (kkk) = if (if (if (if (if (if ((kkk == ruler))
1921 then true
2022 else (kkk == ruler2))
2123 then true
2224 else (kkk == ruler3))
2325 then true
2426 else (kkk == ruler4))
2527 then true
2628 else (kkk == ruler5))
2729 then true
2830 else (kkk == ruler6))
2931 then true
3032 else false
3133
3234
3335 func getAssetId (pmt) = match pmt {
3436 case p: ByteVector =>
3537 pmt
3638 case _ =>
3739 unit
3840 }
3941
4042
4143 func getAssetString (assetId) = match assetId {
4244 case b: ByteVector =>
4345 toBase58String(b)
4446 case _ =>
4547 "WAVES"
4648 }
4749
4850
4951 func getAssetBytes (assetId) = if ((assetId == "WAVES"))
5052 then unit
5153 else fromBase58String(assetId)
5254
5355
5456 func myBalance (assetId) = match assetId {
5557 case b: ByteVector =>
5658 assetBalance(this, b)
5759 case _ =>
5860 wavesBalance(this).available
5961 }
6062
6163
6264 func getAccBalance (assetId) = if ((assetId == "WAVES"))
6365 then wavesBalance(this).available
6466 else assetBalance(this, fromBase58String(assetId))
6567
6668
6769 @Callable(i)
6870 func fake (a_in,amount,a_out,po,po_ty,wx_lp_asset_id,is_stable) = {
6971 let assetIn = getAssetBytes(a_in)
7072 let amountIn = amount
7173 let putOp = if (is_stable)
7274 then "putOneTknV2"
7375 else "putOneTkn"
7476 let getOp = if (is_stable)
7577 then "getOneTknV2"
7678 else "getOneTkn"
7779 let amount_bef_asset_out = myBalance(getAssetBytes(a_out))
7880 if ((amount_bef_asset_out == amount_bef_asset_out))
7981 then {
8082 let entry1 = if ((po_ty == "p"))
8183 then invoke(Address(fromBase58String(po)), "swap", [a_out, 1], [AttachedPayment(assetIn, amountIn)])
8284 else if ((po_ty == "s"))
8385 then invoke(Address(fromBase58String(po)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
8486 else {
8587 let put = invoke(Address(fromBase58String(po)), putOp, [1, false], [AttachedPayment(assetIn, amountIn)])
8688 if ((put == put))
8789 then {
8890 let wx_lp_asset = getAssetBytes(wx_lp_asset_id)
8991 let lpBalance = myBalance(wx_lp_asset)
9092 if ((lpBalance == lpBalance))
9193 then invoke(Address(fromBase58String(po)), getOp, [a_out, 1], [AttachedPayment(wx_lp_asset, lpBalance)])
9294 else throw("Strict value is not equal to itself.")
9395 }
9496 else throw("Strict value is not equal to itself.")
9597 }
9698 if ((entry1 == entry1))
9799 then {
98100 let amount_after_asset_out = myBalance(getAssetBytes(a_out))
99101 if ((amount_after_asset_out == amount_after_asset_out))
100102 then {
101103 let resu = (amount_after_asset_out - amount_bef_asset_out)
102104 throw(toString(resu))
103105 }
104106 else throw("Strict value is not equal to itself.")
105107 }
106108 else throw("Strict value is not equal to itself.")
107109 }
108110 else throw("Strict value is not equal to itself.")
109111 }
110112
111113
112114
113115 @Callable(i)
114116 func trade (a,ao,p1,p1t,p2,p2t,min) = {
115117 let callerPbk = toBase58String(i.callerPublicKey)
116118 if (!(vip(callerPbk)))
117119 then throw("No-no-no")
118120 else {
119121 let pmt = i.payments[0]
120122 let assetIn = value(pmt.assetId)
121123 let amountIn = value(pmt.amount)
122124 let amount_bef_asset1 = myBalance(getAssetBytes(a))
123125 if ((amount_bef_asset1 == amount_bef_asset1))
124126 then {
125127 let entry1 = if ((p1t == "p"))
126128 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
127129 else invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
128130 if ((entry1 == entry1))
129131 then {
130132 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
131133 if ((nb == nb))
132134 then {
133135 let amount_bef_base_asset = myBalance(getAssetBytes(ao))
134136 if ((amount_bef_base_asset == amount_bef_base_asset))
135137 then {
136138 let entry2 = if ((p2t == "p"))
137139 then invoke(Address(fromBase58String(p2)), "swap", [ao, 1], [AttachedPayment(getAssetBytes(a), nb)])
138140 else invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
139141 if ((entry2 == entry2))
140142 then {
141143 let nb2 = (myBalance(getAssetBytes(ao)) - amount_bef_base_asset)
142144 if ((nb2 == nb2))
143145 then if ((nb2 > min))
144146 then [ScriptTransfer(i.caller, nb2, getAssetBytes(ao))]
145147 else throw(((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", out: ") + toString(nb2)) + ", min: ") + toString(min)))
146148 else throw("Strict value is not equal to itself.")
147149 }
148150 else throw("Strict value is not equal to itself.")
149151 }
150152 else throw("Strict value is not equal to itself.")
151153 }
152154 else throw("Strict value is not equal to itself.")
153155 }
154156 else throw("Strict value is not equal to itself.")
155157 }
156158 else throw("Strict value is not equal to itself.")
157159 }
158160 }
159161
160162
161163
162164 @Callable(i)
163165 func trade_w (a,ao,p1,p1t,wx_lp_asset_id_1,is_stable_1,p2,p2t,min,wx_lp_asset_id_2,is_stable_2) = {
164166 let callerPbk = toBase58String(i.callerPublicKey)
165167 if (!(vip(callerPbk)))
166168 then throw("No-no-no")
167169 else {
168170 let pmt = i.payments[0]
169171 let assetIn = getAssetId(pmt.assetId)
170172 let amountIn = value(pmt.amount)
171173 let amount_bef_asset1 = myBalance(getAssetBytes(a))
172174 if ((amount_bef_asset1 == amount_bef_asset1))
173175 then {
174176 let putOp1 = if (is_stable_1)
175177 then "putOneTknV2"
176178 else "putOneTkn"
177179 let getOp1 = if (is_stable_1)
178180 then "getOneTknV2"
179181 else "getOneTkn"
180182 let putOp2 = if (is_stable_2)
181183 then "putOneTknV2"
182184 else "putOneTkn"
183185 let getOp2 = if (is_stable_2)
184186 then "getOneTknV2"
185187 else "getOneTkn"
186188 let entry1 = if ((p1t == "p"))
187189 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
188190 else if ((p1t == "s"))
189191 then invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
190192 else {
191193 let put = invoke(Address(fromBase58String(p1)), putOp1, [1, false], [AttachedPayment(assetIn, amountIn)])
192194 if ((put == put))
193195 then {
194196 let wx_lp_asset_1 = getAssetBytes(wx_lp_asset_id_1)
195197 let lpBalance_1 = myBalance(wx_lp_asset_1)
196198 if ((lpBalance_1 == lpBalance_1))
197199 then invoke(Address(fromBase58String(p1)), getOp1, [a, 1], [AttachedPayment(wx_lp_asset_1, lpBalance_1)])
198200 else throw("Strict value is not equal to itself.")
199201 }
200202 else throw("Strict value is not equal to itself.")
201203 }
202204 if ((entry1 == entry1))
203205 then {
204206 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
205207 if ((nb == nb))
206208 then {
207209 let amount_bef_base_asset = myBalance(getAssetBytes(ao))
208210 if ((amount_bef_base_asset == amount_bef_base_asset))
209211 then {
210212 let entry2 = if ((p2t == "p"))
211213 then invoke(Address(fromBase58String(p2)), "swap", [ao, 1], [AttachedPayment(getAssetBytes(a), nb)])
212214 else if ((p2t == "s"))
213215 then invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
214216 else {
215217 let put = invoke(Address(fromBase58String(p2)), putOp2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
216218 if ((put == put))
217219 then {
218220 let wx_lp_asset_2 = getAssetBytes(wx_lp_asset_id_2)
219221 let lpBalance_2 = myBalance(wx_lp_asset_2)
220222 if ((lpBalance_2 == lpBalance_2))
221223 then invoke(Address(fromBase58String(p2)), getOp2, [ao, 1], [AttachedPayment(wx_lp_asset_2, lpBalance_2)])
222224 else throw("Strict value is not equal to itself.")
223225 }
224226 else throw("Strict value is not equal to itself.")
225227 }
226228 if ((entry2 == entry2))
227229 then {
228230 let nb2 = (myBalance(getAssetBytes(ao)) - amount_bef_base_asset)
229231 if ((nb2 == nb2))
230232 then if ((nb2 > min))
231- then [ScriptTransfer(i.caller, nb2, getAssetBytes(ao))]
233+ then {
234+ let hujabra = (nb2 - amountIn)
235+ let retu = amountIn
236+[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
237+ }
232238 else throw(((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", out: ") + toString(nb2)) + ", min: ") + toString(min)))
233239 else throw("Strict value is not equal to itself.")
234240 }
235241 else throw("Strict value is not equal to itself.")
236242 }
237243 else throw("Strict value is not equal to itself.")
238244 }
239245 else throw("Strict value is not equal to itself.")
240246 }
241247 else throw("Strict value is not equal to itself.")
242248 }
243249 else throw("Strict value is not equal to itself.")
244250 }
245251 }
246252
247253
248254
249255 @Callable(i)
250256 func triptrade (a,a2,p1,p1t,p2,p2t,p3,p3t,min) = {
251257 let callerPbk = toBase58String(i.callerPublicKey)
252258 if (!(vip(callerPbk)))
253259 then throw("No-no-no")
254260 else {
255261 let pmt = i.payments[0]
256262 let assetIn = value(pmt.assetId)
257263 let amountIn = value(pmt.amount)
258264 let amount_bef_asset1 = myBalance(getAssetBytes(a))
259265 if ((amount_bef_asset1 == amount_bef_asset1))
260266 then {
261267 let entry1 = if ((p1t == "p"))
262268 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
263269 else invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
264270 if ((entry1 == entry1))
265271 then {
266272 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
267273 if ((nb == nb))
268274 then {
269275 let amount_bef_asset2 = myBalance(getAssetBytes(a2))
270276 if ((amount_bef_asset2 == amount_bef_asset2))
271277 then {
272278 let entry2 = if ((p2t == "p"))
273279 then invoke(Address(fromBase58String(p2)), "swap", [a2, 1], [AttachedPayment(getAssetBytes(a), nb)])
274280 else invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
275281 if ((entry2 == entry2))
276282 then {
277283 let amount_bef_base_asset = myBalance(assetIn)
278284 if ((amount_bef_base_asset == amount_bef_base_asset))
279285 then {
280286 let nb2 = (myBalance(getAssetBytes(a2)) - amount_bef_asset2)
281287 if ((nb2 == nb2))
282288 then {
283289 let entry3 = if ((p3t == "p"))
284290 then invoke(Address(fromBase58String(p3)), "swap", [getAssetString(assetIn), 1], [AttachedPayment(getAssetBytes(a2), nb2)])
285291 else invoke(Address(fromBase58String(p3)), "exchange", [1], [AttachedPayment(getAssetBytes(a2), nb2)])
286292 if ((entry3 == entry3))
287293 then {
288294 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
289295 if ((nb3 == nb3))
290296 then if ((nb3 > min))
291297 then [ScriptTransfer(i.caller, nb3, assetIn)]
292298 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
293299 else throw("Strict value is not equal to itself.")
294300 }
295301 else throw("Strict value is not equal to itself.")
296302 }
297303 else throw("Strict value is not equal to itself.")
298304 }
299305 else throw("Strict value is not equal to itself.")
300306 }
301307 else throw("Strict value is not equal to itself.")
302308 }
303309 else throw("Strict value is not equal to itself.")
304310 }
305311 else throw("Strict value is not equal to itself.")
306312 }
307313 else throw("Strict value is not equal to itself.")
308314 }
309315 else throw("Strict value is not equal to itself.")
310316 }
311317 }
312318
313319
314320
315321 @Callable(i)
316322 func triptrade_w (a,a2,p1,p1t,wx_lp_asset_id_1,is_stable_1,p2,p2t,wx_lp_asset_id_2,is_stable_2,p3,p3t,min,wx_lp_asset_id_3,is_stable_3) = {
317323 let callerPbk = toBase58String(i.callerPublicKey)
318324 if (!(vip(callerPbk)))
319325 then throw("No-no-no")
320326 else {
321327 let pmt = i.payments[0]
322328 let assetIn = getAssetId(pmt.assetId)
323329 let amountIn = value(pmt.amount)
324330 let amount_bef_asset1 = myBalance(getAssetBytes(a))
325331 if ((amount_bef_asset1 == amount_bef_asset1))
326332 then {
327333 let putOp1 = if (is_stable_1)
328334 then "putOneTknV2"
329335 else "putOneTkn"
330336 let getOp1 = if (is_stable_1)
331337 then "getOneTknV2"
332338 else "getOneTkn"
333339 let putOp2 = if (is_stable_2)
334340 then "putOneTknV2"
335341 else "putOneTkn"
336342 let getOp2 = if (is_stable_2)
337343 then "getOneTknV2"
338344 else "getOneTkn"
339345 let putOp3 = if (is_stable_3)
340346 then "putOneTknV2"
341347 else "putOneTkn"
342348 let getOp3 = if (is_stable_3)
343349 then "getOneTknV2"
344350 else "getOneTkn"
345351 let entry1 = if ((p1t == "p"))
346352 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
347353 else if ((p1t == "s"))
348354 then invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
349355 else {
350356 let put1 = invoke(Address(fromBase58String(p1)), putOp1, [1, false], [AttachedPayment(assetIn, amountIn)])
351357 if ((put1 == put1))
352358 then {
353359 let wx_lp_asset_1 = getAssetBytes(wx_lp_asset_id_1)
354360 let lpBalance_1 = myBalance(wx_lp_asset_1)
355361 if ((lpBalance_1 == lpBalance_1))
356362 then invoke(Address(fromBase58String(p1)), getOp1, [a, 1], [AttachedPayment(wx_lp_asset_1, lpBalance_1)])
357363 else throw("Strict value is not equal to itself.")
358364 }
359365 else throw("Strict value is not equal to itself.")
360366 }
361367 if ((entry1 == entry1))
362368 then {
363369 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
364370 if ((nb == nb))
365371 then {
366372 let amount_bef_asset2 = myBalance(getAssetBytes(a2))
367373 if ((amount_bef_asset2 == amount_bef_asset2))
368374 then {
369375 let entry2 = if ((p2t == "p"))
370376 then invoke(Address(fromBase58String(p2)), "swap", [a2, 1], [AttachedPayment(getAssetBytes(a), nb)])
371377 else if ((p2t == "s"))
372378 then invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
373379 else {
374380 let put2 = invoke(Address(fromBase58String(p2)), putOp2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
375381 if ((put2 == put2))
376382 then {
377383 let wx_lp_asset_2 = getAssetBytes(wx_lp_asset_id_2)
378384 let lpBalance_2 = myBalance(wx_lp_asset_2)
379385 if ((lpBalance_2 == lpBalance_2))
380386 then invoke(Address(fromBase58String(p2)), getOp2, [a2, 1], [AttachedPayment(wx_lp_asset_2, lpBalance_2)])
381387 else throw("Strict value is not equal to itself.")
382388 }
383389 else throw("Strict value is not equal to itself.")
384390 }
385391 if ((entry2 == entry2))
386392 then {
387393 let amount_bef_base_asset = myBalance(assetIn)
388394 if ((amount_bef_base_asset == amount_bef_base_asset))
389395 then {
390396 let nb2 = (myBalance(getAssetBytes(a2)) - amount_bef_asset2)
391397 if ((nb2 == nb2))
392398 then {
393399 let entry3 = if ((p3t == "p"))
394400 then invoke(Address(fromBase58String(p3)), "swap", [getAssetString(assetIn), 1], [AttachedPayment(getAssetBytes(a2), nb2)])
395401 else if ((p3t == "s"))
396402 then invoke(Address(fromBase58String(p3)), "exchange", [1], [AttachedPayment(getAssetBytes(a2), nb2)])
397403 else {
398404 let put3 = invoke(Address(fromBase58String(p3)), putOp3, [1, false], [AttachedPayment(getAssetBytes(a2), nb2)])
399405 if ((put3 == put3))
400406 then {
401407 let wx_lp_asset_3 = getAssetBytes(wx_lp_asset_id_3)
402408 let lpBalance_3 = myBalance(wx_lp_asset_3)
403409 if ((lpBalance_3 == lpBalance_3))
404410 then invoke(Address(fromBase58String(p3)), getOp3, [getAssetString(assetIn), 1], [AttachedPayment(wx_lp_asset_3, lpBalance_3)])
405411 else throw("Strict value is not equal to itself.")
406412 }
407413 else throw("Strict value is not equal to itself.")
408414 }
409415 if ((entry3 == entry3))
410416 then {
411417 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
412418 if ((nb3 == nb3))
413419 then if ((nb3 > min))
414- then [ScriptTransfer(i.caller, nb3, assetIn)]
420+ then {
421+ let hujabra = (nb3 - amountIn)
422+ let retu = amountIn
423+[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
424+ }
415425 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
416426 else throw("Strict value is not equal to itself.")
417427 }
418428 else throw("Strict value is not equal to itself.")
419429 }
420430 else throw("Strict value is not equal to itself.")
421431 }
422432 else throw("Strict value is not equal to itself.")
423433 }
424434 else throw("Strict value is not equal to itself.")
425435 }
426436 else throw("Strict value is not equal to itself.")
427437 }
428438 else throw("Strict value is not equal to itself.")
429439 }
430440 else throw("Strict value is not equal to itself.")
431441 }
432442 else throw("Strict value is not equal to itself.")
433443 }
434444 }
435445
436446
437447
438448 @Callable(i)
439449 func alligator_REX_is_coming (a,a2,p1,p1t,wx_lp_asset_id_1,is_stable_1,p2,p2t,wx_lp_asset_id_2,is_stable_2,p3,p3t,min,wx_lp_asset_id_3,is_stable_3) = {
440450 let callerPbk = toBase58String(i.callerPublicKey)
441451 if (!(vip(callerPbk)))
442452 then throw("No-no-no, upd vip list or go away")
443453 else {
444454 let pmt = i.payments[0]
445455 let assetIn = getAssetId(pmt.assetId)
446456 let amountIn = value(pmt.amount)
447457 let amount_bef_asset1 = myBalance(getAssetBytes(a))
448458 if ((amount_bef_asset1 == amount_bef_asset1))
449459 then {
450460 let putOp1 = if (is_stable_1)
451461 then "putOneTknV2"
452462 else "putOneTkn"
453463 let getOp1 = if (is_stable_1)
454464 then "getOneTknV2"
455465 else "getOneTkn"
456466 let putOp2 = if (is_stable_2)
457467 then "putOneTknV2"
458468 else "putOneTkn"
459469 let getOp2 = if (is_stable_2)
460470 then "getOneTknV2"
461471 else "getOneTkn"
462472 let putOp3 = if (is_stable_3)
463473 then "putOneTknV2"
464474 else "putOneTkn"
465475 let getOp3 = if (is_stable_3)
466476 then "getOneTknV2"
467477 else "getOneTkn"
468478 let entry1 = if ((p1t == "p"))
469479 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
470480 else if ((p1t == "s"))
471481 then invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
472482 else {
473483 let put1 = invoke(Address(fromBase58String(p1)), putOp1, [1, false], [AttachedPayment(assetIn, amountIn)])
474484 if ((put1 == put1))
475485 then {
476486 let wx_lp_asset_1 = getAssetBytes(wx_lp_asset_id_1)
477487 let lpBalance_1 = myBalance(wx_lp_asset_1)
478488 if ((lpBalance_1 == lpBalance_1))
479489 then invoke(Address(fromBase58String(p1)), getOp1, [a, 1], [AttachedPayment(wx_lp_asset_1, lpBalance_1)])
480490 else throw("Strict value is not equal to itself.")
481491 }
482492 else throw("Strict value is not equal to itself.")
483493 }
484494 if ((entry1 == entry1))
485495 then {
486496 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
487497 if ((nb == nb))
488498 then {
489499 let amount_bef_asset2 = myBalance(getAssetBytes(a2))
490500 if ((amount_bef_asset2 == amount_bef_asset2))
491501 then {
492502 let entry2 = if ((p2t == "p"))
493503 then invoke(Address(fromBase58String(p2)), "swap", [a2, 1], [AttachedPayment(getAssetBytes(a), nb)])
494504 else if ((p2t == "s"))
495505 then invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
496506 else {
497507 let put2 = invoke(Address(fromBase58String(p2)), putOp2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
498508 if ((put2 == put2))
499509 then {
500510 let wx_lp_asset_2 = getAssetBytes(wx_lp_asset_id_2)
501511 let lpBalance_2 = myBalance(wx_lp_asset_2)
502512 if ((lpBalance_2 == lpBalance_2))
503513 then invoke(Address(fromBase58String(p2)), getOp2, [a2, 1], [AttachedPayment(wx_lp_asset_2, lpBalance_2)])
504514 else throw("Strict value is not equal to itself.")
505515 }
506516 else throw("Strict value is not equal to itself.")
507517 }
508518 if ((entry2 == entry2))
509519 then {
510520 let amount_bef_base_asset = myBalance(assetIn)
511521 if ((amount_bef_base_asset == amount_bef_base_asset))
512522 then {
513523 let nb2 = (myBalance(getAssetBytes(a2)) - amount_bef_asset2)
514524 if ((nb2 == nb2))
515525 then {
516526 let entry3 = if ((p3t == "p"))
517527 then invoke(Address(fromBase58String(p3)), "swap", [getAssetString(assetIn), 1], [AttachedPayment(getAssetBytes(a2), nb2)])
518528 else if ((p3t == "s"))
519529 then invoke(Address(fromBase58String(p3)), "exchange", [1], [AttachedPayment(getAssetBytes(a2), nb2)])
520530 else {
521531 let put3 = invoke(Address(fromBase58String(p3)), putOp3, [1, false], [AttachedPayment(getAssetBytes(a2), nb2)])
522532 if ((put3 == put3))
523533 then {
524534 let wx_lp_asset_3 = getAssetBytes(wx_lp_asset_id_3)
525535 let lpBalance_3 = myBalance(wx_lp_asset_3)
526536 if ((lpBalance_3 == lpBalance_3))
527537 then invoke(Address(fromBase58String(p3)), getOp3, [getAssetString(assetIn), 1], [AttachedPayment(wx_lp_asset_3, lpBalance_3)])
528538 else throw("Strict value is not equal to itself.")
529539 }
530540 else throw("Strict value is not equal to itself.")
531541 }
532542 if ((entry3 == entry3))
533543 then {
534544 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
535545 if ((nb3 == nb3))
536546 then if ((nb3 > min))
537547 then [ScriptTransfer(i.caller, nb3, assetIn)]
538548 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
539549 else throw("Strict value is not equal to itself.")
540550 }
541551 else throw("Strict value is not equal to itself.")
542552 }
543553 else throw("Strict value is not equal to itself.")
544554 }
545555 else throw("Strict value is not equal to itself.")
546556 }
547557 else throw("Strict value is not equal to itself.")
548558 }
549559 else throw("Strict value is not equal to itself.")
550560 }
551561 else throw("Strict value is not equal to itself.")
552562 }
553563 else throw("Strict value is not equal to itself.")
554564 }
555565 else throw("Strict value is not equal to itself.")
556566 }
557567 }
558568
559569
560570 @Verifier(tx)
561571 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
562572

github/deemru/w8io/3ef1775 
78.63 ms