tx · 9yoAF1fMhqdCRE93oNLVwz2nmMPMcSeCQbZchdpMQbiS

3N3kKNoJohjVQYNLTrYTGTesr3nq3PZNh37:  -0.03000000 Waves

2024.07.26 10:27 [3210737] smart account 3N3kKNoJohjVQYNLTrYTGTesr3nq3PZNh37 > SELF 0.00000000 Waves

{ "type": 13, "id": "9yoAF1fMhqdCRE93oNLVwz2nmMPMcSeCQbZchdpMQbiS", "fee": 3000000, "feeAssetId": null, "timestamp": 1721978848983, "version": 1, "sender": "3N3kKNoJohjVQYNLTrYTGTesr3nq3PZNh37", "senderPublicKey": "vmMXxwQAMUAoisvL193ptPiTtaWQqL5YNu2zs1ouTbY", "proofs": [ "S3WPCiqAMyeEMmfb9sxjmT628fd8QJcKLmy6V9bFv7vyXzbZaKFmhKQXhT77WwECQjr6SbNXwMEF7AkVNyjk4Tb" ], "script": "base64:BwJVCAISAwoBCBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGBIECgICGF4ACXNlcGFyYXRvcgICX18AB2NoYWluSWQJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACGNoYWluSWRXAQFXABBjb250cmFjdEZpbGVuYW1lAhdmdXR1cmVzX2NhbGN1bGF0b3IucmlkZQAFbXVsdDgAgMLXLwAMbXVsdDE4QmlnSW50CQC2AgEAgICQu7rWrfANAA13YXZlc0RlY2ltYWxzAAgADHVzZHREZWNpbWFscwAGAAt3YXZlc1N0cmluZwIFV0FWRVMADXF1ZXVlSXRlbVNpemUAIAAEYmlnMAkAtgIBAAAACklOREVYX0xJU1QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwUDbmlsAAlrTXVsdGlzaWcCDCVzX19tdWx0aXNpZwEHa1N0YXR1cwIEZGFwcAR0eElkCQC5CQIJAMwIAgIKJXNfX3N0YXR1cwkAzAgCBQRkYXBwCQDMCAIFBHR4SWQFA25pbAUJc2VwYXJhdG9yAAlrU2h1dGRvd24CDCVzX19zaHV0ZG93bgALa1B1YmxpY0tleXMCDiVzX19wdWJsaWNLZXlzABFrTWF0Y2hlclB1YmxpY0tleQIUJXNfX21hdGNoZXJQdWJsaWNLZXkBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQxtdWx0MThCaWdJbnQJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFDG11bHQxOEJpZ0ludAEPdmFsaWRhdGVBZGRyZXNzAQdhZGRyZXNzCQEJaXNEZWZpbmVkAQkApggBBQdhZGRyZXNzAQd3cmFwRXJyAQFzCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBCHRocm93RXJyAQFzCQACAQkBB3dyYXBFcnIBBQFzAQ5lbnN1cmVQb3NpdGl2ZQIBdgFzAwkAZwIFAXYAAAUBdgkBCHRocm93RXJyAQkArAICBQFzAhkgdmFsdWUgc2hvdWxkIGJlIHBvc2l0aXZlAQxwYXJzZUFzc2V0SWQBBWlucHV0AwkAAAIFBWlucHV0BQt3YXZlc1N0cmluZwUEdW5pdAkA2QQBBQVpbnB1dAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBEmdldEFzc2V0SW5mb09yRmFpbAEHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFB2Fzc2V0SWQJAQd3cmFwRXJyAQISaW52YWxpZCBhc3NldCBpbmZvARZnZXRBc3NldERlY2ltYWxzT3JGYWlsAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACBFVuaXQFDXdhdmVzRGVjaW1hbHMDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQHYXNzZXRJZAUHJG1hdGNoMAgJARJnZXRBc3NldEluZm9PckZhaWwBBQdhc3NldElkCGRlY2ltYWxzCQACAQILTWF0Y2ggZXJyb3IBD2dldEFzc2V0QmFsYW5jZQIHYXNzZXRJZAdhZGRyZXNzBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACBFVuaXQICQDvBwEFB2FkZHJlc3MJYXZhaWxhYmxlAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEB2Fzc2V0SWQFByRtYXRjaDAJAPAHAgUHYWRkcmVzcwUHYXNzZXRJZAkAAgECC01hdGNoIGVycm9yAQVwb3cxMAEBbgkAbAYACgAABQFuAAAAAAUERE9XTgENcG93MTBEZWNpbWFscwEHYXNzZXRJZAkBBXBvdzEwAQkBFmdldEFzc2V0RGVjaW1hbHNPckZhaWwBBQdhc3NldElkAA9rRmFjdG9yeUFkZHJlc3MCEiVzX19mYWN0b3J5QWRkcmVzcwAUZmFjdG9yeUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwUPa0ZhY3RvcnlBZGRyZXNzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAOZmFjdG9yeUFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUUZmFjdG9yeUFkZHJlc3NPcHRpb24JAQd3cmFwRXJyAQIXaW52YWxpZCBmYWN0b3J5IGFkZHJlc3MADGtVc2R0QXNzZXRJZAIPJXNfX3VzZHRBc3NldElkABF1c2R0QXNzZXRJZE9wdGlvbgQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUMa1VzZHRBc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkBDHBhcnNlQXNzZXRJZAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAt1c2R0QXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRF1c2R0QXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhVpbnZhbGlkIHVzZHQgYXNzZXQgaWQADmtQcmljZXNBZGRyZXNzAhUlc19fY2FsY3VsYXRvckFkZHJlc3MACHNodXRkb3duCQELdmFsdWVPckVsc2UCCQCbCAIFDmZhY3RvcnlBZGRyZXNzBQlrU2h1dGRvd24HAQttdXN0QWRkcmVzcwIGY2FsbGVyB2FkZHJlc3MDCQAAAgUGY2FsbGVyBQdhZGRyZXNzBgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQBCG11c3RUaGlzAQZjYWxsZXIJAQttdXN0QWRkcmVzcwIFBmNhbGxlcgUEdGhpcwELbXVzdEZhY3RvcnkBBmNhbGxlcgkBC211c3RBZGRyZXNzAgUGY2FsbGVyBQ5mYWN0b3J5QWRkcmVzcwEJbXVzdEFkbWluAQ9jYWxsZXJQdWJsaWNLZXkECG11bHRpc2lnCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQ5mYWN0b3J5QWRkcmVzcwUJa011bHRpc2lnBA5wdWJsaWNLZXlzTGlzdAkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQhtdWx0aXNpZwULa1B1YmxpY0tleXMFCXNlcGFyYXRvcgMJAQ9jb250YWluc0VsZW1lbnQCBQ5wdWJsaWNLZXlzTGlzdAkA2AQBBQ9jYWxsZXJQdWJsaWNLZXkGCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAAOa0FjY291bnRTY3JpcHQCESVzX19hY2NvdW50U2NyaXB0AQ1hY2NvdW50U2NyaXB0AAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzBQ5rQWNjb3VudFNjcmlwdAkBB3dyYXBFcnIBAhlhY2NvdW50IHNjcmlwdCBpcyBub3Qgc2V0AA1rUmV3YXJkQW1vdW50AhAlc19fcmV3YXJkQW1vdW50AQxyZXdhcmRBbW91bnQACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MFDWtSZXdhcmRBbW91bnQJAQd3cmFwRXJyAQIYcmV3YXJkIGFtb3VudCBpcyBub3Qgc2V0AA5rQWNjb3VudHNMaW1pdAIRJXNfX2FjY291bnRzTGltaXQAFGFjY291bnRzTGltaXREZWZhdWx0ABQBDWFjY291bnRzTGltaXQACQELdmFsdWVPckVsc2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzBQ5rQWNjb3VudHNMaW1pdAUUYWNjb3VudHNMaW1pdERlZmF1bHQBCmtEZXBvc2l0ZWQBDmFjY291bnRBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAglkZXBvc2l0ZWQJAMwIAgkApQgBBQ5hY2NvdW50QWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBD2RlcG9zaXRlZE9wdGlvbgEOYWNjb3VudEFkZHJlc3MJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQprRGVwb3NpdGVkAQUOYWNjb3VudEFkZHJlc3MBB2tDcmVkaXQCDmFjY291bnRBZGRyZXNzB2Fzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGY3JlZGl0CQDMCAIJAKUIAQUOYWNjb3VudEFkZHJlc3MJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFB2Fzc2V0SWQFA25pbAUJc2VwYXJhdG9yAQxjcmVkaXRPcHRpb24CDmFjY291bnRBZGRyZXNzB2Fzc2V0SWQJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQdrQ3JlZGl0AgUOYWNjb3VudEFkZHJlc3MFB2Fzc2V0SWQBCWtMZXZlcmFnZQEOYWNjb3VudEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICCGxldmVyYWdlCQDMCAIJAKUIAQUOYWNjb3VudEFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARBrUmVxdWVzdExldmVyYWdlAQlyZXF1ZXN0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICD3JlcXVlc3RMZXZlcmFnZQkAzAgCCQDYBAEFCXJlcXVlc3RJZAUDbmlsBQlzZXBhcmF0b3IBEWtTeW50aGV0aWNBc3NldElkAQtiYXNlQXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIQc3ludGhldGljQXNzZXRJZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQFA25pbAUJc2VwYXJhdG9yAQxrQmFzZUFzc2V0SWQBEHN5bnRoZXRpY0Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICC2Jhc2VBc3NldElkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBRBzeW50aGV0aWNBc3NldElkBQNuaWwFCXNlcGFyYXRvcgAUUkVRVUVTVF9TVEFUVVNfRU1QVFkAAAAUUkVRVUVTVF9TVEFUVVNfUkVBRFkAAQEOa1JlcXVlc3RTdGF0dXMBCXJlcXVlc3RJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkA2AQBBQlyZXF1ZXN0SWQJAMwIAgIGc3RhdHVzBQNuaWwFCXNlcGFyYXRvcgEYa0FjY291bnRDcmVhdG9yUHVibGljS2V5AQ5hY2NvdW50QWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgkApQgBBQ5hY2NvdW50QWRkcmVzcwkAzAgCAhBjcmVhdG9yUHVibGljS2V5BQNuaWwFCXNlcGFyYXRvcgEWa1JlcXVlc3RPd25lclB1YmxpY0tleQEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAkAzAgCAg5vd25lclB1YmxpY0tleQUDbmlsBQlzZXBhcmF0b3IBFWtSZXF1ZXN0QW1vdW50QXNzZXRJZAEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAkAzAgCAg1hbW91bnRBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEUa1JlcXVlc3RQcmljZUFzc2V0SWQBCXJlcXVlc3RJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkA2AQBBQlyZXF1ZXN0SWQJAMwIAgIMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEca1JlcXVlc3RJZFRvQWNjb3VudFB1YmxpY0tleQEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAkAzAgCAhtyZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkFA25pbAUJc2VwYXJhdG9yARprQWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAEOYWNjb3VudEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAIJAKUIAQUOYWNjb3VudEFkZHJlc3MJAMwIAgIZYWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAUDbmlsBQlzZXBhcmF0b3IBDmtSZXF1ZXN0c1F1ZXVlAAkAuQkCCQDMCAICAiVzCQDMCAICDXJlcXVlc3RzUXVldWUFA25pbAUJc2VwYXJhdG9yAQ1yZXF1ZXN0c1F1ZXVlAAkBC3ZhbHVlT3JFbHNlAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwkBDmtSZXF1ZXN0c1F1ZXVlAAEAAQ5rQWNjb3VudHNRdWV1ZQAJALkJAgkAzAgCAgIlcwkAzAgCAg1hY2NvdW50c1F1ZXVlBQNuaWwFCXNlcGFyYXRvcgENYWNjb3VudHNRdWV1ZQAJAQt2YWx1ZU9yRWxzZQIJAJwIAgUOZmFjdG9yeUFkZHJlc3MJAQ5rQWNjb3VudHNRdWV1ZQABAAEQa1JlcXVlc3RzQnlPd25lcgEMb3duZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZXF1ZXN0cwkAzAgCCQClCAEFDG93bmVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBD3JlcXVlc3RzQnlPd25lcgEMb3duZXJBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzCQEQa1JlcXVlc3RzQnlPd25lcgEFDG93bmVyQWRkcmVzcwEAAQxrUGFpckFsbG93ZWQCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQ1hbW91bnRBc3NldElkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQxwcmljZUFzc2V0SWQJAMwIAgILcGFpckFsbG93ZWQFA25pbAUJc2VwYXJhdG9yAQtwYWlyQWxsb3dlZAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJsIAgUOZmFjdG9yeUFkZHJlc3MJAQxrUGFpckFsbG93ZWQCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQHAQZrUHJpY2UBB2Fzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUHYXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBEmtQYWlyUHJpY2VzTGlzdEtleQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDWFtb3VudEFzc2V0SWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDHByaWNlQXNzZXRJZAkAzAgCAhFwYWlyU2V0dGluZ1ByaWNlcwUDbmlsBQlzZXBhcmF0b3IBEWdldFBhaXJQcmljZXNMaXN0Ag1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBEmtQYWlyUHJpY2VzTGlzdEtleQIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJALUJAgUBcwUJc2VwYXJhdG9yBQNuaWwBEGtQYWlyU2V0dGluZ3NLZXkDDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkC3ByaWNlU3RyaW5nCQC5CQIJAMwIAgIIJXMlcyVkJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDWFtb3VudEFzc2V0SWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFDHByaWNlQXNzZXRJZAkAzAgCBQtwcmljZVN0cmluZwkAzAgCAghzZXR0aW5ncwUDbmlsBQlzZXBhcmF0b3IBD2dldEN1cnJlbnRQcmljZQEHYXNzZXRJZAQQbWF0Y2hlclB1YmxpY0tleQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MFEWtNYXRjaGVyUHVibGljS2V5CQEHd3JhcEVycgECGmludmFsaWQgbWF0Y2hlciBwdWJsaWMga2V5BA5tYXRjaGVyQWRkcmVzcwkApwgBBRBtYXRjaGVyUHVibGljS2V5BAVwcmljZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDm1hdGNoZXJBZGRyZXNzCQEGa1ByaWNlAQUHYXNzZXRJZAkBB3dyYXBFcnIBCQCsAgICGWludmFsaWQgcHJpY2UsIGFzc2V0SWQgPSAJAQ9hc3NldElkVG9TdHJpbmcBBQdhc3NldElkBQVwcmljZQEPY2FsY1RvdGFsQ3JlZGl0AwdjcmVkaXRBB2NyZWRpdEIMY3VycmVudFByaWNlCQC3AgIJALwCAwUHY3JlZGl0QQUMY3VycmVudFByaWNlBQxtdWx0MThCaWdJbnQFB2NyZWRpdEIBEGNhbGNUb3RhbEJhbGFuY2UDCGJhbGFuY2VBCGJhbGFuY2VCDGN1cnJlbnRQcmljZQkAtwICCQC8AgMFCGJhbGFuY2VBBQxjdXJyZW50UHJpY2UFDG11bHQxOEJpZ0ludAUIYmFsYW5jZUIBB2NhbGNQbmwCDHRvdGFsQmFsYW5jZQt0b3RhbENyZWRpdAkAuAICBQx0b3RhbEJhbGFuY2UFC3RvdGFsQ3JlZGl0ARNjYWxjQ3JlZGl0QXZhaWxhYmxlAwdkZXBvc2l0CGxldmVyYWdlC3RvdGFsQ3JlZGl0CQC4AgIJALwCAwUHZGVwb3NpdAUIbGV2ZXJhZ2UFDG11bHQxOEJpZ0ludAULdG90YWxDcmVkaXQBEGNhbGNSZWFsSW5DcmVkaXQCBmNyZWRpdAdiYWxhbmNlAwkAvwICBQZjcmVkaXQFBGJpZzAJALgCAgUGY3JlZGl0BQdiYWxhbmNlBQRiaWcwAQhjYWxjRnJlZQIGY3JlZGl0B2JhbGFuY2UDCQC/AgIFBmNyZWRpdAUEYmlnMAkAuAICBQdiYWxhbmNlBQZjcmVkaXQFBGJpZzABDmNhbGNTaG9ydFByaWNlAgRmcmVlDHJlYWxJbkNyZWRpdAMJAL8CAgUMcmVhbEluQ3JlZGl0BQRiaWcwCQCYAwEJAMwIAgUEYmlnMAkAzAgCCQC8AgMFBGZyZWUFDG11bHQxOEJpZ0ludAUMcmVhbEluQ3JlZGl0BQNuaWwFBGJpZzABDWNhbGNMb25nUHJpY2UCBGZyZWUMcmVhbEluQ3JlZGl0AwkAvwICBQxyZWFsSW5DcmVkaXQFBGJpZzAJAJgDAQkAzAgCBQRiaWcwCQDMCAIJALwCAwUMcmVhbEluQ3JlZGl0BQxtdWx0MThCaWdJbnQFBGZyZWUFA25pbAUEYmlnMAEPY2FsY1N0YXJ0TWFyZ2luBA1yZWFsSW5DcmVkaXRBDXJlYWxJbkNyZWRpdEIMY3VycmVudFByaWNlDnNldHRpbmdzTWFyZ2luCQC8AgMJALcCAgkAvAIDBQ1yZWFsSW5DcmVkaXRBBQxjdXJyZW50UHJpY2UFDG11bHQxOEJpZ0ludAUNcmVhbEluQ3JlZGl0QgUOc2V0dGluZ3NNYXJnaW4FDG11bHQxOEJpZ0ludAEQY2FsY01hcmdpblN1cHBseQMUc2V0dGluZ3NNYXJnaW5TdXBwbHkOc2V0dGluZ3NNYXJnaW4Lc3RhcnRNYXJnaW4JALwCAwUUc2V0dGluZ3NNYXJnaW5TdXBwbHkFC3N0YXJ0TWFyZ2luBQ5zZXR0aW5nc01hcmdpbgEUY2FsY0xpcXVpZGF0aW9uUHJpY2UGB2RlcG9zaXQMbWFyZ2luU3VwcGx5DXJlYWxJbkNyZWRpdEENcmVhbEluQ3JlZGl0QgpzaG9ydFByaWNlCWxvbmdQcmljZQQRbGlxdWlkYXRpb25QcmljZUEDCQC/AgIFDXJlYWxJbkNyZWRpdEEFBGJpZzAJALcCAgkAugICCQC4AgIFB2RlcG9zaXQFDG1hcmdpblN1cHBseQUNcmVhbEluQ3JlZGl0QQUKc2hvcnRQcmljZQUEYmlnMAQRbGlxdWlkYXRpb25QcmljZUIDCQC/AgIFDXJlYWxJbkNyZWRpdEIFBGJpZzAJALgCAgUJbG9uZ1ByaWNlCQC6AgIJALgCAgUHZGVwb3NpdAUMbWFyZ2luU3VwcGx5CQC6AgIFDXJlYWxJbkNyZWRpdEEFCWxvbmdQcmljZQUEYmlnMAkAtwICBRFsaXF1aWRhdGlvblByaWNlQQURbGlxdWlkYXRpb25QcmljZUIBDGdldFJlcXVlc3RJZAEOYWNjb3VudEFkZHJlc3MECXJlcXVlc3RJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARprQWNjb3VudEFkZHJlc3NUb1JlcXVlc3RJZAEFDmFjY291bnRBZGRyZXNzCQEHd3JhcEVycgECMGludmFsaWQgYWNjb3VudCBhZGRyZXNzOiByZXF1ZXN0IGlkIGlzIHVuZGVmaW5lZAUJcmVxdWVzdElkARBnZXRBY2NvdW50QXNzZXRzAQ5hY2NvdW50QWRkcmVzcwQJcmVxdWVzdElkCQEMZ2V0UmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MEDWFtb3VudEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARVrUmVxdWVzdEFtb3VudEFzc2V0SWQBBQlyZXF1ZXN0SWQJAQd3cmFwRXJyAQIXaW52YWxpZCBhbW91bnQgYXNzZXQgaWQEDHByaWNlQXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBFGtSZXF1ZXN0UHJpY2VBc3NldElkAQUJcmVxdWVzdElkCQEHd3JhcEVycgECF2ludmFsaWQgYW1vdW50IHByaWNlIGlkCQCUCgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAEYZ2V0QWNjb3VudE93bmVyUHVibGljS2V5AQ5hY2NvdW50QWRkcmVzcwQJcmVxdWVzdElkCQEMZ2V0UmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MEFXJlcXVlc3RPd25lclB1YmxpY0tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzCQEWa1JlcXVlc3RPd25lclB1YmxpY0tleQEFCXJlcXVlc3RJZAkBB3dyYXBFcnIBAhdpbnZhbGlkIGFtb3VudCBhc3NldCBpZAUVcmVxdWVzdE93bmVyUHVibGljS2V5ARZnZXRBY2NvdW50SW5mb0ludGVybmFsAQ5hY2NvdW50QWRkcmVzcwQNJHQwMTExODcxMTI1NQkBEGdldEFjY291bnRBc3NldHMBBQ5hY2NvdW50QWRkcmVzcwQNYW1vdW50QXNzZXRJZAgFDSR0MDExMTg3MTEyNTUCXzEEDHByaWNlQXNzZXRJZAgFDSR0MDExMTg3MTEyNTUCXzIECGxldmVyYWdlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQlrTGV2ZXJhZ2UBBQ5hY2NvdW50QWRkcmVzcwkBB3dyYXBFcnIBAhpsZXZlcmFnZSBzaG91bGQgYmUgZGVmaW5lZAQJcmVxdWVzdElkCQEMZ2V0UmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MEEGFjY291bnRQdWJsaWNLZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwkBHGtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkBBQlyZXF1ZXN0SWQCJmtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkgbm90IGZvdW5kBAlkZXBvc2l0ZWQJAQt2YWx1ZU9yRWxzZQIJAQ9kZXBvc2l0ZWRPcHRpb24BBQ5hY2NvdW50QWRkcmVzcwAABAxjdXJyZW50UHJpY2UJAQV0b1gxOAIJAQ9nZXRDdXJyZW50UHJpY2UBBQ1hbW91bnRBc3NldElkCQENcG93MTBEZWNpbWFscwEFDHByaWNlQXNzZXRJZAQHY3JlZGl0QQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBB2tDcmVkaXQCBQ5hY2NvdW50QWRkcmVzcwUNYW1vdW50QXNzZXRJZAAABAdjcmVkaXRCCQELdmFsdWVPckVsc2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEHa0NyZWRpdAIFDmFjY291bnRBZGRyZXNzBQxwcmljZUFzc2V0SWQAAAQGc3RhdHVzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQ5rUmVxdWVzdFN0YXR1cwEFCXJlcXVlc3RJZAkArAICAh5zdGF0dXMgbm90IGZvdW5kLiBSZXF1ZXN0SWQgPSAJANgEAQUJcmVxdWVzdElkCQCeCgwJAQ9hc3NldElkVG9TdHJpbmcBBQ1hbW91bnRBc3NldElkCQEPYXNzZXRJZFRvU3RyaW5nAQUMcHJpY2VBc3NldElkCQClCAEFDmFjY291bnRBZGRyZXNzCQDYBAEFEGFjY291bnRQdWJsaWNLZXkFCGxldmVyYWdlCQDYBAEFCXJlcXVlc3RJZAUJZGVwb3NpdGVkBQdjcmVkaXRBBQdjcmVkaXRCCQEPZ2V0QXNzZXRCYWxhbmNlAgkBDHBhcnNlQXNzZXRJZAEJARFrU3ludGhldGljQXNzZXRJZAEFDWFtb3VudEFzc2V0SWQFDmFjY291bnRBZGRyZXNzCQEPZ2V0QXNzZXRCYWxhbmNlAgkBDHBhcnNlQXNzZXRJZAEJARFrU3ludGhldGljQXNzZXRJZAEFDHByaWNlQXNzZXRJZAUOYWNjb3VudEFkZHJlc3MFBnN0YXR1cw4BaQEEaW5pdAERZmFjdG9yeUFkZHJlc3NTdHIEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBCAUBaQZjYWxsZXIDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa0ZhY3RvcnlBZGRyZXNzBRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnJlcXVlc3RBY2NvdW50Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2tlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQILbm90IGFsbG93ZWQJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyBQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MEEGFtb3VudEFzc2V0SWRTdHIJAJEDAgUEYXJncwAABA9wcmljZUFzc2V0SWRTdHIJAJEDAgUEYXJncwABBAhsZXZlcmFnZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUEYXJncwACCQEHd3JhcEVycgECEGludmFsaWQgbGV2ZXJhZ2UEC3VzZXJBZGRyZXNzCQCnCAEFD2NhbGxlclB1YmxpY0tleQQJcmVxdWVzdElkCQD3AwEJAMsBAgkAywECCAULdXNlckFkZHJlc3MFYnl0ZXMJANkEAQUQYW1vdW50QXNzZXRJZFN0cgkA2QQBBQ9wcmljZUFzc2V0SWRTdHIEDWFtb3VudEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBRBhbW91bnRBc3NldElkU3RyBAxwcmljZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ9wcmljZUFzc2V0SWRTdHIEEnVzZXJSZXF1ZXN0c051bWJlcgkAaQIJALECAQkBEGtSZXF1ZXN0c0J5T3duZXIBBQt1c2VyQWRkcmVzcwUNcXVldWVJdGVtU2l6ZQQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIVMSBwYXltZW50IGlzIHJlcXVpcmVkCQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0BgkBCHRocm93RXJyAQINaW52YWxpZCBhc3NldAkAzAgCAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQEMcmV3YXJkQW1vdW50AAYJAQh0aHJvd0VycgECDmludmFsaWQgYW1vdW50CQDMCAIDCQELcGFpckFsbG93ZWQCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQGCQEIdGhyb3dFcnIBAhNwYWlyIGlzIG5vdCBhbGxvd2VkCQDMCAIDCQAAAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBDmtSZXF1ZXN0U3RhdHVzAQUJcmVxdWVzdElkBQR1bml0BgkBCHRocm93RXJyAQIZYWNjb3VudCBpcyBhbHJlYWR5IGV4aXN0cwkAzAgCAwkAZgIJAQ1hY2NvdW50c0xpbWl0AAUSdXNlclJlcXVlc3RzTnVtYmVyBgkBCHRocm93RXJyAQkArAICAhJhY2NvdW50cyBsaW1pdCBpcyAJAKQDAQkBDWFjY291bnRzTGltaXQABQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDE0MTU3MTU2OTADCQAAAgkAyAEBCQENYWNjb3VudHNRdWV1ZQAAAAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDmZhY3RvcnlBZGRyZXNzCQEMcmV3YXJkQW1vdW50AAUEdW5pdAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEOa1JlcXVlc3RTdGF0dXMBBQlyZXF1ZXN0SWQJAMwIAgUUUkVRVUVTVF9TVEFUVVNfRU1QVFkFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJAQ5rUmVxdWVzdHNRdWV1ZQAJAMwIAgkAywECCQENcmVxdWVzdHNRdWV1ZQAFCXJlcXVlc3RJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJARBrUmVxdWVzdExldmVyYWdlAQUJcmVxdWVzdElkCQDMCAIFCGxldmVyYWdlBQNuaWwFA25pbAUDbmlsBBBhY2NvdW50UHVibGljS2V5CQDJAQIJAQ1hY2NvdW50c1F1ZXVlAAUNcXVldWVJdGVtU2l6ZQQOYWNjb3VudEFkZHJlc3MJAKcIAQUQYWNjb3VudFB1YmxpY0tleQQOY3JlYXRvckFkZHJlc3MJAKcIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmZhY3RvcnlBZGRyZXNzCQEYa0FjY291bnRDcmVhdG9yUHVibGljS2V5AQUOYWNjb3VudEFkZHJlc3MJAQd3cmFwRXJyAQIaaW52YWxpZCBjcmVhdG9yIHB1YmxpYyBrZXkJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5jcmVhdG9yQWRkcmVzcwkBDHJld2FyZEFtb3VudAAFBHVuaXQFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEOa0FjY291bnRzUXVldWUACQDMCAIJAMoBAgkBDWFjY291bnRzUXVldWUABQ1xdWV1ZUl0ZW1TaXplBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgkBDmtSZXF1ZXN0U3RhdHVzAQUJcmVxdWVzdElkCQDMCAIFFFJFUVVFU1RfU1RBVFVTX1JFQURZBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEca1JlcXVlc3RJZFRvQWNjb3VudFB1YmxpY0tleQEFCXJlcXVlc3RJZAkAzAgCBRBhY2NvdW50UHVibGljS2V5BQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEaa0FjY291bnRBZGRyZXNzVG9SZXF1ZXN0SWQBBQ5hY2NvdW50QWRkcmVzcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwIMaW50ZWdlckVudHJ5CQDMCAIJAQlrTGV2ZXJhZ2UBBQ5hY2NvdW50QWRkcmVzcwkAzAgCBQhsZXZlcmFnZQUDbmlsBQNuaWwFA25pbAQHYWN0aW9ucwgFDSR0MDE0MTU3MTU2OTACXzEEDmZhY3RvcnlBY3Rpb25zCAUNJHQwMTQxNTcxNTY5MAJfMgkAlAoCBQdhY3Rpb25zCQDOCAIFDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2JpbmFyeUVudHJ5CQDMCAIJARZrUmVxdWVzdE93bmVyUHVibGljS2V5AQUJcmVxdWVzdElkCQDMCAIFD2NhbGxlclB1YmxpY0tleQUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILYmluYXJ5RW50cnkJAMwIAgkBEGtSZXF1ZXN0c0J5T3duZXIBBQt1c2VyQWRkcmVzcwkAzAgCCQDLAQIJAQ9yZXF1ZXN0c0J5T3duZXIBBQt1c2VyQWRkcmVzcwUJcmVxdWVzdElkBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEVa1JlcXVlc3RBbW91bnRBc3NldElkAQUJcmVxdWVzdElkCQDMCAIFEGFtb3VudEFzc2V0SWRTdHIFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARRrUmVxdWVzdFByaWNlQXNzZXRJZAEFCXJlcXVlc3RJZAkAzAgCBQ9wcmljZUFzc2V0SWRTdHIFA25pbAUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKYWRkQWNjb3VudAIPY2FsbGVyUHVibGljS2V5BGFyZ3MEBmNrZWNrcwkAzAgCAwkBASEBBQhzaHV0ZG93bgYJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNrZWNrcwUGY2tlY2tzBBBjcmVhdG9yUHVibGljS2V5CQDZBAEJAJEDAgUEYXJncwAABBBhY2NvdW50UHVibGljS2V5BQ9jYWxsZXJQdWJsaWNLZXkEDmFjY291bnRBZGRyZXNzCQCnCAEFD2NhbGxlclB1YmxpY0tleQQOY3JlYXRvckFkZHJlc3MJAKcIAQUQY3JlYXRvclB1YmxpY0tleQQGY2hlY2tzCQDMCAIDCQAAAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwkBGGtBY2NvdW50Q3JlYXRvclB1YmxpY0tleQEFDmFjY291bnRBZGRyZXNzBQR1bml0BgkBCHRocm93RXJyAQIZYWNjb3VudCBpcyBhbHJlYWR5IGV4aXN0cwkAzAgCAwQHJG1hdGNoMAkA8QcBBQ5hY2NvdW50QWRkcmVzcwMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQAAAgUBYgkA8RUBCQENYWNjb3VudFNjcmlwdAAHBgkBCHRocm93RXJyAQIOaW52YWxpZCBzY3JpcHQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNJHQwMTY5NDUxODE4NgMJAAACCQDIAQEJAQ1yZXF1ZXN0c1F1ZXVlAAAACQCUCgIFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEOa0FjY291bnRzUXVldWUACQDMCAIJAMsBAgkBDWFjY291bnRzUXVldWUABRBhY2NvdW50UHVibGljS2V5BQNuaWwFA25pbAUDbmlsBAlyZXF1ZXN0SWQJAMkBAgkBDXJlcXVlc3RzUXVldWUABQ1xdWV1ZUl0ZW1TaXplBAhsZXZlcmFnZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEQa1JlcXVlc3RMZXZlcmFnZQEFCXJlcXVlc3RJZAkBB3dyYXBFcnIBAh9yZXF1ZXN0J3MgbGV2ZXJhZ2UgaXMgdW5kZWZpbmVkCQCUCgIFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgxpbnRlZ2VyRW50cnkJAMwIAgkBDmtSZXF1ZXN0U3RhdHVzAQUJcmVxdWVzdElkCQDMCAIFFFJFUVVFU1RfU1RBVFVTX1JFQURZBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEca1JlcXVlc3RJZFRvQWNjb3VudFB1YmxpY0tleQEFCXJlcXVlc3RJZAkAzAgCBRBhY2NvdW50UHVibGljS2V5BQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEOa1JlcXVlc3RzUXVldWUACQDMCAIJAMoBAgkBDXJlcXVlc3RzUXVldWUABQ1xdWV1ZUl0ZW1TaXplBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEaa0FjY291bnRBZGRyZXNzVG9SZXF1ZXN0SWQBBQ5hY2NvdW50QWRkcmVzcwkAzAgCCQDYBAEFCXJlcXVlc3RJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwINdHJhbnNmZXJXYXZlcwkAzAgCCAUOY3JlYXRvckFkZHJlc3MFYnl0ZXMJAMwIAgkBDHJld2FyZEFtb3VudAAFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEJa0xldmVyYWdlAQUOYWNjb3VudEFkZHJlc3MJAMwIAgUIbGV2ZXJhZ2UFA25pbAUDbmlsBQNuaWwEB2FjdGlvbnMIBQ0kdDAxNjk0NTE4MTg2Al8xBA5mYWN0b3J5QWN0aW9ucwgFDSR0MDE2OTQ1MTgxODYCXzIJAJQKAgUHYWN0aW9ucwkAzggCBQ5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtiaW5hcnlFbnRyeQkAzAgCCQEYa0FjY291bnRDcmVhdG9yUHVibGljS2V5AQUOYWNjb3VudEFkZHJlc3MJAMwIAgUQY3JlYXRvclB1YmxpY0tleQUDbmlsBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdkZXBvc2l0Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABA5hY2NvdW50QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUEYXJncwAACQEHd3JhcEVycgECF2ludmFsaWQgYWNjb3VudCBhZGRyZXNzBAZja2Vja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhUxIHBheW1lbnQgaXMgcmVxdWlyZWQJAMwIAgMJAAACCAUHcGF5bWVudAdhc3NldElkBQt1c2R0QXNzZXRJZAYJAQh0aHJvd0VycgECDWludmFsaWQgYXNzZXQJAMwIAgMJAAACCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEOa1JlcXVlc3RTdGF0dXMBCQEMZ2V0UmVxdWVzdElkAQUOYWNjb3VudEFkZHJlc3MFFFJFUVVFU1RfU1RBVFVTX1JFQURZBgkBCHRocm93RXJyAQIUYWNjb3VudCBpcyBub3QgcmVhZHkFA25pbAMJAAACBQZja2Vja3MFBmNrZWNrcwQHYWN0aW9ucwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5hY2NvdW50QWRkcmVzcwgFB3BheW1lbnQGYW1vdW50CAUHcGF5bWVudAdhc3NldElkBQNuaWwEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEKa0RlcG9zaXRlZAEFDmFjY291bnRBZGRyZXNzCQDMCAIJAGQCCQELdmFsdWVPckVsc2UCCQEPZGVwb3NpdGVkT3B0aW9uAQUOYWNjb3VudEFkZHJlc3MAAAgFB3BheW1lbnQGYW1vdW50BQNuaWwFA25pbAUDbmlsCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3Ag9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2tlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQILbm90IGFsbG93ZWQJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyBQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MEC3VzZXJBZGRyZXNzCQCnCAEFD2NhbGxlclB1YmxpY0tleQQOYWNjb3VudEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFBGFyZ3MAAAkBB3dyYXBFcnIBAhdpbnZhbGlkIGFjY291bnQgYWRkcmVzcwQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQRhcmdzAAEJAQd3cmFwRXJyAQIOaW52YWxpZCBhbW91bnQEB2Fzc2V0SWQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFBGFyZ3MAAgQLaW52b2NhdGlvbnMJAMwIAgkA/AcEBQ5hY2NvdW50QWRkcmVzcwINdHJhbnNmZXJBc3NldAkAzAgCCAULdXNlckFkZHJlc3MFYnl0ZXMJAMwIAgUGYW1vdW50CQDMCAIFB2Fzc2V0SWQFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQtpbnZvY2F0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZib3Jyb3cCD2NhbGxlclB1YmxpY0tleQRhcmdzBA5hY2NvdW50QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUEYXJncwAACQEHd3JhcEVycgECF2ludmFsaWQgYWNjb3VudCBhZGRyZXNzBBBhc3NldElkUmVxdWVzdGVkCQEMcGFyc2VBc3NldElkAQkAkQMCBQRhcmdzAAEED2Ftb3VudFJlcXVlc3RlZAkBDmVuc3VyZVBvc2l0aXZlAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUEYXJncwACCQEHd3JhcEVycgECGGludmFsaWQgcmVxdWVzdGVkIGFtb3VudAIQcmVxdWVzdGVkIGFtb3VudAQVYWNjb3VudE93bmVyUHVibGljS2V5CQEYZ2V0QWNjb3VudE93bmVyUHVibGljS2V5AQUOYWNjb3VudEFkZHJlc3MEC3VzZXJBZGRyZXNzCQCnCAEFD2NhbGxlclB1YmxpY0tleQQGY2tlY2tzCQDMCAIDCQEBIQEFCHNodXRkb3duBgkBCHRocm93RXJyAQILbm90IGFsbG93ZWQJAMwIAgkBC211c3RGYWN0b3J5AQgFAWkGY2FsbGVyCQDMCAIDCQAAAgUPY2FsbGVyUHVibGljS2V5BRVhY2NvdW50T3duZXJQdWJsaWNLZXkGCQEIdGhyb3dFcnIBAiNjYW4gYmUgY2FsbGVkIGJ5IGFjY291bnQgb3duZXIgb25seQUDbmlsAwkAAAIFBmNrZWNrcwUGY2tlY2tzBA1hbW91bnRBc3NldElkCAkBEGdldEFjY291bnRBc3NldHMBBQ5hY2NvdW50QWRkcmVzcwJfMQQJZGVwb3NpdGVkCQEFdG9YMTgCCQELdmFsdWVPckVsc2UCCQEPZGVwb3NpdGVkT3B0aW9uAQUOYWNjb3VudEFkZHJlc3MAAAkBDXBvdzEwRGVjaW1hbHMBBQt1c2R0QXNzZXRJZAQMY3VycmVudFByaWNlCQEFdG9YMTgCCQEPZ2V0Q3VycmVudFByaWNlAQUNYW1vdW50QXNzZXRJZAkBDXBvdzEwRGVjaW1hbHMBBQt1c2R0QXNzZXRJZAQHY3JlZGl0QQkBBXRvWDE4AgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBB2tDcmVkaXQCBQ5hY2NvdW50QWRkcmVzcwUNYW1vdW50QXNzZXRJZAAACQENcG93MTBEZWNpbWFscwEFDWFtb3VudEFzc2V0SWQEB2NyZWRpdEIJAQV0b1gxOAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MJAQdrQ3JlZGl0AgUOYWNjb3VudEFkZHJlc3MFC3VzZHRBc3NldElkAAAJAQ1wb3cxMERlY2ltYWxzAQULdXNkdEFzc2V0SWQEC3RvdGFsQ3JlZGl0CQEPY2FsY1RvdGFsQ3JlZGl0AwUHY3JlZGl0QQUHY3JlZGl0QgUMY3VycmVudFByaWNlBAhsZXZlcmFnZQkBBXRvWDE4AgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEJa0xldmVyYWdlAQUOYWNjb3VudEFkZHJlc3MJAQd3cmFwRXJyAQIabGV2ZXJhZ2Ugc2hvdWxkIGJlIGRlZmluZWQAAQQTY3JlZGl0QXZhaWxhYmxlVXNkdAkBE2NhbGNDcmVkaXRBdmFpbGFibGUDBQlkZXBvc2l0ZWQFCGxldmVyYWdlBQt0b3RhbENyZWRpdAQPY3JlZGl0QXZhaWxhYmxlAwkAAAIFEGFzc2V0SWRSZXF1ZXN0ZWQFDWFtb3VudEFzc2V0SWQJAQdmcm9tWDE4AgkAvAIDBRNjcmVkaXRBdmFpbGFibGVVc2R0BQxtdWx0MThCaWdJbnQFDGN1cnJlbnRQcmljZQkBDXBvdzEwRGVjaW1hbHMBBQ1hbW91bnRBc3NldElkAwkAAAIFEGFzc2V0SWRSZXF1ZXN0ZWQFC3VzZHRBc3NldElkCQEHZnJvbVgxOAIFE2NyZWRpdEF2YWlsYWJsZVVzZHQJAQ1wb3cxMERlY2ltYWxzAQULdXNkdEFzc2V0SWQJAQh0aHJvd0VycgECGmludmFsaWQgcmVxdWVzdGVkIGFzc2V0IGlkBBBzeW50aGV0aWNBc3NldElkCQEMcGFyc2VBc3NldElkAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDmZhY3RvcnlBZGRyZXNzCQERa1N5bnRoZXRpY0Fzc2V0SWQBBRBhc3NldElkUmVxdWVzdGVkCQEHd3JhcEVycgECMHN5bnRoZXRpYyBhc3NldCBmb3IgcmVxdWVzdGVkIGFzc2V0IGlzIHVuZGVmaW5lZAQMYW1vdW50VG9TZW5kAwkAZwIFD2NyZWRpdEF2YWlsYWJsZQUPYW1vdW50UmVxdWVzdGVkBQ9hbW91bnRSZXF1ZXN0ZWQJAQh0aHJvd0VycgEJAKwCAgITY3JlZGl0IGF2YWlsYWJsZSA9IAkApAMBBQ9jcmVkaXRBdmFpbGFibGUEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEHa0NyZWRpdAIFDmFjY291bnRBZGRyZXNzBRBhc3NldElkUmVxdWVzdGVkCQDMCAIJAGQCCQELdmFsdWVPckVsc2UCCQEMY3JlZGl0T3B0aW9uAgUOYWNjb3VudEFkZHJlc3MFEGFzc2V0SWRSZXF1ZXN0ZWQAAAUMYW1vdW50VG9TZW5kBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAg10cmFuc2ZlckFzc2V0CQDMCAIIBQt1c2VyQWRkcmVzcwVieXRlcwkAzAgCBQxhbW91bnRUb1NlbmQJAMwIAgUQc3ludGhldGljQXNzZXRJZAUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwJAMwIAgUOZmFjdG9yeUFjdGlvbnMJAMwIAgUPY3JlZGl0QXZhaWxhYmxlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFcmVwYXkCD2NhbGxlclB1YmxpY0tleQRhcmdzBAZja2Vja3MJAMwIAgMJAQEhAQUIc2h1dGRvd24GCQEIdGhyb3dFcnIBAgtub3QgYWxsb3dlZAkAzAgCCQELbXVzdEZhY3RvcnkBCAUBaQZjYWxsZXIFA25pbAMJAAACBQZja2Vja3MFBmNrZWNrcwkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQc2V0UGFpckFsbG93YW5jZQIPY2FsbGVyUHVibGljS2V5BGFyZ3MEBmNrZWNrcwkAzAgCAwkBASEBBQhzaHV0ZG93bgYJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgkAzAgCCQEJbXVzdEFkbWluAQUPY2FsbGVyUHVibGljS2V5BQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MEEGFtb3VudEFzc2V0SWRTdHIJAJEDAgUEYXJncwAABA9wcmljZUFzc2V0SWRTdHIJAJEDAgUEYXJncwABBAhhbGxvd1N0cgkAkQMCBQRhcmdzAAIEDWFtb3VudEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBRBhbW91bnRBc3NldElkU3RyBAxwcmljZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ9wcmljZUFzc2V0SWRTdHIEBWFsbG93CQAAAgUIYWxsb3dTdHICBHRydWUEC2ludm9jYXRpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGJvb2xlYW5FbnRyeQkAzAgCCQEMa1BhaXJBbGxvd2VkAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkCQDMCAIFBWFsbG93BQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAULaW52b2NhdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERYWRkU3ludGhldGljQXNzZXQCD2NhbGxlclB1YmxpY0tleQRhcmdzBAtiYXNlQXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEJAJEDAgUEYXJncwAABBBzeW50aGV0aWNBc3NldElkCQEMcGFyc2VBc3NldElkAQkAkQMCBQRhcmdzAAEEBmNrZWNrcwkAzAgCAwkBASEBBQhzaHV0ZG93bgYJAQh0aHJvd0VycgECC25vdCBhbGxvd2VkCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgkAzAgCCQEJbXVzdEFkbWluAQUPY2FsbGVyUHVibGljS2V5CQDMCAIDCQAAAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBEWtTeW50aGV0aWNBc3NldElkAQULYmFzZUFzc2V0SWQFBHVuaXQGCQEIdGhyb3dFcnIBAhJpbnZhbGlkIGJhc2UgYXNzZXQJAMwIAgMJAAACCQCdCAIFDmZhY3RvcnlBZGRyZXNzCQEMa0Jhc2VBc3NldElkAQUQc3ludGhldGljQXNzZXRJZAUEdW5pdAYJAQh0aHJvd0VycgECF2ludmFsaWQgc3ludGhldGljIGFzc2V0BQNuaWwDCQAAAgUGY2tlY2tzBQZja2Vja3MEC2ludm9jYXRpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC3N0cmluZ0VudHJ5CQDMCAIJARFrU3ludGhldGljQXNzZXRJZAEFC2Jhc2VBc3NldElkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBRBzeW50aGV0aWNBc3NldElkBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEMa0Jhc2VBc3NldElkAQUQc3ludGhldGljQXNzZXRJZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQtpbnZvY2F0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpkb1NodXRkb3duAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgkAzAgCCQEJbXVzdEFkbWluAQUPY2FsbGVyUHVibGljS2V5BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEC2ludm9jYXRpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGJvb2xlYW5FbnRyeQkAzAgCBQlrU2h1dGRvd24JAMwIAgYFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQtpbnZvY2F0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZnZXRBY2NvdW50SW5mb1JFQURPTkxZAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA5hY2NvdW50QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUEYXJncwAACQEHd3JhcEVycgECF2ludmFsaWQgYWNjb3VudCBhZGRyZXNzBARkYXRhCQEWZ2V0QWNjb3VudEluZm9JbnRlcm5hbAEFDmFjY291bnRBZGRyZXNzCQCUCgIFA25pbAUEZGF0YQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNnZXRVc2VySW5mb1JFQURPTkxZAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUEYXJncwAACQEHd3JhcEVycgECFGludmFsaWQgdXNlciBhZGRyZXNzBAx1c2VyUmVxdWVzdHMJAQt2YWx1ZU9yRWxzZQIJAJwIAgUOZmFjdG9yeUFkZHJlc3MJARBrUmVxdWVzdHNCeU93bmVyAQULdXNlckFkZHJlc3MBAAQSdXNlclJlcXVlc3RzTnVtYmVyCQBpAgkAyAEBBQx1c2VyUmVxdWVzdHMFDXF1ZXVlSXRlbVNpemUKAQ9nZXRBY2NvdW50c0RhdGECA2FjYwVjb3VudAQNJHQwMjU2MjIyNTY2NAUDYWNjBAthY2NEYXRhTGlzdAgFDSR0MDI1NjIyMjU2NjQCXzEECHJhd0J5dGVzCAUNJHQwMjU2MjIyNTY2NAJfMgQHbWF4U2l6ZQgFDSR0MDI1NjIyMjU2NjQCXzMDCQBmAgUHbWF4U2l6ZQUFY291bnQECXJlcXVlc3RJZAkAyQECBQhyYXdCeXRlcwUNcXVldWVJdGVtU2l6ZQQLbmV3UmF3Qnl0ZXMJAMoBAgUIcmF3Qnl0ZXMFDXF1ZXVlSXRlbVNpemUEEGFjY291bnRQdWJsaWNLZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQ5mYWN0b3J5QWRkcmVzcwkBHGtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkBBQlyZXF1ZXN0SWQCJmtSZXF1ZXN0SWRUb0FjY291bnRQdWJsaWNLZXkgbm90IGZvdW5kBA5hY2NvdW50QWRkcmVzcwkApwgBBRBhY2NvdW50UHVibGljS2V5BARkYXRhCQEWZ2V0QWNjb3VudEluZm9JbnRlcm5hbAEFDmFjY291bnRBZGRyZXNzCQCVCgMJAM0IAgULYWNjRGF0YUxpc3QFBGRhdGEFC25ld1Jhd0J5dGVzBQdtYXhTaXplBQNhY2MEDSR0MDI2MTY4MjYyNzMKAAIkbAUKSU5ERVhfTElTVAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQx1c2VyUmVxdWVzdHMFEnVzZXJSZXF1ZXN0c051bWJlcgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEPZ2V0QWNjb3VudHNEYXRhAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEC2FjY0RhdGFMaXN0CAUNJHQwMjYxNjgyNjI3MwJfMQQCX2EIBQ0kdDAyNjE2ODI2MjczAl8yBAJfYggFDSR0MDI2MTY4MjYyNzMCXzMJAJQKAgUDbmlsBQthY2NEYXRhTGlzdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBlZGl0UGFpclNldHRpbmdzAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAthbW91bnRBc3NldAkBDHBhcnNlQXNzZXRJZAEJAJEDAgUEYXJncwAABApwcmljZUFzc2V0CQEMcGFyc2VBc3NldElkAQkAkQMCBQRhcmdzAAEEBXByaWNlCQCRAwIFBGFyZ3MAAgQLbWF4TGV2ZXJhZ2UJAJEDAgUEYXJncwADBA1pbml0aWFsTWFyZ2luCQCRAwIFBGFyZ3MABAQRbWFpbnRlbmFuY2VNYXJnaW4JAJEDAgUEYXJncwAFBAtzZXR0aW5nc0tleQkBEGtQYWlyU2V0dGluZ3NLZXkDBQthbW91bnRBc3NldAUKcHJpY2VBc3NldAUFcHJpY2UEEXBhaXJQcmljZXNMaXN0S2V5CQESa1BhaXJQcmljZXNMaXN0S2V5AgULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQECnByaWNlc0xpc3QJARFnZXRQYWlyUHJpY2VzTGlzdAIFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0BAduZXdMaXN0BAckbWF0Y2gwCQDPCAIFCnByaWNlc0xpc3QFBXByaWNlAwkAAQIFByRtYXRjaDACA0ludAQDaW5kBQckbWF0Y2gwBQpwcmljZXNMaXN0CQDNCAIFCnByaWNlc0xpc3QFBXByaWNlBBBwYWlyU2V0dGluZ1ZhbHVlCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFC21heExldmVyYWdlCQDMCAIFDWluaXRpYWxNYXJnaW4JAMwIAgURbWFpbnRlbmFuY2VNYXJnaW4FA25pbAUJc2VwYXJhdG9yBAZjaGVjazIJAMwIAgMJAGcCABQJAJADAQUHbmV3TGlzdAYJAQh0aHJvd0VycgECImV4Y2VlZGVkIG1heCBwcmljZXMgbGlzdCBzaXplICgyMCkFA25pbAMJAAACBQZjaGVjazIFBmNoZWNrMgQLaW52b2NhdGlvbnMJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILc3RyaW5nRW50cnkJAMwIAgkBEmtQYWlyUHJpY2VzTGlzdEtleQIFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0CQDMCAIJALkJAgUHbmV3TGlzdAUJc2VwYXJhdG9yBQNuaWwFA25pbAkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEQa1BhaXJTZXR0aW5nc0tleQMFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0BQVwcmljZQkAzAgCBRBwYWlyU2V0dGluZ1ZhbHVlBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAULaW52b2NhdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESZGVsZXRlUGFpclNldHRpbmdzAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQGY2hlY2tzCQDMCAIJAQttdXN0RmFjdG9yeQEIBQFpBmNhbGxlcgUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAthbW91bnRBc3NldAkBDHBhcnNlQXNzZXRJZAEJAJEDAgUEYXJncwAABApwcmljZUFzc2V0CQEMcGFyc2VBc3NldElkAQkAkQMCBQRhcmdzAAEEBXByaWNlCQCRAwIFBGFyZ3MAAgQLc2V0dGluZ3NLZXkJARBrUGFpclNldHRpbmdzS2V5AwULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQFBXByaWNlBBFwYWlyUHJpY2VzTGlzdEtleQkBEmtQYWlyUHJpY2VzTGlzdEtleQIFC2Ftb3VudEFzc2V0BQpwcmljZUFzc2V0BApwcmljZXNMaXN0CQERZ2V0UGFpclByaWNlc0xpc3QCBQthbW91bnRBc3NldAUKcHJpY2VBc3NldAQHbmV3TGlzdAQHJG1hdGNoMAkAzwgCBQpwcmljZXNMaXN0BQVwcmljZQMJAAECBQckbWF0Y2gwAgNJbnQEA2luZAUHJG1hdGNoMAkA0QgCBQpwcmljZXNMaXN0BQNpbmQFCnByaWNlc0xpc3QEC2ludm9jYXRpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCC2RlbGV0ZUVudHJ5CQDMCAIFC3NldHRpbmdzS2V5BQNuaWwFA25pbAkAzAgCAwkAAAIJAJADAQUHbmV3TGlzdAAACQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtkZWxldGVFbnRyeQkAzAgCCQESa1BhaXJQcmljZXNMaXN0S2V5AgULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQFA25pbAUDbmlsCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQESa1BhaXJQcmljZXNMaXN0S2V5AgULYW1vdW50QXNzZXQFCnByaWNlQXNzZXQJAMwIAgkAuQkCBQduZXdMaXN0BQlzZXBhcmF0b3IFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQtpbnZvY2F0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQADAwkBCWlzRGVmaW5lZAEFFGZhY3RvcnlBZGRyZXNzT3B0aW9uCQEJaXNEZWZpbmVkAQkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUJa011bHRpc2lnBwQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwUJa011bHRpc2lnAwkAAQIFByRtYXRjaDACBlN0cmluZwQIbXVsdGlzaWcFByRtYXRjaDAECXN0YXR1c0tleQkBB2tTdGF0dXMCCQClCAEFBHRoaXMJANgEAQgFAnR4AmlkBAZzdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJsIAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUIbXVsdGlzaWcFCXN0YXR1c0tleQcFBnN0YXR1cwcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXly7dNm", "chainId": 84, "height": 3210737, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8zzMcAZTqhdJkLuVs6TBUdssS2ha1THPrBPRfoma5arf Next: 3uceZoYcAbY3d3yXKcKLK2QFpqMG1NxGpLVS55fZ7PY3 Diff:
OldNewDifferences
264264 }
265265
266266
267-func aX (aR,aS,aY) = makeString(["%s%s%s%s", I(aR), I(aS), aY, "settings"], a)
267+func aX (aR,aS,aY) = makeString(["%s%s%d%s", I(aR), I(aS), aY, "settings"], a)
268268
269269
270270 func aZ (K) = {
677677
678678
679679 @Callable(bU)
680-func deletePairSetting (ae,bX) = {
680+func editPairSettings (ae,bX) = {
681681 let cd = [ac(bU.caller)]
682682 if ((cd == cd))
683683 then {
684684 let cQ = G(bX[0])
685685 let cR = G(bX[1])
686686 let bc = bX[2]
687- let cS = aX(cQ, cR, bc)
688- let cT = aV(cQ, cR)
689- let cU = aW(cQ, cR)
690- let cV = {
691- let M = indexOf(cU, bc)
687+ let cS = bX[3]
688+ let cT = bX[4]
689+ let cU = bX[5]
690+ let cV = aX(cQ, cR, bc)
691+ let cW = aV(cQ, cR)
692+ let cX = aW(cQ, cR)
693+ let cY = {
694+ let M = indexOf(cX, bc)
692695 if ($isInstanceOf(M, "Int"))
693696 then {
694- let cW = M
695- removeByIndex(cU, cW)
697+ let cZ = M
698+ cX
696699 }
697- else cU
700+ else (cX :+ bc)
698701 }
699- let cn = [invoke(T, "deleteEntry", [cS], nil), if ((size(cV) == 0))
702+ let da = makeString(["%s%s%s", cS, cT, cU], a)
703+ let db = [if ((20 >= size(cY)))
704+ then true
705+ else D("exceeded max prices list size (20)")]
706+ if ((db == db))
707+ then {
708+ let cn = [invoke(T, "stringEntry", [aV(cQ, cR), makeString(cY, a)], nil), invoke(T, "stringEntry", [aX(cQ, cR, bc), da], nil)]
709+ $Tuple2(nil, cn)
710+ }
711+ else throw("Strict value is not equal to itself.")
712+ }
713+ else throw("Strict value is not equal to itself.")
714+ }
715+
716+
717+
718+@Callable(bU)
719+func deletePairSettings (ae,bX) = {
720+ let cd = [ac(bU.caller)]
721+ if ((cd == cd))
722+ then {
723+ let cQ = G(bX[0])
724+ let cR = G(bX[1])
725+ let bc = bX[2]
726+ let cV = aX(cQ, cR, bc)
727+ let cW = aV(cQ, cR)
728+ let cX = aW(cQ, cR)
729+ let cY = {
730+ let M = indexOf(cX, bc)
731+ if ($isInstanceOf(M, "Int"))
732+ then {
733+ let cZ = M
734+ removeByIndex(cX, cZ)
735+ }
736+ else cX
737+ }
738+ let cn = [invoke(T, "deleteEntry", [cV], nil), if ((size(cY) == 0))
700739 then invoke(T, "deleteEntry", [aV(cQ, cR)], nil)
701- else invoke(T, "stringEntry", [aV(cQ, cR), makeString(cV, a)], nil)]
740+ else invoke(T, "stringEntry", [aV(cQ, cR), makeString(cY, a)], nil)]
702741 $Tuple2(nil, cn)
703742 }
704743 else throw("Strict value is not equal to itself.")
705744 }
706745
707746
708-@Verifier(cX)
709-func cY () = if (if (isDefined(S))
747+@Verifier(dc)
748+func dd () = if (if (isDefined(S))
710749 then isDefined(getString(T, m))
711750 else false)
712751 then {
714753 if ($isInstanceOf(M, "String"))
715754 then {
716755 let af = M
717- let cZ = n(toString(this), toBase58String(cX.id))
718- let bT = valueOrElse(getBoolean(addressFromStringValue(af), cZ), false)
756+ let de = n(toString(this), toBase58String(dc.id))
757+ let bT = valueOrElse(getBoolean(addressFromStringValue(af), de), false)
719758 bT
720759 }
721760 else false
722761 }
723- else sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
762+ else sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
724763
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = take(drop(this.bytes, 1), 1)
77
88 let c = base58'2W'
99
1010 let d = "futures_calculator.ride"
1111
1212 let e = 100000000
1313
1414 let f = toBigInt(1000000000000000000)
1515
1616 let g = 8
1717
1818 let h = 6
1919
2020 let i = "WAVES"
2121
2222 let j = 32
2323
2424 let k = toBigInt(0)
2525
2626 let l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
2727
2828 let m = "%s__multisig"
2929
3030 func n (o,p) = makeString(["%s__status", o, p], a)
3131
3232
3333 let q = "%s__shutdown"
3434
3535 let r = "%s__publicKeys"
3636
3737 let s = "%s__matcherPublicKey"
3838
3939 func t (u,v) = fraction(toBigInt(u), f, toBigInt(v))
4040
4141
4242 func w (x,y) = toInt(fraction(x, toBigInt(y), f))
4343
4444
4545 func z (A) = isDefined(addressFromString(A))
4646
4747
4848 func B (C) = ((d + ": ") + C)
4949
5050
5151 func D (C) = throw(B(C))
5252
5353
5454 func E (F,C) = if ((F >= 0))
5555 then F
5656 else D((C + " value should be positive"))
5757
5858
5959 func G (H) = if ((H == i))
6060 then unit
6161 else fromBase58String(H)
6262
6363
6464 func I (H) = if ((H == unit))
6565 then i
6666 else toBase58String(value(H))
6767
6868
6969 func J (K) = valueOrErrorMessage(assetInfo(K), B("invalid asset info"))
7070
7171
7272 func L (K) = {
7373 let M = K
7474 if ($isInstanceOf(M, "Unit"))
7575 then g
7676 else if ($isInstanceOf(M, "ByteVector"))
7777 then {
7878 let K = M
7979 J(K).decimals
8080 }
8181 else throw("Match error")
8282 }
8383
8484
8585 func N (K,A) = {
8686 let M = K
8787 if ($isInstanceOf(M, "Unit"))
8888 then wavesBalance(A).available
8989 else if ($isInstanceOf(M, "ByteVector"))
9090 then {
9191 let K = M
9292 assetBalance(A, K)
9393 }
9494 else throw("Match error")
9595 }
9696
9797
9898 func O (P) = pow(10, 0, P, 0, 0, DOWN)
9999
100100
101101 func Q (K) = O(L(K))
102102
103103
104104 let R = "%s__factoryAddress"
105105
106106 let S = {
107107 let M = getString(this, R)
108108 if ($isInstanceOf(M, "String"))
109109 then {
110110 let C = M
111111 addressFromString(C)
112112 }
113113 else if ($isInstanceOf(M, "Unit"))
114114 then unit
115115 else throw("Match error")
116116 }
117117
118118 let T = valueOrErrorMessage(S, B("invalid factory address"))
119119
120120 let U = "%s__usdtAssetId"
121121
122122 let V = {
123123 let M = getString(T, U)
124124 if ($isInstanceOf(M, "String"))
125125 then {
126126 let C = M
127127 G(C)
128128 }
129129 else if ($isInstanceOf(M, "Unit"))
130130 then unit
131131 else throw("Match error")
132132 }
133133
134134 let W = valueOrErrorMessage(V, B("invalid usdt asset id"))
135135
136136 let X = "%s__calculatorAddress"
137137
138138 let Y = valueOrElse(getBoolean(T, q), false)
139139
140140 func Z (aa,A) = if ((aa == A))
141141 then true
142142 else D("permission denied")
143143
144144
145145 func ab (aa) = Z(aa, this)
146146
147147
148148 func ac (aa) = Z(aa, T)
149149
150150
151151 func ad (ae) = {
152152 let af = addressFromStringValue(getStringValue(T, m))
153153 let ag = split(getStringValue(af, r), a)
154154 if (containsElement(ag, toBase58String(ae)))
155155 then true
156156 else D("not allowed")
157157 }
158158
159159
160160 let ah = "%s__accountScript"
161161
162162 func ai () = valueOrErrorMessage(getBinary(T, ah), B("account script is not set"))
163163
164164
165165 let aj = "%s__rewardAmount"
166166
167167 func ak () = valueOrErrorMessage(getInteger(T, aj), B("reward amount is not set"))
168168
169169
170170 let al = "%s__accountsLimit"
171171
172172 let am = 20
173173
174174 func an () = valueOrElse(getInteger(T, al), am)
175175
176176
177177 func ao (ap) = makeString(["%s%s", "deposited", toString(ap)], a)
178178
179179
180180 func aq (ap) = getInteger(T, ao(ap))
181181
182182
183183 func ar (ap,K) = makeString(["%s%s%s", "credit", toString(ap), I(K)], a)
184184
185185
186186 func as (ap,K) = getInteger(T, ar(ap, K))
187187
188188
189189 func at (ap) = makeString(["%s%s", "leverage", toString(ap)], a)
190190
191191
192192 func au (av) = makeString(["%s%s", "requestLeverage", toBase58String(av)], a)
193193
194194
195195 func aw (ax) = makeString(["%s%s", "syntheticAssetId", I(ax)], a)
196196
197197
198198 func ay (az) = makeString(["%s%s", "baseAssetId", I(az)], a)
199199
200200
201201 let aA = 0
202202
203203 let aB = 1
204204
205205 func aC (av) = makeString(["%s%s", toBase58String(av), "status"], a)
206206
207207
208208 func aD (ap) = makeString(["%s%s", toString(ap), "creatorPublicKey"], a)
209209
210210
211211 func aE (av) = makeString(["%s%s", toBase58String(av), "ownerPublicKey"], a)
212212
213213
214214 func aF (av) = makeString(["%s%s", toBase58String(av), "amountAssetId"], a)
215215
216216
217217 func aG (av) = makeString(["%s%s", toBase58String(av), "priceAssetId"], a)
218218
219219
220220 func aH (av) = makeString(["%s%s", toBase58String(av), "requestIdToAccountPublicKey"], a)
221221
222222
223223 func aI (ap) = makeString(["%s%s", toString(ap), "accountAddressToRequestId"], a)
224224
225225
226226 func aJ () = makeString(["%s", "requestsQueue"], a)
227227
228228
229229 func aK () = valueOrElse(getBinary(T, aJ()), base58'')
230230
231231
232232 func aL () = makeString(["%s", "accountsQueue"], a)
233233
234234
235235 func aM () = valueOrElse(getBinary(T, aL()), base58'')
236236
237237
238238 func aN (aO) = makeString(["%s%s", "requests", toString(aO)], a)
239239
240240
241241 func aP (aO) = valueOrElse(getBinary(T, aN(aO)), base58'')
242242
243243
244244 func aQ (aR,aS) = makeString(["%s%s%s", I(aR), I(aS), "pairAllowed"], a)
245245
246246
247247 func aT (aR,aS) = valueOrElse(getBoolean(T, aQ(aR, aS)), false)
248248
249249
250250 func aU (K) = makeString(["%s", I(K)], a)
251251
252252
253253 func aV (aR,aS) = makeString(["%s%s%s", I(aR), I(aS), "pairSettingPrices"], a)
254254
255255
256256 func aW (aR,aS) = {
257257 let M = getString(T, aV(aR, aS))
258258 if ($isInstanceOf(M, "String"))
259259 then {
260260 let C = M
261261 split(C, a)
262262 }
263263 else nil
264264 }
265265
266266
267-func aX (aR,aS,aY) = makeString(["%s%s%s%s", I(aR), I(aS), aY, "settings"], a)
267+func aX (aR,aS,aY) = makeString(["%s%s%d%s", I(aR), I(aS), aY, "settings"], a)
268268
269269
270270 func aZ (K) = {
271271 let ba = fromBase58String(valueOrErrorMessage(getString(T, s), B("invalid matcher public key")))
272272 let bb = addressFromPublicKey(ba)
273273 let bc = valueOrErrorMessage(getInteger(bb, aU(K)), B(("invalid price, assetId = " + I(K))))
274274 bc
275275 }
276276
277277
278278 func bd (be,bf,bg) = (fraction(be, bg, f) + bf)
279279
280280
281281 func bh (bi,bj,bg) = (fraction(bi, bg, f) + bj)
282282
283283
284284 func bk (bl,bm) = (bl - bm)
285285
286286
287287 func bn (bo,bp,bm) = (fraction(bo, bp, f) - bm)
288288
289289
290290 func bq (br,bs) = if ((br > k))
291291 then (br - bs)
292292 else k
293293
294294
295295 func bt (br,bs) = if ((br > k))
296296 then (bs - br)
297297 else k
298298
299299
300300 func bu (bv,bw) = if ((bw > k))
301301 then max([k, fraction(bv, f, bw)])
302302 else k
303303
304304
305305 func bx (bv,bw) = if ((bw > k))
306306 then max([k, fraction(bw, f, bv)])
307307 else k
308308
309309
310310 func by (bz,bA,bg,bB) = fraction((fraction(bz, bg, f) + bA), bB, f)
311311
312312
313313 func bC (bD,bB,bE) = fraction(bD, bE, bB)
314314
315315
316316 func bF (bo,bG,bz,bA,bH,bI) = {
317317 let bJ = if ((bz > k))
318318 then (((bo - bG) / bz) + bH)
319319 else k
320320 let bK = if ((bA > k))
321321 then (bI - ((bo - bG) / (bz / bI)))
322322 else k
323323 (bJ + bK)
324324 }
325325
326326
327327 func bL (ap) = {
328328 let av = fromBase58String(valueOrErrorMessage(getString(T, aI(ap)), B("invalid account address: request id is undefined")))
329329 av
330330 }
331331
332332
333333 func bM (ap) = {
334334 let av = bL(ap)
335335 let aR = G(valueOrErrorMessage(getString(T, aF(av)), B("invalid amount asset id")))
336336 let aS = G(valueOrErrorMessage(getString(T, aG(av)), B("invalid amount price id")))
337337 $Tuple2(aR, aS)
338338 }
339339
340340
341341 func bN (ap) = {
342342 let av = bL(ap)
343343 let bO = valueOrErrorMessage(getBinary(T, aE(av)), B("invalid amount asset id"))
344344 bO
345345 }
346346
347347
348348 func bP (ap) = {
349349 let bQ = bM(ap)
350350 let aR = bQ._1
351351 let aS = bQ._2
352352 let bp = valueOrErrorMessage(getInteger(T, at(ap)), B("leverage should be defined"))
353353 let av = bL(ap)
354354 let bR = valueOrErrorMessage(getBinary(T, aH(av)), "kRequestIdToAccountPublicKey not found")
355355 let bS = valueOrElse(aq(ap), 0)
356356 let bg = t(aZ(aR), Q(aS))
357357 let be = valueOrElse(getInteger(T, ar(ap, aR)), 0)
358358 let bf = valueOrElse(getInteger(T, ar(ap, aS)), 0)
359359 let bT = valueOrErrorMessage(getInteger(T, aC(av)), ("status not found. RequestId = " + toBase58String(av)))
360360 $Tuple12(I(aR), I(aS), toString(ap), toBase58String(bR), bp, toBase58String(av), bS, be, bf, N(G(aw(aR)), ap), N(G(aw(aS)), ap), bT)
361361 }
362362
363363
364364 @Callable(bU)
365365 func init (bV) = {
366366 let bW = ab(bU.caller)
367367 if ((bW == bW))
368368 then $Tuple2([StringEntry(R, bV)], unit)
369369 else throw("Strict value is not equal to itself.")
370370 }
371371
372372
373373
374374 @Callable(bU)
375375 func requestAccount (ae,bX) = {
376376 let bY = [if (!(Y))
377377 then true
378378 else D("not allowed"), ac(bU.caller)]
379379 if ((bY == bY))
380380 then {
381381 let bZ = bX[0]
382382 let ca = bX[1]
383383 let bp = valueOrErrorMessage(parseInt(bX[2]), B("invalid leverage"))
384384 let cb = addressFromPublicKey(ae)
385385 let av = sha256(((cb.bytes + fromBase58String(bZ)) + fromBase58String(ca)))
386386 let aR = G(bZ)
387387 let aS = G(ca)
388388 let cc = (size(aN(cb)) / j)
389389 let cd = [if ((size(bU.payments) == 1))
390390 then true
391391 else D("1 payment is required"), if ((bU.payments[0].assetId == unit))
392392 then true
393393 else D("invalid asset"), if ((bU.payments[0].amount == ak()))
394394 then true
395395 else D("invalid amount"), if (aT(aR, aS))
396396 then true
397397 else D("pair is not allowed"), if ((getInteger(T, aC(av)) == unit))
398398 then true
399399 else D("account is already exists"), if ((an() > cc))
400400 then true
401401 else D(("accounts limit is " + toString(an())))]
402402 if ((cd == cd))
403403 then {
404404 let ce = if ((size(aM()) == 0))
405405 then $Tuple2([ScriptTransfer(T, ak(), unit)], [invoke(T, "integerEntry", [aC(av), aA], nil), invoke(T, "binaryEntry", [aJ(), (aK() + av)], nil), invoke(T, "integerEntry", [au(av), bp], nil)])
406406 else {
407407 let bR = take(aM(), j)
408408 let ap = addressFromPublicKey(bR)
409409 let cf = addressFromPublicKey(valueOrErrorMessage(getBinary(T, aD(ap)), B("invalid creator public key")))
410410 $Tuple2([ScriptTransfer(cf, ak(), unit)], [invoke(T, "binaryEntry", [aL(), drop(aM(), j)], nil), invoke(T, "integerEntry", [aC(av), aB], nil), invoke(T, "binaryEntry", [aH(av), bR], nil), invoke(T, "stringEntry", [aI(ap), toBase58String(av)], nil), invoke(T, "integerEntry", [at(ap), bp], nil)])
411411 }
412412 let cg = ce._1
413413 let ch = ce._2
414414 $Tuple2(cg, (ch ++ [invoke(T, "binaryEntry", [aE(av), ae], nil), invoke(T, "binaryEntry", [aN(cb), (aP(cb) + av)], nil), invoke(T, "stringEntry", [aF(av), bZ], nil), invoke(T, "stringEntry", [aG(av), ca], nil)]))
415415 }
416416 else throw("Strict value is not equal to itself.")
417417 }
418418 else throw("Strict value is not equal to itself.")
419419 }
420420
421421
422422
423423 @Callable(bU)
424424 func addAccount (ae,bX) = {
425425 let bY = [if (!(Y))
426426 then true
427427 else D("not allowed"), ac(bU.caller)]
428428 if ((bY == bY))
429429 then {
430430 let ci = fromBase58String(bX[0])
431431 let bR = ae
432432 let ap = addressFromPublicKey(ae)
433433 let cf = addressFromPublicKey(ci)
434434 let cd = [if ((getBinary(T, aD(ap)) == unit))
435435 then true
436436 else D("account is already exists"), if ({
437437 let M = scriptHash(ap)
438438 if ($isInstanceOf(M, "ByteVector"))
439439 then {
440440 let cj = M
441441 (cj == blake2b256_32Kb(ai()))
442442 }
443443 else false
444444 })
445445 then true
446446 else D("invalid script")]
447447 if ((cd == cd))
448448 then {
449449 let ck = if ((size(aK()) == 0))
450450 then $Tuple2(nil, [invoke(T, "binaryEntry", [aL(), (aM() + bR)], nil)])
451451 else {
452452 let av = take(aK(), j)
453453 let bp = valueOrErrorMessage(getInteger(T, au(av)), B("request's leverage is undefined"))
454454 $Tuple2(nil, [invoke(T, "integerEntry", [aC(av), aB], nil), invoke(T, "binaryEntry", [aH(av), bR], nil), invoke(T, "binaryEntry", [aJ(), drop(aK(), j)], nil), invoke(T, "stringEntry", [aI(ap), toBase58String(av)], nil), invoke(T, "transferWaves", [cf.bytes, ak()], nil), invoke(T, "integerEntry", [at(ap), bp], nil)])
455455 }
456456 let cg = ck._1
457457 let ch = ck._2
458458 $Tuple2(cg, (ch ++ [invoke(T, "binaryEntry", [aD(ap), ci], nil)]))
459459 }
460460 else throw("Strict value is not equal to itself.")
461461 }
462462 else throw("Strict value is not equal to itself.")
463463 }
464464
465465
466466
467467 @Callable(bU)
468468 func deposit (ae,bX) = {
469469 let cl = bU.payments[0]
470470 let ap = valueOrErrorMessage(addressFromString(bX[0]), B("invalid account address"))
471471 let bY = [if (!(Y))
472472 then true
473473 else D("not allowed"), ac(bU.caller), if ((size(bU.payments) == 1))
474474 then true
475475 else D("1 payment is required"), if ((cl.assetId == W))
476476 then true
477477 else D("invalid asset"), if ((getInteger(T, aC(bL(ap))) == aB))
478478 then true
479479 else D("account is not ready")]
480480 if ((bY == bY))
481481 then {
482482 let cg = [ScriptTransfer(ap, cl.amount, cl.assetId)]
483483 let ch = [invoke(T, "integerEntry", [ao(ap), (valueOrElse(aq(ap), 0) + cl.amount)], nil)]
484484 $Tuple2(cg, ch)
485485 }
486486 else throw("Strict value is not equal to itself.")
487487 }
488488
489489
490490
491491 @Callable(bU)
492492 func withdraw (ae,bX) = {
493493 let bY = [if (!(Y))
494494 then true
495495 else D("not allowed"), ac(bU.caller)]
496496 if ((bY == bY))
497497 then {
498498 let cb = addressFromPublicKey(ae)
499499 let ap = valueOrErrorMessage(addressFromString(bX[0]), B("invalid account address"))
500500 let cm = valueOrErrorMessage(parseInt(bX[1]), B("invalid amount"))
501501 let K = G(bX[2])
502502 let cn = [invoke(ap, "transferAsset", [cb.bytes, cm, K], nil)]
503503 $Tuple2(nil, cn)
504504 }
505505 else throw("Strict value is not equal to itself.")
506506 }
507507
508508
509509
510510 @Callable(bU)
511511 func borrow (ae,bX) = {
512512 let ap = valueOrErrorMessage(addressFromString(bX[0]), B("invalid account address"))
513513 let co = G(bX[1])
514514 let cp = E(valueOrErrorMessage(parseInt(bX[2]), B("invalid requested amount")), "requested amount")
515515 let cq = bN(ap)
516516 let cb = addressFromPublicKey(ae)
517517 let bY = [if (!(Y))
518518 then true
519519 else D("not allowed"), ac(bU.caller), if ((ae == cq))
520520 then true
521521 else D("can be called by account owner only")]
522522 if ((bY == bY))
523523 then {
524524 let aR = bM(ap)._1
525525 let bS = t(valueOrElse(aq(ap), 0), Q(W))
526526 let bg = t(aZ(aR), Q(W))
527527 let be = t(valueOrElse(getInteger(T, ar(ap, aR)), 0), Q(aR))
528528 let bf = t(valueOrElse(getInteger(T, ar(ap, W)), 0), Q(W))
529529 let bm = bd(be, bf, bg)
530530 let bp = t(valueOrErrorMessage(getInteger(T, at(ap)), B("leverage should be defined")), 1)
531531 let cr = bn(bS, bp, bm)
532532 let cs = if ((co == aR))
533533 then w(fraction(cr, f, bg), Q(aR))
534534 else if ((co == W))
535535 then w(cr, Q(W))
536536 else D("invalid requested asset id")
537537 let az = G(valueOrErrorMessage(getString(T, aw(co)), B("synthetic asset for requested asset is undefined")))
538538 let ct = if ((cs >= cp))
539539 then cp
540540 else D(("credit available = " + toString(cs)))
541541 let ch = [invoke(T, "integerEntry", [ar(ap, co), (valueOrElse(as(ap, co), 0) + ct)], nil), invoke(T, "transferAsset", [cb.bytes, ct, az], nil)]
542542 $Tuple2(nil, [ch, cs])
543543 }
544544 else throw("Strict value is not equal to itself.")
545545 }
546546
547547
548548
549549 @Callable(bU)
550550 func repay (ae,bX) = {
551551 let bY = [if (!(Y))
552552 then true
553553 else D("not allowed"), ac(bU.caller)]
554554 if ((bY == bY))
555555 then $Tuple2(nil, unit)
556556 else throw("Strict value is not equal to itself.")
557557 }
558558
559559
560560
561561 @Callable(bU)
562562 func setPairAllowance (ae,bX) = {
563563 let bY = [if (!(Y))
564564 then true
565565 else D("not allowed"), ac(bU.caller), ad(ae)]
566566 if ((bY == bY))
567567 then {
568568 let bZ = bX[0]
569569 let ca = bX[1]
570570 let cu = bX[2]
571571 let aR = G(bZ)
572572 let aS = G(ca)
573573 let cv = (cu == "true")
574574 let cn = [invoke(T, "booleanEntry", [aQ(aR, aS), cv], nil)]
575575 $Tuple2(nil, cn)
576576 }
577577 else throw("Strict value is not equal to itself.")
578578 }
579579
580580
581581
582582 @Callable(bU)
583583 func addSyntheticAsset (ae,bX) = {
584584 let ax = G(bX[0])
585585 let az = G(bX[1])
586586 let bY = [if (!(Y))
587587 then true
588588 else D("not allowed"), ac(bU.caller), ad(ae), if ((getString(T, aw(ax)) == unit))
589589 then true
590590 else D("invalid base asset"), if ((getString(T, ay(az)) == unit))
591591 then true
592592 else D("invalid synthetic asset")]
593593 if ((bY == bY))
594594 then {
595595 let cn = [invoke(T, "stringEntry", [aw(ax), I(az)], nil), invoke(T, "stringEntry", [ay(az), I(ax)], nil)]
596596 $Tuple2(nil, cn)
597597 }
598598 else throw("Strict value is not equal to itself.")
599599 }
600600
601601
602602
603603 @Callable(bU)
604604 func doShutdown (ae,bX) = {
605605 let cd = [ac(bU.caller), ad(ae)]
606606 if ((cd == cd))
607607 then {
608608 let cn = [invoke(T, "booleanEntry", [q, true], nil)]
609609 $Tuple2(nil, cn)
610610 }
611611 else throw("Strict value is not equal to itself.")
612612 }
613613
614614
615615
616616 @Callable(bU)
617617 func getAccountInfoREADONLY (ae,bX) = {
618618 let cd = [ac(bU.caller)]
619619 if ((cd == cd))
620620 then {
621621 let ap = valueOrErrorMessage(addressFromString(bX[0]), B("invalid account address"))
622622 let cw = bP(ap)
623623 $Tuple2(nil, cw)
624624 }
625625 else throw("Strict value is not equal to itself.")
626626 }
627627
628628
629629
630630 @Callable(bU)
631631 func getUserInfoREADONLY (ae,bX) = {
632632 let cd = [ac(bU.caller)]
633633 if ((cd == cd))
634634 then {
635635 let cb = valueOrErrorMessage(addressFromString(bX[0]), B("invalid user address"))
636636 let cx = valueOrElse(getBinary(T, aN(cb)), base58'')
637637 let cc = (size(cx) / j)
638638 func cy (cz,cA) = {
639639 let cB = cz
640640 let cC = cB._1
641641 let cD = cB._2
642642 let cE = cB._3
643643 if ((cE > cA))
644644 then {
645645 let av = take(cD, j)
646646 let cF = drop(cD, j)
647647 let bR = valueOrErrorMessage(getBinary(T, aH(av)), "kRequestIdToAccountPublicKey not found")
648648 let ap = addressFromPublicKey(bR)
649649 let cw = bP(ap)
650650 $Tuple3((cC :+ cw), cF, cE)
651651 }
652652 else cz
653653 }
654654
655655 let cG = {
656656 let cH = l
657657 let cI = size(cH)
658658 let cJ = $Tuple3(nil, cx, cc)
659659 func cK (cL,cM) = if ((cM >= cI))
660660 then cL
661661 else cy(cL, cH[cM])
662662
663663 func cN (cL,cM) = if ((cM >= cI))
664664 then cL
665665 else throw("List size exceeds 20")
666666
667667 cN(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cK(cJ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
668668 }
669669 let cC = cG._1
670670 let cO = cG._2
671671 let cP = cG._3
672672 $Tuple2(nil, cC)
673673 }
674674 else throw("Strict value is not equal to itself.")
675675 }
676676
677677
678678
679679 @Callable(bU)
680-func deletePairSetting (ae,bX) = {
680+func editPairSettings (ae,bX) = {
681681 let cd = [ac(bU.caller)]
682682 if ((cd == cd))
683683 then {
684684 let cQ = G(bX[0])
685685 let cR = G(bX[1])
686686 let bc = bX[2]
687- let cS = aX(cQ, cR, bc)
688- let cT = aV(cQ, cR)
689- let cU = aW(cQ, cR)
690- let cV = {
691- let M = indexOf(cU, bc)
687+ let cS = bX[3]
688+ let cT = bX[4]
689+ let cU = bX[5]
690+ let cV = aX(cQ, cR, bc)
691+ let cW = aV(cQ, cR)
692+ let cX = aW(cQ, cR)
693+ let cY = {
694+ let M = indexOf(cX, bc)
692695 if ($isInstanceOf(M, "Int"))
693696 then {
694- let cW = M
695- removeByIndex(cU, cW)
697+ let cZ = M
698+ cX
696699 }
697- else cU
700+ else (cX :+ bc)
698701 }
699- let cn = [invoke(T, "deleteEntry", [cS], nil), if ((size(cV) == 0))
702+ let da = makeString(["%s%s%s", cS, cT, cU], a)
703+ let db = [if ((20 >= size(cY)))
704+ then true
705+ else D("exceeded max prices list size (20)")]
706+ if ((db == db))
707+ then {
708+ let cn = [invoke(T, "stringEntry", [aV(cQ, cR), makeString(cY, a)], nil), invoke(T, "stringEntry", [aX(cQ, cR, bc), da], nil)]
709+ $Tuple2(nil, cn)
710+ }
711+ else throw("Strict value is not equal to itself.")
712+ }
713+ else throw("Strict value is not equal to itself.")
714+ }
715+
716+
717+
718+@Callable(bU)
719+func deletePairSettings (ae,bX) = {
720+ let cd = [ac(bU.caller)]
721+ if ((cd == cd))
722+ then {
723+ let cQ = G(bX[0])
724+ let cR = G(bX[1])
725+ let bc = bX[2]
726+ let cV = aX(cQ, cR, bc)
727+ let cW = aV(cQ, cR)
728+ let cX = aW(cQ, cR)
729+ let cY = {
730+ let M = indexOf(cX, bc)
731+ if ($isInstanceOf(M, "Int"))
732+ then {
733+ let cZ = M
734+ removeByIndex(cX, cZ)
735+ }
736+ else cX
737+ }
738+ let cn = [invoke(T, "deleteEntry", [cV], nil), if ((size(cY) == 0))
700739 then invoke(T, "deleteEntry", [aV(cQ, cR)], nil)
701- else invoke(T, "stringEntry", [aV(cQ, cR), makeString(cV, a)], nil)]
740+ else invoke(T, "stringEntry", [aV(cQ, cR), makeString(cY, a)], nil)]
702741 $Tuple2(nil, cn)
703742 }
704743 else throw("Strict value is not equal to itself.")
705744 }
706745
707746
708-@Verifier(cX)
709-func cY () = if (if (isDefined(S))
747+@Verifier(dc)
748+func dd () = if (if (isDefined(S))
710749 then isDefined(getString(T, m))
711750 else false)
712751 then {
713752 let M = getString(T, m)
714753 if ($isInstanceOf(M, "String"))
715754 then {
716755 let af = M
717- let cZ = n(toString(this), toBase58String(cX.id))
718- let bT = valueOrElse(getBoolean(addressFromStringValue(af), cZ), false)
756+ let de = n(toString(this), toBase58String(dc.id))
757+ let bT = valueOrElse(getBoolean(addressFromStringValue(af), de), false)
719758 bT
720759 }
721760 else false
722761 }
723- else sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
762+ else sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
724763

github/deemru/w8io/169f3d6 
82.97 ms