tx · G46EbvhUp8mM8ndb5NoenpmVNZw36UaADbnx9KNXSVEz

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.03000000 Waves

2022.08.02 17:53 [2167017] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "G46EbvhUp8mM8ndb5NoenpmVNZw36UaADbnx9KNXSVEz", "fee": 3000000, "feeAssetId": null, "timestamp": 1659452042517, "version": 1, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "3P8ryYfQXHtveicTzC1U2HgFsAbYewUSVuYFSQ33PDLWnpZrtkvPdHEQ2825XTwEh4NHP2V1mUd1WeBnojviC9zQ" ], "script": "base64:BgJACAISCAoGCAgBAQEIEgUKAwEIAhIDCgEBEgMKAQESBAoCCAgSBAoCCAgSAwoBCBIDCgEIEgQKAggBEgMKAQgSAGwAA1NFUAICX18ABlNDQUxFOAAIAAVNVUxUOACAwtcvAA5QT09MV0VJR0hUTVVMVAUFTVVMVDgBBHN0cmYCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEDaW96AgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEDaW9kAwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEDaW9mAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBA2FicwEDdmFsAwkAZgIAAAUDdmFsCQEBLQEFA3ZhbAUDdmFsAQNhYWwBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55THlzdAUHJG1hdGNoMAUKdmFsQW55THlzdAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQECYWkBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUDU0VQAB5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwAAFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICC3Byb2dyYW1OYW1lBQNuaWwFA1NFUAAacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQCBnd4bG9jawATcmVmZXJyYWxQcm9ncmFtTmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRZrZXlSZWZlcnJhbFByb2dyYW1OYW1lBRpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdAERa2V5RmFjdG9yeUFkZHJlc3MAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAQAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAACABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAADABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAABAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAFABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAABgAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAHABRJZHhGYWN0b3J5Q2ZnRGFvRGFwcAAIABpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcAAJABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAKABZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwAAsBDWtleUZhY3RvcnlDZmcAAhElc19fZmFjdG9yeUNvbmZpZwEaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcBCmxwQXNzZXRTdHIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUKbHBBc3NldFN0cgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUDU0VQARBrZXlGYWN0b3J5THBMaXN0AAIQJXNfX2xwVG9rZW5zTGlzdAEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBCmxwQXNzZXRTdHIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUKbHBBc3NldFN0cgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUDU0VQARRrZXlGYWN0b3J5UG9vbFdlaWdodAEPY29udHJhY3RBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgpwb29sV2VpZ2h0CQDMCAIFD2NvbnRyYWN0QWRkcmVzcwUDbmlsBQNTRVABG2tleUZhY3RvcnlQb29sV2VpZ2h0SGlzdG9yeQILcG9vbEFkZHJlc3MDbnVtCQCsAgIJAKwCAgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FC3Bvb2xBZGRyZXNzAgJfXwkApAMBBQNudW0BGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBEWtleUZhY3RvcnlBZGRyZXNzAAEKcmVhZExwTGlzdAAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCCQEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAkBEGtleUZhY3RvcnlMcExpc3QAAgAFA1NFUAEUcmVhZEZhY3RvcnlDZmdPckZhaWwBB2ZhY3RvcnkJALUJAgkBBHN0cmYCBQdmYWN0b3J5CQENa2V5RmFjdG9yeUNmZwAFA1NFUAEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAEha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50AAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50ARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawEba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uARNrZXlFbWlzc2lvbkVuZEJsb2NrAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQ1rZXlOZXh0UGVyaW9kAAIOJXNfX25leHRQZXJpb2QBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQAAiglcyVzX19nd3hSZXdhcmRFbWlzc2lvblBhcnRfX3N0YXJ0SGVpZ2h0AA1JZHhDZmdBc3NldElkAAEAE0lkeENmZ01pbkxvY2tBbW91bnQAAgAVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uAAMAFUlkeENmZ01heExvY2tEdXJhdGlvbgAEABJJZHhDZmdNYXRoQ29udHJhY3QABQEJa2V5Q29uZmlnAAIKJXNfX2NvbmZpZwEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAkAtQkCCQEEc3RyZgIFBHRoaXMJAQlrZXlDb25maWcABQNTRVAADG1hdGhDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCCQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAUSSWR4Q2ZnTWF0aENvbnRyYWN0AQ1mb3JtYXRDb25maWdTBQdhc3NldElkDW1pbkxvY2tBbW91bnQPbWluTG9ja0R1cmF0aW9uD21heExvY2tEdXJhdGlvbgxtYXRoQ29udHJhY3QJALkJAgkAzAgCAgglcyVkJWQlZAkAzAgCBQdhc3NldElkCQDMCAIFDW1pbkxvY2tBbW91bnQJAMwIAgUPbWluTG9ja0R1cmF0aW9uCQDMCAIFD21heExvY2tEdXJhdGlvbgkAzAgCBQxtYXRoQ29udHJhY3QFA25pbAUDU0VQAQxmb3JtYXRDb25maWcFB2Fzc2V0SWQNbWluTG9ja0Ftb3VudA9taW5Mb2NrRHVyYXRpb24PbWF4TG9ja0R1cmF0aW9uDG1hdGhDb250cmFjdAkBDWZvcm1hdENvbmZpZ1MFBQdhc3NldElkCQCkAwEFDW1pbkxvY2tBbW91bnQJAKQDAQUPbWluTG9ja0R1cmF0aW9uCQCkAwEFD21heExvY2tEdXJhdGlvbgUMbWF0aENvbnRyYWN0ARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBC211c3RNYW5hZ2VyAQFpBAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvcgAOSWR4TG9ja1VzZXJOdW0AAQANSWR4TG9ja0Ftb3VudAACAAxJZHhMb2NrU3RhcnQAAwAPSWR4TG9ja0R1cmF0aW9uAAQADUlkeExvY2tQYXJhbUsABQANSWR4TG9ja1BhcmFtQgAGARNrZXlMb2NrUGFyYW1zUmVjb3JkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICCiVzJXNfX2xvY2sJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARpyZWFkTG9ja1BhcmFtc1JlY29yZE9yRmFpbAELdXNlckFkZHJlc3MJALUJAgkBBHN0cmYCBQR0aGlzCQETa2V5TG9ja1BhcmFtc1JlY29yZAEFC3VzZXJBZGRyZXNzBQNTRVABF2Zvcm1hdExvY2tQYXJhbXNSZWNvcmRTCAd1c2VyTnVtBmFtb3VudAVzdGFydAhkdXJhdGlvbgZwYXJhbUsGcGFyYW1CEGxhc3RVcGRUaW1lc3RhbXAJZ3d4QW1vdW50CQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCBQd1c2VyTnVtCQDMCAIFBmFtb3VudAkAzAgCBQVzdGFydAkAzAgCBQhkdXJhdGlvbgkAzAgCBQZwYXJhbUsJAMwIAgUGcGFyYW1CCQDMCAIFEGxhc3RVcGRUaW1lc3RhbXAJAMwIAgUJZ3d4QW1vdW50BQNuaWwFA1NFUAEWZm9ybWF0TG9ja1BhcmFtc1JlY29yZAcHdXNlck51bQZhbW91bnQFc3RhcnQIZHVyYXRpb24GcGFyYW1LBnBhcmFtQglnd3hBbW91bnQJARdmb3JtYXRMb2NrUGFyYW1zUmVjb3JkUwgFB3VzZXJOdW0JAKQDAQUGYW1vdW50CQCkAwEFBXN0YXJ0CQCkAwEFCGR1cmF0aW9uCQCkAwEFBnBhcmFtSwkApAMBBQZwYXJhbUIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAKQDAQUJZ3d4QW1vdW50AQ5rZXlOZXh0VXNlck51bQACDyVzX19uZXh0VXNlck51bQESa2V5VXNlcjJOdW1NYXBwaW5nAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARJrZXlOdW0yVXNlck1hcHBpbmcBA251bQkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fbnVtMnVzZXIJAMwIAgUDbnVtBQNuaWwFA1NFUAEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgZhbW91bnQFA25pbAUDU0VQARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICBXN0YXJ0BQNuaWwFA1NFUAEUa2V5TG9ja1BhcmFtRHVyYXRpb24BB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIIZHVyYXRpb24FA25pbAUDU0VQAQ1rZXlMb2NrUGFyYW1LAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICAWsFA25pbAUDU0VQAQ1rZXlMb2NrUGFyYW1CAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICAWIFA25pbAUDU0VQARVrZXlMb2NrUGFyYW1CeVBlcmlvZEsCB3VzZXJOdW0GcGVyaW9kCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUHdXNlck51bQkAzAgCAgFrCQDMCAIFBnBlcmlvZAUDbmlsBQNTRVABFWtleUxvY2tQYXJhbUJ5UGVyaW9kQgIHdXNlck51bQZwZXJpb2QJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQd1c2VyTnVtCQDMCAICAWIJAMwIAgUGcGVyaW9kBQNuaWwFA1NFUAEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQAAh4lcyVzX19zdGF0c19fYWN0aXZlVG90YWxMb2NrZWQBIGtleVN0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAAIlJXMlc19fc3RhdHNfX2xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwESa2V5U3RhdHNMb2Nrc0NvdW50AAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBEmtleVN0YXRzVXNlcnNDb3VudAACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50ASBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAEHdXNlck51bQkAuQkCCQDMCAICHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAEia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAIHdXNlck51bQlscEFzc2V0SWQJALkJAgkAzAgCAh4lcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnQJAMwIAgUHdXNlck51bQkAzAgCBQlscEFzc2V0SWQFA25pbAUDU0VQARdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTAEHdXNlck51bQkAuQkCCQDMCAICESVzJWRfX21heEJvb3N0SW50CQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbAEHdXNlck51bQkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAETa2V5VXNlckJvb3N0Q2xhaW1lZAEHdXNlck51bQkAuQkCCQDMCAICFiVzJWRfX3VzZXJCb29zdENsYWltZWQJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABEWtleVRvdGFsQ2FjaGVkR3d4AAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAAPZmFjdG9yeUNvbnRyYWN0CQEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAAKZmFjdG9yeUNmZwkBFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQUPZmFjdG9yeUNvbnRyYWN0ABBlbWlzc2lvbkNvbnRyYWN0CQEYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwAPc3Rha2luZ0NvbnRyYWN0CQEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnABFnd3hSZXdhcmRDb250cmFjdAkBGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnAQxIaXN0b3J5RW50cnkIBHR5cGUEdXNlcgZhbW91bnQJbG9ja1N0YXJ0CGR1cmF0aW9uAWsBYgFpBApoaXN0b3J5S0VZCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUEdHlwZQkAzAgCBQR1c2VyCQDMCAIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsBQNTRVAEC2hpc3RvcnlEQVRBCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUGYW1vdW50CQDMCAIJAKQDAQUJbG9ja1N0YXJ0CQDMCAIJAKQDAQUIZHVyYXRpb24JAMwIAgkApAMBBQFrCQDMCAIJAKQDAQUBYgUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIFCmhpc3RvcnlLRVkFC2hpc3RvcnlEQVRBAQpTdGF0c0VudHJ5BA50b3RhbExvY2tlZEluYwtkdXJhdGlvbkluYwxsb2NrQ291bnRJbmMNdXNlcnNDb3VudEluYwQbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZCQEga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MABA1sb2Nrc0NvdW50S0VZCQESa2V5U3RhdHNMb2Nrc0NvdW50AAQNdXNlcnNDb3VudEtFWQkBEmtleVN0YXRzVXNlcnNDb3VudAAEDnRvdGFsQW1vdW50S0VZCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABBhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MJAQNpb3oCBQR0aGlzBRtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkECmxvY2tzQ291bnQJAQNpb3oCBQR0aGlzBQ1sb2Nrc0NvdW50S0VZBAp1c2Vyc0NvdW50CQEDaW96AgUEdGhpcwUNdXNlcnNDb3VudEtFWQQLdG90YWxBbW91bnQJAQNpb3oCBQR0aGlzBQ50b3RhbEFtb3VudEtFWQkAzAgCCQEMSW50ZWdlckVudHJ5AgUbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZCQBkAgUYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzBQtkdXJhdGlvbkluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgUNbG9ja3NDb3VudEtFWQkAZAIFCmxvY2tzQ291bnQFDGxvY2tDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgUNdXNlcnNDb3VudEtFWQkAZAIFCnVzZXJzQ291bnQFDXVzZXJzQ291bnRJbmMJAMwIAgkBDEludGVnZXJFbnRyeQIFDnRvdGFsQW1vdW50S0VZCQBkAgULdG90YWxBbW91bnQFDnRvdGFsTG9ja2VkSW5jBQNuaWwBDWNhbGNHd3hBbW91bnQDBGtSYXcEYlJhdwFoBAVTQ0FMRQDoBwkAaQIJAGQCCQBoAgUEa1JhdwUBaAUEYlJhdwUFU0NBTEUBD0xvY2tQYXJhbXNFbnRyeQgLdXNlckFkZHJlc3MHdXNlck51bQZhbW91bnQFc3RhcnQIZHVyYXRpb24BawFiBnBlcmlvZAQNdXNlckFtb3VudEtFWQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQd1c2VyTnVtBA1zdGFydEJsb2NrS0VZCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFB3VzZXJOdW0EC2R1cmF0aW9uS0VZCQEUa2V5TG9ja1BhcmFtRHVyYXRpb24BBQd1c2VyTnVtBARrS0VZCQENa2V5TG9ja1BhcmFtSwEFB3VzZXJOdW0EBGJLRVkJAQ1rZXlMb2NrUGFyYW1CAQUHdXNlck51bQQMa0J5UGVyaW9kS0VZCQEVa2V5TG9ja1BhcmFtQnlQZXJpb2RLAgUHdXNlck51bQUGcGVyaW9kBAxiQnlQZXJpb2RLRVkJARVrZXlMb2NrUGFyYW1CeVBlcmlvZEICBQd1c2VyTnVtBQZwZXJpb2QECWd3eEFtb3VudAkBDWNhbGNHd3hBbW91bnQDBQFrBQFiBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDXVzZXJBbW91bnRLRVkFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNc3RhcnRCbG9ja0tFWQUFc3RhcnQJAMwIAgkBDEludGVnZXJFbnRyeQIFC2R1cmF0aW9uS0VZBQhkdXJhdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUEa0tFWQUBawkAzAgCCQEMSW50ZWdlckVudHJ5AgUEYktFWQUBYgkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa0J5UGVyaW9kS0VZBQFrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxiQnlQZXJpb2RLRVkFAWIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUxvY2tQYXJhbXNSZWNvcmQBBQt1c2VyQWRkcmVzcwkBFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQHBQd1c2VyTnVtBQZhbW91bnQFBXN0YXJ0BQhkdXJhdGlvbgUBawUBYgUJZ3d4QW1vdW50BQNuaWwBImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwCAWkPZXhwZWN0ZWRBc3NldElkAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAAAAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFD2V4cGVjdGVkQXNzZXRJZAkAAgECG2ludmFsaWQgYXNzZXQgaWQgaW4gcGF5bWVudAgFA3BtdAZhbW91bnQBGWNhbGNVc2VyR3d4QW1vdW50QXRIZWlnaHQCC3VzZXJBZGRyZXNzDHRhcmdldEhlaWdodAQFRU1QVFkCBWVtcHR5BBJ1c2VyMk51bU1hcHBpbmdLRVkJARJrZXlVc2VyMk51bU1hcHBpbmcBBQt1c2VyQWRkcmVzcwQHdXNlck51bQkBC3ZhbHVlT3JFbHNlAgkAoggBBRJ1c2VyMk51bU1hcHBpbmdLRVkFBUVNUFRZBAFrCQELdmFsdWVPckVsc2UCCQCfCAEJAQ1rZXlMb2NrUGFyYW1LAQUHdXNlck51bQAABAFiCQELdmFsdWVPckVsc2UCCQCfCAEJAQ1rZXlMb2NrUGFyYW1CAQUHdXNlck51bQAABA1nd3hBbW91bnRDYWxjCQENY2FsY0d3eEFtb3VudAMFAWsFAWIFDHRhcmdldEhlaWdodAQJZ3d4QW1vdW50AwkAZgIAAAUNZ3d4QW1vdW50Q2FsYwAABQ1nd3hBbW91bnRDYWxjBQlnd3hBbW91bnQBFGNhbGNDdXJyZW50R3d4QW1vdW50AQt1c2VyQWRkcmVzcwkBGWNhbGNVc2VyR3d4QW1vdW50QXRIZWlnaHQCBQt1c2VyQWRkcmVzcwUGaGVpZ2h0ARRpbnRlcm5hbENsYWltV3hCb29zdAMMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCHJlYWRPbmx5BAVFTVBUWQIFRU1QVFkEEXVzZXJSZWNvcmRPckVtcHR5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARNrZXlMb2NrUGFyYW1zUmVjb3JkAQUOdXNlckFkZHJlc3NTdHIFBUVNUFRZAwkAAAIFEXVzZXJSZWNvcmRPckVtcHR5BQVFTVBUWQkAlQoDAAAFA25pbAIVdXNlclJlY29yZDo6aXM6OmVtcHR5BA91c2VyUmVjb3JkQXJyYXkJALUJAgURdXNlclJlY29yZE9yRW1wdHkFA1NFUAQKdXNlck51bVN0cgkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDklkeExvY2tVc2VyTnVtBBxnd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFEWd3eFJld2FyZENvbnRyYWN0CQEfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAAAAAQIRU1QVFlTVFICBWVtcHR5BA0kdDAxMzk1ODE0NTI2AwkBAiE9AgUMbHBBc3NldElkU3RyBQhFTVBUWVNUUgQOcG9vbEFkZHJlc3NTdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ9mYWN0b3J5Q29udHJhY3QJARprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwEFDGxwQXNzZXRJZFN0cgkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFDGxwQXNzZXRJZFN0cgQDcHcxCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9mYWN0b3J5Q29udHJhY3QJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEFDnBvb2xBZGRyZXNzU3RyBANwdzAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPZmFjdG9yeUNvbnRyYWN0CQEba2V5RmFjdG9yeVBvb2xXZWlnaHRIaXN0b3J5AgUOcG9vbEFkZHJlc3NTdHIAAAUDcHcxCQCUCgIFA3B3MAUDcHcxAwUIcmVhZE9ubHkJAJQKAgAAAAAJAAIBCQCsAgICKG5vdCByZWFkb25seSBtb2RlOiB1bnN1cHBvcnRlZCBscCBhc3NldCAFDGxwQXNzZXRJZFN0cgQLcG9vbFdlaWdodDAIBQ0kdDAxMzk1ODE0NTI2Al8xBAtwb29sV2VpZ2h0MQgFDSR0MDEzOTU4MTQ1MjYCXzIEEnd4RW1pc3Npb25QZXJCbG9jawkBA2lvZgIFEGVtaXNzaW9uQ29udHJhY3QJAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQABA1lbWlzc2lvblN0YXJ0CQEDaW9mAgUQZW1pc3Npb25Db250cmFjdAkBFWtleUVtaXNzaW9uU3RhcnRCbG9jawAEC2VtaXNzaW9uRW5kCQEDaW9mAgUQZW1pc3Npb25Db250cmFjdAkBE2tleUVtaXNzaW9uRW5kQmxvY2sABAFoAwkAZgIFBmhlaWdodAULZW1pc3Npb25FbmQFC2VtaXNzaW9uRW5kBQZoZWlnaHQEAmRoCQCWAwEJAMwIAgkAZQIFAWgFDWVtaXNzaW9uU3RhcnQJAMwIAgAABQNuaWwEInVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkJASJrZXlVc2VyTHBCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAgUKdXNlck51bVN0cgUMbHBBc3NldElkU3RyBCB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAQUKdXNlck51bVN0cgQddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUidXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBA2lvegIFBHRoaXMFIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZBBVib29zdEVtaXNzaW9uSW50ZWdyYWwJAGkCCQBoAgkAaAIFEnd4RW1pc3Npb25QZXJCbG9jawUCZGgAAgADBBl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQBlAgUVYm9vc3RFbWlzc2lvbkludGVncmFsBR11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbAQDdWRoCQBrAwUZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAADCQBoAgACBRJ3eEVtaXNzaW9uUGVyQmxvY2sEBnVMYXN0SAkAZQIFAWgFA3VkaAQEdWRoMAkAlgMBCQDMCAIJAGUCBRxnd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0BQZ1TGFzdEgJAMwIAgAABQNuaWwEBHVkaDEJAGUCCQBlAgUBaAUGdUxhc3RIBQR1ZGgwAwMDCQBmAgAABQZ1TGFzdEgGCQBmAgAABQR1ZGgxBgkAZwIJAQNhYnMBCQBlAgkAZAIFBHVkaDAFBHVkaDEFA3VkaAABCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZpbnZhbGlkIHVkaCBjYWxjOiB1ZGg9CQCkAwEFA3VkaAIIIHVMYXN0SD0JAKQDAQUGdUxhc3RIAgYgdWRoMD0JAKQDAQUEdWRoMAIGIHVkaDE9CQCkAwEFBHVkaDEDCQBmAgAABRl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQACAQISd3JvbmcgY2FsY3VsYXRpb25zBBd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAQUKdXNlck51bVN0cgQYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQEYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAQPdXNlck1heEJvb3N0SW50CQEDaW96AgUEdGhpcwUXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkEEHRvdGFsTWF4Qm9vc3RJbnQJAQNpb3oCBQR0aGlzBRh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkEEXRvdGFsQ2FjaGVkR3d4S0VZCQERa2V5VG90YWxDYWNoZWRHd3gABA50b3RhbENhY2hlZEd3eAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRF0b3RhbENhY2hlZEd3eEtFWQAABAt1c2VyQ3Vyckd3eAkBFGNhbGNDdXJyZW50R3d4QW1vdW50AQUOdXNlckFkZHJlc3NTdHIEIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWQkBIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbAEFCnVzZXJOdW1TdHIEHnVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkBA2lvegIFBHRoaXMFIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWQQadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDADCQAAAgUDdWRoAAAAAAkAawMFGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwFBHVkaDAFA3VkaAQadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDEDCQAAAgUDdWRoAAAAAAkAawMFGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwFBHVkaDEFA3VkaAQecG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwwCQBrAwUadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAFC3Bvb2xXZWlnaHQwBQ5QT09MV0VJR0hUTVVMVAQecG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwxCQBrAwUadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDEFC3Bvb2xXZWlnaHQxBQ5QT09MV0VJR0hUTVVMVAQidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MAMJAAACBQ50b3RhbENhY2hlZEd3eAAAAAAJAGsDBR5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAFC3VzZXJDdXJyR3d4BQ50b3RhbENhY2hlZEd3eAQidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MQMJAAACBQ50b3RhbENhY2hlZEd3eAAAAAAJAGsDBR5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDEFC3VzZXJDdXJyR3d4BQ50b3RhbENhY2hlZEd3eAQhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3CQBkAgUidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MAUidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MQQTdXNlckJvb3N0Q2xhaW1lZEtFWQkBE2tleVVzZXJCb29zdENsYWltZWQBBQp1c2VyTnVtU3RyBBB1c2VyQm9vc3RDbGFpbWVkCQEDaW96AgUEdGhpcwUTdXNlckJvb3N0Q2xhaW1lZEtFWQQSdXNlckJvb3N0QXZhaWxhYmxlCQBlAgUhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3BRB1c2VyQm9vc3RDbGFpbWVkBAlkYXRhU3RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFInVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkFFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAUDbmlsBAVkZWJ1ZwkAuQkCCQDMCAIJAKQDAQUddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwJAMwIAgkApAMBBRl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQDMCAIJAKQDAQUQdXNlckJvb3N0Q2xhaW1lZAkAzAgCCQCkAwEFEnVzZXJCb29zdEF2YWlsYWJsZQkAzAgCCQCkAwEFC3Bvb2xXZWlnaHQwCQDMCAIJAKQDAQULcG9vbFdlaWdodDEJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUDdWRoCQDMCAIJAKQDAQUGdUxhc3RICQDMCAIJAKQDAQUEdWRoMAkAzAgCCQCkAwEFBHVkaDEJAMwIAgkApAMBBQt1c2VyQ3Vyckd3eAkAzAgCCQCkAwEFDnRvdGFsQ2FjaGVkR3d4BQNuaWwCAToJAJUKAwUhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3BQlkYXRhU3RhdGUFBWRlYnVnAQtsb2NrQWN0aW9ucwIBaQhkdXJhdGlvbgQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwABAphc3NldElkU3RyCQCRAwIFCGNmZ0FycmF5BQ1JZHhDZmdBc3NldElkBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEDW1pbkxvY2tBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUTSWR4Q2ZnTWluTG9ja0Ftb3VudAQPbWluTG9ja0R1cmF0aW9uCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFFUlkeENmZ01pbkxvY2tEdXJhdGlvbgQPbWF4TG9ja0R1cmF0aW9uCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIY2ZnQXJyYXkFFUlkeENmZ01heExvY2tEdXJhdGlvbgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AgUHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkCQACAQkArAICCQCsAgICHmludmFsaWQgYXNzZXQgaXMgaW4gcGF5bWVudCAtIAUKYXNzZXRJZFN0cgIMIGlzIGV4cGVjdGVkBA5uZXh0VXNlck51bUtFWQkBDmtleU5leHRVc2VyTnVtAAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBA51c2VySXNFeGlzdGluZwkBCWlzRGVmaW5lZAEJAKIIAQkBEmtleVVzZXIyTnVtTWFwcGluZwEFDnVzZXJBZGRyZXNzU3RyBAp1c2VyTnVtU3RyAwUOdXNlcklzRXhpc3RpbmcJAQV2YWx1ZQEJAKIIAQkBEmtleVVzZXIyTnVtTWFwcGluZwEFDnVzZXJBZGRyZXNzU3RyCQCkAwEJAQNpb2YCBQR0aGlzBQ5uZXh0VXNlck51bUtFWQQHdXNlck51bQkBDXBhcnNlSW50VmFsdWUBBQp1c2VyTnVtU3RyBAlsb2NrU3RhcnQFBmhlaWdodAQNc3RhcnRCbG9ja0tFWQkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQp1c2VyTnVtU3RyBAtkdXJhdGlvbktFWQkBFGtleUxvY2tQYXJhbUR1cmF0aW9uAQUKdXNlck51bVN0cgQNdXNlckFtb3VudEtFWQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQp1c2VyTnVtU3RyAwkAZgIFDW1pbkxvY2tBbW91bnQFCXBtdEFtb3VudAkAAgEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQ1taW5Mb2NrQW1vdW50AwkAZgIFD21pbkxvY2tEdXJhdGlvbgUIZHVyYXRpb24JAAIBCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQ9taW5Mb2NrRHVyYXRpb24DCQBmAgUIZHVyYXRpb24FD21heExvY2tEdXJhdGlvbgkAAgEJAKwCAgIwcGFzc2VkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQCkAwEFD21heExvY2tEdXJhdGlvbgMDBQ51c2VySXNFeGlzdGluZwkAZwIJAGQCCQEDaW9mAgUEdGhpcwUNc3RhcnRCbG9ja0tFWQkBA2lvZgIFBHRoaXMFC2R1cmF0aW9uS0VZBQlsb2NrU3RhcnQHCQACAQI2dGhlcmUgaXMgYW4gYWN0aXZlIGxvY2sgLSBjb25zaWRlciB0byB1c2UgaW5jcmVhc2VMb2NrAwkAZgIJAQNpb3oCBQR0aGlzBQ11c2VyQW1vdW50S0VZAAAJAAIBCQCsAgICNHRoZXJlIGFyZSBsb2NrZWQgV1hzIC0gY29uc2lkZXIgdG8gdXNlIGluY3JlYXNlTG9jayAFDXVzZXJBbW91bnRLRVkEB2NvZWZmWDgJAGsDBQhkdXJhdGlvbgUFTVVMVDgFD21heExvY2tEdXJhdGlvbgQOZ1d4QW1vdW50U3RhcnQJAGsDBQlwbXRBbW91bnQFB2NvZWZmWDgFBU1VTFQ4BBNnV3hQYXJhbXNSZXN1bHRMaXN0CQEDYWFsAQkA/AcEBQxtYXRoQ29udHJhY3QCFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBQ5nV3hBbW91bnRTdGFydAkAzAgCBQlsb2NrU3RhcnQJAMwIAgUIZHVyYXRpb24FA25pbAUDbmlsBAFrCQECYWkBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAAQBYgkBAmFpAQkAkQMCBRNnV3hQYXJhbXNSZXN1bHRMaXN0AAEEBnBlcmlvZAkApAMBCQECYWkBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAgQSd3hFbWlzc2lvblBlckJsb2NrCQEDaW9mAgUQZW1pc3Npb25Db250cmFjdAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAEDWVtaXNzaW9uU3RhcnQJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQEVa2V5RW1pc3Npb25TdGFydEJsb2NrAAQLZW1pc3Npb25FbmQJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQETa2V5RW1pc3Npb25FbmRCbG9jawAEAWgDCQBmAgUGaGVpZ2h0BQtlbWlzc2lvbkVuZAULZW1pc3Npb25FbmQFBmhlaWdodAQCZGgJAJYDAQkAzAgCCQBlAgUBaAUNZW1pc3Npb25TdGFydAkAzAgCAAAFA25pbAQgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkJASBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAEFCnVzZXJOdW1TdHIEFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAaQIJAGgCCQBoAgUSd3hFbWlzc2lvblBlckJsb2NrBQJkaAACAAMEF3VzZXJNYXhCb29zdEludGVncmFsS0VZCQEXa2V5VXNlck1heEJvb3N0SU5URUdSQUwBBQp1c2VyTnVtU3RyBBh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkJARhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwABA91c2VyTWF4Qm9vc3RJbnQJAGkCCQBoAgUOZ1d4QW1vdW50U3RhcnQFCGR1cmF0aW9uAAIEEHRvdGFsTWF4Qm9vc3RJbnQJAQNpb3oCBQR0aGlzBRh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkEEXRvdGFsQ2FjaGVkR3d4S0VZCQERa2V5VG90YWxDYWNoZWRHd3gABA50b3RhbENhY2hlZEd3eAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRF0b3RhbENhY2hlZEd3eEtFWQAABANhcnIDBQ51c2VySXNFeGlzdGluZwUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5uZXh0VXNlck51bUtFWQkAZAIFB3VzZXJOdW0AAQkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5VXNlcjJOdW1NYXBwaW5nAQUOdXNlckFkZHJlc3NTdHIFCnVzZXJOdW1TdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleU51bTJVc2VyTWFwcGluZwEFCnVzZXJOdW1TdHIFDnVzZXJBZGRyZXNzU3RyBQNuaWwJAJQKAgkAzggCCQDNCAIJAM4IAgkAzggCBQNhcnIJAQ9Mb2NrUGFyYW1zRW50cnkIBQ51c2VyQWRkcmVzc1N0cgUKdXNlck51bVN0cgUJcG10QW1vdW50BQlsb2NrU3RhcnQFCGR1cmF0aW9uBQFrBQFiBQZwZXJpb2QJAQpTdGF0c0VudHJ5BAUJcG10QW1vdW50BQhkdXJhdGlvbgABAwUOdXNlcklzRXhpc3RpbmcAAAABCQEMSGlzdG9yeUVudHJ5CAIEbG9jawUOdXNlckFkZHJlc3NTdHIFCXBtdEFtb3VudAUJbG9ja1N0YXJ0BQhkdXJhdGlvbgUBawUBYgUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkFFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgURdG90YWxDYWNoZWRHd3hLRVkJAGQCBQ50b3RhbENhY2hlZEd3eAUOZ1d4QW1vdW50U3RhcnQFA25pbAUOZ1d4QW1vdW50U3RhcnQLAWkBC2NvbnN0cnVjdG9yBhFmYWN0b3J5QWRkcmVzc1N0cg5sb2NrQXNzZXRJZFN0cg1taW5Mb2NrQW1vdW50C21pbkR1cmF0aW9uC21heER1cmF0aW9uDG1hdGhDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlOZXh0VXNlck51bQAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5Q29uZmlnAAkBDGZvcm1hdENvbmZpZwUFDmxvY2tBc3NldElkU3RyBQ1taW5Mb2NrQW1vdW50BQttaW5EdXJhdGlvbgULbWF4RHVyYXRpb24FDG1hdGhDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5RmFjdG9yeUFkZHJlc3MABRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsCQEKU3RhdHNFbnRyeQQAAAAAAAAAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdsb2NrUmVmAwhkdXJhdGlvbg9yZWZlcnJlckFkZHJlc3MJc2lnbmF0dXJlBA0kdDAyMjk2NjIzMDMxCQELbG9ja0FjdGlvbnMCBQFpBQhkdXJhdGlvbgQRbG9ja0FjdGlvbnNSZXN1bHQIBQ0kdDAyMjk2NjIzMDMxAl8xBA5nV3hBbW91bnRTdGFydAgFDSR0MDIyOTY2MjMwMzECXzIED3JlZmVycmFsQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBnJlZkludgMDCQAAAgUPcmVmZXJyZXJBZGRyZXNzAgAGCQAAAgUJc2lnbmF0dXJlAQAFBHVuaXQJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAgpjcmVhdGVQYWlyCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyZXJBZGRyZXNzCQDMCAIFD3JlZmVycmFsQWRkcmVzcwkAzAgCBQlzaWduYXR1cmUFA25pbAUDbmlsAwkAAAIFBnJlZkludgUGcmVmSW52BBF1cGRhdGVSZWZBY3Rpdml0eQkA/AcEBQxtYXRoQ29udHJhY3QCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUOZ1d4QW1vdW50U3RhcnQFA25pbAUDbmlsAwkAAAIFEXVwZGF0ZVJlZkFjdGl2aXR5BRF1cGRhdGVSZWZBY3Rpdml0eQkAlAoCBRFsb2NrQWN0aW9uc1Jlc3VsdAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQRsb2NrAQhkdXJhdGlvbgQNJHQwMjM0ODkyMzU1NAkBC2xvY2tBY3Rpb25zAgUBaQUIZHVyYXRpb24EEWxvY2tBY3Rpb25zUmVzdWx0CAUNJHQwMjM0ODkyMzU1NAJfMQQOZ1d4QW1vdW50U3RhcnQIBQ0kdDAyMzQ4OTIzNTU0Al8yBBF1cGRhdGVSZWZBY3Rpdml0eQkA/AcEBQxtYXRoQ29udHJhY3QCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUOZ1d4QW1vdW50U3RhcnQFA25pbAUDbmlsAwkAAAIFEXVwZGF0ZVJlZkFjdGl2aXR5BRF1cGRhdGVSZWZBY3Rpdml0eQkAlAoCBRFsb2NrQWN0aW9uc1Jlc3VsdAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxpbmNyZWFzZUxvY2sBDWRlbHRhRHVyYXRpb24ECGNmZ0FycmF5CQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAQKYXNzZXRJZFN0cgkAkQMCBQhjZmdBcnJheQUNSWR4Q2ZnQXNzZXRJZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBA9taW5Mb2NrRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uBA9tYXhMb2NrRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uBAlwbXRBbW91bnQJASJleHRyYWN0T3B0aW9uYWxQYXltZW50QW1vdW50T3JGYWlsAgUBaQUHYXNzZXRJZAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBA91c2VyUmVjb3JkQXJyYXkJARpyZWFkTG9ja1BhcmFtc1JlY29yZE9yRmFpbAEFDnVzZXJBZGRyZXNzU3RyBAp1c2VyTnVtU3RyCQCRAwIFD3VzZXJSZWNvcmRBcnJheQUOSWR4TG9ja1VzZXJOdW0ECnVzZXJBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDUlkeExvY2tBbW91bnQECWxvY2tTdGFydAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3VzZXJSZWNvcmRBcnJheQUMSWR4TG9ja1N0YXJ0BAxsb2NrRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFD0lkeExvY2tEdXJhdGlvbgQHbG9ja0VuZAkAZAIFCWxvY2tTdGFydAUMbG9ja0R1cmF0aW9uBBFyZW1haW5pbmdEdXJhdGlvbgkAlgMBCQDMCAIJAGUCBQdsb2NrRW5kBQZoZWlnaHQJAMwIAgAABQNuaWwEDXVzZXJBbW91bnROZXcJAGQCBQp1c2VyQW1vdW50BQlwbXRBbW91bnQED2xvY2tEdXJhdGlvbk5ldwkAZAIFEXJlbWFpbmluZ0R1cmF0aW9uBQ1kZWx0YUR1cmF0aW9uAwkAZgIAAAUNZGVsdGFEdXJhdGlvbgkAAgECGmR1cmF0aW9uIGlzIGxlc3MgdGhlbiB6ZXJvAwkAZgIFD21pbkxvY2tEdXJhdGlvbgUPbG9ja0R1cmF0aW9uTmV3CQACAQkArAICAi1sb2NrRHVyYXRpb25OZXcgaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUPbWluTG9ja0R1cmF0aW9uAwkAZgIFD2xvY2tEdXJhdGlvbk5ldwUPbWF4TG9ja0R1cmF0aW9uCQACAQkArAICAkRkZWx0YUR1cmF0aW9uICsgZXhpc3RlZExvY2tEdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQ9tYXhMb2NrRHVyYXRpb24EB2NvZWZmWDgJAGsDBQ9sb2NrRHVyYXRpb25OZXcFBU1VTFQ4BQ9tYXhMb2NrRHVyYXRpb24EDmdXeEFtb3VudFN0YXJ0CQBrAwUNdXNlckFtb3VudE5ldwUHY29lZmZYOAUFTVVMVDgEEXVwZGF0ZVJlZkFjdGl2aXR5CQD8BwQFDG1hdGhDb250cmFjdAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQ5nV3hBbW91bnRTdGFydAUDbmlsBQNuaWwDCQAAAgURdXBkYXRlUmVmQWN0aXZpdHkFEXVwZGF0ZVJlZkFjdGl2aXR5BAxsb2NrU3RhcnROZXcFBmhlaWdodAQTZ1d4UGFyYW1zUmVzdWx0TGlzdAkBA2FhbAEJAPwHBAUMbWF0aENvbnRyYWN0AhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUOZ1d4QW1vdW50U3RhcnQJAMwIAgUMbG9ja1N0YXJ0TmV3CQDMCAIFD2xvY2tEdXJhdGlvbk5ldwUDbmlsBQNuaWwEAWsJAQJhaQEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAAABAFiCQECYWkBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAQQGcGVyaW9kCQCkAwEJAQJhaQEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAACBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAQNZW1pc3Npb25TdGFydAkBA2lvZgIFEGVtaXNzaW9uQ29udHJhY3QJARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sABAtlbWlzc2lvbkVuZAkBA2lvZgIFEGVtaXNzaW9uQ29udHJhY3QJARNrZXlFbWlzc2lvbkVuZEJsb2NrAAQBaAMJAGYCBQZoZWlnaHQFC2VtaXNzaW9uRW5kBQtlbWlzc2lvbkVuZAUGaGVpZ2h0BAJkaAkAlgMBCQDMCAIJAGUCBQFoBQ1lbWlzc2lvblN0YXJ0CQDMCAIAAAUDbmlsBCB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAQUKdXNlck51bVN0cgQddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwJAQNpb3oCBQR0aGlzBSB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQQVYm9vc3RFbWlzc2lvbkludGVncmFsCQBpAgkAaAIJAGgCBRJ3eEVtaXNzaW9uUGVyQmxvY2sFAmRoAAIAAwQZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAZQIFFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAUddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwDCQBmAgAABRl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQACAQISd3JvbmcgY2FsY3VsYXRpb25zBBd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAQUKdXNlck51bVN0cgQYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQEYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAQPdXNlck1heEJvb3N0SW50CQEDaW96AgUEdGhpcwUXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkEEHRvdGFsTWF4Qm9vc3RJbnQJAQNpb3oCBQR0aGlzBRh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkEC2N1cnJVc2VyR3d4CQEUY2FsY0N1cnJlbnRHd3hBbW91bnQBBQ51c2VyQWRkcmVzc1N0cgQHZ3d4RGlmZgkAZQIFDmdXeEFtb3VudFN0YXJ0BQtjdXJyVXNlckd3eAMJAGYCAAAFB2d3eERpZmYJAAIBCQCsAgICGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkApAMBBQdnd3hEaWZmBBF0b3RhbENhY2hlZEd3eEtFWQkBEWtleVRvdGFsQ2FjaGVkR3d4AAQOdG90YWxDYWNoZWRHd3gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURdG90YWxDYWNoZWRHd3hLRVkAAAQhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZCQEha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAQUKdXNlck51bVN0cgQedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQEDaW96AgUEdGhpcwUhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZBCF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcJAGsDBRl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsBQtjdXJyVXNlckd3eAUOdG90YWxDYWNoZWRHd3gEEnVzZXJNYXhCb29zdEludE5ldwkAaQIJAGgCBQ5nV3hBbW91bnRTdGFydAUPbG9ja0R1cmF0aW9uTmV3AAIEGHJlbWFpbmluZ1VzZXJNYXhCb29zdEludAkAaQIJAGgCBQtjdXJyVXNlckd3eAURcmVtYWluaW5nRHVyYXRpb24AAgQTdXNlck1heEJvb3N0SW50RGlmZgkAZQIFEnVzZXJNYXhCb29zdEludE5ldwUYcmVtYWluaW5nVXNlck1heEJvb3N0SW50CQDOCAIJAM0IAgkAzggCCQEPTG9ja1BhcmFtc0VudHJ5CAUOdXNlckFkZHJlc3NTdHIFCnVzZXJOdW1TdHIFDXVzZXJBbW91bnROZXcFDGxvY2tTdGFydE5ldwUPbG9ja0R1cmF0aW9uTmV3BQFrBQFiBQZwZXJpb2QJAQpTdGF0c0VudHJ5BAUJcG10QW1vdW50BQ1kZWx0YUR1cmF0aW9uAAAAAAkBDEhpc3RvcnlFbnRyeQgCBGxvY2sFDnVzZXJBZGRyZXNzU3RyBQlwbXRBbW91bnQFCWxvY2tTdGFydAUPbG9ja0R1cmF0aW9uTmV3BQFrBQFiBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF0b3RhbENhY2hlZEd3eEtFWQkAZAIFDnRvdGFsQ2FjaGVkR3d4BQdnd3hEaWZmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMY2xhaW1XeEJvb3N0AgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIDCQECIT0CBQ9zdGFraW5nQ29udHJhY3QIBQFpBmNhbGxlcgkAAgECEnBlcm1pc3Npb25zIGRlbmllZAQNJHQwMjg1MzMyODYzNQkBFGludGVybmFsQ2xhaW1XeEJvb3N0AwUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgcEEnVzZXJCb29zdEF2YWlsYWJsZQgFDSR0MDI4NTMzMjg2MzUCXzEECWRhdGFTdGF0ZQgFDSR0MDI4NTMzMjg2MzUCXzIEBWRlYnVnCAUNJHQwMjg1MzMyODYzNQJfMwkAlAoCBQlkYXRhU3RhdGUJAMwIAgUSdXNlckJvb3N0QXZhaWxhYmxlBQNuaWwBaQEUY2xhaW1XeEJvb3N0UkVBRE9OTFkCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgQNJHQwMjg3NjcyODg2OAkBFGludGVybmFsQ2xhaW1XeEJvb3N0AwUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgYEEnVzZXJCb29zdEF2YWlsYWJsZQgFDSR0MDI4NzY3Mjg4NjgCXzEECWRhdGFTdGF0ZQgFDSR0MDI4NzY3Mjg4NjgCXzIEBWRlYnVnCAUNJHQwMjg3NjcyODg2OAJfMwkAlAoCBQNuaWwJAMwIAgUSdXNlckJvb3N0QXZhaWxhYmxlCQDMCAIFBWRlYnVnBQNuaWwBaQEGdW5sb2NrAQt1c2VyQWRkcmVzcwQPdXNlclJlY29yZEFycmF5CQEacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwBBQt1c2VyQWRkcmVzcwQKdXNlck51bVN0cgkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDklkeExvY2tVc2VyTnVtBAp1c2VyQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdXNlclJlY29yZEFycmF5BQ1JZHhMb2NrQW1vdW50BAlsb2NrU3RhcnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDElkeExvY2tTdGFydAQMbG9ja0R1cmF0aW9uCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdXNlclJlY29yZEFycmF5BQ9JZHhMb2NrRHVyYXRpb24EB2xvY2tFbmQJAGQCBQlsb2NrU3RhcnQFDGxvY2tEdXJhdGlvbgQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwABAdhc3NldElkCQDZBAEJAJEDAgUIY2ZnQXJyYXkFDUlkeENmZ0Fzc2V0SWQDCQBnAgUHbG9ja0VuZAUGaGVpZ2h0CQACAQkArAICCQCsAgICBXdhaXQgCQCkAwEFB2xvY2tFbmQCCiB0byB1bmxvY2sDCQBnAgAABQp1c2VyQW1vdW50CQACAQIRbm90aGluZyB0byB1bmxvY2sEBnBlcmlvZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQxtYXRoQ29udHJhY3QJAQ1rZXlOZXh0UGVyaW9kAAAACQDNCAIJAM0IAgkAzggCCQEPTG9ja1BhcmFtc0VudHJ5CAULdXNlckFkZHJlc3MFCnVzZXJOdW1TdHIAAAUJbG9ja1N0YXJ0BQxsb2NrRHVyYXRpb24AAAAACQCkAwEFBnBlcmlvZAkBClN0YXRzRW50cnkECQEBLQEFCnVzZXJBbW91bnQAAAAAAP///////////wEJAQxIaXN0b3J5RW50cnkIAgZ1bmxvY2sFC3VzZXJBZGRyZXNzBQp1c2VyQW1vdW50BQlsb2NrU3RhcnQFDGxvY2tEdXJhdGlvbgAAAAAFAWkJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3VzZXJBZGRyZXNzBQp1c2VyQW1vdW50BQdhc3NldElkAWkBE2d3eFVzZXJJbmZvUkVBRE9OTFkBC3VzZXJBZGRyZXNzBAlnd3hBbW91bnQJARRjYWxjQ3VycmVudEd3eEFtb3VudAEFC3VzZXJBZGRyZXNzCQCUCgIFA25pbAkAzAgCBQlnd3hBbW91bnQFA25pbAFpASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQILdXNlckFkZHJlc3MMdGFyZ2V0SGVpZ2h0BAlnd3hBbW91bnQJARljYWxjVXNlckd3eEFtb3VudEF0SGVpZ2h0AgULdXNlckFkZHJlc3MFDHRhcmdldEhlaWdodAkAlAoCBQNuaWwFCWd3eEFtb3VudAFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleZhTj1U=", "chainId": 84, "height": 2167017, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8GSPM6h6gqDSXK5jUruTiL5fLqUZokWPnwrvT4MsJYxQ Next: BuHrw8k6RxiXinH9TgDWJnTKVbvvY2EgyiagQYBqjgUq Diff:
OldNewDifferences
166166 func ar () = split(e(this, aq()), a)
167167
168168
169-func as (at,au,av,aw,ax) = makeString(["%s%d%d%d", at, au, av, aw, ax], a)
169+let as = addressFromStringValue(ar()[ap])
170+
171+func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
170172
171173
172-func ay (at,au,av,aw,ax) = as(at, toString(au), toString(av), toString(aw), ax)
174+func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
173175
174176
175177 func az () = {
466468 func do (aD,aT) = {
467469 let dp = ar()
468470 let dq = dp[al]
469- let at = fromBase58String(dq)
470- let au = parseIntValue(dp[am])
471- let av = parseIntValue(dp[an])
472- let aw = parseIntValue(dp[ao])
473- let ax = addressFromStringValue(dp[ap])
471+ let au = fromBase58String(dq)
472+ let av = parseIntValue(dp[am])
473+ let aw = parseIntValue(dp[an])
474+ let ax = parseIntValue(dp[ao])
474475 if ((size(aD.payments) != 1))
475476 then throw("invalid payment - exact one payment must be attached")
476477 else {
477478 let ck = aD.payments[0]
478479 let dr = ck.amount
479- if ((at != value(ck.assetId)))
480+ if ((au != value(ck.assetId)))
480481 then throw((("invalid asset is in payment - " + dq) + " is expected"))
481482 else {
482483 let ds = aZ()
490491 let cc = bd(cx)
491492 let cd = be(cx)
492493 let cb = bc(cx)
493- if ((au > dr))
494- then throw(("amount is less then minLockAmount=" + toString(au)))
495- else if ((av > aT))
496- then throw(("passed duration is less then minLockDuration=" + toString(av)))
497- else if ((aT > aw))
498- then throw(("passed duration is greater then maxLockDuration=" + toString(aw)))
494+ if ((av > dr))
495+ then throw(("amount is less then minLockAmount=" + toString(av)))
496+ else if ((aw > aT))
497+ then throw(("passed duration is less then minLockDuration=" + toString(aw)))
498+ else if ((aT > ax))
499+ then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
499500 else if (if (dt)
500501 then ((k(this, cc) + k(this, cd)) >= bD)
501502 else false)
503504 else if ((h(this, cb) > 0))
504505 then throw(("there are locked WXs - consider to use increaseLock " + cb))
505506 else {
506- let du = fraction(aT, c, aw)
507+ let du = fraction(aT, c, ax)
507508 let dv = fraction(dr, du, c)
508- let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
509+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
509510 let bE = q(dw[0])
510511 let bF = q(dw[1])
511512 let bi = toString(q(dw[2]))
527528 let dx = if (dt)
528529 then nil
529530 else [IntegerEntry(ds, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
530- ((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
531+ $Tuple2(((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
531532 then 0
532- else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))])
533+ else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))]), dv)
533534 }
534535 }
535536 }
537538
538539
539540 @Callable(aD)
540-func constructor (dy,dz,au,dA,dB,ax) = {
541+func constructor (dy,dz,av,dA,dB,as) = {
541542 let dC = aC(aD)
542543 if ((dC == dC))
543- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, au, dA, dB, ax)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
544+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, av, dA, dB, as)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
544545 else throw("Strict value is not equal to itself.")
545546 }
546547
549550 @Callable(aD)
550551 func lockRef (aT,dD,dE) = {
551552 let dF = do(aD, aT)
552- let dG = toString(aD.caller)
553- let dH = if (if ((dD == ""))
553+ let dG = dF._1
554+ let dv = dF._2
555+ let dH = toString(aD.caller)
556+ let dI = if (if ((dD == ""))
554557 then true
555558 else (dE == base58''))
556559 then unit
557- else invoke(t, "createPair", [w, dD, dG, dE], nil)
558- if ((dH == dH))
559- then $Tuple2(dF, unit)
560+ else invoke(t, "createPair", [w, dD, dH, dE], nil)
561+ if ((dI == dI))
562+ then {
563+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
564+ if ((dJ == dJ))
565+ then $Tuple2(dG, unit)
566+ else throw("Strict value is not equal to itself.")
567+ }
560568 else throw("Strict value is not equal to itself.")
561569 }
562570
563571
564572
565573 @Callable(aD)
566-func lock (aT) = do(aD, aT)
574+func lock (aT) = {
575+ let dK = do(aD, aT)
576+ let dG = dK._1
577+ let dv = dK._2
578+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
579+ if ((dJ == dJ))
580+ then $Tuple2(dG, unit)
581+ else throw("Strict value is not equal to itself.")
582+ }
567583
568584
569585
570586 @Callable(aD)
571-func increaseLock (dI) = {
587+func increaseLock (dL) = {
572588 let dp = ar()
573589 let dq = dp[al]
574- let at = fromBase58String(dq)
575- let av = parseIntValue(dp[an])
576- let aw = parseIntValue(dp[ao])
577- let ax = addressFromStringValue(dp[ap])
578- let dr = ci(aD, at)
590+ let au = fromBase58String(dq)
591+ let aw = parseIntValue(dp[an])
592+ let ax = parseIntValue(dp[ao])
593+ let dr = ci(aD, au)
579594 let ct = toString(aD.caller)
580595 let cw = aO(ct)
581596 let cx = cw[aG]
582- let dJ = parseIntValue(cw[aH])
597+ let dM = parseIntValue(cw[aH])
583598 let bD = parseIntValue(cw[aI])
584- let dK = parseIntValue(cw[aJ])
585- let dL = (bD + dK)
586- let dM = max([(dL - height), 0])
587- let dN = (dJ + dr)
588- let dO = (dM + dI)
589- if ((0 > dI))
599+ let dN = parseIntValue(cw[aJ])
600+ let dO = (bD + dN)
601+ let dP = max([(dO - height), 0])
602+ let dQ = (dM + dr)
603+ let dR = (dP + dL)
604+ if ((0 > dL))
590605 then throw("duration is less then zero")
591- else if ((av > dO))
592- then throw(("lockDurationNew is less then minLockDuration=" + toString(av)))
593- else if ((dO > aw))
594- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aw)))
606+ else if ((aw > dR))
607+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
608+ else if ((dR > ax))
609+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
595610 else {
596- let du = fraction(dO, c, aw)
597- let dv = fraction(dN, du, c)
598- let dP = height
599- let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, dP, dO], nil))
600- let bE = q(dw[0])
601- let bF = q(dw[1])
602- let bi = toString(q(dw[2]))
603- let cG = k(bx, ae())
604- let cH = k(bx, ag())
605- let cI = k(bx, ai())
606- let bY = if ((height > cI))
607- then cI
608- else height
609- let cJ = max([(bY - cH), 0])
610- let cL = bo(cx)
611- let cM = h(this, cL)
612- let cN = (((cG * cJ) * 2) / 3)
613- let cO = (cN - cM)
614- if ((0 > cO))
615- then throw("wrong calculations")
616- else {
617- let cT = br(cx)
618- let cU = bs()
619- let cV = h(this, cT)
620- let cW = h(this, cU)
621- let dQ = cq(ct)
622- let dR = (dv - dQ)
623- if ((0 > dR))
624- then throw(("gwxDiff is less then 0: " + toString(dR)))
611+ let du = fraction(dR, c, ax)
612+ let dv = fraction(dQ, du, c)
613+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
614+ if ((dJ == dJ))
615+ then {
616+ let dS = height
617+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, dS, dR], nil))
618+ let bE = q(dw[0])
619+ let bF = q(dw[1])
620+ let bi = toString(q(dw[2]))
621+ let cG = k(bx, ae())
622+ let cH = k(bx, ag())
623+ let cI = k(bx, ai())
624+ let bY = if ((height > cI))
625+ then cI
626+ else height
627+ let cJ = max([(bY - cH), 0])
628+ let cL = bo(cx)
629+ let cM = h(this, cL)
630+ let cN = (((cG * cJ) * 2) / 3)
631+ let cO = (cN - cM)
632+ if ((0 > cO))
633+ then throw("wrong calculations")
625634 else {
626- let cX = bv()
627- let cY = valueOrElse(getInteger(this, cX), 0)
628- let da = bt(cx)
629- let db = h(this, da)
630- let di = fraction(cO, dQ, cY)
631- let dS = ((dv * dO) / 2)
632- let dT = ((dQ * dM) / 2)
633- let dU = (dS - dT)
634- (((ca(ct, cx, dN, dP, dO, bE, bF, bi) ++ bI(dr, dI, 0, 0)) :+ bA("lock", ct, dr, bD, dO, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dR))])
635+ let cT = br(cx)
636+ let cU = bs()
637+ let cV = h(this, cT)
638+ let cW = h(this, cU)
639+ let dT = cq(ct)
640+ let dU = (dv - dT)
641+ if ((0 > dU))
642+ then throw(("gwxDiff is less then 0: " + toString(dU)))
643+ else {
644+ let cX = bv()
645+ let cY = valueOrElse(getInteger(this, cX), 0)
646+ let da = bt(cx)
647+ let db = h(this, da)
648+ let di = fraction(cO, dT, cY)
649+ let dV = ((dv * dR) / 2)
650+ let dW = ((dT * dP) / 2)
651+ let dX = (dV - dW)
652+ (((ca(ct, cx, dQ, dS, dR, bE, bF, bi) ++ bI(dr, dL, 0, 0)) :+ bA("lock", ct, dr, bD, dR, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dU))])
653+ }
635654 }
636655 }
656+ else throw("Strict value is not equal to itself.")
637657 }
638658 }
639659
643663 func claimWxBoost (cs,ct) = if ((by != aD.caller))
644664 then throw("permissions denied")
645665 else {
646- let dV = cr(cs, ct, false)
647- let dl = dV._1
648- let dm = dV._2
649- let dn = dV._3
666+ let dY = cr(cs, ct, false)
667+ let dl = dY._1
668+ let dm = dY._2
669+ let dn = dY._3
650670 $Tuple2(dm, [dl])
651671 }
652672
654674
655675 @Callable(aD)
656676 func claimWxBoostREADONLY (cs,ct) = {
657- let dW = cr(cs, ct, true)
658- let dl = dW._1
659- let dm = dW._2
660- let dn = dW._3
677+ let dZ = cr(cs, ct, true)
678+ let dl = dZ._1
679+ let dm = dZ._2
680+ let dn = dZ._3
661681 $Tuple2(nil, [dl, dn])
662682 }
663683
667687 func unlock (aN) = {
668688 let cw = aO(aN)
669689 let cx = cw[aG]
670- let dJ = parseIntValue(cw[aH])
690+ let dM = parseIntValue(cw[aH])
671691 let bD = parseIntValue(cw[aI])
672- let dK = parseIntValue(cw[aJ])
673- let dL = (bD + dK)
692+ let dN = parseIntValue(cw[aJ])
693+ let dO = (bD + dN)
674694 let dp = ar()
675- let at = fromBase58String(dp[al])
676- let ax = addressFromStringValue(dp[ap])
677- if ((dL >= height))
678- then throw((("wait " + toString(dL)) + " to unlock"))
679- else if ((0 >= dJ))
695+ let au = fromBase58String(dp[al])
696+ if ((dO >= height))
697+ then throw((("wait " + toString(dO)) + " to unlock"))
698+ else if ((0 >= dM))
680699 then throw("nothing to unlock")
681700 else {
682- let bi = valueOrElse(getInteger(ax, aj()), 0)
683- (((ca(aN, cx, 0, bD, dK, 0, 0, toString(bi)) ++ bI(-(dJ), 0, 0, -1)) :+ bA("unlock", aN, dJ, bD, dK, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dJ, at))
701+ let bi = valueOrElse(getInteger(as, aj()), 0)
702+ (((ca(aN, cx, 0, bD, dN, 0, 0, toString(bi)) ++ bI(-(dM), 0, 0, -1)) :+ bA("unlock", aN, dM, bD, dN, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dM, au))
684703 }
685704 }
686705
703722
704723
705724 @Callable(aD)
706-func setManager (dX) = {
725+func setManager (ea) = {
707726 let dC = aC(aD)
708727 if ((dC == dC))
709728 then {
710- let dY = fromBase58String(dX)
711- if ((dY == dY))
712- then [StringEntry(ad(), dX)]
729+ let eb = fromBase58String(ea)
730+ if ((eb == eb))
731+ then [StringEntry(ad(), ea)]
713732 else throw("Strict value is not equal to itself.")
714733 }
715734 else throw("Strict value is not equal to itself.")
719738
720739 @Callable(aD)
721740 func confirmManager () = {
722- let dZ = aB()
723- let ea = if (isDefined(dZ))
741+ let ec = aB()
742+ let ed = if (isDefined(ec))
724743 then true
725744 else throw("No pending manager")
726- if ((ea == ea))
745+ if ((ed == ed))
727746 then {
728- let eb = if ((aD.callerPublicKey == value(dZ)))
747+ let ee = if ((aD.callerPublicKey == value(ec)))
729748 then true
730749 else throw("You are not pending manager")
731- if ((eb == eb))
732- then [StringEntry(ac(), toBase58String(value(dZ))), DeleteEntry(ad())]
750+ if ((ee == ee))
751+ then [StringEntry(ac(), toBase58String(value(ec))), DeleteEntry(ad())]
733752 else throw("Strict value is not equal to itself.")
734753 }
735754 else throw("Strict value is not equal to itself.")
736755 }
737756
738757
739-@Verifier(ec)
740-func ed () = {
741- let ee = {
758+@Verifier(ef)
759+func eg () = {
760+ let eh = {
742761 let o = az()
743762 if ($isInstanceOf(o, "ByteVector"))
744763 then {
746765 aF
747766 }
748767 else if ($isInstanceOf(o, "Unit"))
749- then ec.senderPublicKey
768+ then ef.senderPublicKey
750769 else throw("Match error")
751770 }
752- sigVerify(ec.bodyBytes, ec.proofs[0], ee)
771+ sigVerify(ef.bodyBytes, ef.proofs[0], eh)
753772 }
754773
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
1313
1414
1515 func h (f,g) = valueOrElse(getInteger(f, g), 0)
1616
1717
1818 func i (f,g,j) = valueOrElse(getInteger(f, g), j)
1919
2020
2121 func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
2222
2323
2424 func l (m) = if ((0 > m))
2525 then -(m)
2626 else m
2727
2828
2929 func n (m) = {
3030 let o = m
3131 if ($isInstanceOf(o, "List[Any]"))
3232 then {
3333 let p = o
3434 p
3535 }
3636 else throw("fail to cast into List[Any]")
3737 }
3838
3939
4040 func q (m) = {
4141 let o = m
4242 if ($isInstanceOf(o, "Int"))
4343 then {
4444 let r = o
4545 r
4646 }
4747 else throw("fail to cast into Int")
4848 }
4949
5050
5151 func s () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5252
5353
5454 let t = addressFromStringValue(e(this, s()))
5555
5656 let u = makeString(["%s%s", "referral", "programName"], a)
5757
5858 let v = "wxlock"
5959
6060 let w = valueOrElse(getString(this, u), v)
6161
6262 func x () = "%s%s__config__factoryAddress"
6363
6464
6565 let y = 1
6666
6767 let z = 2
6868
6969 let A = 3
7070
7171 let B = 4
7272
7373 let C = 5
7474
7575 let D = 6
7676
7777 let E = 7
7878
7979 let F = 8
8080
8181 let G = 9
8282
8383 let H = 10
8484
8585 let I = 11
8686
8787 func J () = "%s__factoryConfig"
8888
8989
9090 func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9191
9292
9393 func M () = "%s__lpTokensList"
9494
9595
9696 func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9797
9898
9999 func O (P) = makeString(["%s%s", "poolWeight", P], a)
100100
101101
102102 func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S))
103103
104104
105105 func T () = addressFromStringValue(e(this, x()))
106106
107107
108108 func U () = split(valueOrElse(getString(T(), M()), ""), a)
109109
110110
111111 func V (W) = split(e(W, J()), a)
112112
113113
114114 func X (Y) = addressFromStringValue(Y[z])
115115
116116
117117 func Z (Y) = addressFromStringValue(Y[C])
118118
119119
120120 func aa (Y) = addressFromStringValue(Y[y])
121121
122122
123123 func ab (Y) = addressFromStringValue(Y[H])
124124
125125
126126 func ac () = "%s__managerPublicKey"
127127
128128
129129 func ad () = "%s__pendingManagerPublicKey"
130130
131131
132132 func ae () = "%s%s__ratePerBlock__current"
133133
134134
135135 func af () = "%s%s__ratePerBlockMax__current"
136136
137137
138138 func ag () = "%s%s__emission__startBlock"
139139
140140
141141 func ah () = "%s%s__emission__duration"
142142
143143
144144 func ai () = "%s%s__emission__endBlock"
145145
146146
147147 func aj () = "%s__nextPeriod"
148148
149149
150150 func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
151151
152152
153153 let al = 1
154154
155155 let am = 2
156156
157157 let an = 3
158158
159159 let ao = 4
160160
161161 let ap = 5
162162
163163 func aq () = "%s__config"
164164
165165
166166 func ar () = split(e(this, aq()), a)
167167
168168
169-func as (at,au,av,aw,ax) = makeString(["%s%d%d%d", at, au, av, aw, ax], a)
169+let as = addressFromStringValue(ar()[ap])
170+
171+func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
170172
171173
172-func ay (at,au,av,aw,ax) = as(at, toString(au), toString(av), toString(aw), ax)
174+func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
173175
174176
175177 func az () = {
176178 let o = getString(ac())
177179 if ($isInstanceOf(o, "String"))
178180 then {
179181 let aA = o
180182 fromBase58String(aA)
181183 }
182184 else if ($isInstanceOf(o, "Unit"))
183185 then unit
184186 else throw("Match error")
185187 }
186188
187189
188190 func aB () = {
189191 let o = getString(ad())
190192 if ($isInstanceOf(o, "String"))
191193 then {
192194 let aA = o
193195 fromBase58String(aA)
194196 }
195197 else if ($isInstanceOf(o, "Unit"))
196198 then unit
197199 else throw("Match error")
198200 }
199201
200202
201203 func aC (aD) = {
202204 let aE = throw("Permission denied")
203205 let o = az()
204206 if ($isInstanceOf(o, "ByteVector"))
205207 then {
206208 let aF = o
207209 if ((aD.callerPublicKey == aF))
208210 then true
209211 else aE
210212 }
211213 else if ($isInstanceOf(o, "Unit"))
212214 then if ((aD.caller == this))
213215 then true
214216 else aE
215217 else throw("Match error")
216218 }
217219
218220
219221 let aG = 1
220222
221223 let aH = 2
222224
223225 let aI = 3
224226
225227 let aJ = 4
226228
227229 let aK = 5
228230
229231 let aL = 6
230232
231233 func aM (aN) = makeString(["%s%s__lock", aN], a)
232234
233235
234236 func aO (aN) = split(e(this, aM(aN)), a)
235237
236238
237239 func aP (aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d", aQ, aR, aS, aT, aU, aV, aW, aX], a)
238240
239241
240242 func aY (aQ,aR,aS,aT,aU,aV,aX) = aP(aQ, toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(lastBlock.timestamp), toString(aX))
241243
242244
243245 func aZ () = "%s__nextUserNum"
244246
245247
246248 func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
247249
248250
249251 func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
250252
251253
252254 func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
253255
254256
255257 func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
256258
257259
258260 func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
259261
260262
261263 func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
262264
263265
264266 func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
265267
266268
267269 func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
268270
269271
270272 func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
271273
272274
273275 func bk () = "%s%s__stats__activeTotalLocked"
274276
275277
276278 func bl () = "%s%s__stats__locksDurationSumInBlocks"
277279
278280
279281 func bm () = "%s%s__stats__locksCount"
280282
281283
282284 func bn () = "%s%s__stats__activeUsersCount"
283285
284286
285287 func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
286288
287289
288290 func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
289291
290292
291293 func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
292294
293295
294296 func bs () = "%s%s__maxBoostInt__total"
295297
296298
297299 func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
298300
299301
300302 func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
301303
302304
303305 func bv () = "%s%s__gwxCached__total"
304306
305307
306308 let bw = T()
307309
308310 let Y = V(bw)
309311
310312 let bx = Z(Y)
311313
312314 let by = aa(Y)
313315
314316 let bz = ab(Y)
315317
316318 func bA (bB,bC,aR,bD,aT,bE,bF,aD) = {
317319 let bG = makeString(["%s%s%s%s__history", bB, bC, toBase58String(aD.transactionId)], a)
318320 let bH = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bD), toString(aT), toString(bE), toString(bF)], a)
319321 StringEntry(bG, bH)
320322 }
321323
322324
323325 func bI (bJ,bK,bL,bM) = {
324326 let bN = bl()
325327 let bO = bm()
326328 let bP = bn()
327329 let bQ = bk()
328330 let bR = h(this, bN)
329331 let bS = h(this, bO)
330332 let bT = h(this, bP)
331333 let bU = h(this, bQ)
332334 [IntegerEntry(bN, (bR + bK)), IntegerEntry(bO, (bS + bL)), IntegerEntry(bP, (bT + bM)), IntegerEntry(bQ, (bU + bJ))]
333335 }
334336
335337
336338 func bV (bW,bX,bY) = {
337339 let bZ = 1000
338340 (((bW * bY) + bX) / bZ)
339341 }
340342
341343
342344 func ca (aN,aQ,aR,aS,aT,bE,bF,bi) = {
343345 let cb = bc(aQ)
344346 let cc = bd(aQ)
345347 let cd = be(aQ)
346348 let ce = bf(aQ)
347349 let cf = bg(aQ)
348350 let cg = bh(aQ, bi)
349351 let ch = bj(aQ, bi)
350352 let aX = bV(bE, bF, height)
351353 [IntegerEntry(cb, aR), IntegerEntry(cc, aS), IntegerEntry(cd, aT), IntegerEntry(ce, bE), IntegerEntry(cf, bF), IntegerEntry(cg, bE), IntegerEntry(ch, bF), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bE, bF, aX))]
352354 }
353355
354356
355357 func ci (aD,cj) = if ((size(aD.payments) > 1))
356358 then throw("only one payment is allowed")
357359 else if ((size(aD.payments) == 0))
358360 then 0
359361 else {
360362 let ck = aD.payments[0]
361363 if ((value(ck.assetId) != cj))
362364 then throw("invalid asset id in payment")
363365 else ck.amount
364366 }
365367
366368
367369 func cl (aN,cm) = {
368370 let cn = "empty"
369371 let co = ba(aN)
370372 let aQ = valueOrElse(getString(co), cn)
371373 let bE = valueOrElse(getInteger(bf(aQ)), 0)
372374 let bF = valueOrElse(getInteger(bg(aQ)), 0)
373375 let cp = bV(bE, bF, cm)
374376 let aX = if ((0 > cp))
375377 then 0
376378 else cp
377379 aX
378380 }
379381
380382
381383 func cq (aN) = cl(aN, height)
382384
383385
384386 func cr (cs,ct,cu) = {
385387 let cn = "EMPTY"
386388 let cv = valueOrElse(getString(this, aM(ct)), cn)
387389 if ((cv == cn))
388390 then $Tuple3(0, nil, "userRecord::is::empty")
389391 else {
390392 let cw = split(cv, a)
391393 let cx = cw[aG]
392394 let cy = valueOrElse(getInteger(bz, ak()), 0)
393395 let cz = "empty"
394396 let cA = if ((cs != cz))
395397 then {
396398 let cB = valueOrErrorMessage(getString(bw, K(cs)), ("unsupported lp asset " + cs))
397399 let cC = getIntegerValue(bw, O(cB))
398400 let cD = valueOrElse(getInteger(bw, Q(cB, 0)), cC)
399401 $Tuple2(cD, cC)
400402 }
401403 else if (cu)
402404 then $Tuple2(0, 0)
403405 else throw(("not readonly mode: unsupported lp asset " + cs))
404406 let cE = cA._1
405407 let cF = cA._2
406408 let cG = k(bx, ae())
407409 let cH = k(bx, ag())
408410 let cI = k(bx, ai())
409411 let bY = if ((height > cI))
410412 then cI
411413 else height
412414 let cJ = max([(bY - cH), 0])
413415 let cK = bp(cx, cs)
414416 let cL = bo(cx)
415417 let cM = valueOrElse(getInteger(this, cK), h(this, cL))
416418 let cN = (((cG * cJ) * 2) / 3)
417419 let cO = (cN - cM)
418420 let cP = fraction(cO, 3, (2 * cG))
419421 let cQ = (bY - cP)
420422 let cR = max([(cy - cQ), 0])
421423 let cS = ((bY - cQ) - cR)
422424 if (if (if ((0 > cQ))
423425 then true
424426 else (0 > cS))
425427 then true
426428 else (l(((cR + cS) - cP)) >= 1))
427429 then throw(((((((("invalid udh calc: udh=" + toString(cP)) + " uLastH=") + toString(cQ)) + " udh0=") + toString(cR)) + " udh1=") + toString(cS)))
428430 else if ((0 > cO))
429431 then throw("wrong calculations")
430432 else {
431433 let cT = br(cx)
432434 let cU = bs()
433435 let cV = h(this, cT)
434436 let cW = h(this, cU)
435437 let cX = bv()
436438 let cY = valueOrElse(getInteger(this, cX), 0)
437439 let cZ = cq(ct)
438440 let da = bt(cx)
439441 let db = h(this, da)
440442 let dc = if ((cP == 0))
441443 then 0
442444 else fraction(cO, cR, cP)
443445 let dd = if ((cP == 0))
444446 then 0
445447 else fraction(cO, cS, cP)
446448 let de = fraction(dc, cE, d)
447449 let df = fraction(dd, cF, d)
448450 let dg = if ((cY == 0))
449451 then 0
450452 else fraction(de, cZ, cY)
451453 let dh = if ((cY == 0))
452454 then 0
453455 else fraction(df, cZ, cY)
454456 let di = (dg + dh)
455457 let dj = bu(cx)
456458 let dk = h(this, dj)
457459 let dl = (di - dk)
458460 let dm = [IntegerEntry(cK, cN)]
459461 let dn = makeString([toString(cM), toString(cO), toString(dk), toString(dl), toString(cE), toString(cF), toString(bY), toString(cP), toString(cQ), toString(cR), toString(cS), toString(cZ), toString(cY)], ":")
460462 $Tuple3(di, dm, dn)
461463 }
462464 }
463465 }
464466
465467
466468 func do (aD,aT) = {
467469 let dp = ar()
468470 let dq = dp[al]
469- let at = fromBase58String(dq)
470- let au = parseIntValue(dp[am])
471- let av = parseIntValue(dp[an])
472- let aw = parseIntValue(dp[ao])
473- let ax = addressFromStringValue(dp[ap])
471+ let au = fromBase58String(dq)
472+ let av = parseIntValue(dp[am])
473+ let aw = parseIntValue(dp[an])
474+ let ax = parseIntValue(dp[ao])
474475 if ((size(aD.payments) != 1))
475476 then throw("invalid payment - exact one payment must be attached")
476477 else {
477478 let ck = aD.payments[0]
478479 let dr = ck.amount
479- if ((at != value(ck.assetId)))
480+ if ((au != value(ck.assetId)))
480481 then throw((("invalid asset is in payment - " + dq) + " is expected"))
481482 else {
482483 let ds = aZ()
483484 let ct = toString(aD.caller)
484485 let dt = isDefined(getString(ba(ct)))
485486 let cx = if (dt)
486487 then value(getString(ba(ct)))
487488 else toString(k(this, ds))
488489 let aQ = parseIntValue(cx)
489490 let bD = height
490491 let cc = bd(cx)
491492 let cd = be(cx)
492493 let cb = bc(cx)
493- if ((au > dr))
494- then throw(("amount is less then minLockAmount=" + toString(au)))
495- else if ((av > aT))
496- then throw(("passed duration is less then minLockDuration=" + toString(av)))
497- else if ((aT > aw))
498- then throw(("passed duration is greater then maxLockDuration=" + toString(aw)))
494+ if ((av > dr))
495+ then throw(("amount is less then minLockAmount=" + toString(av)))
496+ else if ((aw > aT))
497+ then throw(("passed duration is less then minLockDuration=" + toString(aw)))
498+ else if ((aT > ax))
499+ then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
499500 else if (if (dt)
500501 then ((k(this, cc) + k(this, cd)) >= bD)
501502 else false)
502503 then throw("there is an active lock - consider to use increaseLock")
503504 else if ((h(this, cb) > 0))
504505 then throw(("there are locked WXs - consider to use increaseLock " + cb))
505506 else {
506- let du = fraction(aT, c, aw)
507+ let du = fraction(aT, c, ax)
507508 let dv = fraction(dr, du, c)
508- let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
509+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
509510 let bE = q(dw[0])
510511 let bF = q(dw[1])
511512 let bi = toString(q(dw[2]))
512513 let cG = k(bx, ae())
513514 let cH = k(bx, ag())
514515 let cI = k(bx, ai())
515516 let bY = if ((height > cI))
516517 then cI
517518 else height
518519 let cJ = max([(bY - cH), 0])
519520 let cL = bo(cx)
520521 let cN = (((cG * cJ) * 2) / 3)
521522 let cT = br(cx)
522523 let cU = bs()
523524 let cV = ((dv * aT) / 2)
524525 let cW = h(this, cU)
525526 let cX = bv()
526527 let cY = valueOrElse(getInteger(this, cX), 0)
527528 let dx = if (dt)
528529 then nil
529530 else [IntegerEntry(ds, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
530- ((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
531+ $Tuple2(((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
531532 then 0
532- else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))])
533+ else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))]), dv)
533534 }
534535 }
535536 }
536537 }
537538
538539
539540 @Callable(aD)
540-func constructor (dy,dz,au,dA,dB,ax) = {
541+func constructor (dy,dz,av,dA,dB,as) = {
541542 let dC = aC(aD)
542543 if ((dC == dC))
543- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, au, dA, dB, ax)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
544+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, av, dA, dB, as)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
544545 else throw("Strict value is not equal to itself.")
545546 }
546547
547548
548549
549550 @Callable(aD)
550551 func lockRef (aT,dD,dE) = {
551552 let dF = do(aD, aT)
552- let dG = toString(aD.caller)
553- let dH = if (if ((dD == ""))
553+ let dG = dF._1
554+ let dv = dF._2
555+ let dH = toString(aD.caller)
556+ let dI = if (if ((dD == ""))
554557 then true
555558 else (dE == base58''))
556559 then unit
557- else invoke(t, "createPair", [w, dD, dG, dE], nil)
558- if ((dH == dH))
559- then $Tuple2(dF, unit)
560+ else invoke(t, "createPair", [w, dD, dH, dE], nil)
561+ if ((dI == dI))
562+ then {
563+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
564+ if ((dJ == dJ))
565+ then $Tuple2(dG, unit)
566+ else throw("Strict value is not equal to itself.")
567+ }
560568 else throw("Strict value is not equal to itself.")
561569 }
562570
563571
564572
565573 @Callable(aD)
566-func lock (aT) = do(aD, aT)
574+func lock (aT) = {
575+ let dK = do(aD, aT)
576+ let dG = dK._1
577+ let dv = dK._2
578+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
579+ if ((dJ == dJ))
580+ then $Tuple2(dG, unit)
581+ else throw("Strict value is not equal to itself.")
582+ }
567583
568584
569585
570586 @Callable(aD)
571-func increaseLock (dI) = {
587+func increaseLock (dL) = {
572588 let dp = ar()
573589 let dq = dp[al]
574- let at = fromBase58String(dq)
575- let av = parseIntValue(dp[an])
576- let aw = parseIntValue(dp[ao])
577- let ax = addressFromStringValue(dp[ap])
578- let dr = ci(aD, at)
590+ let au = fromBase58String(dq)
591+ let aw = parseIntValue(dp[an])
592+ let ax = parseIntValue(dp[ao])
593+ let dr = ci(aD, au)
579594 let ct = toString(aD.caller)
580595 let cw = aO(ct)
581596 let cx = cw[aG]
582- let dJ = parseIntValue(cw[aH])
597+ let dM = parseIntValue(cw[aH])
583598 let bD = parseIntValue(cw[aI])
584- let dK = parseIntValue(cw[aJ])
585- let dL = (bD + dK)
586- let dM = max([(dL - height), 0])
587- let dN = (dJ + dr)
588- let dO = (dM + dI)
589- if ((0 > dI))
599+ let dN = parseIntValue(cw[aJ])
600+ let dO = (bD + dN)
601+ let dP = max([(dO - height), 0])
602+ let dQ = (dM + dr)
603+ let dR = (dP + dL)
604+ if ((0 > dL))
590605 then throw("duration is less then zero")
591- else if ((av > dO))
592- then throw(("lockDurationNew is less then minLockDuration=" + toString(av)))
593- else if ((dO > aw))
594- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aw)))
606+ else if ((aw > dR))
607+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
608+ else if ((dR > ax))
609+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
595610 else {
596- let du = fraction(dO, c, aw)
597- let dv = fraction(dN, du, c)
598- let dP = height
599- let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, dP, dO], nil))
600- let bE = q(dw[0])
601- let bF = q(dw[1])
602- let bi = toString(q(dw[2]))
603- let cG = k(bx, ae())
604- let cH = k(bx, ag())
605- let cI = k(bx, ai())
606- let bY = if ((height > cI))
607- then cI
608- else height
609- let cJ = max([(bY - cH), 0])
610- let cL = bo(cx)
611- let cM = h(this, cL)
612- let cN = (((cG * cJ) * 2) / 3)
613- let cO = (cN - cM)
614- if ((0 > cO))
615- then throw("wrong calculations")
616- else {
617- let cT = br(cx)
618- let cU = bs()
619- let cV = h(this, cT)
620- let cW = h(this, cU)
621- let dQ = cq(ct)
622- let dR = (dv - dQ)
623- if ((0 > dR))
624- then throw(("gwxDiff is less then 0: " + toString(dR)))
611+ let du = fraction(dR, c, ax)
612+ let dv = fraction(dQ, du, c)
613+ let dJ = invoke(as, "updateReferralActivity", [toString(aD.caller), dv], nil)
614+ if ((dJ == dJ))
615+ then {
616+ let dS = height
617+ let dw = n(invoke(as, "calcGwxParamsREADONLY", [dv, dS, dR], nil))
618+ let bE = q(dw[0])
619+ let bF = q(dw[1])
620+ let bi = toString(q(dw[2]))
621+ let cG = k(bx, ae())
622+ let cH = k(bx, ag())
623+ let cI = k(bx, ai())
624+ let bY = if ((height > cI))
625+ then cI
626+ else height
627+ let cJ = max([(bY - cH), 0])
628+ let cL = bo(cx)
629+ let cM = h(this, cL)
630+ let cN = (((cG * cJ) * 2) / 3)
631+ let cO = (cN - cM)
632+ if ((0 > cO))
633+ then throw("wrong calculations")
625634 else {
626- let cX = bv()
627- let cY = valueOrElse(getInteger(this, cX), 0)
628- let da = bt(cx)
629- let db = h(this, da)
630- let di = fraction(cO, dQ, cY)
631- let dS = ((dv * dO) / 2)
632- let dT = ((dQ * dM) / 2)
633- let dU = (dS - dT)
634- (((ca(ct, cx, dN, dP, dO, bE, bF, bi) ++ bI(dr, dI, 0, 0)) :+ bA("lock", ct, dr, bD, dO, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dR))])
635+ let cT = br(cx)
636+ let cU = bs()
637+ let cV = h(this, cT)
638+ let cW = h(this, cU)
639+ let dT = cq(ct)
640+ let dU = (dv - dT)
641+ if ((0 > dU))
642+ then throw(("gwxDiff is less then 0: " + toString(dU)))
643+ else {
644+ let cX = bv()
645+ let cY = valueOrElse(getInteger(this, cX), 0)
646+ let da = bt(cx)
647+ let db = h(this, da)
648+ let di = fraction(cO, dT, cY)
649+ let dV = ((dv * dR) / 2)
650+ let dW = ((dT * dP) / 2)
651+ let dX = (dV - dW)
652+ (((ca(ct, cx, dQ, dS, dR, bE, bF, bi) ++ bI(dr, dL, 0, 0)) :+ bA("lock", ct, dr, bD, dR, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dU))])
653+ }
635654 }
636655 }
656+ else throw("Strict value is not equal to itself.")
637657 }
638658 }
639659
640660
641661
642662 @Callable(aD)
643663 func claimWxBoost (cs,ct) = if ((by != aD.caller))
644664 then throw("permissions denied")
645665 else {
646- let dV = cr(cs, ct, false)
647- let dl = dV._1
648- let dm = dV._2
649- let dn = dV._3
666+ let dY = cr(cs, ct, false)
667+ let dl = dY._1
668+ let dm = dY._2
669+ let dn = dY._3
650670 $Tuple2(dm, [dl])
651671 }
652672
653673
654674
655675 @Callable(aD)
656676 func claimWxBoostREADONLY (cs,ct) = {
657- let dW = cr(cs, ct, true)
658- let dl = dW._1
659- let dm = dW._2
660- let dn = dW._3
677+ let dZ = cr(cs, ct, true)
678+ let dl = dZ._1
679+ let dm = dZ._2
680+ let dn = dZ._3
661681 $Tuple2(nil, [dl, dn])
662682 }
663683
664684
665685
666686 @Callable(aD)
667687 func unlock (aN) = {
668688 let cw = aO(aN)
669689 let cx = cw[aG]
670- let dJ = parseIntValue(cw[aH])
690+ let dM = parseIntValue(cw[aH])
671691 let bD = parseIntValue(cw[aI])
672- let dK = parseIntValue(cw[aJ])
673- let dL = (bD + dK)
692+ let dN = parseIntValue(cw[aJ])
693+ let dO = (bD + dN)
674694 let dp = ar()
675- let at = fromBase58String(dp[al])
676- let ax = addressFromStringValue(dp[ap])
677- if ((dL >= height))
678- then throw((("wait " + toString(dL)) + " to unlock"))
679- else if ((0 >= dJ))
695+ let au = fromBase58String(dp[al])
696+ if ((dO >= height))
697+ then throw((("wait " + toString(dO)) + " to unlock"))
698+ else if ((0 >= dM))
680699 then throw("nothing to unlock")
681700 else {
682- let bi = valueOrElse(getInteger(ax, aj()), 0)
683- (((ca(aN, cx, 0, bD, dK, 0, 0, toString(bi)) ++ bI(-(dJ), 0, 0, -1)) :+ bA("unlock", aN, dJ, bD, dK, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dJ, at))
701+ let bi = valueOrElse(getInteger(as, aj()), 0)
702+ (((ca(aN, cx, 0, bD, dN, 0, 0, toString(bi)) ++ bI(-(dM), 0, 0, -1)) :+ bA("unlock", aN, dM, bD, dN, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dM, au))
684703 }
685704 }
686705
687706
688707
689708 @Callable(aD)
690709 func gwxUserInfoREADONLY (aN) = {
691710 let aX = cq(aN)
692711 $Tuple2(nil, [aX])
693712 }
694713
695714
696715
697716 @Callable(aD)
698717 func getUserGwxAmountAtHeightREADONLY (aN,cm) = {
699718 let aX = cl(aN, cm)
700719 $Tuple2(nil, aX)
701720 }
702721
703722
704723
705724 @Callable(aD)
706-func setManager (dX) = {
725+func setManager (ea) = {
707726 let dC = aC(aD)
708727 if ((dC == dC))
709728 then {
710- let dY = fromBase58String(dX)
711- if ((dY == dY))
712- then [StringEntry(ad(), dX)]
729+ let eb = fromBase58String(ea)
730+ if ((eb == eb))
731+ then [StringEntry(ad(), ea)]
713732 else throw("Strict value is not equal to itself.")
714733 }
715734 else throw("Strict value is not equal to itself.")
716735 }
717736
718737
719738
720739 @Callable(aD)
721740 func confirmManager () = {
722- let dZ = aB()
723- let ea = if (isDefined(dZ))
741+ let ec = aB()
742+ let ed = if (isDefined(ec))
724743 then true
725744 else throw("No pending manager")
726- if ((ea == ea))
745+ if ((ed == ed))
727746 then {
728- let eb = if ((aD.callerPublicKey == value(dZ)))
747+ let ee = if ((aD.callerPublicKey == value(ec)))
729748 then true
730749 else throw("You are not pending manager")
731- if ((eb == eb))
732- then [StringEntry(ac(), toBase58String(value(dZ))), DeleteEntry(ad())]
750+ if ((ee == ee))
751+ then [StringEntry(ac(), toBase58String(value(ec))), DeleteEntry(ad())]
733752 else throw("Strict value is not equal to itself.")
734753 }
735754 else throw("Strict value is not equal to itself.")
736755 }
737756
738757
739-@Verifier(ec)
740-func ed () = {
741- let ee = {
758+@Verifier(ef)
759+func eg () = {
760+ let eh = {
742761 let o = az()
743762 if ($isInstanceOf(o, "ByteVector"))
744763 then {
745764 let aF = o
746765 aF
747766 }
748767 else if ($isInstanceOf(o, "Unit"))
749- then ec.senderPublicKey
768+ then ef.senderPublicKey
750769 else throw("Match error")
751770 }
752- sigVerify(ec.bodyBytes, ec.proofs[0], ee)
771+ sigVerify(ef.bodyBytes, ef.proofs[0], eh)
753772 }
754773

github/deemru/w8io/169f3d6 
110.91 ms