tx · 8fDPDeWMp6dV65kqM4o7gtiMPZFsAg8nwDfBrNTwKv4j

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03400000 Waves

2022.09.14 17:49 [2228914] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "8fDPDeWMp6dV65kqM4o7gtiMPZFsAg8nwDfBrNTwKv4j", "fee": 3400000, "feeAssetId": null, "timestamp": 1663166988521, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "3dP7xNoYRbP83DWWsegBqQgLnykk8VbR8pz9pErUpTZQ96DYsHT5VYyKDNhfJHE6Nu85v2jNA4hXoCR9Uett2bf" ], "script": "base64:BgKcAQgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIECgIIARIECgIIARIECgIBARIDCgEBEgYKBAEBCAESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFMABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAp6ZXJvQmlnSW50CQC2AgEAAAAJb25lQmlnSW50CQC2AgEAAQAKc2xpcHBhZ2U0RAkAtgIBCQBlAgUGc2NhbGU4CQBpAgkAaAIFBnNjYWxlOAABBQZzY2FsZTgABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEGlkeEZhY3RTbGlwcENudHIABwARaWR4RmFjdEd3eFJld0NudHIACgAFZGVsYXkCCSVzX19kZWxheQECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgEFbGdvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RHZXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBWxzb3RjAQZjYWxsZXIJALkJAgkAzAgCAhclcyVzX19sYXN0UHV0T25lVGtuQ2FsbAkAzAgCBQZjYWxsZXIFA25pbAUDU0VQAQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAANZmFjdG9yeUNvbmZpZwkBA2dmYwAAD3N0YWtpbmdDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUNZmFjdG9yeUNvbmZpZwUPaWR4RmFjdFN0YWtDbnRyAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwAPc2xpcGFnZUNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQ1mYWN0b3J5Q29uZmlnBRBpZHhGYWN0U2xpcHBDbnRyAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwALZ3d4Q29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFDWZhY3RvcnlDb25maWcFEWlkeEZhY3RHd3hSZXdDbnRyAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQRjcGJpAghwckFtdFgxOAhhbUFtdFgxOAkAvAIDBQhwckFtdFgxOAUHc2NhbGUxOAUIYW1BbXRYMTgBA3ZhZAMCQTECQTIIc2xpcHBhZ2UEBGRpZmYJALwCAwkAuAICBQJBMQUCQTIFDHNjYWxlOEJpZ0ludAUCQTIEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUCQTEJAMwIAgUCQTIFA25pbAECdmQDAkQxAkQwBHNscGcEBGRpZmYJALwCAwUCRDAFDHNjYWxlOEJpZ0ludAUCRDEEBGZhaWwJAL8CAgUEc2xwZwUEZGlmZgMDBQRmYWlsBgkAvwICBQJEMAUCRDEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAkQwAgEgCQCmAwEFAkQxAgEgCQCmAwEFBGRpZmYCASAJAKYDAQUEc2xwZwUEZmFpbAEDcGNwBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQECdDECBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBAnQxAgUFcHJBbXQFCnByQXNzZXREY20JAQRjcGJpAgUKcHJBc0FtdFgxOAULYW10QXNBbXRYMTgBCmNhbGNQcmljZXMDBWFtQW10BXByQW10BWxwQW10BANjZmcJAQNncGMABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20FBWFtQW10BQVwckFtdAQIYW1BbXRYMTgJAQJ0MQIFBWFtQW10BQhhbXRBc0RjbQQIcHJBbXRYMTgJAQJ0MQIFBXByQW10BQdwckFzRGNtBAhscEFtdFgxOAkBAnQxAgUFbHBBbXQFBnNjYWxlOAQNbHBQckluQW1Bc1gxOAkBBGNwYmkCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQRjcGJpAgUIcHJBbXRYMTgFCGxwQW10WDE4CQDMCAIFCHByaWNlWDE4CQDMCAIFDWxwUHJJbkFtQXNYMTgJAMwIAgUNbHBQckluUHJBc1gxOAUDbmlsAQ9jYWxjdWxhdGVQcmljZXMDBWFtQW10BXByQW10BWxwQW10BAFwCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAMwIAgkBAmYxAgkAkQMCBQFwAAAFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAACBQZzY2FsZTgFA25pbAEDZWdvBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdscEVtaXNzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUEbHBJZAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQRscElkBQpwbXRBc3NldElkCQACAQIPV3JvbmcgcG10IGFzc2V0BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFBXByRGNtBAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQECdDECBQhwbXRMcEFtdAUGc2NhbGU4BApscEVtaXNzWDE4CQECdDECBQdscEVtaXNzBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgECG91dEFtQW10CQECZjECBQtvdXRBbUFtdFgxOAUFYW1EY20ECG91dFByQW10CQECZjECBQtvdXRQckFtdFgxOAUFcHJEY20EBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dEFtQW10AwkAAAIFBGFtSWQCBVdBVkVTBQR1bml0CQDZBAEFBGFtSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dFByQW10AwkAAAIFBHBySWQCBVdBVkVTBQR1bml0CQDZBAEFBHBySWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUIb3V0QW1BbXQFCG91dFByQW10BQhwbXRMcEFtdAUIY3VyUHJpY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQUDbmlsCQCcCgoFCG91dEFtQW10BQhvdXRQckFtdAUEYW1JZAUEcHJJZAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFB2xwRW1pc3MFC2N1clByaWNlWDE4BQNzdHMFBXN0YXRlAQNlcG8NBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAt1c2VyQWRkcmVzcwZpc0V2YWwGZW1pdExwCmlzT25lQXNzZXQQdmFsaWRhdGVTbGlwcGFnZQZwbXRBbXQFcG10SWQEA2NmZwkBA2dwYwAEBGxwSWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHYW1JZFN0cgkAkQMCBQNjZmcFCWlkeEFtQXNJZAQHcHJJZFN0cgkAkQMCBQNjZmcFCWlkeFByQXNJZAQJaW5BbUlkU3RyCQCRAwIFA2NmZwULaWR4SUFtdEFzSWQECWluUHJJZFN0cgkAkQMCBQNjZmcFDWlkeElQcmljZUFzSWQEBmFtdERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20ECHByaWNlRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QEBGxwRW0ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUEbHBJZAIIV3IgbHAgYXMIcXVhbnRpdHkECWFtQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHYW1JZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUHaW5BbUFtdAQJcHJCYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdwcklkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQdpblByQW10BA9pbkFtQXNzZXRBbXRYMTgJAQJ0MQIFB2luQW1BbXQFBmFtdERjbQQPaW5QckFzc2V0QW10WDE4CQECdDECBQdpblByQW10BQhwcmljZURjbQQMdXNlclByaWNlWDE4CQEEY3BiaQIFD2luUHJBc3NldEFtdFgxOAUPaW5BbUFzc2V0QW10WDE4BAxhbUJhbGFuY2VYMTgJAQJ0MQIFCWFtQmFsYW5jZQUGYW10RGNtBAxwckJhbGFuY2VYMTgJAQJ0MQIFCXByQmFsYW5jZQUIcHJpY2VEY20EAXIDCQAAAgUEbHBFbQAABAtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAQLc2xpcHBhZ2VYMTgFCnplcm9CaWdJbnQECGxwQW10WDE4CQB2BgkAuQICBQ9pbkFtQXNzZXRBbXRYMTgFD2luUHJBc3NldEFtdFgxOAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgUPaW5BbUFzc2V0QW10WDE4BQZhbXREY20JAQJmMQIFD2luUHJBc3NldEFtdFgxOAUIcHJpY2VEY20JAQRjcGJpAgkAtwICBQxwckJhbGFuY2VYMTgFD2luUHJBc3NldEFtdFgxOAkAtwICBQxhbUJhbGFuY2VYMTgFD2luQW1Bc3NldEFtdFgxOAULc2xpcHBhZ2VYMTgEC2N1clByaWNlWDE4CQEEY3BiaQIFDHByQmFsYW5jZVgxOAUMYW1CYWxhbmNlWDE4BA9zbGlwcGFnZVJlYWxYMTgJALwCAwkBA2FicwEJALgCAgULY3VyUHJpY2VYMTgFDHVzZXJQcmljZVgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEC3NsaXBwYWdlWDE4CQECdDECBQhzbGlwcGFnZQUGc2NhbGU4AwMDBRB2YWxpZGF0ZVNsaXBwYWdlCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAcJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTYwODMxNjQyOAMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTYwODMxNjQyOAJfMQQKd3JpdGVQckFtdAgFDSR0MDE2MDgzMTY0MjgCXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AKBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldBB2YWxpZGF0ZVNsaXBwYWdlBnBtdEFtdAVwbXRJZAQBcgkBA2Vwbw0FBHR4SWQFCHNsaXBwYWdlCAkBBXZhbHVlAQUHYW1Bc1BtdAZhbW91bnQICQEFdmFsdWUBBQdhbUFzUG10B2Fzc2V0SWQICQEFdmFsdWUBBQdwckFzUG10BmFtb3VudAgJAQV2YWx1ZQEFB3ByQXNQbXQHYXNzZXRJZAUGY2FsbGVyBwUGZW1pdExwBQppc09uZUFzc2V0BRB2YWxpZGF0ZVNsaXBwYWdlBQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyARNlc3RpbWF0ZVB1dE9uZVRrblYyBAZwbXRBbXQKcG10QXNzZXRJZAt1c2VyQWRkcmVzcwR0eElkBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDIwNzUxMjEyMDADCQAAAgUEdHhJZAIACQCUCgIFCWFtQmFsYW5jZQUJcHJCYWxhbmNlAwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQlhbUJhbGFuY2UFBnBtdEFtdAUJcHJCYWxhbmNlAwkAAAIFCnBtdEFzc2V0SWQFBHBySWQDCQBmAgUGcG10QW10BQlwckJhbGFuY2UJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFCWFtQmFsYW5jZQkAZQIFCXByQmFsYW5jZQUGcG10QW10CQACAQIQd3JvbmcgcG10QXNzZXRJZAQMYW1CYWxhbmNlTm93CAUNJHQwMjA3NTEyMTIwMAJfMQQMcHJCYWxhbmNlTm93CAUNJHQwMjA3NTEyMTIwMAJfMgQNJHQwMjEyMDQyMTMzOAMJAAACBQpwbXRBc3NldElkBQRhbUlkCQCUCgIFDGFtQmFsYW5jZU5vdwUMcHJCYWxhbmNlTm93CQCUCgIFDHByQmFsYW5jZU5vdwUMYW1CYWxhbmNlTm93BBBhbUJhbGFuY2VGb3JDYWxjCAUNJHQwMjEyMDQyMTMzOAJfMQQQcHJCYWxhbmNlRm9yQ2FsYwgFDSR0MDIxMjA0MjEzMzgCXzIECnhQcmVjaXNpb24AAQQGcmVzdWx0CgABQAkA/AcEBQtnd3hDb250cmFjdAIMY2FsY1B1dFhPbmx5CQDMCAIJAKQDAQUGcG10QW10CQDMCAIJAKQDAQUQYW1CYWxhbmNlRm9yQ2FsYwkAzAgCCQCkAwEFEHByQmFsYW5jZUZvckNhbGMJAMwIAgIACQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgkApAMBBQp4UHJlY2lzaW9uCQDMCAIFBURjb252BQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQkA/AcEBQtnd3hDb250cmFjdAIMY2FsY1B1dFhPbmx5CQDMCAIJAKQDAQUGcG10QW10CQDMCAIJAKQDAQUQYW1CYWxhbmNlRm9yQ2FsYwkAzAgCCQCkAwEFEHByQmFsYW5jZUZvckNhbGMJAMwIAgIACQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgkApAMBBQp4UHJlY2lzaW9uCQDMCAIFBURjb252BQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQNJHQwMjE4MDcyMTkwMwMJAAACBQpwbXRBc3NldElkBQRhbUlkBQZyZXN1bHQJAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMQQLYW1Bc3NldFBhcnQIBQ0kdDAyMTgwNzIxOTAzAl8xBAtwckFzc2V0UGFydAgFDSR0MDIxODA3MjE5MDMCXzIEBmVzdFB1dAkBAmNwCgULdXNlckFkZHJlc3MFBHR4SWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFC2FtQXNzZXRQYXJ0CQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQtwckFzc2V0UGFydAAABgYHBQZwbXRBbXQFCnBtdEFzc2V0SWQEB2VzdGltTFAIBQZlc3RQdXQCXzIECWxwQXNzZXRJZAgFBmVzdFB1dAJfNwQFc3RhdGUIBQZlc3RQdXQCXzkEBmFtRGlmZggFBmVzdFB1dANfMTAEBnByRGlmZggFBmVzdFB1dANfMTEFBmVzdFB1dAEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yGgFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AKCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcGAAACAAQJZW1pdExwQW10CAUBZQJfMgQJbHBBc3NldElkCAUBZQJfNwQFc3RhdGUIBQFlAl85BAZhbURpZmYIBQFlA18xMAQGcHJEaWZmCAUBZQNfMTEEBGFtSWQIBQFlA18xMgQEcHJJZAgFAWUDXzEzBAFyCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAXIFAXIEAmVsBAckbWF0Y2gwBQFyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXB1dE9uZVRrbgULYW1Bc3NldFBhcnQLcHJBc3NldFBhcnQFb3V0THAIc2xpcHBhZ2UJYXV0b1N0YWtlBANjZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwURaWR4RmFjdEd3eFJld0NudHICC1dyIGd3eCBhZGRyBAdwb29sQ2ZnCQEDZ3BjAAQEYW1JZAkAkQMCBQdwb29sQ2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUHcG9vbENmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFDWlkeFByaWNlQXNEY20EBWFkZG9uCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQNhZGEAAgAEC3VzZXJBZGRyZXNzAwkAAAIFBWFkZG9uCQClCAEIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEDWFkZG9uQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBA2FkYQACCW5vIGFkZG9ucwIaYWRkb24gYWRkcmVzcyBpbiBub3QgdmFsaWQEBWNoZWNrCQD9BwQFDWFkZG9uQ29udHJhY3QCEmVuc3VyZUNhblB1dE9uZVRrbgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAMJAAACBQVjaGVjawUFY2hlY2sDAwMDCQBnAgAABQhzbGlwcGFnZQYJAGcCAAAFC2FtQXNzZXRQYXJ0BgkAZwIAAAULcHJBc3NldFBhcnQGCQBnAgAABQVvdXRMcAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQDCQBmAgCAreIEBQZwbXRBbXQJAAIBAg1Xcm9uZyBwbXQgYW10BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDI3Mjc2Mjc4NTIDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UGCQBmAgULYW1Bc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFCWFtQmFsYW5jZQUGcG10QW10BQlwckJhbGFuY2UJAGUCBQZwbXRBbXQFC2FtQXNzZXRQYXJ0BQtwckFzc2V0UGFydAAAAAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMDCQBmAgUGcG10QW10BQlwckJhbGFuY2UGCQBmAgULcHJBc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQZwbXRBbXQAAAAACQBlAgUGcG10QW10BQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNzI3NjI3ODUyAl8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNzI3NjI3ODUyAl8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNzI3NjI3ODUyAl8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjcyNzYyNzg1MgJfNAQMdmlydFN3YXBJblByCAUNJHQwMjcyNzYyNzg1MgJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI3Mjc2Mjc4NTICXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEEBmVzdFB1dAkBAmNwCgkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAULYW1Bc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFC3ByQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBgUGcG10QW10BQpwbXRBc3NldElkBAdlc3RpbUxQCAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBAlscENhbGNSZXMJAQN2YWQDCQC2AgEFB2VzdGltTFAJALYCAQUFb3V0THAJALYCAQUIc2xpcHBhZ2UECWVtaXRMcEFtdAkAoAMBCAUJbHBDYWxjUmVzAl8yBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtwdXRPbmVUa25WMgIMbWluT3V0QW1vdW50CWF1dG9TdGFrZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBAphbURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwULaWR4QW10QXNEY20ECnByRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBAt1c2VyQWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFBHRoaXMIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQDCQBmAgCAreIEBQZwbXRBbXQJAAIBAg1Xcm9uZyBwbXQgYW10BAFyCQETZXN0aW1hdGVQdXRPbmVUa25WMgQFBnBtdEFtdAUKcG10QXNzZXRJZAkApQgBBQt1c2VyQWRkcmVzcwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAdlc3RpbUxQCAUBcgJfMgQJbHBBc3NldElkCAUBcgJfNwQFc3RhdGUIBQFyAl85BAZhbURpZmYIBQFyA18xMAQGcHJEaWZmCAUBcgNfMTEECWVtaXRMcEFtdAMDCQBmAgUMbWluT3V0QW1vdW50AAAJAGYCBQxtaW5PdXRBbW91bnQFB2VzdGltTFAHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQxtaW5PdXRBbW91bnQFA25pbAIABQdlc3RpbUxQBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFD3NsaXBhZ2VDb250cmFjdAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFD3NsaXBhZ2VDb250cmFjdAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQ9zdGFraW5nQ29udHJhY3QCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQCUCgIJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyBQllbWl0THBBbXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcHV0T25lVGtuVjJSRUFET05MWQINcGF5bWVudEFtb3VudA5wYXltZW50QXNzZXRJZAQBcgkBE2VzdGltYXRlUHV0T25lVGtuVjIEBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAIAAgAEB2VzdGltTFAIBQFyAl8yBAlscEFzc2V0SWQIBQFyAl83BAVzdGF0ZQgFAXICXzkEBmFtRGlmZggFAXIDXzEwBAZwckRpZmYIBQFyA18xMQkAlAoCBQNuaWwFB2VzdGltTFABaQEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQINcGF5bWVudEFtb3VudA5wYXltZW50QXNzZXRJZAQKcG9vbENvbmZpZwkBA2dwYwAEBGFtSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBAFyCQETZXN0aW1hdGVQdXRPbmVUa25WMgQFDXBheW1lbnRBbW91bnQFDnBheW1lbnRBc3NldElkAgACAAQHZXN0aW1MUAgFAXICXzIECGN1clByaWNlCAUBcgJfMwQPbHBBc3NldEVtaXNzaW9uCAUBcgJfNgQJbHBBc3NldElkCAUBcgJfNwQNJHQwMzI1MTUzMjc5MAMJAAACBQ5wYXltZW50QXNzZXRJZAUEYW1JZAQQcHJpY2VBc3NldEFtb3VudAkAaAIFDXBheW1lbnRBbW91bnQFCGN1clByaWNlCQCUCgIFDXBheW1lbnRBbW91bnQFEHByaWNlQXNzZXRBbW91bnQEEWFtb3VudEFzc2V0QW1vdW50CQBpAgUNcGF5bWVudEFtb3VudAUIY3VyUHJpY2UJAJQKAgURYW1vdW50QXNzZXRBbW91bnQFDXBheW1lbnRBbW91bnQEEWFtb3VudEFzc2V0QW1vdW50CAUNJHQwMzI1MTUzMjc5MAJfMQQQcHJpY2VBc3NldEFtb3VudAgFDSR0MDMyNTE1MzI3OTACXzIECWxwQW10Qm90aAkAawMFD2xwQXNzZXRFbWlzc2lvbgUQcHJpY2VBc3NldEFtb3VudAUJcHJCYWxhbmNlBA9scEFzc2V0UHJpY2VPbmUDCQAAAgUOcGF5bWVudEFzc2V0SWQFBGFtSWQJAGkCBRFhbW91bnRBc3NldEFtb3VudAUHZXN0aW1MUAkAaQIFEHByaWNlQXNzZXRBbW91bnQFB2VzdGltTFAEEGxwQXNzZXRQcmljZUJvdGgJAGkCCQBkAgUQcHJpY2VBc3NldEFtb3VudAURYW1vdW50QXNzZXRBbW91bnQFCWxwQW10Qm90aAQFYm9udXMJAGkCCQBlAgUPbHBBc3NldFByaWNlT25lBRBscEFzc2V0UHJpY2VCb3RoBQ9scEFzc2V0UHJpY2VPbmUJAJQKAgUDbmlsBQ9scEFzc2V0UHJpY2VPbmUBaQEKcHV0Rm9yRnJlZQEHbWF4U2xwZwMJAGYCAAAFB21heFNscGcJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAZlc3RQdXQJAQJjcAoJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFB21heFNscGcHBwYAAAIACAUGZXN0UHV0Al85AWkBA2dldAAEAXIJAQJjZwEFAWkECW91dEFtdEFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQQBYgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFAWIFAWIFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2dldE9uZVRrblYyAgpvdXRBc3NldElkDG1pbk91dEFtb3VudAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBApwb29sQ29uZmlnCQEDZ3BjAAQEbHBJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAQKYW1EZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFC2lkeEFtdEFzRGNtBApwckRlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUNaWR4UHJpY2VBc0RjbQQKcG9vbFN0YXR1cwkAkQMCBQpwb29sQ29uZmlnBQlpZHhQb29sU3QEC3VzZXJBZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwgFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQDCQBmAgCAlOvcAwUGcG10QW10CQACAQINTWluIHBtdCAxMCBMUAQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBAh0b3RhbEdldAoAAUAJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQpvdXRBc3NldElkCQDMCAIFBnBtdEFtdAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFCm91dEFzc2V0SWQJAMwIAgUGcG10QW10BQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAt0b3RhbEFtb3VudAMDCQBmAgUMbWluT3V0QW1vdW50AAAJAGYCBQxtaW5PdXRBbW91bnQFCHRvdGFsR2V0BwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUMbWluT3V0QW1vdW50BQNuaWwCAAUIdG90YWxHZXQEDSR0MDM1NzI1MzU4MTIDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCBQt0b3RhbEFtb3VudAAACQCUCgIAAAULdG90YWxBbW91bnQEBW91dEFtCAUNJHQwMzU3MjUzNTgxMgJfMQQFb3V0UHIIBQ0kdDAzNTcyNTM1ODEyAl8yBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFCnByRGVjaW1hbHMJAQJ0MQIFCWFtQmFsYW5jZQUKYW1EZWNpbWFscwQFY3VyUHIJAQJmMQIFCGN1clByWDE4BQZzY2FsZTgEBXN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQt0b3RhbEFtb3VudAMJAAACBQpvdXRBc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQpvdXRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFBW91dEFtBQVvdXRQcgUGcG10QW10BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUFY3VyUHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBWN1clByBQNuaWwDCQAAAgUFc3RhdGUFBXN0YXRlBARidXJuCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUEYnVybgUEYnVybgkAlAoCBQVzdGF0ZQULdG90YWxBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETZ2V0T25lVGtuVjJSRUFET05MWQIKb3V0QXNzZXRJZA1scEFzc2V0QW1vdW50BApwb29sQ29uZmlnCQEDZ3BjAAQEbHBJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAQBcgkBA2VnbwQCAAUEbHBJZAUNbHBBc3NldEFtb3VudAUEdGhpcwQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDGFtQmFsYW5jZU5vdwkAZQIFCWFtQmFsYW5jZQUKZXN0aW1BbUFtdAQMcHJCYWxhbmNlTm93CQBlAgUJcHJCYWxhbmNlBQplc3RpbVByQW10BA0kdDAzNjkwNjM3MTc3AwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJUKAwUMcHJCYWxhbmNlTm93BQxhbUJhbGFuY2VOb3cFCmVzdGltUHJBbXQDCQAAAgUKb3V0QXNzZXRJZAUEcHJJZAkAlQoDBQxhbUJhbGFuY2VOb3cFDHByQmFsYW5jZU5vdwUKZXN0aW1BbUFtdAkAAgECEHdyb25nIG91dEFzc2V0SWQEFGFtb3VudEJhbGFuY2VGb3JTd2FwCAUNJHQwMzY5MDYzNzE3NwJfMQQTcHJpY2VCYWxhbmNlRm9yU3dhcAgFDSR0MDM2OTA2MzcxNzcCXzIEDGFtb3VudFRvU3dhcAgFDSR0MDM2OTA2MzcxNzcCXzMECnlQcmVjaXNpb24AAQQKZXhjaFJlc3VsdAoAAUAJAPwHBAULZ3d4Q29udHJhY3QCDGNhbGNTd2FwWFRvWQkAzAgCCQCkAwEFDGFtb3VudFRvU3dhcAkAzAgCCQCkAwEFFGFtb3VudEJhbGFuY2VGb3JTd2FwCQDMCAIJAKQDAQUTcHJpY2VCYWxhbmNlRm9yU3dhcAkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnlQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAULZ3d4Q29udHJhY3QCDGNhbGNTd2FwWFRvWQkAzAgCCQCkAwEFDGFtb3VudFRvU3dhcAkAzAgCCQCkAwEFFGFtb3VudEJhbGFuY2VGb3JTd2FwCQDMCAIJAKQDAQUTcHJpY2VCYWxhbmNlRm9yU3dhcAkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnlQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQECHRvdGFsR2V0CQBkAgUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQRhbUlkBQplc3RpbUFtQW10BQplc3RpbVByQW10CQCUCgIFA25pbAUIdG90YWxHZXQBaQEJZ2V0Tm9MZXNzAhJub0xlc3NUaGVuQW10QXNzZXQUbm9MZXNzVGhlblByaWNlQXNzZXQEAXIJAQJjZwEFAWkECG91dEFtQW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81AwkAZgIFEm5vTGVzc1RoZW5BbXRBc3NldAUIb3V0QW1BbXQJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUIb3V0QW1BbXQCAyA8IAkApAMBBRJub0xlc3NUaGVuQW10QXNzZXQDCQBmAgUUbm9MZXNzVGhlblByaWNlQXNzZXQFCG91dFByQW10CQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUIb3V0UHJBbXQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXVuc3Rha2VBbmRHZXQBBmFtb3VudAQNY2hlY2tQYXltZW50cwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFDWNoZWNrUGF5bWVudHMFDWNoZWNrUGF5bWVudHMEA2NmZwkBA2dwYwAECmZhY3RvcnlDZmcJAQNnZmMABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHc3Rha2luZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKZmFjdG9yeUNmZwUPaWR4RmFjdFN0YWtDbnRyAgpXciBzdCBhZGRyBAp1bnN0YWtlSW52CQD8BwQFB3N0YWtpbmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQlscEFzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCWxwQXNzZXRJZAUGYW1vdW50CAUBaQZjYWxsZXIEA3N0cwkBDXBhcnNlSW50VmFsdWUBCAUBcgJfOQQFc3RhdGUIBQFyA18xMAQBdgMDCQEDaWdzAAYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFA3N0cwYDCQAAAgUBdgUBdgQFYnVybkEJAPwHBAUDZmNhAgRidXJuCQDMCAIFBmFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFBWJ1cm5BBQVidXJuQQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETdW5zdGFrZUFuZEdldE9uZVRrbgQGYW1vdW50CW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlBA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYED291dEFtb3VudFJlc3VsdAoAAUAJAPwHBAUEdGhpcwILZ2V0T25lVGtuVjIJAMwIAgUJb3V0QW1vdW50CQDMCAIFCm91dEFzc2V0SWQJAMwIAgUIc2xpcHBhZ2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAECBQFAAgNJbnQFAUAFBHVuaXQDCQAAAgUPb3V0QW1vdW50UmVzdWx0BQ9vdXRBbW91bnRSZXN1bHQJAJQKAgUDbmlsBQ9vdXRBbW91bnRSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYWN0aXZhdGUCCGFtdEFzU3RyB3ByQXNTdHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkApQgBBQNmY2EJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQhhbXRBc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQECcGEABQdwckFzU3RyBQNuaWwCB3N1Y2Nlc3MBaQEEc2V0UwIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWsFAXYFA25pbAFpAQRzZXRJAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAXYFA25pbAFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQNncGMAAWkBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBB2Fzc2V0SWQJAJQKAgUDbmlsCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQBaQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMFYW1BbXQFcHJBbXQFbHBBbXQEAnByCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJwcgAACQDMCAIJAKYDAQkAkQMCBQJwcgABCQDMCAIJAKYDAQkAkQMCBQJwcgACBQNuaWwBaQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIDdmFsDHJlc1NjYWxlTXVsdAkAlAoCBQNuaWwJAQJmMQIJAKcDAQUDdmFsBQxyZXNTY2FsZU11bHQBaQEUdG9YMThXcmFwcGVyUkVBRE9OTFkCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAlAoCBQNuaWwJAKYDAQkBAnQxAgUHb3JpZ1ZhbAUNb3JpZ1NjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEEY3BiaQIJAKcDAQUIcHJBbXRYMTgJAKcDAQUIYW1BbXRYMTgBaQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAd1c3JBZGRyBmlzRXZhbAZlbWl0THAJAJQKAgUDbmlsCQEDZXBvDQUGdHhJZDU4BQhzbGlwcGFnZQUHaW5BbUFtdAUGaW5BbUlkBQdpblByQW10BQZpblBySWQFB3VzckFkZHIFBmlzRXZhbAUGZW1pdExwBgcAAAIAAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgHcG10QXNJZAhwbXRMcEFtdAd1c3JBZGRyBAFyCQEDZWdvBAUGdHhJZDU4BQdwbXRBc0lkBQhwbXRMcEFtdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHdXNyQWRkcgkAlAoCBQNuaWwJAJwKCggFAXICXzEIBQFyAl8yCAUBcgJfMwgFAXICXzQIBQFyAl81CAUBcgJfNggFAXICXzcJAKYDAQgFAXICXzgIBQFyAl85CAUBcgNfMTABAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJAQJtcAAECm9yZGVyVmFsaWQJAQNtb2EBBQVvcmRlcgQLc2VuZGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAAIBQVvcmRlcg9zZW5kZXJQdWJsaWNLZXkEDG1hdGNoZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUKbWF0Y2hlclB1YgMDAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQHBQxtYXRjaGVyVmFsaWQHBgkBA3RvZQMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDAEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFA2ZjYQkBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXmkyHSu", "height": 2228914, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FWRCYY4zue6snFDicJRebUw6dB8rWpyb7KNVM8TUAQR3 Next: 4XM7x2UoFYqjdbEK5qAuH3vromHThVdSG39uBJCAqx7L Diff:
OldNewDifferences
865865 let dF = cC._7
866866 let ew = if ((eu == bO))
867867 then {
868- let ex = fraction(et, bZ, a)
868+ let ex = (et * bZ)
869869 $Tuple2(et, ex)
870870 }
871871 else {
872- let ey = fraction(et, a, bZ)
872+ let ey = (et / bZ)
873873 $Tuple2(ey, et)
874874 }
875875 let ey = ew._1
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
2121
2222 let j = ""
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 let A = "%s__delay"
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6262
6363
6464 func H (I,J,K) = fraction(I, J, K)
6565
6666
6767 func L (F) = if ((d > F))
6868 then -(F)
6969 else F
7070
7171
7272 func M () = "%s__factoryContract"
7373
7474
7575 func N () = "%s__managerPublicKey"
7676
7777
7878 func O () = "%s__pendingManagerPublicKey"
7979
8080
8181 func P () = "%s%s__price__last"
8282
8383
8484 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8585
8686
8787 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
8888
8989
9090 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9191
9292
9393 func X () = "%s__amountAsset"
9494
9595
9696 func Y () = "%s__priceAsset"
9797
9898
9999 func Z () = "%s__amp"
100100
101101
102102 func aa () = "%s__addonAddr"
103103
104104
105105 func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
106106
107107
108108 func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109109
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129129 func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
132132 func ar (F) = {
133133 let as = F
134134 if ($isInstanceOf(as, "String"))
135135 then {
136136 let at = as
137137 at
138138 }
139139 else throw("fail cast to String")
140140 }
141141
142142
143143 func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
144144
145145
146146 func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147147
148148
149149 let ay = addressFromStringValue(au(this, M()))
150150
151151 let az = au(this, Z())
152152
153153 func aA () = valueOrElse(getBoolean(ay, al()), false)
154154
155155
156156 func aB () = fromBase58String(au(ay, af()))
157157
158158
159159 func aC () = {
160160 let aD = au(this, X())
161161 let aE = au(this, Y())
162162 let aF = ax(ay, aj(aE))
163163 let ah = ax(ay, aj(aD))
164164 split(au(ay, ag(toString(ah), toString(aF))), i)
165165 }
166166
167167
168168 func aG () = split(au(ay, ae()), i)
169169
170170
171171 let aH = aG()
172172
173173 let aI = valueOrErrorMessage(addressFromString(aH[x]), "Invalid staking contract address")
174174
175175 let aJ = valueOrErrorMessage(addressFromString(aH[y]), "Invalid slipage contract address")
176176
177177 let aK = valueOrErrorMessage(addressFromString(aH[z]), "Invalid gwx contract address")
178178
179179 func aL (aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV)], i)
180180
181181
182182 func aW (aX,aY,aZ,aP,aS,aT) = makeString(["%d%d%d%d%d%d", toString(aX), toString(aY), toString(aZ), toString(aP), toString(aS), toString(aT)], i)
183183
184184
185185 func ba (bb) = if ((bb == "WAVES"))
186186 then wavesBalance(this).available
187187 else assetBalance(this, fromBase58String(bb))
188188
189189
190190 func bc (bd,be) = fraction(bd, c, be)
191191
192192
193193 func bf (bg,bh,bi) = {
194194 let bj = fraction((bg - bh), b, bh)
195195 let bk = ((bi - L(bj)) > d)
196196 if (!(bk))
197197 then throw(("Big slpg: " + toString(bj)))
198198 else $Tuple2(bk, min([bg, bh]))
199199 }
200200
201201
202202 func bl (bm,bn,bo) = {
203203 let bj = fraction(bn, b, bm)
204204 let bp = (bo > bj)
205205 if (if (bp)
206206 then true
207207 else (bn > bm))
208208 then throw(((((((toString(bn) + " ") + toString(bm)) + " ") + toString(bj)) + " ") + toString(bo)))
209209 else bp
210210 }
211211
212212
213213 func bq (br,bs,bt,bu) = {
214214 let bv = B(bt, br)
215215 let bw = B(bu, bs)
216216 bc(bw, bv)
217217 }
218218
219219
220220 func bx (bt,bu,by) = {
221221 let bz = aC()
222222 let bA = parseIntValue(bz[t])
223223 let bB = parseIntValue(bz[u])
224224 let bC = bq(bA, bB, bt, bu)
225225 let be = B(bt, bA)
226226 let bd = B(bu, bB)
227227 let bD = B(by, a)
228228 let bE = bc(be, bD)
229229 let bF = bc(bd, bD)
230230 [bC, bE, bF]
231231 }
232232
233233
234234 func bG (bt,bu,by) = {
235235 let bH = bx(bt, bu, by)
236236 [E(bH[0], a), E(bH[1], a), E(bH[2], a)]
237237 }
238238
239239
240240 func bI (bJ,bK,bL,bM) = {
241241 let bz = aC()
242242 let bN = bz[q]
243243 let bO = bz[r]
244244 let bP = bz[s]
245245 let bQ = parseIntValue(bz[t])
246246 let bR = parseIntValue(bz[u])
247247 let bS = bz[p]
248248 let bT = valueOrErrorMessage(assetInfo(fromBase58String(bN)), "Wrong LP id").quantity
249249 if ((bN != bK))
250250 then throw("Wrong pmt asset")
251251 else {
252252 let bU = ba(bO)
253253 let bV = B(bU, bQ)
254254 let bW = ba(bP)
255255 let bX = B(bW, bR)
256256 let bY = bc(bX, bV)
257257 let bZ = E(bY, a)
258258 let ca = B(bL, a)
259259 let cb = B(bT, a)
260260 let cc = fraction(bV, ca, cb)
261261 let cd = fraction(bX, ca, cb)
262262 let ce = E(cc, bQ)
263263 let cf = E(cd, bR)
264264 let cg = if ((bJ == ""))
265265 then nil
266266 else [ScriptTransfer(bM, ce, if ((bO == "WAVES"))
267267 then unit
268268 else fromBase58String(bO)), ScriptTransfer(bM, cf, if ((bP == "WAVES"))
269269 then unit
270270 else fromBase58String(bP)), StringEntry(W(toString(bM), bJ), aW(ce, cf, bL, bZ, height, lastBlock.timestamp)), IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ)]
271271 $Tuple10(ce, cf, bO, bP, bU, bW, bT, bY, bS, cg)
272272 }
273273 }
274274
275275
276276 func ch (bJ,bi,ci,cj,ck,cl,bM,cm,cn,co,cp,cq,cr) = {
277277 let bz = aC()
278278 let bN = fromBase58String(bz[q])
279279 let cs = bz[r]
280280 let ct = bz[s]
281281 let cu = bz[v]
282282 let cv = bz[w]
283283 let cw = parseIntValue(bz[t])
284284 let cx = parseIntValue(bz[u])
285285 let bS = bz[p]
286286 let cy = valueOrErrorMessage(assetInfo(bN), "Wr lp as").quantity
287287 let bU = if (cm)
288288 then ba(cs)
289289 else if (if (co)
290290 then (cr == cs)
291291 else false)
292292 then (ba(cs) - cq)
293293 else if (co)
294294 then ba(cs)
295295 else (ba(cs) - ci)
296296 let bW = if (cm)
297297 then ba(ct)
298298 else if (if (co)
299299 then (cr == ct)
300300 else false)
301301 then (ba(ct) - cq)
302302 else if (co)
303303 then ba(ct)
304304 else (ba(ct) - ck)
305305 let cz = B(ci, cw)
306306 let cA = B(ck, cx)
307307 let cB = bc(cA, cz)
308308 let bV = B(bU, cw)
309309 let bX = B(bW, cx)
310310 let cC = if ((cy == 0))
311311 then {
312312 let bY = d
313313 let cD = d
314314 let bD = pow((cz * cA), 0, toBigInt(5), 1, 0, DOWN)
315315 $Tuple5(E(bD, a), E(cz, cw), E(cA, cx), bc((bX + cA), (bV + cz)), cD)
316316 }
317317 else {
318318 let bY = bc(bX, bV)
319319 let cE = fraction(L((bY - cB)), c, bY)
320320 let cD = B(bi, a)
321321 if (if (if (cp)
322322 then (bY != d)
323323 else false)
324324 then (cE > cD)
325325 else false)
326326 then throw(((("Price slippage " + toString(cE)) + " > ") + toString(cD)))
327327 else {
328328 let cF = B(cy, a)
329329 let cG = fraction(cz, bY, c)
330330 let cH = fraction(cA, c, bY)
331331 let cI = if ((cG > cA))
332332 then $Tuple2(cH, cA)
333333 else $Tuple2(cz, cG)
334334 let cJ = cI._1
335335 let cK = cI._2
336336 let bD = fraction(cF, cK, bX)
337337 $Tuple5(E(bD, a), E(cJ, cw), E(cK, cx), bY, cD)
338338 }
339339 }
340340 let cL = cC._1
341341 let cM = cC._2
342342 let cN = cC._3
343343 let bZ = E(cC._4, a)
344344 let cO = E(cC._5, a)
345345 if ((0 >= cL))
346346 then throw("LP <= 0")
347347 else {
348348 let cP = if (!(cn))
349349 then 0
350350 else cL
351351 let cQ = (ci - cM)
352352 let cR = (ck - cN)
353353 let cS = if (if (co)
354354 then (cr == cs)
355355 else false)
356356 then $Tuple2(cq, 0)
357357 else if (if (co)
358358 then (cr == ct)
359359 else false)
360360 then $Tuple2(0, cq)
361361 else $Tuple2(cM, cN)
362362 let cT = cS._1
363363 let cU = cS._2
364364 let cV = [IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ), StringEntry(T(bM, bJ), aL(cT, cU, cP, bZ, bi, cO, height, lastBlock.timestamp, cQ, cR))]
365365 $Tuple13(cL, cP, bZ, bU, bW, cy, bN, bS, cV, cQ, cR, cj, cl)
366366 }
367367 }
368368
369369
370370 func cW (cX) = {
371371 let bz = aC()
372372 let cY = bz[r]
373373 let cZ = bz[s]
374374 let bS = parseIntValue(bz[p])
375375 let bA = parseIntValue(bz[t])
376376 let bB = parseIntValue(bz[u])
377377 let da = ba(cY)
378378 let db = ba(cZ)
379379 let bY = if ((cX.orderType == Buy))
380380 then bq(bA, bB, (da + cX.amount), db)
381381 else bq(bA, bB, (da - cX.amount), db)
382382 let bZ = E(bY, a)
383383 if (if (if (aA())
384384 then true
385385 else (bS == m))
386386 then true
387387 else (bS == n))
388388 then throw("Admin blocked")
389389 else {
390390 let dc = cX.assetPair.amountAsset
391391 let dd = if ((dc == unit))
392392 then "WAVES"
393393 else toBase58String(value(dc))
394394 let de = cX.assetPair.priceAsset
395395 let df = if ((de == unit))
396396 then "WAVES"
397397 else toBase58String(value(de))
398398 if (if ((dd != cY))
399399 then true
400400 else (df != cZ))
401401 then throw("Wr assets")
402402 else {
403403 let dg = cX.price
404404 let cx = fraction(a, bB, bA)
405405 let dh = H(dg, a, cx)
406406 let di = if ((cX.orderType == Buy))
407407 then (bZ >= dh)
408408 else (dh >= bZ)
409409 true
410410 }
411411 }
412412 }
413413
414414
415415 func dj (dk) = if ((size(dk.payments) != 1))
416416 then throw("1 pmnt exp")
417417 else {
418418 let dl = value(dk.payments[0])
419419 let bK = value(dl.assetId)
420420 let cq = dl.amount
421421 let cC = bI(toBase58String(dk.transactionId), toBase58String(bK), cq, dk.caller)
422422 let ce = cC._1
423423 let cf = cC._2
424424 let bS = parseIntValue(cC._9)
425425 let cg = cC._10
426426 if (if (aA())
427427 then true
428428 else (bS == n))
429429 then throw(("Admin blocked: " + toString(bS)))
430430 else $Tuple5(ce, cf, cq, bK, cg)
431431 }
432432
433433
434434 func dm (ac,V,dn,do,bi,cn,co,cp,cq,cr) = {
435435 let cC = ch(V, bi, value(dn).amount, value(dn).assetId, value(do).amount, value(do).assetId, ac, false, cn, co, cp, cq, cr)
436436 let bS = parseIntValue(cC._8)
437437 if (if (if (aA())
438438 then true
439439 else (bS == l))
440440 then true
441441 else (bS == n))
442442 then throw(("Blocked:" + toString(bS)))
443443 else cC
444444 }
445445
446446
447447 func dp (cq,bK,bM,V) = {
448448 let dq = aC()
449449 let bO = dq[r]
450450 let bP = dq[s]
451451 let bU = ba(bO)
452452 let bW = ba(bP)
453453 let dr = if ((V == ""))
454454 then $Tuple2(bU, bW)
455455 else if ((bK == bO))
456456 then if ((cq > bU))
457457 then throw("invalid payment amount")
458458 else $Tuple2((bU - cq), bW)
459459 else if ((bK == bP))
460460 then if ((cq > bW))
461461 then throw("invalid payment amount")
462462 else $Tuple2(bU, (bW - cq))
463463 else throw("wrong pmtAssetId")
464464 let ds = dr._1
465465 let dt = dr._2
466466 let du = if ((bK == bO))
467467 then $Tuple2(ds, dt)
468468 else $Tuple2(dt, ds)
469469 let dv = du._1
470470 let dw = du._2
471471 let dx = 1
472472 let dy = {
473473 let dz = invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)
474474 if ($isInstanceOf(dz, "(Int, Int)"))
475475 then dz
476476 else throw(($getType(invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)) + " couldn't be cast to (Int, Int)"))
477477 }
478478 let dA = if ((bK == bO))
479479 then dy
480480 else $Tuple2(dy._2, dy._1)
481481 let dB = dA._1
482482 let dC = dA._2
483483 let dD = dm(bM, V, AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), 0, true, true, false, cq, bK)
484484 let dE = dD._2
485485 let dF = dD._7
486486 let cg = dD._9
487487 let cQ = dD._10
488488 let cR = dD._11
489489 dD
490490 }
491491
492492
493493 func dG () = {
494494 let as = getString(N())
495495 if ($isInstanceOf(as, "String"))
496496 then {
497497 let dH = as
498498 fromBase58String(dH)
499499 }
500500 else if ($isInstanceOf(as, "Unit"))
501501 then unit
502502 else throw("Match error")
503503 }
504504
505505
506506 func dI () = {
507507 let as = getString(O())
508508 if ($isInstanceOf(as, "String"))
509509 then {
510510 let dH = as
511511 fromBase58String(dH)
512512 }
513513 else if ($isInstanceOf(as, "Unit"))
514514 then unit
515515 else throw("Match error")
516516 }
517517
518518
519519 let dJ = throw("Permission denied")
520520
521521 func dK (dk) = {
522522 let as = dG()
523523 if ($isInstanceOf(as, "ByteVector"))
524524 then {
525525 let dL = as
526526 if ((dk.callerPublicKey == dL))
527527 then true
528528 else dJ
529529 }
530530 else if ($isInstanceOf(as, "Unit"))
531531 then if ((dk.caller == this))
532532 then true
533533 else dJ
534534 else throw("Match error")
535535 }
536536
537537
538538 @Callable(dk)
539539 func constructor (M) = {
540540 let dM = dK(dk)
541541 if ((dM == dM))
542542 then [StringEntry(M(), M)]
543543 else throw("Strict value is not equal to itself.")
544544 }
545545
546546
547547
548548 @Callable(dk)
549549 func setManager (dN) = {
550550 let dM = dK(dk)
551551 if ((dM == dM))
552552 then {
553553 let dO = fromBase58String(dN)
554554 if ((dO == dO))
555555 then [StringEntry(O(), dN)]
556556 else throw("Strict value is not equal to itself.")
557557 }
558558 else throw("Strict value is not equal to itself.")
559559 }
560560
561561
562562
563563 @Callable(dk)
564564 func confirmManager () = {
565565 let bH = dI()
566566 let dP = if (isDefined(bH))
567567 then true
568568 else throw("No pending manager")
569569 if ((dP == dP))
570570 then {
571571 let dQ = if ((dk.callerPublicKey == value(bH)))
572572 then true
573573 else throw("You are not pending manager")
574574 if ((dQ == dQ))
575575 then [StringEntry(N(), toBase58String(value(bH))), DeleteEntry(O())]
576576 else throw("Strict value is not equal to itself.")
577577 }
578578 else throw("Strict value is not equal to itself.")
579579 }
580580
581581
582582
583583 @Callable(dk)
584584 func put (dR,dS) = {
585585 let dT = aG()
586586 let dU = valueOrErrorMessage(addressFromString(dT[x]), "Wr st addr")
587587 let dV = valueOrErrorMessage(addressFromString(dT[y]), "Wr sl addr")
588588 if ((0 > dR))
589589 then throw("Wrong slippage")
590590 else if ((size(dk.payments) != 2))
591591 then throw("2 pmnts expd")
592592 else {
593593 let dW = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], dR, true, false, true, 0, "")
594594 let cP = dW._2
595595 let dF = dW._7
596596 let cg = dW._9
597597 let cQ = dW._10
598598 let cR = dW._11
599599 let bO = dW._12
600600 let bP = dW._13
601601 let cC = invoke(ay, "emit", [cP], nil)
602602 if ((cC == cC))
603603 then {
604604 let dX = {
605605 let as = cC
606606 if ($isInstanceOf(as, "Address"))
607607 then {
608608 let dY = as
609609 invoke(dY, "emit", [cP], nil)
610610 }
611611 else unit
612612 }
613613 if ((dX == dX))
614614 then {
615615 let dZ = if ((cQ > 0))
616616 then invoke(dV, "put", nil, [AttachedPayment(bO, cQ)])
617617 else nil
618618 if ((dZ == dZ))
619619 then {
620620 let ea = if ((cR > 0))
621621 then invoke(dV, "put", nil, [AttachedPayment(bP, cR)])
622622 else nil
623623 if ((ea == ea))
624624 then {
625625 let eb = if (dS)
626626 then {
627627 let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
628628 if ((ec == ec))
629629 then nil
630630 else throw("Strict value is not equal to itself.")
631631 }
632632 else [ScriptTransfer(dk.caller, cP, dF)]
633633 (cg ++ eb)
634634 }
635635 else throw("Strict value is not equal to itself.")
636636 }
637637 else throw("Strict value is not equal to itself.")
638638 }
639639 else throw("Strict value is not equal to itself.")
640640 }
641641 else throw("Strict value is not equal to itself.")
642642 }
643643 }
644644
645645
646646
647647 @Callable(dk)
648648 func putOneTkn (dB,dC,ed,bi,dS) = {
649649 let bz = aG()
650650 let dU = valueOrErrorMessage(addressFromString(bz[x]), "Wr st addr")
651651 let dV = valueOrErrorMessage(addressFromString(bz[y]), "Wr sl addr")
652652 let ee = valueOrErrorMessage(addressFromString(bz[z]), "Wr gwx addr")
653653 let ef = aC()
654654 let bO = ef[r]
655655 let bP = ef[s]
656656 let bQ = parseIntValue(ef[t])
657657 let bR = parseIntValue(ef[u])
658658 let eg = valueOrElse(getString(this, aa()), "")
659659 let bM = if ((eg == toString(dk.caller)))
660660 then dk.originCaller
661661 else dk.caller
662662 let eh = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
663663 let ei = reentrantInvoke(eh, "ensureCanPutOneTkn", [toString(bM)], nil)
664664 if ((ei == ei))
665665 then if (if (if (if ((0 >= bi))
666666 then true
667667 else (0 >= dB))
668668 then true
669669 else (0 >= dC))
670670 then true
671671 else (0 >= ed))
672672 then throw("Wrong params")
673673 else if ((size(dk.payments) != 1))
674674 then throw("1 pmnt expd")
675675 else {
676676 let dl = value(dk.payments[0])
677677 let bK = toBase58String(value(dl.assetId))
678678 let cq = dl.amount
679679 if ((10000000 > cq))
680680 then throw("Wrong pmt amt")
681681 else {
682682 let bU = ba(bO)
683683 let bW = ba(bP)
684684 let ej = if ((bK == bO))
685685 then if (if ((cq > bU))
686686 then true
687687 else (dB > cq))
688688 then throw("invalid payment amount")
689689 else $Tuple6((bU - cq), bW, (cq - dB), dC, 0, 0)
690690 else if ((bK == bP))
691691 then if (if ((cq > bW))
692692 then true
693693 else (dC > cq))
694694 then throw("invalid payment amount")
695695 else $Tuple6(bU, (bW - cq), 0, 0, (cq - dC), dB)
696696 else throw("wrong pmtAssetId")
697697 let ds = ej._1
698698 let dt = ej._2
699699 let ek = ej._3
700700 let el = ej._4
701701 let em = ej._5
702702 let en = ej._6
703703 let bn = invoke(ee, "calcD", [toString(ds), toString(dt), az, g, h], nil)
704704 let bm = invoke(ee, "calcD", [toString(toBigInt(((ds + ek) - en))), toString(toBigInt(((dt + em) - el))), az, g, h], nil)
705705 let eo = bl(parseBigIntValue(ar(bm)), parseBigIntValue(ar(bn)), f)
706706 if ((eo == eo))
707707 then {
708708 let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), bi, true, true, true, cq, bK)
709709 let dE = dD._2
710710 let dF = dD._7
711711 let cg = dD._9
712712 let cQ = dD._10
713713 let cR = dD._11
714714 let ep = bf(toBigInt(dE), toBigInt(ed), toBigInt(bi))
715715 let cP = toInt(ep._2)
716716 let dW = invoke(ay, "emit", [cP], nil)
717717 if ((dW == dW))
718718 then {
719719 let dX = {
720720 let as = dW
721721 if ($isInstanceOf(as, "Address"))
722722 then {
723723 let dY = as
724724 invoke(dY, "emit", [cP], nil)
725725 }
726726 else unit
727727 }
728728 if ((dX == dX))
729729 then {
730730 let dZ = if ((cQ > 0))
731731 then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
732732 else nil
733733 if ((dZ == dZ))
734734 then {
735735 let ea = if ((cR > 0))
736736 then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
737737 else nil
738738 if ((ea == ea))
739739 then {
740740 let eb = if (dS)
741741 then {
742742 let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
743743 if ((ec == ec))
744744 then nil
745745 else throw("Strict value is not equal to itself.")
746746 }
747747 else [ScriptTransfer(dk.caller, cP, dF)]
748748 (cg ++ eb)
749749 }
750750 else throw("Strict value is not equal to itself.")
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 else throw("Strict value is not equal to itself.")
755755 }
756756 else throw("Strict value is not equal to itself.")
757757 }
758758 else throw("Strict value is not equal to itself.")
759759 }
760760 }
761761 else throw("Strict value is not equal to itself.")
762762 }
763763
764764
765765
766766 @Callable(dk)
767767 func putOneTknV2 (eq,dS) = if ((size(dk.payments) != 1))
768768 then throw("1 pmnt expd")
769769 else {
770770 let dq = aC()
771771 let bO = dq[r]
772772 let bP = dq[s]
773773 let er = parseIntValue(dq[t])
774774 let es = parseIntValue(dq[u])
775775 let bM = if ((dk.caller == this))
776776 then dk.originCaller
777777 else dk.caller
778778 let dl = value(dk.payments[0])
779779 let bK = toBase58String(value(dl.assetId))
780780 let cq = dl.amount
781781 if ((10000000 > cq))
782782 then throw("Wrong pmt amt")
783783 else {
784784 let cC = dp(cq, bK, toString(bM), toBase58String(dk.transactionId))
785785 let dE = cC._2
786786 let dF = cC._7
787787 let cg = cC._9
788788 let cQ = cC._10
789789 let cR = cC._11
790790 let cP = if (if ((eq > 0))
791791 then (eq > dE)
792792 else false)
793793 then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
794794 else dE
795795 let dW = invoke(ay, "emit", [cP], nil)
796796 if ((dW == dW))
797797 then {
798798 let dX = {
799799 let as = dW
800800 if ($isInstanceOf(as, "Address"))
801801 then {
802802 let dY = as
803803 invoke(dY, "emit", [cP], nil)
804804 }
805805 else unit
806806 }
807807 if ((dX == dX))
808808 then {
809809 let dZ = if ((cQ > 0))
810810 then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
811811 else nil
812812 if ((dZ == dZ))
813813 then {
814814 let ea = if ((cR > 0))
815815 then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
816816 else nil
817817 if ((ea == ea))
818818 then {
819819 let eb = if (dS)
820820 then {
821821 let ec = invoke(aI, "stake", nil, [AttachedPayment(dF, cP)])
822822 if ((ec == ec))
823823 then nil
824824 else throw("Strict value is not equal to itself.")
825825 }
826826 else [ScriptTransfer(dk.caller, cP, dF)]
827827 $Tuple2((cg ++ eb), cP)
828828 }
829829 else throw("Strict value is not equal to itself.")
830830 }
831831 else throw("Strict value is not equal to itself.")
832832 }
833833 else throw("Strict value is not equal to itself.")
834834 }
835835 else throw("Strict value is not equal to itself.")
836836 }
837837 }
838838
839839
840840
841841 @Callable(dk)
842842 func putOneTknV2READONLY (et,eu) = {
843843 let cC = dp(et, eu, "", "")
844844 let dE = cC._2
845845 let dF = cC._7
846846 let cg = cC._9
847847 let cQ = cC._10
848848 let cR = cC._11
849849 $Tuple2(nil, dE)
850850 }
851851
852852
853853
854854 @Callable(dk)
855855 func putOneTknV2WithBonusREADONLY (et,eu) = {
856856 let dq = aC()
857857 let bO = dq[r]
858858 let bP = dq[s]
859859 let bU = ba(bO)
860860 let bW = ba(bP)
861861 let cC = dp(et, eu, "", "")
862862 let dE = cC._2
863863 let bZ = cC._3
864864 let ev = cC._6
865865 let dF = cC._7
866866 let ew = if ((eu == bO))
867867 then {
868- let ex = fraction(et, bZ, a)
868+ let ex = (et * bZ)
869869 $Tuple2(et, ex)
870870 }
871871 else {
872- let ey = fraction(et, a, bZ)
872+ let ey = (et / bZ)
873873 $Tuple2(ey, et)
874874 }
875875 let ey = ew._1
876876 let ex = ew._2
877877 let ez = fraction(ev, ex, bW)
878878 let eA = if ((eu == bO))
879879 then (ey / dE)
880880 else (ex / dE)
881881 let eB = ((ex + ey) / ez)
882882 let eC = ((eA - eB) / eA)
883883 $Tuple2(nil, eA)
884884 }
885885
886886
887887
888888 @Callable(dk)
889889 func putForFree (eD) = if ((0 > eD))
890890 then throw("Wrong slpg")
891891 else if ((size(dk.payments) != 2))
892892 then throw("2 pmnts expd")
893893 else {
894894 let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], eD, false, false, true, 0, "")
895895 dD._9
896896 }
897897
898898
899899
900900 @Callable(dk)
901901 func get () = {
902902 let cC = dj(dk)
903903 let eE = cC._1
904904 let cf = cC._2
905905 let cq = cC._3
906906 let bK = cC._4
907907 let cg = cC._5
908908 let eF = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
909909 if ((eF == eF))
910910 then cg
911911 else throw("Strict value is not equal to itself.")
912912 }
913913
914914
915915
916916 @Callable(dk)
917917 func getOneTknV2 (eG,eq) = if ((size(dk.payments) != 1))
918918 then throw("1 pmnt expd")
919919 else {
920920 let dq = aC()
921921 let bN = dq[q]
922922 let bO = dq[r]
923923 let bP = dq[s]
924924 let er = parseIntValue(dq[t])
925925 let es = parseIntValue(dq[u])
926926 let eH = dq[p]
927927 let bM = if ((dk.caller == this))
928928 then dk.originCaller
929929 else dk.caller
930930 let dl = value(dk.payments[0])
931931 let bK = value(dl.assetId)
932932 let cq = dl.amount
933933 if ((1000000000 > cq))
934934 then throw("Min pmt 10 LP")
935935 else {
936936 let bJ = toBase58String(dk.transactionId)
937937 if ((bN != toBase58String(bK)))
938938 then throw("Wrong LP")
939939 else {
940940 let bU = ba(bO)
941941 let bW = ba(bP)
942942 let eI = {
943943 let dz = invoke(this, "getOneTknV2READONLY", [eG, cq], nil)
944944 if ($isInstanceOf(dz, "Int"))
945945 then dz
946946 else throw(($getType(invoke(this, "getOneTknV2READONLY", [eG, cq], nil)) + " couldn't be cast to Int"))
947947 }
948948 let eJ = if (if ((eq > 0))
949949 then (eq > eI)
950950 else false)
951951 then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
952952 else eI
953953 let eK = if ((eG == bO))
954954 then $Tuple2(eJ, 0)
955955 else $Tuple2(0, eJ)
956956 let eL = eK._1
957957 let eM = eK._2
958958 let eN = bc(B(bW, es), B(bU, er))
959959 let eO = E(eN, a)
960960 let cg = [ScriptTransfer(bM, eJ, if ((eG == "WAVES"))
961961 then unit
962962 else fromBase58String(eG)), StringEntry(W(toString(bM), bJ), aW(eL, eM, cq, eO, height, lastBlock.timestamp)), IntegerEntry(P(), eO), IntegerEntry(Q(height, lastBlock.timestamp), eO)]
963963 if ((cg == cg))
964964 then {
965965 let eP = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
966966 if ((eP == eP))
967967 then $Tuple2(cg, eJ)
968968 else throw("Strict value is not equal to itself.")
969969 }
970970 else throw("Strict value is not equal to itself.")
971971 }
972972 }
973973 }
974974
975975
976976
977977 @Callable(dk)
978978 func getOneTknV2READONLY (eG,eQ) = {
979979 let dq = aC()
980980 let bN = dq[q]
981981 let bO = dq[r]
982982 let bP = dq[s]
983983 let cC = bI("", bN, eQ, this)
984984 let eR = cC._1
985985 let eS = cC._2
986986 let bU = ba(bO)
987987 let bW = ba(bP)
988988 let ds = (bU - eR)
989989 let dt = (bW - eS)
990990 let eT = if ((eG == bO))
991991 then $Tuple3(dt, ds, eS)
992992 else if ((eG == bP))
993993 then $Tuple3(ds, dt, eR)
994994 else throw("wrong outAssetId")
995995 let eU = eT._1
996996 let eV = eT._2
997997 let eW = eT._3
998998 let eX = 1
999999 let eY = {
10001000 let dz = invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)
10011001 if ($isInstanceOf(dz, "Int"))
10021002 then dz
10031003 else throw(($getType(invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)) + " couldn't be cast to Int"))
10041004 }
10051005 let eI = (eY + (if ((eG == bO))
10061006 then eR
10071007 else eS))
10081008 $Tuple2(nil, eI)
10091009 }
10101010
10111011
10121012
10131013 @Callable(dk)
10141014 func getNoLess (eZ,fa) = {
10151015 let cC = dj(dk)
10161016 let ce = cC._1
10171017 let cf = cC._2
10181018 let cq = cC._3
10191019 let bK = cC._4
10201020 let cg = cC._5
10211021 if ((eZ > ce))
10221022 then throw(((("Failed: " + toString(ce)) + " < ") + toString(eZ)))
10231023 else if ((fa > cf))
10241024 then throw(((("Failed: " + toString(cf)) + " < ") + toString(fa)))
10251025 else {
10261026 let fb = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
10271027 if ((fb == fb))
10281028 then cg
10291029 else throw("Strict value is not equal to itself.")
10301030 }
10311031 }
10321032
10331033
10341034
10351035 @Callable(dk)
10361036 func unstakeAndGet (fc) = {
10371037 let fd = if ((size(dk.payments) != 0))
10381038 then throw("No pmnts expd")
10391039 else true
10401040 if ((fd == fd))
10411041 then {
10421042 let bz = aC()
10431043 let fe = aG()
10441044 let dF = fromBase58String(bz[q])
10451045 let ff = valueOrErrorMessage(addressFromString(fe[x]), "Wr st addr")
10461046 let fg = invoke(ff, "unstake", [toBase58String(dF), fc], nil)
10471047 if ((fg == fg))
10481048 then {
10491049 let cC = bI(toBase58String(dk.transactionId), toBase58String(dF), fc, dk.caller)
10501050 let bS = parseIntValue(cC._9)
10511051 let cg = cC._10
10521052 let fh = if (if (aA())
10531053 then true
10541054 else (bS == n))
10551055 then throw(("Blocked: " + toString(bS)))
10561056 else true
10571057 if ((fh == fh))
10581058 then {
10591059 let fi = invoke(ay, "burn", [fc], [AttachedPayment(dF, fc)])
10601060 if ((fi == fi))
10611061 then cg
10621062 else throw("Strict value is not equal to itself.")
10631063 }
10641064 else throw("Strict value is not equal to itself.")
10651065 }
10661066 else throw("Strict value is not equal to itself.")
10671067 }
10681068 else throw("Strict value is not equal to itself.")
10691069 }
10701070
10711071
10721072
10731073 @Callable(dk)
10741074 func unstakeAndGetOneTkn (fc,fj,eG,bi) = {
10751075 let fd = if ((size(dk.payments) != 0))
10761076 then throw("No pmnts expd")
10771077 else true
10781078 if ((fd == fd))
10791079 then {
10801080 let bz = aC()
10811081 let fe = aG()
10821082 let dF = fromBase58String(bz[q])
10831083 let ff = valueOrErrorMessage(addressFromString(fe[x]), "Wr st addr")
10841084 let fg = invoke(ff, "unstake", [toBase58String(dF), fc], nil)
10851085 if ((fg == fg))
10861086 then {
10871087 let fk = {
10881088 let dz = invoke(this, "getOneTknV2", [fj, eG, bi], [AttachedPayment(dF, fc)])
10891089 if ($isInstanceOf(dz, "Int"))
10901090 then dz
10911091 else unit
10921092 }
10931093 if ((fk == fk))
10941094 then $Tuple2(nil, fk)
10951095 else throw("Strict value is not equal to itself.")
10961096 }
10971097 else throw("Strict value is not equal to itself.")
10981098 }
10991099 else throw("Strict value is not equal to itself.")
11001100 }
11011101
11021102
11031103
11041104 @Callable(dk)
11051105 func activate (fl,fm) = if ((toString(dk.caller) != toString(ay)))
11061106 then throw("denied")
11071107 else $Tuple2([StringEntry(X(), fl), StringEntry(Y(), fm)], "success")
11081108
11091109
11101110
11111111 @Callable(dk)
11121112 func setS (fn,fh) = if ((toString(dk.caller) != au(this, aa())))
11131113 then dJ
11141114 else [StringEntry(fn, fh)]
11151115
11161116
11171117
11181118 @Callable(dk)
11191119 func setI (fn,fh) = if ((toString(dk.caller) != au(this, aa())))
11201120 then dJ
11211121 else [IntegerEntry(fn, fh)]
11221122
11231123
11241124
11251125 @Callable(dk)
11261126 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
11271127
11281128
11291129
11301130 @Callable(dk)
11311131 func getAccBalanceWrapperREADONLY (bb) = $Tuple2(nil, ba(bb))
11321132
11331133
11341134
11351135 @Callable(dk)
11361136 func calcPricesWrapperREADONLY (bt,bu,by) = {
11371137 let fo = bx(bt, bu, by)
11381138 $Tuple2(nil, [toString(fo[0]), toString(fo[1]), toString(fo[2])])
11391139 }
11401140
11411141
11421142
11431143 @Callable(dk)
11441144 func fromX18WrapperREADONLY (F,fp) = $Tuple2(nil, E(parseBigIntValue(F), fp))
11451145
11461146
11471147
11481148 @Callable(dk)
11491149 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
11501150
11511151
11521152
11531153 @Callable(dk)
11541154 func calcPriceBigIntWrapperREADONLY (bd,be) = $Tuple2(nil, toString(bc(parseBigIntValue(bd), parseBigIntValue(be))))
11551155
11561156
11571157
11581158 @Callable(dk)
11591159 func estimatePutOperationWrapperREADONLY (bJ,bi,ci,cj,ck,cl,fq,cm,cn) = $Tuple2(nil, ch(bJ, bi, ci, cj, ck, cl, fq, cm, cn, true, false, 0, ""))
11601160
11611161
11621162
11631163 @Callable(dk)
11641164 func estimateGetOperationWrapperREADONLY (bJ,fr,bL,fq) = {
11651165 let cC = bI(bJ, fr, bL, addressFromStringValue(fq))
11661166 $Tuple2(nil, $Tuple10(cC._1, cC._2, cC._3, cC._4, cC._5, cC._6, cC._7, toString(cC._8), cC._9, cC._10))
11671167 }
11681168
11691169
11701170 @Verifier(fs)
11711171 func ft () = {
11721172 let fu = {
11731173 let as = dG()
11741174 if ($isInstanceOf(as, "ByteVector"))
11751175 then {
11761176 let dL = as
11771177 dL
11781178 }
11791179 else if ($isInstanceOf(as, "Unit"))
11801180 then fs.senderPublicKey
11811181 else throw("Match error")
11821182 }
11831183 let as = fs
11841184 if ($isInstanceOf(as, "Order"))
11851185 then {
11861186 let cX = as
11871187 let fv = aB()
11881188 let fw = cW(cX)
11891189 let fx = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
11901190 let fy = sigVerify(cX.bodyBytes, cX.proofs[1], fv)
11911191 if (if (if (fw)
11921192 then fx
11931193 else false)
11941194 then fy
11951195 else false)
11961196 then true
11971197 else an(fw, fx, fy)
11981198 }
11991199 else if ($isInstanceOf(as, "SetScriptTransaction"))
12001200 then {
12011201 let dH = as
12021202 let fz = blake2b256(value(dH.script))
12031203 let fA = fromBase64String(value(getString(ay, am())))
12041204 let fB = scriptHash(this)
12051205 if (if ((fA == fz))
12061206 then (fB != fz)
12071207 else false)
12081208 then true
12091209 else sigVerify(fs.bodyBytes, fs.proofs[0], fu)
12101210 }
12111211 else sigVerify(fs.bodyBytes, fs.proofs[0], fu)
12121212 }
12131213

github/deemru/w8io/026f985 
155.40 ms