tx · FWjFzaTYQK8Ew7QAkPCADjRj5SaXR9LBpjgK6X3Qj7F6

3PBeerh759eA1eGFuw77RowaZfZNohzJzvz:  -0.01600000 Waves

2023.03.09 01:23 [3547211] smart account 3PBeerh759eA1eGFuw77RowaZfZNohzJzvz > SELF 0.00000000 Waves

{ "type": 13, "id": "FWjFzaTYQK8Ew7QAkPCADjRj5SaXR9LBpjgK6X3Qj7F6", "fee": 1600000, "feeAssetId": null, "timestamp": 1678314277416, "version": 2, "chainId": 87, "sender": "3PBeerh759eA1eGFuw77RowaZfZNohzJzvz", "senderPublicKey": "Fw5NUe1f5xvDWNgCRm1CuYRnJGm2JqeSjqEBioaPvwaR", "proofs": [ "2in1LREnvCoYP9QnmQ58xardEduFDzaqp7nFM49CKr2vCGeC2awbXHHQFHoeZZiYB723YHMri4K9jQJeDc6Ck7VN" ], "script": "base64:BgJaCAISCQoHCAEICAgIBBIJCgcICAgICAgBEg0KCwgICAgIBAgIAQgEEgsKCQgICAgICAgIARIRCg8ICAgICAQICAgECAgBCAQSEQoPCAgICAgECAgIBAgIAQgEDgAKcnVsZXJfdGVzdAIsQmd4cENtNHd4Ylc4U0tMUEtabmY0S1UyRDZaVTI5b3Y4TWdacmthU0FxcFkABXJ1bGVyAiw3ek5VSkJWb1BNQkNSc3RQM1IxQXZ4aHhyTjUxU1FrbjVCTWkyaUo5Y2lBZAAGcnVsZXIyAiw5ZmU2N2V3enh0YUxvemVQWjJVM1NHNzFaUUZ5R0xBWFdtbW1IUkVwRmVNQwAGcnVsZXIzAixGZU1YNmhRYVJLc0xza2k3N3hWSEhER1JrajlWdUp6bVAyTUFDYkFXRGpESwAGcnVsZXI0AiwzUFNLN2I2Yk1mMWdCRHZqSFJiR1E5ekdjNjhVaXJlcUJqMmV1YlZpMXE1cgAGcnVsZXI1Aiw2NnJDdjlkZmRvdXFRM1NSRzlYcktuUmlGbU1id2taUWdtaFMxZnRuQ3RxbQAGcnVsZXI2AixGZU1YNmhRYVJLc0xza2k3N3hWSEhER1JrajlWdUp6bVAyTUFDYkFXRGpESwAKYWJyYWNhZGJyYQIsOXdGalR4NHJLNlp4ZkhhM3o2NUJIaFA2QTdna1pMaW94VnJENHAyRnJqam4BA3ZpcAEDa2trAwMDAwMDCQAAAgUDa2trBQVydWxlcgYJAAACBQNra2sFBnJ1bGVyMgYJAAACBQNra2sFBnJ1bGVyMwYJAAACBQNra2sFBnJ1bGVyNAYJAAACBQNra2sFBnJ1bGVyNQYJAAACBQNra2sFBnJ1bGVyNgYHAQpnZXRBc3NldElkAQNwbXQEByRtYXRjaDAFA3BtdAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFwBQckbWF0Y2gwBQNwbXQFBHVuaXQBDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBDWdldEFzc2V0Qnl0ZXMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEJbXlCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAPAHAgUEdGhpcwUBYggJAO8HAQUEdGhpcwlhdmFpbGFibGUBDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAYBaQEEZmFrZQcEYV9pbgZhbW91bnQFYV9vdXQCcG8FcG9fdHkOd3hfbHBfYXNzZXRfaWQJaXNfc3RhYmxlBAdhc3NldEluCQENZ2V0QXNzZXRCeXRlcwEFBGFfaW4ECGFtb3VudEluBQZhbW91bnQEBXB1dE9wAwUJaXNfc3RhYmxlAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAVnZXRPcAMFCWlzX3N0YWJsZQILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQUYW1vdW50X2JlZl9hc3NldF9vdXQJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFBWFfb3V0AwkAAAIFFGFtb3VudF9iZWZfYXNzZXRfb3V0BRRhbW91bnRfYmVmX2Fzc2V0X291dAQGZW50cnkxAwkAAAIFBXBvX3R5AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwbwIEc3dhcAkAzAgCBQVhX291dAkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQVwb190eQIBcwkA/AcECQEHQWRkcmVzcwEJANkEAQUCcG8CCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsBANwdXQJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnBvBQVwdXRPcAkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwdXQFA3B1dAQLd3hfbHBfYXNzZXQJAQ1nZXRBc3NldEJ5dGVzAQUOd3hfbHBfYXNzZXRfaWQECWxwQmFsYW5jZQkBCW15QmFsYW5jZQEFC3d4X2xwX2Fzc2V0AwkAAAIFCWxwQmFsYW5jZQUJbHBCYWxhbmNlCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwbwUFZ2V0T3AJAMwIAgUFYV9vdXQJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFC3d4X2xwX2Fzc2V0BQlscEJhbGFuY2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQWYW1vdW50X2FmdGVyX2Fzc2V0X291dAkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUFYV9vdXQDCQAAAgUWYW1vdW50X2FmdGVyX2Fzc2V0X291dAUWYW1vdW50X2FmdGVyX2Fzc2V0X291dAQEcmVzdQkAZQIFFmFtb3VudF9hZnRlcl9hc3NldF9vdXQFFGFtb3VudF9iZWZfYXNzZXRfb3V0CQACAQkApAMBBQRyZXN1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXRyYWRlBwFhAmFvAnAxA3AxdAJwMgNwMnQDbWluBAljYWxsZXJQYmsJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBCQEDdmlwAQUJY2FsbGVyUGJrCQACAQIITm8tbm8tbm8EA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldEluCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQECGFtb3VudEluCQEFdmFsdWUBCAUDcG10BmFtb3VudAQRYW1vdW50X2JlZl9hc3NldDEJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAWEDCQAAAgURYW1vdW50X2JlZl9hc3NldDEFEWFtb3VudF9iZWZfYXNzZXQxBAZlbnRyeTEDCQAAAgUDcDF0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIEc3dhcAkAzAgCBQFhCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SW4FCGFtb3VudEluBQNuaWwDCQAAAgUGZW50cnkxBQZlbnRyeTEEAm5iCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUBYQURYW1vdW50X2JlZl9hc3NldDEDCQAAAgUCbmIFAm5iBBVhbW91bnRfYmVmX2Jhc2VfYXNzZXQJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAmFvAwkAAAIFFWFtb3VudF9iZWZfYmFzZV9hc3NldAUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0BAZlbnRyeTIDCQAAAgUDcDJ0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIEc3dhcAkAzAgCBQJhbwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAMJAAACBQZlbnRyeTIFBmVudHJ5MgQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYW8FFWFtb3VudF9iZWZfYmFzZV9hc3NldAMJAAACBQNuYjIFA25iMgMJAGYCBQNuYjIFA21pbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFA25iMgkBDWdldEFzc2V0Qnl0ZXMBBQJhbwUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBywgb3V0OiAJAKQDAQUDbmIyAgcsIG1pbjogCQCkAwEFA21pbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQd0cmFkZV93CwFhAmFvAnAxA3AxdBB3eF9scF9hc3NldF9pZF8xC2lzX3N0YWJsZV8xAnAyA3AydANtaW4Qd3hfbHBfYXNzZXRfaWRfMgtpc19zdGFibGVfMgQJY2FsbGVyUGJrCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQMJAQEhAQkBA3ZpcAEFCWNhbGxlclBiawkAAgECCE5vLW5vLW5vBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJbgkBCmdldEFzc2V0SWQBCAUDcG10B2Fzc2V0SWQECGFtb3VudEluCQEFdmFsdWUBCAUDcG10BmFtb3VudAQRYW1vdW50X2JlZl9hc3NldDEJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAWEDCQAAAgURYW1vdW50X2JlZl9hc3NldDEFEWFtb3VudF9iZWZfYXNzZXQxBAZwdXRPcDEDBQtpc19zdGFibGVfMQILcHV0T25lVGtuVjICCXB1dE9uZVRrbgQGZ2V0T3AxAwULaXNfc3RhYmxlXzECC2dldE9uZVRrblYyAglnZXRPbmVUa24EBnB1dE9wMgMFC2lzX3N0YWJsZV8yAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAZnZXRPcDIDBQtpc19zdGFibGVfMgILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQGZW50cnkxAwkAAAIFA3AxdAIBcAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDECBHN3YXAJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwMXQCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAQDcHV0CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQUGcHV0T3AxCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsAwkAAAIFA3B1dAUDcHV0BA13eF9scF9hc3NldF8xCQENZ2V0QXNzZXRCeXRlcwEFEHd4X2xwX2Fzc2V0X2lkXzEEC2xwQmFsYW5jZV8xCQEJbXlCYWxhbmNlAQUNd3hfbHBfYXNzZXRfMQMJAAACBQtscEJhbGFuY2VfMQULbHBCYWxhbmNlXzEJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxBQZnZXRPcDEJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMQULbHBCYWxhbmNlXzEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQCbmIJAGUCCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhBRFhbW91bnRfYmVmX2Fzc2V0MQMJAAACBQJuYgUCbmIEFWFtb3VudF9iZWZfYmFzZV9hc3NldAkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYW8DCQAAAgUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0BRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQEBmVudHJ5MgMJAAACBQNwMnQCAXAJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAyAgRzd2FwCQDMCAIFAmFvCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcDJ0AgFzCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAQDcHV0CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgUGcHV0T3AyCQDMCAIAAQkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcHV0BQNwdXQEDXd4X2xwX2Fzc2V0XzIJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMgQLbHBCYWxhbmNlXzIJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8yAwkAAAIFC2xwQmFsYW5jZV8yBQtscEJhbGFuY2VfMgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBmdldE9wMgkAzAgCBQJhbwkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMgULbHBCYWxhbmNlXzIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTIFBmVudHJ5MgQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYW8FFWFtb3VudF9iZWZfYmFzZV9hc3NldAMJAAACBQNuYjIFA25iMgMJAGYCBQNuYjIFA21pbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFA25iMgkBDWdldEFzc2V0Qnl0ZXMBBQJhbwUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBywgb3V0OiAJAKQDAQUDbmIyAgcsIG1pbjogCQCkAwEFA21pbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQl0cmlwdHJhZGUJAWECYTICcDEDcDF0AnAyA3AydAJwMwNwM3QDbWluBAljYWxsZXJQYmsJANgEAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBCQEDdmlwAQUJY2FsbGVyUGJrCQACAQIITm8tbm8tbm8EA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAdhc3NldEluCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQECGFtb3VudEluCQEFdmFsdWUBCAUDcG10BmFtb3VudAQRYW1vdW50X2JlZl9hc3NldDEJAQlteUJhbGFuY2UBCQENZ2V0QXNzZXRCeXRlcwEFAWEDCQAAAgURYW1vdW50X2JlZl9hc3NldDEFEWFtb3VudF9iZWZfYXNzZXQxBAZlbnRyeTEDCQAAAgUDcDF0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIEc3dhcAkAzAgCBQFhCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldEluBQhhbW91bnRJbgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMQIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SW4FCGFtb3VudEluBQNuaWwDCQAAAgUGZW50cnkxBQZlbnRyeTEEAm5iCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUBYQURYW1vdW50X2JlZl9hc3NldDEDCQAAAgUCbmIFAm5iBBFhbW91bnRfYmVmX2Fzc2V0MgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIDCQAAAgURYW1vdW50X2JlZl9hc3NldDIFEWFtb3VudF9iZWZfYXNzZXQyBAZlbnRyeTIDCQAAAgUDcDJ0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIEc3dhcAkAzAgCBQJhMgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAMJAAACBQZlbnRyeTIFBmVudHJ5MgQVYW1vdW50X2JlZl9iYXNlX2Fzc2V0CQEJbXlCYWxhbmNlAQUHYXNzZXRJbgMJAAACBRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQFFWFtb3VudF9iZWZfYmFzZV9hc3NldAQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFEWFtb3VudF9iZWZfYXNzZXQyAwkAAAIFA25iMgUDbmIyBAZlbnRyeTMDCQAAAgUDcDN0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDMCCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAMJAAACBQZlbnRyeTMFBmVudHJ5MwQDbmIzCQBlAgkBCW15QmFsYW5jZQEFB2Fzc2V0SW4FFWFtb3VudF9iZWZfYmFzZV9hc3NldAMJAAACBQNuYjMFA25iMwMJAGYCBQNuYjMFA21pbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFA25iMwUHYXNzZXRJbgUDbmlsCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgILT29vcHMsIGluOiAJAKQDAQUIYW1vdW50SW4CBSwgMTogCQCkAwEFAm5iAgUsIDI6IAkApAMBBQNuYjICBywgb3V0OiAJAKQDAQUDbmIzAgcsIG1pbjogCQCkAwEFA21pbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt0cmlwdHJhZGVfdw8BYQJhMgJwMQNwMXQQd3hfbHBfYXNzZXRfaWRfMQtpc19zdGFibGVfMQJwMgNwMnQQd3hfbHBfYXNzZXRfaWRfMgtpc19zdGFibGVfMgJwMwNwM3QDbWluEHd4X2xwX2Fzc2V0X2lkXzMLaXNfc3RhYmxlXzMECWNhbGxlclBiawkA2AQBCAUBaQ9jYWxsZXJQdWJsaWNLZXkDCQEBIQEJAQN2aXABBQljYWxsZXJQYmsJAAIBAghOby1uby1ubwQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SW4JAQpnZXRBc3NldElkAQgFA3BtdAdhc3NldElkBAhhbW91bnRJbgkBBXZhbHVlAQgFA3BtdAZhbW91bnQEEWFtb3VudF9iZWZfYXNzZXQxCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhAwkAAAIFEWFtb3VudF9iZWZfYXNzZXQxBRFhbW91bnRfYmVmX2Fzc2V0MQQGcHV0T3AxAwULaXNfc3RhYmxlXzECC3B1dE9uZVRrblYyAglwdXRPbmVUa24EBmdldE9wMQMFC2lzX3N0YWJsZV8xAgtnZXRPbmVUa25WMgIJZ2V0T25lVGtuBAZwdXRPcDIDBQtpc19zdGFibGVfMgILcHV0T25lVGtuVjICCXB1dE9uZVRrbgQGZ2V0T3AyAwULaXNfc3RhYmxlXzICC2dldE9uZVRrblYyAglnZXRPbmVUa24EBnB1dE9wMwMFC2lzX3N0YWJsZV8zAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAZnZXRPcDMDBQtpc19zdGFibGVfMwILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQGZW50cnkxAwkAAAIFA3AxdAIBcAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDECBHN3YXAJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwMXQCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAQEcHV0MQkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDEFBnB1dE9wMQkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQRwdXQxBQRwdXQxBA13eF9scF9hc3NldF8xCQENZ2V0QXNzZXRCeXRlcwEFEHd4X2xwX2Fzc2V0X2lkXzEEC2xwQmFsYW5jZV8xCQEJbXlCYWxhbmNlAQUNd3hfbHBfYXNzZXRfMQMJAAACBQtscEJhbGFuY2VfMQULbHBCYWxhbmNlXzEJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxBQZnZXRPcDEJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMQULbHBCYWxhbmNlXzEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQCbmIJAGUCCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhBRFhbW91bnRfYmVmX2Fzc2V0MQMJAAACBQJuYgUCbmIEEWFtb3VudF9iZWZfYXNzZXQyCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQJhMgMJAAACBRFhbW91bnRfYmVmX2Fzc2V0MgURYW1vdW50X2JlZl9hc3NldDIEBmVudHJ5MgMJAAACBQNwMnQCAXAJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAyAgRzd2FwCQDMCAIFAmEyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcDJ0AgFzCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAQEcHV0MgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBnB1dE9wMgkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsAwkAAAIFBHB1dDIFBHB1dDIEDXd4X2xwX2Fzc2V0XzIJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMgQLbHBCYWxhbmNlXzIJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8yAwkAAAIFC2xwQmFsYW5jZV8yBQtscEJhbGFuY2VfMgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBmdldE9wMgkAzAgCBQJhMgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMgULbHBCYWxhbmNlXzIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTIFBmVudHJ5MgQVYW1vdW50X2JlZl9iYXNlX2Fzc2V0CQEJbXlCYWxhbmNlAQUHYXNzZXRJbgMJAAACBRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQFFWFtb3VudF9iZWZfYmFzZV9hc3NldAQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFEWFtb3VudF9iZWZfYXNzZXQyAwkAAAIFA25iMgUDbmIyBAZlbnRyeTMDCQAAAgUDcDN0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAMJAAACBQNwM3QCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQJhMgUDbmIyBQNuaWwEBHB1dDMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzBQZwdXRPcDMJAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFA25iMgUDbmlsAwkAAAIFBHB1dDMFBHB1dDMEDXd4X2xwX2Fzc2V0XzMJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMwQLbHBCYWxhbmNlXzMJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8zAwkAAAIFC2xwQmFsYW5jZV8zBQtscEJhbGFuY2VfMwkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDMFBmdldE9wMwkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ13eF9scF9hc3NldF8zBQtscEJhbGFuY2VfMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBmVudHJ5MwUGZW50cnkzBANuYjMJAGUCCQEJbXlCYWxhbmNlAQUHYXNzZXRJbgUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0AwkAAAIFA25iMwUDbmIzAwkAZgIFA25iMwUDbWluCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUDbmIzBQdhc3NldEluBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBSwgMjogCQCkAwEFA25iMgIHLCBvdXQ6IAkApAMBBQNuYjMCBywgbWluOiAJAKQDAQUDbWluCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF2FsbGlnYXRvcl9SRVhfaXNfY29taW5nDwFhAmEyAnAxA3AxdBB3eF9scF9hc3NldF9pZF8xC2lzX3N0YWJsZV8xAnAyA3AydBB3eF9scF9hc3NldF9pZF8yC2lzX3N0YWJsZV8yAnAzA3AzdANtaW4Qd3hfbHBfYXNzZXRfaWRfMwtpc19zdGFibGVfMwQJY2FsbGVyUGJrCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQMJAQEhAQkBA3ZpcAEFCWNhbGxlclBiawkAAgECIU5vLW5vLW5vLCB1cGQgdmlwIGxpc3Qgb3IgZ28gYXdheQQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SW4JAQpnZXRBc3NldElkAQgFA3BtdAdhc3NldElkBAhhbW91bnRJbgkBBXZhbHVlAQgFA3BtdAZhbW91bnQEEWFtb3VudF9iZWZfYXNzZXQxCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhAwkAAAIFEWFtb3VudF9iZWZfYXNzZXQxBRFhbW91bnRfYmVmX2Fzc2V0MQQGcHV0T3AxAwULaXNfc3RhYmxlXzECC3B1dE9uZVRrblYyAglwdXRPbmVUa24EBmdldE9wMQMFC2lzX3N0YWJsZV8xAgtnZXRPbmVUa25WMgIJZ2V0T25lVGtuBAZwdXRPcDIDBQtpc19zdGFibGVfMgILcHV0T25lVGtuVjICCXB1dE9uZVRrbgQGZ2V0T3AyAwULaXNfc3RhYmxlXzICC2dldE9uZVRrblYyAglnZXRPbmVUa24EBnB1dE9wMwMFC2lzX3N0YWJsZV8zAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuBAZnZXRPcDMDBQtpc19zdGFibGVfMwILZ2V0T25lVGtuVjICCWdldE9uZVRrbgQGZW50cnkxAwkAAAIFA3AxdAIBcAkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDECBHN3YXAJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQNwMXQCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAQEcHV0MQkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDEFBnB1dE9wMQkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUHYXNzZXRJbgUIYW1vdW50SW4FA25pbAMJAAACBQRwdXQxBQRwdXQxBA13eF9scF9hc3NldF8xCQENZ2V0QXNzZXRCeXRlcwEFEHd4X2xwX2Fzc2V0X2lkXzEEC2xwQmFsYW5jZV8xCQEJbXlCYWxhbmNlAQUNd3hfbHBfYXNzZXRfMQMJAAACBQtscEJhbGFuY2VfMQULbHBCYWxhbmNlXzEJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAxBQZnZXRPcDEJAMwIAgUBYQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMQULbHBCYWxhbmNlXzEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTEFBmVudHJ5MQQCbmIJAGUCCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQFhBRFhbW91bnRfYmVmX2Fzc2V0MQMJAAACBQJuYgUCbmIEEWFtb3VudF9iZWZfYXNzZXQyCQEJbXlCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQJhMgMJAAACBRFhbW91bnRfYmVmX2Fzc2V0MgURYW1vdW50X2JlZl9hc3NldDIEBmVudHJ5MgMJAAACBQNwMnQCAXAJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAyAgRzd2FwCQDMCAIFAmEyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAWEFAm5iBQNuaWwDCQAAAgUDcDJ0AgFzCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUBYQUCbmIFA25pbAQEcHV0MgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBnB1dE9wMgkAzAgCAAEJAMwIAgcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQFhBQJuYgUDbmlsAwkAAAIFBHB1dDIFBHB1dDIEDXd4X2xwX2Fzc2V0XzIJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMgQLbHBCYWxhbmNlXzIJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8yAwkAAAIFC2xwQmFsYW5jZV8yBQtscEJhbGFuY2VfMgkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDIFBmdldE9wMgkAzAgCBQJhMgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUNd3hfbHBfYXNzZXRfMgULbHBCYWxhbmNlXzIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQZlbnRyeTIFBmVudHJ5MgQVYW1vdW50X2JlZl9iYXNlX2Fzc2V0CQEJbXlCYWxhbmNlAQUHYXNzZXRJbgMJAAACBRVhbW91bnRfYmVmX2Jhc2VfYXNzZXQFFWFtb3VudF9iZWZfYmFzZV9hc3NldAQDbmIyCQBlAgkBCW15QmFsYW5jZQEJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFEWFtb3VudF9iZWZfYXNzZXQyAwkAAAIFA25iMgUDbmIyBAZlbnRyeTMDCQAAAgUDcDN0AgFwCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQJwMwIEc3dhcAkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQENZ2V0QXNzZXRCeXRlcwEFAmEyBQNuYjIFA25pbAMJAAACBQNwM3QCAXMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDWdldEFzc2V0Qnl0ZXMBBQJhMgUDbmIyBQNuaWwEBHB1dDMJAPwHBAkBB0FkZHJlc3MBCQDZBAEFAnAzBQZwdXRPcDMJAMwIAgABCQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUCYTIFA25iMgUDbmlsAwkAAAIFBHB1dDMFBHB1dDMEDXd4X2xwX2Fzc2V0XzMJAQ1nZXRBc3NldEJ5dGVzAQUQd3hfbHBfYXNzZXRfaWRfMwQLbHBCYWxhbmNlXzMJAQlteUJhbGFuY2UBBQ13eF9scF9hc3NldF8zAwkAAAIFC2xwQmFsYW5jZV8zBQtscEJhbGFuY2VfMwkA/AcECQEHQWRkcmVzcwEJANkEAQUCcDMFBmdldE9wMwkAzAgCCQEOZ2V0QXNzZXRTdHJpbmcBBQdhc3NldEluCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ13eF9scF9hc3NldF8zBQtscEJhbGFuY2VfMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBmVudHJ5MwUGZW50cnkzBANuYjMJAGUCCQEJbXlCYWxhbmNlAQUHYXNzZXRJbgUVYW1vdW50X2JlZl9iYXNlX2Fzc2V0AwkAAAIFA25iMwUDbmIzAwkAZgIFA25iMwUDbWluCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUDbmIzBQdhc3NldEluBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPb29wcywgaW46IAkApAMBBQhhbW91bnRJbgIFLCAxOiAJAKQDAQUCbmICBSwgMjogCQCkAwEFA25iMgIHLCBvdXQ6IAkApAMBBQNuYjMCBywgbWluOiAJAKQDAQUDbWluCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleTaFW1k=", "height": 3547211, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9khcGcKbVZBTyuWjNqQnNUcWM6mrNoodvr5VBGiQLAVy Next: FfzFZyj5kmL7Uma3nDuCt4xfii6hUe8m39FQu8iZKRPP Diff:
OldNewDifferences
230230 let nb2 = (myBalance(getAssetBytes(ao)) - amount_bef_base_asset)
231231 if ((nb2 == nb2))
232232 then if ((nb2 > min))
233- then {
234- let hujabra = (nb2 - amountIn)
235- let retu = amountIn
236-[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
237- }
233+ then [ScriptTransfer(i.caller, nb2, getAssetBytes(ao))]
238234 else throw(((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", out: ") + toString(nb2)) + ", min: ") + toString(min)))
239235 else throw("Strict value is not equal to itself.")
240236 }
417413 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
418414 if ((nb3 == nb3))
419415 then if ((nb3 > min))
420- then {
421- let hujabra = (nb3 - amountIn)
422- let retu = amountIn
423-[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
424- }
416+ then [ScriptTransfer(i.caller, nb3, assetIn)]
425417 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
426418 else throw("Strict value is not equal to itself.")
427419 }
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"
1717
1818 let abracadbra = "9wFjTx4rK6ZxfHa3z65BHhP6A7gkZLioxVrD4p2Frjjn"
1919
2020 func vip (kkk) = if (if (if (if (if (if ((kkk == ruler))
2121 then true
2222 else (kkk == ruler2))
2323 then true
2424 else (kkk == ruler3))
2525 then true
2626 else (kkk == ruler4))
2727 then true
2828 else (kkk == ruler5))
2929 then true
3030 else (kkk == ruler6))
3131 then true
3232 else false
3333
3434
3535 func getAssetId (pmt) = match pmt {
3636 case p: ByteVector =>
3737 pmt
3838 case _ =>
3939 unit
4040 }
4141
4242
4343 func getAssetString (assetId) = match assetId {
4444 case b: ByteVector =>
4545 toBase58String(b)
4646 case _ =>
4747 "WAVES"
4848 }
4949
5050
5151 func getAssetBytes (assetId) = if ((assetId == "WAVES"))
5252 then unit
5353 else fromBase58String(assetId)
5454
5555
5656 func myBalance (assetId) = match assetId {
5757 case b: ByteVector =>
5858 assetBalance(this, b)
5959 case _ =>
6060 wavesBalance(this).available
6161 }
6262
6363
6464 func getAccBalance (assetId) = if ((assetId == "WAVES"))
6565 then wavesBalance(this).available
6666 else assetBalance(this, fromBase58String(assetId))
6767
6868
6969 @Callable(i)
7070 func fake (a_in,amount,a_out,po,po_ty,wx_lp_asset_id,is_stable) = {
7171 let assetIn = getAssetBytes(a_in)
7272 let amountIn = amount
7373 let putOp = if (is_stable)
7474 then "putOneTknV2"
7575 else "putOneTkn"
7676 let getOp = if (is_stable)
7777 then "getOneTknV2"
7878 else "getOneTkn"
7979 let amount_bef_asset_out = myBalance(getAssetBytes(a_out))
8080 if ((amount_bef_asset_out == amount_bef_asset_out))
8181 then {
8282 let entry1 = if ((po_ty == "p"))
8383 then invoke(Address(fromBase58String(po)), "swap", [a_out, 1], [AttachedPayment(assetIn, amountIn)])
8484 else if ((po_ty == "s"))
8585 then invoke(Address(fromBase58String(po)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
8686 else {
8787 let put = invoke(Address(fromBase58String(po)), putOp, [1, false], [AttachedPayment(assetIn, amountIn)])
8888 if ((put == put))
8989 then {
9090 let wx_lp_asset = getAssetBytes(wx_lp_asset_id)
9191 let lpBalance = myBalance(wx_lp_asset)
9292 if ((lpBalance == lpBalance))
9393 then invoke(Address(fromBase58String(po)), getOp, [a_out, 1], [AttachedPayment(wx_lp_asset, lpBalance)])
9494 else throw("Strict value is not equal to itself.")
9595 }
9696 else throw("Strict value is not equal to itself.")
9797 }
9898 if ((entry1 == entry1))
9999 then {
100100 let amount_after_asset_out = myBalance(getAssetBytes(a_out))
101101 if ((amount_after_asset_out == amount_after_asset_out))
102102 then {
103103 let resu = (amount_after_asset_out - amount_bef_asset_out)
104104 throw(toString(resu))
105105 }
106106 else throw("Strict value is not equal to itself.")
107107 }
108108 else throw("Strict value is not equal to itself.")
109109 }
110110 else throw("Strict value is not equal to itself.")
111111 }
112112
113113
114114
115115 @Callable(i)
116116 func trade (a,ao,p1,p1t,p2,p2t,min) = {
117117 let callerPbk = toBase58String(i.callerPublicKey)
118118 if (!(vip(callerPbk)))
119119 then throw("No-no-no")
120120 else {
121121 let pmt = i.payments[0]
122122 let assetIn = value(pmt.assetId)
123123 let amountIn = value(pmt.amount)
124124 let amount_bef_asset1 = myBalance(getAssetBytes(a))
125125 if ((amount_bef_asset1 == amount_bef_asset1))
126126 then {
127127 let entry1 = if ((p1t == "p"))
128128 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
129129 else invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
130130 if ((entry1 == entry1))
131131 then {
132132 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
133133 if ((nb == nb))
134134 then {
135135 let amount_bef_base_asset = myBalance(getAssetBytes(ao))
136136 if ((amount_bef_base_asset == amount_bef_base_asset))
137137 then {
138138 let entry2 = if ((p2t == "p"))
139139 then invoke(Address(fromBase58String(p2)), "swap", [ao, 1], [AttachedPayment(getAssetBytes(a), nb)])
140140 else invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
141141 if ((entry2 == entry2))
142142 then {
143143 let nb2 = (myBalance(getAssetBytes(ao)) - amount_bef_base_asset)
144144 if ((nb2 == nb2))
145145 then if ((nb2 > min))
146146 then [ScriptTransfer(i.caller, nb2, getAssetBytes(ao))]
147147 else throw(((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", out: ") + toString(nb2)) + ", min: ") + toString(min)))
148148 else throw("Strict value is not equal to itself.")
149149 }
150150 else throw("Strict value is not equal to itself.")
151151 }
152152 else throw("Strict value is not equal to itself.")
153153 }
154154 else throw("Strict value is not equal to itself.")
155155 }
156156 else throw("Strict value is not equal to itself.")
157157 }
158158 else throw("Strict value is not equal to itself.")
159159 }
160160 }
161161
162162
163163
164164 @Callable(i)
165165 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) = {
166166 let callerPbk = toBase58String(i.callerPublicKey)
167167 if (!(vip(callerPbk)))
168168 then throw("No-no-no")
169169 else {
170170 let pmt = i.payments[0]
171171 let assetIn = getAssetId(pmt.assetId)
172172 let amountIn = value(pmt.amount)
173173 let amount_bef_asset1 = myBalance(getAssetBytes(a))
174174 if ((amount_bef_asset1 == amount_bef_asset1))
175175 then {
176176 let putOp1 = if (is_stable_1)
177177 then "putOneTknV2"
178178 else "putOneTkn"
179179 let getOp1 = if (is_stable_1)
180180 then "getOneTknV2"
181181 else "getOneTkn"
182182 let putOp2 = if (is_stable_2)
183183 then "putOneTknV2"
184184 else "putOneTkn"
185185 let getOp2 = if (is_stable_2)
186186 then "getOneTknV2"
187187 else "getOneTkn"
188188 let entry1 = if ((p1t == "p"))
189189 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
190190 else if ((p1t == "s"))
191191 then invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
192192 else {
193193 let put = invoke(Address(fromBase58String(p1)), putOp1, [1, false], [AttachedPayment(assetIn, amountIn)])
194194 if ((put == put))
195195 then {
196196 let wx_lp_asset_1 = getAssetBytes(wx_lp_asset_id_1)
197197 let lpBalance_1 = myBalance(wx_lp_asset_1)
198198 if ((lpBalance_1 == lpBalance_1))
199199 then invoke(Address(fromBase58String(p1)), getOp1, [a, 1], [AttachedPayment(wx_lp_asset_1, lpBalance_1)])
200200 else throw("Strict value is not equal to itself.")
201201 }
202202 else throw("Strict value is not equal to itself.")
203203 }
204204 if ((entry1 == entry1))
205205 then {
206206 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
207207 if ((nb == nb))
208208 then {
209209 let amount_bef_base_asset = myBalance(getAssetBytes(ao))
210210 if ((amount_bef_base_asset == amount_bef_base_asset))
211211 then {
212212 let entry2 = if ((p2t == "p"))
213213 then invoke(Address(fromBase58String(p2)), "swap", [ao, 1], [AttachedPayment(getAssetBytes(a), nb)])
214214 else if ((p2t == "s"))
215215 then invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
216216 else {
217217 let put = invoke(Address(fromBase58String(p2)), putOp2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
218218 if ((put == put))
219219 then {
220220 let wx_lp_asset_2 = getAssetBytes(wx_lp_asset_id_2)
221221 let lpBalance_2 = myBalance(wx_lp_asset_2)
222222 if ((lpBalance_2 == lpBalance_2))
223223 then invoke(Address(fromBase58String(p2)), getOp2, [ao, 1], [AttachedPayment(wx_lp_asset_2, lpBalance_2)])
224224 else throw("Strict value is not equal to itself.")
225225 }
226226 else throw("Strict value is not equal to itself.")
227227 }
228228 if ((entry2 == entry2))
229229 then {
230230 let nb2 = (myBalance(getAssetBytes(ao)) - amount_bef_base_asset)
231231 if ((nb2 == nb2))
232232 then if ((nb2 > min))
233- then {
234- let hujabra = (nb2 - amountIn)
235- let retu = amountIn
236-[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
237- }
233+ then [ScriptTransfer(i.caller, nb2, getAssetBytes(ao))]
238234 else throw(((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", out: ") + toString(nb2)) + ", min: ") + toString(min)))
239235 else throw("Strict value is not equal to itself.")
240236 }
241237 else throw("Strict value is not equal to itself.")
242238 }
243239 else throw("Strict value is not equal to itself.")
244240 }
245241 else throw("Strict value is not equal to itself.")
246242 }
247243 else throw("Strict value is not equal to itself.")
248244 }
249245 else throw("Strict value is not equal to itself.")
250246 }
251247 }
252248
253249
254250
255251 @Callable(i)
256252 func triptrade (a,a2,p1,p1t,p2,p2t,p3,p3t,min) = {
257253 let callerPbk = toBase58String(i.callerPublicKey)
258254 if (!(vip(callerPbk)))
259255 then throw("No-no-no")
260256 else {
261257 let pmt = i.payments[0]
262258 let assetIn = value(pmt.assetId)
263259 let amountIn = value(pmt.amount)
264260 let amount_bef_asset1 = myBalance(getAssetBytes(a))
265261 if ((amount_bef_asset1 == amount_bef_asset1))
266262 then {
267263 let entry1 = if ((p1t == "p"))
268264 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
269265 else invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
270266 if ((entry1 == entry1))
271267 then {
272268 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
273269 if ((nb == nb))
274270 then {
275271 let amount_bef_asset2 = myBalance(getAssetBytes(a2))
276272 if ((amount_bef_asset2 == amount_bef_asset2))
277273 then {
278274 let entry2 = if ((p2t == "p"))
279275 then invoke(Address(fromBase58String(p2)), "swap", [a2, 1], [AttachedPayment(getAssetBytes(a), nb)])
280276 else invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
281277 if ((entry2 == entry2))
282278 then {
283279 let amount_bef_base_asset = myBalance(assetIn)
284280 if ((amount_bef_base_asset == amount_bef_base_asset))
285281 then {
286282 let nb2 = (myBalance(getAssetBytes(a2)) - amount_bef_asset2)
287283 if ((nb2 == nb2))
288284 then {
289285 let entry3 = if ((p3t == "p"))
290286 then invoke(Address(fromBase58String(p3)), "swap", [getAssetString(assetIn), 1], [AttachedPayment(getAssetBytes(a2), nb2)])
291287 else invoke(Address(fromBase58String(p3)), "exchange", [1], [AttachedPayment(getAssetBytes(a2), nb2)])
292288 if ((entry3 == entry3))
293289 then {
294290 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
295291 if ((nb3 == nb3))
296292 then if ((nb3 > min))
297293 then [ScriptTransfer(i.caller, nb3, assetIn)]
298294 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
299295 else throw("Strict value is not equal to itself.")
300296 }
301297 else throw("Strict value is not equal to itself.")
302298 }
303299 else throw("Strict value is not equal to itself.")
304300 }
305301 else throw("Strict value is not equal to itself.")
306302 }
307303 else throw("Strict value is not equal to itself.")
308304 }
309305 else throw("Strict value is not equal to itself.")
310306 }
311307 else throw("Strict value is not equal to itself.")
312308 }
313309 else throw("Strict value is not equal to itself.")
314310 }
315311 else throw("Strict value is not equal to itself.")
316312 }
317313 }
318314
319315
320316
321317 @Callable(i)
322318 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) = {
323319 let callerPbk = toBase58String(i.callerPublicKey)
324320 if (!(vip(callerPbk)))
325321 then throw("No-no-no")
326322 else {
327323 let pmt = i.payments[0]
328324 let assetIn = getAssetId(pmt.assetId)
329325 let amountIn = value(pmt.amount)
330326 let amount_bef_asset1 = myBalance(getAssetBytes(a))
331327 if ((amount_bef_asset1 == amount_bef_asset1))
332328 then {
333329 let putOp1 = if (is_stable_1)
334330 then "putOneTknV2"
335331 else "putOneTkn"
336332 let getOp1 = if (is_stable_1)
337333 then "getOneTknV2"
338334 else "getOneTkn"
339335 let putOp2 = if (is_stable_2)
340336 then "putOneTknV2"
341337 else "putOneTkn"
342338 let getOp2 = if (is_stable_2)
343339 then "getOneTknV2"
344340 else "getOneTkn"
345341 let putOp3 = if (is_stable_3)
346342 then "putOneTknV2"
347343 else "putOneTkn"
348344 let getOp3 = if (is_stable_3)
349345 then "getOneTknV2"
350346 else "getOneTkn"
351347 let entry1 = if ((p1t == "p"))
352348 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
353349 else if ((p1t == "s"))
354350 then invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
355351 else {
356352 let put1 = invoke(Address(fromBase58String(p1)), putOp1, [1, false], [AttachedPayment(assetIn, amountIn)])
357353 if ((put1 == put1))
358354 then {
359355 let wx_lp_asset_1 = getAssetBytes(wx_lp_asset_id_1)
360356 let lpBalance_1 = myBalance(wx_lp_asset_1)
361357 if ((lpBalance_1 == lpBalance_1))
362358 then invoke(Address(fromBase58String(p1)), getOp1, [a, 1], [AttachedPayment(wx_lp_asset_1, lpBalance_1)])
363359 else throw("Strict value is not equal to itself.")
364360 }
365361 else throw("Strict value is not equal to itself.")
366362 }
367363 if ((entry1 == entry1))
368364 then {
369365 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
370366 if ((nb == nb))
371367 then {
372368 let amount_bef_asset2 = myBalance(getAssetBytes(a2))
373369 if ((amount_bef_asset2 == amount_bef_asset2))
374370 then {
375371 let entry2 = if ((p2t == "p"))
376372 then invoke(Address(fromBase58String(p2)), "swap", [a2, 1], [AttachedPayment(getAssetBytes(a), nb)])
377373 else if ((p2t == "s"))
378374 then invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
379375 else {
380376 let put2 = invoke(Address(fromBase58String(p2)), putOp2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
381377 if ((put2 == put2))
382378 then {
383379 let wx_lp_asset_2 = getAssetBytes(wx_lp_asset_id_2)
384380 let lpBalance_2 = myBalance(wx_lp_asset_2)
385381 if ((lpBalance_2 == lpBalance_2))
386382 then invoke(Address(fromBase58String(p2)), getOp2, [a2, 1], [AttachedPayment(wx_lp_asset_2, lpBalance_2)])
387383 else throw("Strict value is not equal to itself.")
388384 }
389385 else throw("Strict value is not equal to itself.")
390386 }
391387 if ((entry2 == entry2))
392388 then {
393389 let amount_bef_base_asset = myBalance(assetIn)
394390 if ((amount_bef_base_asset == amount_bef_base_asset))
395391 then {
396392 let nb2 = (myBalance(getAssetBytes(a2)) - amount_bef_asset2)
397393 if ((nb2 == nb2))
398394 then {
399395 let entry3 = if ((p3t == "p"))
400396 then invoke(Address(fromBase58String(p3)), "swap", [getAssetString(assetIn), 1], [AttachedPayment(getAssetBytes(a2), nb2)])
401397 else if ((p3t == "s"))
402398 then invoke(Address(fromBase58String(p3)), "exchange", [1], [AttachedPayment(getAssetBytes(a2), nb2)])
403399 else {
404400 let put3 = invoke(Address(fromBase58String(p3)), putOp3, [1, false], [AttachedPayment(getAssetBytes(a2), nb2)])
405401 if ((put3 == put3))
406402 then {
407403 let wx_lp_asset_3 = getAssetBytes(wx_lp_asset_id_3)
408404 let lpBalance_3 = myBalance(wx_lp_asset_3)
409405 if ((lpBalance_3 == lpBalance_3))
410406 then invoke(Address(fromBase58String(p3)), getOp3, [getAssetString(assetIn), 1], [AttachedPayment(wx_lp_asset_3, lpBalance_3)])
411407 else throw("Strict value is not equal to itself.")
412408 }
413409 else throw("Strict value is not equal to itself.")
414410 }
415411 if ((entry3 == entry3))
416412 then {
417413 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
418414 if ((nb3 == nb3))
419415 then if ((nb3 > min))
420- then {
421- let hujabra = (nb3 - amountIn)
422- let retu = amountIn
423-[ScriptTransfer(i.caller, retu, assetIn), ScriptTransfer(addressFromPublicKey(toBytes(abracadbra)), hujabra, assetIn)]
424- }
416+ then [ScriptTransfer(i.caller, nb3, assetIn)]
425417 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
426418 else throw("Strict value is not equal to itself.")
427419 }
428420 else throw("Strict value is not equal to itself.")
429421 }
430422 else throw("Strict value is not equal to itself.")
431423 }
432424 else throw("Strict value is not equal to itself.")
433425 }
434426 else throw("Strict value is not equal to itself.")
435427 }
436428 else throw("Strict value is not equal to itself.")
437429 }
438430 else throw("Strict value is not equal to itself.")
439431 }
440432 else throw("Strict value is not equal to itself.")
441433 }
442434 else throw("Strict value is not equal to itself.")
443435 }
444436 }
445437
446438
447439
448440 @Callable(i)
449441 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) = {
450442 let callerPbk = toBase58String(i.callerPublicKey)
451443 if (!(vip(callerPbk)))
452444 then throw("No-no-no, upd vip list or go away")
453445 else {
454446 let pmt = i.payments[0]
455447 let assetIn = getAssetId(pmt.assetId)
456448 let amountIn = value(pmt.amount)
457449 let amount_bef_asset1 = myBalance(getAssetBytes(a))
458450 if ((amount_bef_asset1 == amount_bef_asset1))
459451 then {
460452 let putOp1 = if (is_stable_1)
461453 then "putOneTknV2"
462454 else "putOneTkn"
463455 let getOp1 = if (is_stable_1)
464456 then "getOneTknV2"
465457 else "getOneTkn"
466458 let putOp2 = if (is_stable_2)
467459 then "putOneTknV2"
468460 else "putOneTkn"
469461 let getOp2 = if (is_stable_2)
470462 then "getOneTknV2"
471463 else "getOneTkn"
472464 let putOp3 = if (is_stable_3)
473465 then "putOneTknV2"
474466 else "putOneTkn"
475467 let getOp3 = if (is_stable_3)
476468 then "getOneTknV2"
477469 else "getOneTkn"
478470 let entry1 = if ((p1t == "p"))
479471 then invoke(Address(fromBase58String(p1)), "swap", [a, 1], [AttachedPayment(assetIn, amountIn)])
480472 else if ((p1t == "s"))
481473 then invoke(Address(fromBase58String(p1)), "exchange", [1], [AttachedPayment(assetIn, amountIn)])
482474 else {
483475 let put1 = invoke(Address(fromBase58String(p1)), putOp1, [1, false], [AttachedPayment(assetIn, amountIn)])
484476 if ((put1 == put1))
485477 then {
486478 let wx_lp_asset_1 = getAssetBytes(wx_lp_asset_id_1)
487479 let lpBalance_1 = myBalance(wx_lp_asset_1)
488480 if ((lpBalance_1 == lpBalance_1))
489481 then invoke(Address(fromBase58String(p1)), getOp1, [a, 1], [AttachedPayment(wx_lp_asset_1, lpBalance_1)])
490482 else throw("Strict value is not equal to itself.")
491483 }
492484 else throw("Strict value is not equal to itself.")
493485 }
494486 if ((entry1 == entry1))
495487 then {
496488 let nb = (myBalance(getAssetBytes(a)) - amount_bef_asset1)
497489 if ((nb == nb))
498490 then {
499491 let amount_bef_asset2 = myBalance(getAssetBytes(a2))
500492 if ((amount_bef_asset2 == amount_bef_asset2))
501493 then {
502494 let entry2 = if ((p2t == "p"))
503495 then invoke(Address(fromBase58String(p2)), "swap", [a2, 1], [AttachedPayment(getAssetBytes(a), nb)])
504496 else if ((p2t == "s"))
505497 then invoke(Address(fromBase58String(p2)), "exchange", [1], [AttachedPayment(getAssetBytes(a), nb)])
506498 else {
507499 let put2 = invoke(Address(fromBase58String(p2)), putOp2, [1, false], [AttachedPayment(getAssetBytes(a), nb)])
508500 if ((put2 == put2))
509501 then {
510502 let wx_lp_asset_2 = getAssetBytes(wx_lp_asset_id_2)
511503 let lpBalance_2 = myBalance(wx_lp_asset_2)
512504 if ((lpBalance_2 == lpBalance_2))
513505 then invoke(Address(fromBase58String(p2)), getOp2, [a2, 1], [AttachedPayment(wx_lp_asset_2, lpBalance_2)])
514506 else throw("Strict value is not equal to itself.")
515507 }
516508 else throw("Strict value is not equal to itself.")
517509 }
518510 if ((entry2 == entry2))
519511 then {
520512 let amount_bef_base_asset = myBalance(assetIn)
521513 if ((amount_bef_base_asset == amount_bef_base_asset))
522514 then {
523515 let nb2 = (myBalance(getAssetBytes(a2)) - amount_bef_asset2)
524516 if ((nb2 == nb2))
525517 then {
526518 let entry3 = if ((p3t == "p"))
527519 then invoke(Address(fromBase58String(p3)), "swap", [getAssetString(assetIn), 1], [AttachedPayment(getAssetBytes(a2), nb2)])
528520 else if ((p3t == "s"))
529521 then invoke(Address(fromBase58String(p3)), "exchange", [1], [AttachedPayment(getAssetBytes(a2), nb2)])
530522 else {
531523 let put3 = invoke(Address(fromBase58String(p3)), putOp3, [1, false], [AttachedPayment(getAssetBytes(a2), nb2)])
532524 if ((put3 == put3))
533525 then {
534526 let wx_lp_asset_3 = getAssetBytes(wx_lp_asset_id_3)
535527 let lpBalance_3 = myBalance(wx_lp_asset_3)
536528 if ((lpBalance_3 == lpBalance_3))
537529 then invoke(Address(fromBase58String(p3)), getOp3, [getAssetString(assetIn), 1], [AttachedPayment(wx_lp_asset_3, lpBalance_3)])
538530 else throw("Strict value is not equal to itself.")
539531 }
540532 else throw("Strict value is not equal to itself.")
541533 }
542534 if ((entry3 == entry3))
543535 then {
544536 let nb3 = (myBalance(assetIn) - amount_bef_base_asset)
545537 if ((nb3 == nb3))
546538 then if ((nb3 > min))
547539 then [ScriptTransfer(i.caller, nb3, assetIn)]
548540 else throw(((((((((("Ooops, in: " + toString(amountIn)) + ", 1: ") + toString(nb)) + ", 2: ") + toString(nb2)) + ", out: ") + toString(nb3)) + ", min: ") + toString(min)))
549541 else throw("Strict value is not equal to itself.")
550542 }
551543 else throw("Strict value is not equal to itself.")
552544 }
553545 else throw("Strict value is not equal to itself.")
554546 }
555547 else throw("Strict value is not equal to itself.")
556548 }
557549 else throw("Strict value is not equal to itself.")
558550 }
559551 else throw("Strict value is not equal to itself.")
560552 }
561553 else throw("Strict value is not equal to itself.")
562554 }
563555 else throw("Strict value is not equal to itself.")
564556 }
565557 else throw("Strict value is not equal to itself.")
566558 }
567559 }
568560
569561
570562 @Verifier(tx)
571563 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
572564

github/deemru/w8io/3ef1775 
73.87 ms