tx · HkyardZ4QNajpqsrmZL5KVmdKcPU3Exz8Ae6gfffDNp1

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.01000000 Waves

2021.12.01 20:27 [1815511] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "HkyardZ4QNajpqsrmZL5KVmdKcPU3Exz8Ae6gfffDNp1", "fee": 1000000, "feeAssetId": null, "timestamp": 1638379706332, "version": 1, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "2pwkkoKufn3YGaZ9AmFN2Ro9TBAVQx56hSkD47MTVN7jDL93qGMvxMVqE3xFvd8WoLiGMdmT9Qg4hxmMtKS4BoS7" ], "script": "base64:AAIFAAAAAAAAACoIAhIICgYICAEBAQgSAwoBARIDCgEBEgMKAQgSAwoBCBIDCgEIEgMKAQgAAABUAAAAAANTRVACAAAAAl9fAAAAAAZTQ0FMRTgAAAAAAAAAAAgAAAAABU1VTFQ4AAAAAAAF9eEAAAAAAA9CT09TVE1BWERJVklERVIAAAAAAAAPQkABAAAAD2dldFN0cmluZ09yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAA2tleQIAAAAPIGlzIG5vdCBkZWZpbmVkAQAAAAxnZXRJbnRPclplcm8AAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQAAAAAAAAAAAAEAAAAPZ2V0SW50T3JEZWZhdWx0AAAAAwAAAAdhZGRyZXNzAAAAA2tleQAAAApkZWZhdWx0VmFsCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQUAAAAKZGVmYXVsdFZhbAEAAAAMZ2V0SW50T3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAICAAAAD21hbmRhdG9yeSB0aGlzLgUAAAADa2V5AgAAAA8gaXMgbm90IGRlZmluZWQBAAAACWFzQW55TGlzdAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUxpc3RbQW55XQQAAAAKdmFsQW55THlzdAUAAAAHJG1hdGNoMAUAAAAKdmFsQW55THlzdAkAAAIAAAABAgAAABtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAAAABWFzSW50AAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAZ2YWxJbnQFAAAAByRtYXRjaDAFAAAABnZhbEludAkAAAIAAAABAgAAABVmYWlsIHRvIGNhc3QgaW50byBJbnQBAAAAEWtleUZhY3RvcnlBZGRyZXNzAAAAAAIAAAAcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwAAAAAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAAAAAAAAAAABAAAAABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAAAAAAAAAAACAAAAABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAAAAAAAAAAAAwAAAAAVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwAAAAAAAAAAAEAAAAABlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwAAAAAAAAAAAFAAAAABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAAAAAAAAAAAAYAAAAAGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAAAAAAAAAAAAcBAAAADWtleUZhY3RvcnlDZmcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAAaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcAAAABAAAACmxwQXNzZXRTdHIJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVzJXMJAARMAAAAAgUAAAAKbHBBc3NldFN0cgkABEwAAAACAgAAAB5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAABBrZXlGYWN0b3J5THBMaXN0AAAAAAIAAAAQJXNfX2xwVG9rZW5zTGlzdAEAAAAma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAABAAAACmxwQXNzZXRTdHIJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVzJXMJAARMAAAAAgUAAAAKbHBBc3NldFN0cgkABEwAAAACAgAAAB5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAABRrZXlGYWN0b3J5UG9vbFdlaWdodAAAAAEAAAAPY29udHJhY3RBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACAgAAAApwb29sV2VpZ2h0CQAETAAAAAIFAAAAD2NvbnRyYWN0QWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAAGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAAAAAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzCQEAAAARa2V5RmFjdG9yeUFkZHJlc3MAAAAAAQAAAApyZWFkTHBMaXN0AAAAAAkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIJAQAAABhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAAAACQEAAAAQa2V5RmFjdG9yeUxwTGlzdAAAAAACAAAAAAUAAAADU0VQAQAAABRyZWFkRmFjdG9yeUNmZ09yRmFpbAAAAAEAAAAHZmFjdG9yeQkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAHZmFjdG9yeQkBAAAADWtleUZhY3RvcnlDZmcAAAAABQAAAANTRVABAAAAGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAAAAAEAAAAKZmFjdG9yeUNmZwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAQAAABhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEAAAAXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAQAAAB5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAAAAAgAAABslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAAAAIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudAAAAAACAAAAHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAEAAAAVa2V5RW1pc3Npb25TdGFydEJsb2NrAAAAAAIAAAAaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBAAAAG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcwAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgEAAAATa2V5RW1pc3Npb25FbmRCbG9jawAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawAAAAANSWR4Q2ZnQXNzZXRJZAAAAAAAAAAAAQAAAAATSWR4Q2ZnTWluTG9ja0Ftb3VudAAAAAAAAAAAAgAAAAAVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uAAAAAAAAAAADAAAAABVJZHhDZmdNYXhMb2NrRHVyYXRpb24AAAAAAAAAAAQAAAAAEklkeENmZ01hdGhDb250cmFjdAAAAAAAAAAABQEAAAAJa2V5Q29uZmlnAAAAAAIAAAAKJXNfX2NvbmZpZwEAAAAVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAAAAAkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAACWtleUNvbmZpZwAAAAAFAAAAA1NFUAEAAAANZm9ybWF0Q29uZmlnUwAAAAUAAAAHYXNzZXRJZAAAAA1taW5Mb2NrQW1vdW50AAAAD21pbkxvY2tEdXJhdGlvbgAAAA9tYXhMb2NrRHVyYXRpb24AAAAMbWF0aENvbnRyYWN0CQAEuQAAAAIJAARMAAAAAgIAAAAIJXMlZCVkJWQJAARMAAAAAgUAAAAHYXNzZXRJZAkABEwAAAACBQAAAA1taW5Mb2NrQW1vdW50CQAETAAAAAIFAAAAD21pbkxvY2tEdXJhdGlvbgkABEwAAAACBQAAAA9tYXhMb2NrRHVyYXRpb24JAARMAAAAAgUAAAAMbWF0aENvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAAMZm9ybWF0Q29uZmlnAAAABQAAAAdhc3NldElkAAAADW1pbkxvY2tBbW91bnQAAAAPbWluTG9ja0R1cmF0aW9uAAAAD21heExvY2tEdXJhdGlvbgAAAAxtYXRoQ29udHJhY3QJAQAAAA1mb3JtYXRDb25maWdTAAAABQUAAAAHYXNzZXRJZAkAAaQAAAABBQAAAA1taW5Mb2NrQW1vdW50CQABpAAAAAEFAAAAD21pbkxvY2tEdXJhdGlvbgkAAaQAAAABBQAAAA9tYXhMb2NrRHVyYXRpb24FAAAADG1hdGhDb250cmFjdAAAAAAOSWR4TG9ja1VzZXJOdW0AAAAAAAAAAAEAAAAADUlkeExvY2tBbW91bnQAAAAAAAAAAAIAAAAADElkeExvY2tTdGFydAAAAAAAAAAAAwAAAAAPSWR4TG9ja0R1cmF0aW9uAAAAAAAAAAAEAAAAAA1JZHhMb2NrUGFyYW1LAAAAAAAAAAAFAAAAAA1JZHhMb2NrUGFyYW1CAAAAAAAAAAAGAQAAABNrZXlMb2NrUGFyYW1zUmVjb3JkAAAAAQAAAAt1c2VyQWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAACiVzJXNfX2xvY2sJAARMAAAAAgUAAAALdXNlckFkZHJlc3MFAAAAA25pbAUAAAADU0VQAQAAABpyZWFkTG9ja1BhcmFtc1JlY29yZE9yRmFpbAAAAAEAAAALdXNlckFkZHJlc3MJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAABNrZXlMb2NrUGFyYW1zUmVjb3JkAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAA1NFUAEAAAAXZm9ybWF0TG9ja1BhcmFtc1JlY29yZFMAAAAIAAAAB3VzZXJOdW0AAAAGYW1vdW50AAAABXN0YXJ0AAAACGR1cmF0aW9uAAAABnBhcmFtSwAAAAZwYXJhbUIAAAAQbGFzdFVwZFRpbWVzdGFtcAAAAAlnd3hBbW91bnQJAAS5AAAAAgkABEwAAAACAgAAABAlZCVkJWQlZCVkJWQlZCVkCQAETAAAAAIFAAAAB3VzZXJOdW0JAARMAAAAAgUAAAAGYW1vdW50CQAETAAAAAIFAAAABXN0YXJ0CQAETAAAAAIFAAAACGR1cmF0aW9uCQAETAAAAAIFAAAABnBhcmFtSwkABEwAAAACBQAAAAZwYXJhbUIJAARMAAAAAgUAAAAQbGFzdFVwZFRpbWVzdGFtcAkABEwAAAACBQAAAAlnd3hBbW91bnQFAAAAA25pbAUAAAADU0VQAQAAABZmb3JtYXRMb2NrUGFyYW1zUmVjb3JkAAAABwAAAAd1c2VyTnVtAAAABmFtb3VudAAAAAVzdGFydAAAAAhkdXJhdGlvbgAAAAZwYXJhbUsAAAAGcGFyYW1CAAAACWd3eEFtb3VudAkBAAAAF2Zvcm1hdExvY2tQYXJhbXNSZWNvcmRTAAAACAUAAAAHdXNlck51bQkAAaQAAAABBQAAAAZhbW91bnQJAAGkAAAAAQUAAAAFc3RhcnQJAAGkAAAAAQUAAAAIZHVyYXRpb24JAAGkAAAAAQUAAAAGcGFyYW1LCQABpAAAAAEFAAAABnBhcmFtQgkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAaQAAAABBQAAAAlnd3hBbW91bnQBAAAADmtleU5leHRVc2VyTnVtAAAAAAIAAAAPJXNfX25leHRVc2VyTnVtAQAAABJrZXlVc2VyMk51bU1hcHBpbmcAAAABAAAAC3VzZXJBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAAEmtleU51bTJVc2VyTWFwcGluZwAAAAEAAAADbnVtCQAEuQAAAAIJAARMAAAAAgIAAAAZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkABEwAAAACBQAAAANudW0FAAAAA25pbAUAAAADU0VQAQAAABZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AAAAAQAAAAd1c2VyTnVtCQAEuQAAAAIJAARMAAAAAgIAAAAWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkABEwAAAACBQAAAAd1c2VyTnVtCQAETAAAAAICAAAABmFtb3VudAUAAAADbmlsBQAAAANTRVABAAAAFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sAAAABAAAAB3VzZXJOdW0JAAS5AAAAAgkABEwAAAACAgAAABYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQAETAAAAAIFAAAAB3VzZXJOdW0JAARMAAAAAgIAAAAFc3RhcnQFAAAAA25pbAUAAAADU0VQAQAAABRrZXlMb2NrUGFyYW1EdXJhdGlvbgAAAAEAAAAHdXNlck51bQkABLkAAAACCQAETAAAAAICAAAAFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAARMAAAAAgUAAAAHdXNlck51bQkABEwAAAACAgAAAAhkdXJhdGlvbgUAAAADbmlsBQAAAANTRVABAAAADWtleUxvY2tQYXJhbUsAAAABAAAAB3VzZXJOdW0JAAS5AAAAAgkABEwAAAACAgAAABYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQAETAAAAAIFAAAAB3VzZXJOdW0JAARMAAAAAgIAAAABawUAAAADbmlsBQAAAANTRVABAAAADWtleUxvY2tQYXJhbUIAAAABAAAAB3VzZXJOdW0JAAS5AAAAAgkABEwAAAACAgAAABYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQAETAAAAAIFAAAAB3VzZXJOdW0JAARMAAAAAgIAAAABYgUAAAADbmlsBQAAAANTRVABAAAAFWtleUxvY2tQYXJhbUJ5UGVyaW9kSwAAAAIAAAAHdXNlck51bQAAAAZwZXJpb2QJAAS5AAAAAgkABEwAAAACAgAAABclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkABEwAAAACBQAAAAd1c2VyTnVtCQAETAAAAAICAAAAAWsJAARMAAAAAgUAAAAGcGVyaW9kBQAAAANuaWwFAAAAA1NFUAEAAAAVa2V5TG9ja1BhcmFtQnlQZXJpb2RCAAAAAgAAAAd1c2VyTnVtAAAABnBlcmlvZAkABLkAAAACCQAETAAAAAICAAAAFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQAETAAAAAIFAAAAB3VzZXJOdW0JAARMAAAAAgIAAAABYgkABEwAAAACBQAAAAZwZXJpb2QFAAAAA25pbAUAAAADU0VQAQAAABdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAACAAAAHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAEAAAAga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MAAAAAAgAAACUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAQAAABJrZXlTdGF0c0xvY2tzQ291bnQAAAAAAgAAABclcyVzX19zdGF0c19fbG9ja3NDb3VudAEAAAASa2V5U3RhdHNVc2Vyc0NvdW50AAAAAAIAAAAdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAAAAIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAAAAAQAAAAd1c2VyTnVtCQAEuQAAAAIJAARMAAAAAgIAAAAeJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50CQAETAAAAAIFAAAAB3VzZXJOdW0FAAAAA25pbAUAAAADU0VQAQAAABdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTAAAAAEAAAAHdXNlck51bQkABLkAAAACCQAETAAAAAICAAAAESVzJWRfX21heEJvb3N0SW50CQAETAAAAAIFAAAAB3VzZXJOdW0FAAAAA25pbAUAAAADU0VQAQAAABhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwAAAAAAgAAABglcyVzX19tYXhCb29zdEludF9fdG90YWwBAAAAIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbAAAAAEAAAAHdXNlck51bQkABLkAAAACCQAETAAAAAICAAAAJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkABEwAAAACBQAAAAd1c2VyTnVtBQAAAANuaWwFAAAAA1NFUAEAAAATa2V5VXNlckJvb3N0Q2xhaW1lZAAAAAEAAAAHdXNlck51bQkABLkAAAACCQAETAAAAAICAAAAFiVzJWRfX3VzZXJCb29zdENsYWltZWQJAARMAAAAAgUAAAAHdXNlck51bQUAAAADbmlsBQAAAANTRVABAAAAE2tleU1heEJvb3N0TWlncmF0ZWQAAAABAAAADnVzZXJOdW1PclRvdGFsCQAEuQAAAAIJAARMAAAAAgIAAAAZJXMlc19fbWF4Qm9vc3RJbnRNaWdyYXRlZAkABEwAAAACBQAAAA51c2VyTnVtT3JUb3RhbAUAAAADbmlsBQAAAANTRVAAAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAAAAAAAAAACmZhY3RvcnlDZmcJAQAAABRyZWFkRmFjdG9yeUNmZ09yRmFpbAAAAAEFAAAAD2ZhY3RvcnlDb250cmFjdAAAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcAAAAAD3N0YWtpbmdDb250cmFjdAkBAAAAF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAAAAAQUAAAAKZmFjdG9yeUNmZwEAAAAMSGlzdG9yeUVudHJ5AAAACAAAAAR0eXBlAAAABHVzZXIAAAAGYW1vdW50AAAACWxvY2tTdGFydAAAAAhkdXJhdGlvbgAAAAFrAAAAAWIAAAABaQQAAAAKaGlzdG9yeUtFWQkABLkAAAACCQAETAAAAAICAAAAESVzJXMlcyVzX19oaXN0b3J5CQAETAAAAAIFAAAABHR5cGUJAARMAAAAAgUAAAAEdXNlcgkABEwAAAACCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAA25pbAUAAAADU0VQBAAAAAtoaXN0b3J5REFUQQkABLkAAAACCQAETAAAAAICAAAADiVkJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAZoZWlnaHQJAARMAAAAAgkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAABmFtb3VudAkABEwAAAACCQABpAAAAAEFAAAACWxvY2tTdGFydAkABEwAAAACCQABpAAAAAEFAAAACGR1cmF0aW9uCQAETAAAAAIJAAGkAAAAAQUAAAABawkABEwAAAACCQABpAAAAAEFAAAAAWIFAAAAA25pbAUAAAADU0VQCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAApoaXN0b3J5S0VZBQAAAAtoaXN0b3J5REFUQQEAAAAKU3RhdHNFbnRyeQAAAAQAAAAOdG90YWxMb2NrZWRJbmMAAAALZHVyYXRpb25JbmMAAAAMbG9ja0NvdW50SW5jAAAADXVzZXJzQ291bnRJbmMEAAAAG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWQkBAAAAIGtleVN0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAAAAAAQAAAANbG9ja3NDb3VudEtFWQkBAAAAEmtleVN0YXRzTG9ja3NDb3VudAAAAAAEAAAADXVzZXJzQ291bnRLRVkJAQAAABJrZXlTdGF0c1VzZXJzQ291bnQAAAAABAAAAA50b3RhbEFtb3VudEtFWQkBAAAAF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAAAAQAAAAYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZBAAAAApsb2Nrc0NvdW50CQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAANbG9ja3NDb3VudEtFWQQAAAAKdXNlcnNDb3VudAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAADXVzZXJzQ291bnRLRVkEAAAAC3RvdGFsQW1vdW50CQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAOdG90YWxBbW91bnRLRVkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWQkAAGQAAAACBQAAABhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MFAAAAC2R1cmF0aW9uSW5jCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1sb2Nrc0NvdW50S0VZCQAAZAAAAAIFAAAACmxvY2tzQ291bnQFAAAADGxvY2tDb3VudEluYwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANdXNlcnNDb3VudEtFWQkAAGQAAAACBQAAAAp1c2Vyc0NvdW50BQAAAA11c2Vyc0NvdW50SW5jCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA50b3RhbEFtb3VudEtFWQkAAGQAAAACBQAAAAt0b3RhbEFtb3VudAUAAAAOdG90YWxMb2NrZWRJbmMFAAAAA25pbAEAAAANY2FsY0d3eEFtb3VudAAAAAMAAAAEa1JhdwAAAARiUmF3AAAAAWgEAAAABVNDQUxFAAAAAAAAAAPoCQAAaQAAAAIJAABkAAAAAgkAAGgAAAACBQAAAARrUmF3BQAAAAFoBQAAAARiUmF3BQAAAAVTQ0FMRQEAAAAPTG9ja1BhcmFtc0VudHJ5AAAACAAAAAt1c2VyQWRkcmVzcwAAAAd1c2VyTnVtAAAABmFtb3VudAAAAAVzdGFydAAAAAhkdXJhdGlvbgAAAAFrAAAAAWIAAAAGcGVyaW9kBAAAAA11c2VyQW1vdW50S0VZCQEAAAAWa2V5TG9ja1BhcmFtVXNlckFtb3VudAAAAAEFAAAAB3VzZXJOdW0EAAAADXN0YXJ0QmxvY2tLRVkJAQAAABZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAAAAAQUAAAAHdXNlck51bQQAAAALZHVyYXRpb25LRVkJAQAAABRrZXlMb2NrUGFyYW1EdXJhdGlvbgAAAAEFAAAAB3VzZXJOdW0EAAAABGtLRVkJAQAAAA1rZXlMb2NrUGFyYW1LAAAAAQUAAAAHdXNlck51bQQAAAAEYktFWQkBAAAADWtleUxvY2tQYXJhbUIAAAABBQAAAAd1c2VyTnVtBAAAAAtrQnlQZXJpb0tFWQkBAAAAFWtleUxvY2tQYXJhbUJ5UGVyaW9kSwAAAAIFAAAAB3VzZXJOdW0FAAAABnBlcmlvZAQAAAAMYkJ5UGVyaW9kS0VZCQEAAAAVa2V5TG9ja1BhcmFtQnlQZXJpb2RCAAAAAgUAAAAHdXNlck51bQUAAAAGcGVyaW9kBAAAAAlnd3hBbW91bnQJAQAAAA1jYWxjR3d4QW1vdW50AAAAAwUAAAABawUAAAABYgUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA11c2VyQW1vdW50S0VZBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADXN0YXJ0QmxvY2tLRVkFAAAABXN0YXJ0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtkdXJhdGlvbktFWQUAAAAIZHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAABGtLRVkFAAAAAWsJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAABGJLRVkFAAAAAWIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tCeVBlcmlvS0VZBQAAAAFrCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxiQnlQZXJpb2RLRVkFAAAAAWIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleUxvY2tQYXJhbXNSZWNvcmQAAAABBQAAAAt1c2VyQWRkcmVzcwkBAAAAFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQAAAAHBQAAAAd1c2VyTnVtBQAAAAZhbW91bnQFAAAABXN0YXJ0BQAAAAhkdXJhdGlvbgUAAAABawUAAAABYgUAAAAJZ3d4QW1vdW50BQAAAANuaWwBAAAAImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwAAAACAAAAAWkAAAAPZXhwZWN0ZWRBc3NldElkAwkAAGYAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAAAAAAAAAQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBQAAAA9leHBlY3RlZEFzc2V0SWQJAAACAAAAAQIAAAAbaW52YWxpZCBhc3NldCBpZCBpbiBwYXltZW50CAUAAAADcG10AAAABmFtb3VudAEAAAAUY2FsY0N1cnJlbnRHd3hBbW91bnQAAAABAAAAC3VzZXJBZGRyZXNzBAAAAAVFTVBUWQIAAAAFZW1wdHkEAAAAEnVzZXIyTnVtTWFwcGluZ0tFWQkBAAAAEmtleVVzZXIyTnVtTWFwcGluZwAAAAEFAAAAC3VzZXJBZGRyZXNzBAAAAAd1c2VyTnVtCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIgAAAAEFAAAAEnVzZXIyTnVtTWFwcGluZ0tFWQUAAAAFRU1QVFkEAAAAAWsJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAADWtleUxvY2tQYXJhbUsAAAABBQAAAAd1c2VyTnVtAAAAAAAAAAAABAAAAAFiCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEJAQAAAA1rZXlMb2NrUGFyYW1CAAAAAQUAAAAHdXNlck51bQAAAAAAAAAAAAQAAAANZ3d4QW1vdW50Q2FsYwkBAAAADWNhbGNHd3hBbW91bnQAAAADBQAAAAFrBQAAAAFiBQAAAAZoZWlnaHQEAAAACWd3eEFtb3VudAMJAABmAAAAAgAAAAAAAAAAAAUAAAANZ3d4QW1vdW50Q2FsYwAAAAAAAAAAAAUAAAANZ3d4QW1vdW50Q2FsYwUAAAAJZ3d4QW1vdW50AQAAABRpbnRlcm5hbENsYWltV3hCb29zdAAAAAEAAAAOdXNlckFkZHJlc3NTdHIEAAAABUVNUFRZAgAAAAVFTVBUWQQAAAARdXNlclJlY29yZE9yRW1wdHkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAE2tleUxvY2tQYXJhbXNSZWNvcmQAAAABBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAFRU1QVFkDCQAAAAAAAAIFAAAAEXVzZXJSZWNvcmRPckVtcHR5BQAAAAVFTVBUWQkABRUAAAADAAAAAAAAAAAABQAAAANuaWwCAAAAFXVzZXJSZWNvcmQ6OmlzOjplbXB0eQQAAAAPdXNlclJlY29yZEFycmF5CQAEtQAAAAIFAAAAEXVzZXJSZWNvcmRPckVtcHR5BQAAAANTRVAEAAAACnVzZXJOdW1TdHIJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAA5JZHhMb2NrVXNlck51bQQAAAASd3hFbWlzc2lvblBlckJsb2NrCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAAAAAEAAAADWVtaXNzaW9uU3RhcnQJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAVa2V5RW1pc3Npb25TdGFydEJsb2NrAAAAAAQAAAALZW1pc3Npb25FbmQJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAATa2V5RW1pc3Npb25FbmRCbG9jawAAAAAEAAAAAWgDCQAAZgAAAAIFAAAABmhlaWdodAUAAAALZW1pc3Npb25FbmQFAAAAC2VtaXNzaW9uRW5kBQAAAAZoZWlnaHQEAAAAAmRoCQABlgAAAAEJAARMAAAAAgkAAGUAAAACBQAAAAFoBQAAAA1lbWlzc2lvblN0YXJ0CQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAQAAAAgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkJAQAAACBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkEAAAAFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAAGkAAAACCQAAaAAAAAIJAABoAAAAAgUAAAASd3hFbWlzc2lvblBlckJsb2NrBQAAAAJkaAAAAAAAAAAAAgAAAAAAAAAAAwQAAAAZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAAGUAAAACBQAAABVib29zdEVtaXNzaW9uSW50ZWdyYWwFAAAAHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsAwkAAGYAAAACAAAAAAAAAAAABQAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQAAAgAAAAECAAAAEndyb25nIGNhbGN1bGF0aW9ucwQAAAAfdXNlck1heEJvb3N0SW50ZWdyYWxNaWdyYXRlZEtFWQkBAAAAE2tleU1heEJvb3N0TWlncmF0ZWQAAAABBQAAAAp1c2VyTnVtU3RyBAAAABx1c2VyTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAH3VzZXJNYXhCb29zdEludGVncmFsTWlncmF0ZWRLRVkAAAAAAAAAAAAEAAAAE3VzZXJNYXhCb29zdERpdmlkZXIDCQAAAAAAAAIFAAAAHHVzZXJNYXhCb29zdEludGVncmFsTWlncmF0ZWQAAAAAAAAAAAAFAAAAD0JPT1NUTUFYRElWSURFUgAAAAAAAAAAAQQAAAAgdG90YWxNYXhCb29zdEludGVncmFsTWlncmF0ZWRLRVkJAQAAABNrZXlNYXhCb29zdE1pZ3JhdGVkAAAAAQIAAAAFdG90YWwEAAAAHXRvdGFsTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAIHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkS0VZAAAAAAAAAAAABAAAABR0b3RhbE1heEJvb3N0RGl2aWRlcgMJAAAAAAAAAgUAAAAddG90YWxNYXhCb29zdEludGVncmFsTWlncmF0ZWQAAAAAAAAAAAAFAAAAD0JPT1NUTUFYRElWSURFUgAAAAAAAAAAAQQAAAAXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkJAQAAABdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBAAAAGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTAAAAAAEAAAAIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWQkBAAAAIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAD3VzZXJNYXhCb29zdEludAkAAGkAAAACCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkFAAAAE3VzZXJNYXhCb29zdERpdmlkZXIEAAAAEHRvdGFsTWF4Qm9vc3RJbnQJAABpAAAAAgkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQUAAAAUdG90YWxNYXhCb29zdERpdmlkZXIEAAAAHnVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWQQAAAAhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3CQAAZAAAAAIFAAAAHnVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAAGsAAAADBQAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsBQAAAA91c2VyTWF4Qm9vc3RJbnQFAAAAEHRvdGFsTWF4Qm9vc3RJbnQEAAAAE3VzZXJCb29zdENsYWltZWRLRVkJAQAAABNrZXlVc2VyQm9vc3RDbGFpbWVkAAAAAQUAAAAKdXNlck51bVN0cgQAAAAQdXNlckJvb3N0Q2xhaW1lZAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAE3VzZXJCb29zdENsYWltZWRLRVkEAAAAEnVzZXJCb29zdEF2YWlsYWJsZQkAAGUAAAACBQAAACF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcFAAAAEHVzZXJCb29zdENsYWltZWQEAAAACWRhdGFTdGF0ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZBQAAACF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZBQAAABVib29zdEVtaXNzaW9uSW50ZWdyYWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAIHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkS0VZAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAB91c2VyTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkS0VZAAAAAAAAAAABBQAAAANuaWwEAAAABWRlYnVnCQAEuQAAAAIJAARMAAAAAgkAASwAAAACAgAAAB51c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbD0JAAGkAAAAAQUAAAAddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwJAARMAAAAAgkAASwAAAACAgAAABp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsPQkAAaQAAAABBQAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQAETAAAAAIJAAEsAAAAAgIAAAAQdXNlck1heEJvb3N0SW50PQkAAaQAAAABBQAAAA91c2VyTWF4Qm9vc3RJbnQJAARMAAAAAgkAASwAAAACAgAAABF0b3RhbE1heEJvb3N0SW50PQkAAaQAAAABBQAAABB0b3RhbE1heEJvb3N0SW50CQAETAAAAAIJAAEsAAAAAgIAAAAfdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsPQkAAaQAAAABBQAAAB51c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwJAARMAAAAAgkAASwAAAACAgAAACJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXc9CQABpAAAAAEFAAAAIXVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbE5ldwkABEwAAAACCQABLAAAAAICAAAAEXVzZXJCb29zdENsYWltZWQ9CQABpAAAAAEFAAAAEHVzZXJCb29zdENsYWltZWQJAARMAAAAAgkAASwAAAACAgAAABN1c2VyQm9vc3RBdmFpbGFibGU9CQABpAAAAAEFAAAAEnVzZXJCb29zdEF2YWlsYWJsZQUAAAADbmlsAgAAAAI6OgkABRUAAAADBQAAABJ1c2VyQm9vc3RBdmFpbGFibGUFAAAACWRhdGFTdGF0ZQUAAAAFZGVidWcAAAAHAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAABgAAABFmYWN0b3J5QWRkcmVzc1N0cgAAAA5sb2NrQXNzZXRJZFN0cgAAAA1taW5Mb2NrQW1vdW50AAAAC21pbkR1cmF0aW9uAAAAC21heER1cmF0aW9uAAAADG1hdGhDb250cmFjdAMJAQAAAAIhPQAAAAIFAAAABHRoaXMIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAAA5ub3QgYXV0aG9yaXplZAkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOa2V5TmV4dFVzZXJOdW0AAAAAAAAAAAAAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAlrZXlDb25maWcAAAAACQEAAAAMZm9ybWF0Q29uZmlnAAAABQUAAAAObG9ja0Fzc2V0SWRTdHIFAAAADW1pbkxvY2tBbW91bnQFAAAAC21pbkR1cmF0aW9uBQAAAAttYXhEdXJhdGlvbgUAAAAMbWF0aENvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAAFAAAAEWZhY3RvcnlBZGRyZXNzU3RyBQAAAANuaWwJAQAAAApTdGF0c0VudHJ5AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFpAQAAAARsb2NrAAAAAQAAAAhkdXJhdGlvbgQAAAAIY2ZnQXJyYXkJAQAAABVyZWFkQ29uZmlnQXJyYXlPckZhaWwAAAAABAAAAAphc3NldElkU3RyCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA1JZHhDZmdBc3NldElkBAAAAAdhc3NldElkCQACWQAAAAEFAAAACmFzc2V0SWRTdHIEAAAADW1pbkxvY2tBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAATSWR4Q2ZnTWluTG9ja0Ftb3VudAQAAAAPbWluTG9ja0R1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFUlkeENmZ01pbkxvY2tEdXJhdGlvbgQAAAAPbWF4TG9ja0R1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFUlkeENmZ01heExvY2tEdXJhdGlvbgQAAAAMbWF0aENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdNYXRoQ29udHJhY3QDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAANGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAAAAA3BtdAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQAAAAphc3NldElkU3RyAgAAAAwgaXMgZXhwZWN0ZWQEAAAADm5leHRVc2VyTnVtS0VZCQEAAAAOa2V5TmV4dFVzZXJOdW0AAAAABAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADnVzZXJJc0V4aXN0aW5nCQEAAAAJaXNEZWZpbmVkAAAAAQkABCIAAAABCQEAAAASa2V5VXNlcjJOdW1NYXBwaW5nAAAAAQUAAAAOdXNlckFkZHJlc3NTdHIEAAAACnVzZXJOdW1TdHIDBQAAAA51c2VySXNFeGlzdGluZwkBAAAABXZhbHVlAAAAAQkABCIAAAABCQEAAAASa2V5VXNlcjJOdW1NYXBwaW5nAAAAAQUAAAAOdXNlckFkZHJlc3NTdHIJAAGkAAAAAQkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMFAAAADm5leHRVc2VyTnVtS0VZBAAAAAd1c2VyTnVtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAACnVzZXJOdW1TdHIEAAAACWxvY2tTdGFydAUAAAAGaGVpZ2h0BAAAAA1zdGFydEJsb2NrS0VZCQEAAAAWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawAAAAEFAAAACnVzZXJOdW1TdHIEAAAAC2R1cmF0aW9uS0VZCQEAAAAUa2V5TG9ja1BhcmFtRHVyYXRpb24AAAABBQAAAAp1c2VyTnVtU3RyBAAAAA11c2VyQW1vdW50S0VZCQEAAAAWa2V5TG9ja1BhcmFtVXNlckFtb3VudAAAAAEFAAAACnVzZXJOdW1TdHIDCQAAZgAAAAIFAAAADW1pbkxvY2tBbW91bnQFAAAACXBtdEFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAImFtb3VudCBpcyBsZXNzIHRoZW4gbWluTG9ja0Ftb3VudD0JAAGkAAAAAQUAAAANbWluTG9ja0Ftb3VudAMJAABmAAAAAgUAAAAPbWluTG9ja0R1cmF0aW9uBQAAAAhkdXJhdGlvbgkAAAIAAAABCQABLAAAAAICAAAALXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkAAaQAAAABBQAAAA9taW5Mb2NrRHVyYXRpb24DCQAAZgAAAAIFAAAACGR1cmF0aW9uBQAAAA9tYXhMb2NrRHVyYXRpb24JAAACAAAAAQkAASwAAAACAgAAADBwYXNzZWQgZHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAAGkAAAAAQUAAAAPbWF4TG9ja0R1cmF0aW9uAwMFAAAADnVzZXJJc0V4aXN0aW5nCQAAZwAAAAIJAABkAAAAAgkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMFAAAADXN0YXJ0QmxvY2tLRVkJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAAtkdXJhdGlvbktFWQUAAAAJbG9ja1N0YXJ0BwkAAAIAAAABAgAAADZ0aGVyZSBpcyBhbiBhY3RpdmUgbG9jayAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sEAAAAB2NvZWZmWDgJAABrAAAAAwUAAAAIZHVyYXRpb24FAAAABU1VTFQ4BQAAAA9tYXhMb2NrRHVyYXRpb24EAAAADmdXeEFtb3VudFN0YXJ0CQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAHY29lZmZYOAUAAAAFTVVMVDgEAAAAE2dXeFBhcmFtc1Jlc3VsdExpc3QJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAADG1hdGhDb250cmFjdAIAAAAVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQAETAAAAAIFAAAADmdXeEFtb3VudFN0YXJ0CQAETAAAAAIFAAAACWxvY2tTdGFydAkABEwAAAACBQAAAAhkdXJhdGlvbgUAAAADbmlsBQAAAANuaWwEAAAAAWsJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAATZ1d4UGFyYW1zUmVzdWx0TGlzdAAAAAAAAAAAAAQAAAABYgkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAABNnV3hQYXJhbXNSZXN1bHRMaXN0AAAAAAAAAAABBAAAAAZwZXJpb2QJAAGkAAAAAQkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAABNnV3hQYXJhbXNSZXN1bHRMaXN0AAAAAAAAAAACBAAAABJ3eEVtaXNzaW9uUGVyQmxvY2sJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAAAAAQAAAANZW1pc3Npb25TdGFydAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAAAABAAAAAtlbWlzc2lvbkVuZAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABNrZXlFbWlzc2lvbkVuZEJsb2NrAAAAAAQAAAABaAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAtlbWlzc2lvbkVuZAUAAAALZW1pc3Npb25FbmQFAAAABmhlaWdodAQAAAACZGgJAAGWAAAAAQkABEwAAAACCQAAZQAAAAIFAAAAAWgFAAAADWVtaXNzaW9uU3RhcnQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAACB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBAAAAIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAAAAAQUAAAAKdXNlck51bVN0cgQAAAAVYm9vc3RFbWlzc2lvbkludGVncmFsCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAABJ3eEVtaXNzaW9uUGVyQmxvY2sFAAAAAmRoAAAAAAAAAAACAAAAAAAAAAADBAAAABd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBAAAAF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAAAAAQUAAAAKdXNlck51bVN0cgQAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQEAAAAYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAAAAAQAAAAgdG90YWxNYXhCb29zdEludGVncmFsTWlncmF0ZWRLRVkJAQAAABNrZXlNYXhCb29zdE1pZ3JhdGVkAAAAAQIAAAAFdG90YWwEAAAAHXRvdGFsTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAIHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkS0VZAAAAAAAAAAAABAAAABR0b3RhbE1heEJvb3N0RGl2aWRlcgMJAAAAAAAAAgUAAAAddG90YWxNYXhCb29zdEludGVncmFsTWlncmF0ZWQAAAAAAAAAAAAFAAAAD0JPT1NUTUFYRElWSURFUgAAAAAAAAAAAQQAAAAPdXNlck1heEJvb3N0SW50CQAAaQAAAAIJAABoAAAAAgUAAAAOZ1d4QW1vdW50U3RhcnQFAAAACGR1cmF0aW9uCQAAaAAAAAIAAAAAAAAAAAIFAAAAD0JPT1NUTUFYRElWSURFUgQAAAAQdG90YWxNYXhCb29zdEludAkAAGkAAAACCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZBQAAABR0b3RhbE1heEJvb3N0RGl2aWRlcgQAAAADYXJyAwUAAAAOdXNlcklzRXhpc3RpbmcFAAAAA25pbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAObmV4dFVzZXJOdW1LRVkJAABkAAAAAgUAAAAHdXNlck51bQAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5VXNlcjJOdW1NYXBwaW5nAAAAAQUAAAAOdXNlckFkZHJlc3NTdHIFAAAACnVzZXJOdW1TdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleU51bTJVc2VyTWFwcGluZwAAAAEFAAAACnVzZXJOdW1TdHIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAANuaWwJAAROAAAAAgkABE0AAAACCQAETgAAAAIJAAROAAAAAgUAAAADYXJyCQEAAAAPTG9ja1BhcmFtc0VudHJ5AAAACAUAAAAOdXNlckFkZHJlc3NTdHIFAAAACnVzZXJOdW1TdHIFAAAACXBtdEFtb3VudAUAAAAJbG9ja1N0YXJ0BQAAAAhkdXJhdGlvbgUAAAABawUAAAABYgUAAAAGcGVyaW9kCQEAAAAKU3RhdHNFbnRyeQAAAAQFAAAACXBtdEFtb3VudAUAAAAIZHVyYXRpb24AAAAAAAAAAAEDBQAAAA51c2VySXNFeGlzdGluZwAAAAAAAAAAAAAAAAAAAAAAAQkBAAAADEhpc3RvcnlFbnRyeQAAAAgCAAAABGxvY2sFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAlwbXRBbW91bnQFAAAACWxvY2tTdGFydAUAAAAIZHVyYXRpb24FAAAAAWsFAAAAAWIFAAAAAWkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZBQAAABVib29zdEVtaXNzaW9uSW50ZWdyYWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAF3VzZXJNYXhCb29zdEludGVncmFsS0VZBQAAAA91c2VyTWF4Qm9vc3RJbnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQkAAGQAAAACBQAAABB0b3RhbE1heEJvb3N0SW50BQAAAA91c2VyTWF4Qm9vc3RJbnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAIHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkS0VZAAAAAAAAAAABBQAAAANuaWwAAAABaQEAAAAMaW5jcmVhc2VMb2NrAAAAAQAAAA1kZWx0YUR1cmF0aW9uBAAAAAhjZmdBcnJheQkBAAAAFXJlYWRDb25maWdBcnJheU9yRmFpbAAAAAAEAAAACmFzc2V0SWRTdHIJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAADUlkeENmZ0Fzc2V0SWQEAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAAKYXNzZXRJZFN0cgQAAAAPbWluTG9ja0R1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFUlkeENmZ01pbkxvY2tEdXJhdGlvbgQAAAAPbWF4TG9ja0R1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFUlkeENmZ01heExvY2tEdXJhdGlvbgQAAAAMbWF0aENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdNYXRoQ29udHJhY3QEAAAACXBtdEFtb3VudAkBAAAAImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwAAAACBQAAAAFpBQAAAAdhc3NldElkBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD3VzZXJSZWNvcmRBcnJheQkBAAAAGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsAAAAAQUAAAAOdXNlckFkZHJlc3NTdHIEAAAACnVzZXJOdW1TdHIJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAA5JZHhMb2NrVXNlck51bQQAAAAKdXNlckFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD3VzZXJSZWNvcmRBcnJheQUAAAANSWR4TG9ja0Ftb3VudAQAAAAJbG9ja1N0YXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAAxJZHhMb2NrU3RhcnQEAAAADGxvY2tEdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD3VzZXJSZWNvcmRBcnJheQUAAAAPSWR4TG9ja0R1cmF0aW9uBAAAAAdsb2NrRW5kCQAAZAAAAAIFAAAACWxvY2tTdGFydAUAAAAMbG9ja0R1cmF0aW9uBAAAABFyZW1haW5pbmdEdXJhdGlvbgkAAZYAAAABCQAETAAAAAIJAABlAAAAAgUAAAAHbG9ja0VuZAUAAAAGaGVpZ2h0CQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAQAAAANdXNlckFtb3VudE5ldwkAAGQAAAACBQAAAAp1c2VyQW1vdW50BQAAAAlwbXRBbW91bnQEAAAAD2xvY2tEdXJhdGlvbk5ldwkAAGQAAAACBQAAABFyZW1haW5pbmdEdXJhdGlvbgUAAAANZGVsdGFEdXJhdGlvbgMJAABmAAAAAgAAAAAAAAAAAAUAAAANZGVsdGFEdXJhdGlvbgkAAAIAAAABAgAAABpkdXJhdGlvbiBpcyBsZXNzIHRoZW4gemVybwMJAABmAAAAAgUAAAAPbWluTG9ja0R1cmF0aW9uBQAAAA9sb2NrRHVyYXRpb25OZXcJAAACAAAAAQkAASwAAAACAgAAAC1sb2NrRHVyYXRpb25OZXcgaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAAGkAAAAAQUAAAAPbWluTG9ja0R1cmF0aW9uAwkAAGYAAAACBQAAAA9sb2NrRHVyYXRpb25OZXcFAAAAD21heExvY2tEdXJhdGlvbgkAAAIAAAABCQABLAAAAAICAAAARGRlbHRhRHVyYXRpb24gKyBleGlzdGVkTG9ja0R1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQABpAAAAAEFAAAAD21heExvY2tEdXJhdGlvbgMDCQAAZwAAAAIFAAAABmhlaWdodAUAAAAHbG9ja0VuZAkAAGYAAAACBQAAAAp1c2VyQW1vdW50AAAAAAAAAAAABwkAAAIAAAABAgAAADl0aGVyZSBpcyBhbiBleHBpcmVkIGxvY2sgLSBuZWVkIHRvIHVubG9jayBiZWZvcmUgbmV3IGxvY2sEAAAAB2NvZWZmWDgJAABrAAAAAwUAAAAPbG9ja0R1cmF0aW9uTmV3BQAAAAVNVUxUOAUAAAAPbWF4TG9ja0R1cmF0aW9uBAAAAA5nV3hBbW91bnRTdGFydAkAAGsAAAADBQAAAA11c2VyQW1vdW50TmV3BQAAAAdjb2VmZlg4BQAAAAVNVUxUOAQAAAATZ1d4UGFyYW1zUmVzdWx0TGlzdAkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAAMbWF0aENvbnRyYWN0AgAAABVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAARMAAAAAgUAAAAOZ1d4QW1vdW50U3RhcnQJAARMAAAAAgUAAAAGaGVpZ2h0CQAETAAAAAIFAAAAD2xvY2tEdXJhdGlvbk5ldwUAAAADbmlsBQAAAANuaWwEAAAAAWsJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAATZ1d4UGFyYW1zUmVzdWx0TGlzdAAAAAAAAAAAAAQAAAABYgkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAABNnV3hQYXJhbXNSZXN1bHRMaXN0AAAAAAAAAAABBAAAAAZwZXJpb2QJAAGkAAAAAQkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAABNnV3hQYXJhbXNSZXN1bHRMaXN0AAAAAAAAAAACBAAAABJ3eEVtaXNzaW9uUGVyQmxvY2sJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAAAAAQAAAANZW1pc3Npb25TdGFydAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAAAABAAAAAtlbWlzc2lvbkVuZAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABNrZXlFbWlzc2lvbkVuZEJsb2NrAAAAAAQAAAABaAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAtlbWlzc2lvbkVuZAUAAAALZW1pc3Npb25FbmQFAAAABmhlaWdodAQAAAACZGgJAAGWAAAAAQkABEwAAAACCQAAZQAAAAIFAAAAAWgFAAAADWVtaXNzaW9uU3RhcnQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAACB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBAAAAIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAAAAAQUAAAAKdXNlck51bVN0cgQAAAAddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAACB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQQAAAAVYm9vc3RFbWlzc2lvbkludGVncmFsCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAABJ3eEVtaXNzaW9uUGVyQmxvY2sFAAAAAmRoAAAAAAAAAAACAAAAAAAAAAADBAAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQAAZQAAAAIFAAAAFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAUAAAAddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwDCQAAZgAAAAIAAAAAAAAAAAAFAAAAGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwJAAACAAAAAQIAAAASd3JvbmcgY2FsY3VsYXRpb25zBAAAAB91c2VyTWF4Qm9vc3RJbnRlZ3JhbE1pZ3JhdGVkS0VZCQEAAAATa2V5TWF4Qm9vc3RNaWdyYXRlZAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAHHVzZXJNYXhCb29zdEludGVncmFsTWlncmF0ZWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAfdXNlck1heEJvb3N0SW50ZWdyYWxNaWdyYXRlZEtFWQAAAAAAAAAAAAQAAAATdXNlck1heEJvb3N0RGl2aWRlcgMJAAAAAAAAAgUAAAAcdXNlck1heEJvb3N0SW50ZWdyYWxNaWdyYXRlZAAAAAAAAAAAAAUAAAAPQk9PU1RNQVhESVZJREVSAAAAAAAAAAABBAAAACB0b3RhbE1heEJvb3N0SW50ZWdyYWxNaWdyYXRlZEtFWQkBAAAAE2tleU1heEJvb3N0TWlncmF0ZWQAAAABAgAAAAV0b3RhbAQAAAAddG90YWxNYXhCb29zdEludGVncmFsTWlncmF0ZWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAgdG90YWxNYXhCb29zdEludGVncmFsTWlncmF0ZWRLRVkAAAAAAAAAAAAEAAAAFHRvdGFsTWF4Qm9vc3REaXZpZGVyAwkAAAAAAAACBQAAAB10b3RhbE1heEJvb3N0SW50ZWdyYWxNaWdyYXRlZAAAAAAAAAAAAAUAAAAPQk9PU1RNQVhESVZJREVSAAAAAAAAAAABBAAAABd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBAAAAF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAAAAAQUAAAAKdXNlck51bVN0cgQAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQEAAAAYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAAAAAQAAAAhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZCQEAAAAha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAAAAAQUAAAAKdXNlck51bVN0cgQAAAAPdXNlck1heEJvb3N0SW50CQAAaQAAAAIJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAABd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQUAAAATdXNlck1heEJvb3N0RGl2aWRlcgQAAAAQdG90YWxNYXhCb29zdEludAkAAGkAAAACCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZBQAAABR0b3RhbE1heEJvb3N0RGl2aWRlcgQAAAAedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZBAAAACF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcJAABkAAAAAgUAAAAedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQAAawAAAAMFAAAAGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwFAAAAD3VzZXJNYXhCb29zdEludAUAAAAQdG90YWxNYXhCb29zdEludAQAAAASdXNlck1heEJvb3N0SW50TmV3CQAAaQAAAAIJAABoAAAAAgUAAAAOZ1d4QW1vdW50U3RhcnQFAAAAD2xvY2tEdXJhdGlvbk5ldwAAAAAAAAAAAgQAAAALY3VyclVzZXJHd3gJAQAAABRjYWxjQ3VycmVudEd3eEFtb3VudAAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBAAAABhyZW1haW5pbmdVc2VyTWF4Qm9vc3RJbnQJAABpAAAAAgkAAGgAAAACBQAAAAtjdXJyVXNlckd3eAUAAAARcmVtYWluaW5nRHVyYXRpb24AAAAAAAAAAAIEAAAAE3VzZXJNYXhCb29zdEludERpZmYJAABlAAAAAgUAAAASdXNlck1heEJvb3N0SW50TmV3BQAAABhyZW1haW5pbmdVc2VyTWF4Qm9vc3RJbnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAAE3VzZXJNYXhCb29zdEludERpZmYJAAACAAAAAQIAAAASd3JvbmcgY2FsY3VsYXRpb25zCQAETgAAAAIJAARNAAAAAgkABE4AAAACCQEAAAAPTG9ja1BhcmFtc0VudHJ5AAAACAUAAAAOdXNlckFkZHJlc3NTdHIFAAAACnVzZXJOdW1TdHIFAAAADXVzZXJBbW91bnROZXcFAAAACWxvY2tTdGFydAUAAAAPbG9ja0R1cmF0aW9uTmV3BQAAAAFrBQAAAAFiBQAAAAZwZXJpb2QJAQAAAApTdGF0c0VudHJ5AAAABAUAAAAJcG10QW1vdW50BQAAAA1kZWx0YUR1cmF0aW9uAAAAAAAAAAAAAAAAAAAAAAAACQEAAAAMSGlzdG9yeUVudHJ5AAAACAIAAAAEbG9jawUAAAAOdXNlckFkZHJlc3NTdHIFAAAACXBtdEFtb3VudAUAAAAJbG9ja1N0YXJ0BQAAAA9sb2NrRHVyYXRpb25OZXcFAAAAAWsFAAAAAWIFAAAAAWkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAF3VzZXJNYXhCb29zdEludGVncmFsS0VZCQAAZAAAAAIFAAAAD3VzZXJNYXhCb29zdEludAUAAAATdXNlck1heEJvb3N0SW50RGlmZgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQAAZAAAAAIFAAAAEHRvdGFsTWF4Qm9vc3RJbnQFAAAAE3VzZXJNYXhCb29zdEludERpZmYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWQUAAAAhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQUAAAAVYm9vc3RFbWlzc2lvbkludGVncmFsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACB0b3RhbE1heEJvb3N0SW50ZWdyYWxNaWdyYXRlZEtFWQAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAfdXNlck1heEJvb3N0SW50ZWdyYWxNaWdyYXRlZEtFWQAAAAAAAAAAAQUAAAADbmlsAAAAAWkBAAAADGNsYWltV3hCb29zdAAAAAEAAAAOdXNlckFkZHJlc3NTdHIDCQEAAAACIT0AAAACBQAAAA9zdGFraW5nQ29udHJhY3QIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQEAAAADSR0MDI0NTYxMjQ2NDIJAQAAABRpbnRlcm5hbENsYWltV3hCb29zdAAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBAAAABJ1c2VyQm9vc3RBdmFpbGFibGUIBQAAAA0kdDAyNDU2MTI0NjQyAAAAAl8xBAAAAAlkYXRhU3RhdGUIBQAAAA0kdDAyNDU2MTI0NjQyAAAAAl8yBAAAAAVkZWJ1ZwgFAAAADSR0MDI0NTYxMjQ2NDIAAAACXzMJAAUUAAAAAgUAAAAJZGF0YVN0YXRlCQAETAAAAAIFAAAAEnVzZXJCb29zdEF2YWlsYWJsZQUAAAADbmlsAAAAAWkBAAAAFGNsYWltV3hCb29zdFJFQURPTkxZAAAAAQAAAA51c2VyQWRkcmVzc1N0cgQAAAANJHQwMjQ3NTIyNDgzMwkBAAAAFGludGVybmFsQ2xhaW1XeEJvb3N0AAAAAQUAAAAOdXNlckFkZHJlc3NTdHIEAAAAEnVzZXJCb29zdEF2YWlsYWJsZQgFAAAADSR0MDI0NzUyMjQ4MzMAAAACXzEEAAAACWRhdGFTdGF0ZQgFAAAADSR0MDI0NzUyMjQ4MzMAAAACXzIEAAAABWRlYnVnCAUAAAANJHQwMjQ3NTIyNDgzMwAAAAJfMwkABRQAAAACBQAAAANuaWwJAARMAAAAAgUAAAASdXNlckJvb3N0QXZhaWxhYmxlCQAETAAAAAIFAAAABWRlYnVnBQAAAANuaWwAAAABaQEAAAAGdW5sb2NrAAAAAQAAAAt1c2VyQWRkcmVzcwQAAAAPdXNlclJlY29yZEFycmF5CQEAAAAacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwAAAABBQAAAAt1c2VyQWRkcmVzcwQAAAAKdXNlck51bVN0cgkAAZEAAAACBQAAAA91c2VyUmVjb3JkQXJyYXkFAAAADklkeExvY2tVc2VyTnVtBAAAAAp1c2VyQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAA1JZHhMb2NrQW1vdW50BAAAAAlsb2NrU3RhcnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA91c2VyUmVjb3JkQXJyYXkFAAAADElkeExvY2tTdGFydAQAAAAMbG9ja0R1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAA9JZHhMb2NrRHVyYXRpb24EAAAAB2xvY2tFbmQJAABkAAAAAgUAAAAJbG9ja1N0YXJ0BQAAAAxsb2NrRHVyYXRpb24EAAAACGNmZ0FycmF5CQEAAAAVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAAAAAQAAAAHYXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA1JZHhDZmdBc3NldElkAwkAAGcAAAACBQAAAAdsb2NrRW5kBQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAABXdhaXQgCQABpAAAAAEFAAAAB2xvY2tFbmQCAAAACiB0byB1bmxvY2sDCQAAZwAAAAIAAAAAAAAAAAAFAAAACnVzZXJBbW91bnQJAAACAAAAAQIAAAARbm90aGluZyB0byB1bmxvY2sEAAAABnBlcmlvZAIAAAABMAkABE0AAAACCQAETQAAAAIJAAROAAAAAgkBAAAAD0xvY2tQYXJhbXNFbnRyeQAAAAgFAAAAC3VzZXJBZGRyZXNzBQAAAAp1c2VyTnVtU3RyAAAAAAAAAAAABQAAAAlsb2NrU3RhcnQFAAAADGxvY2tEdXJhdGlvbgAAAAAAAAAAAAAAAAAAAAAAAAUAAAAGcGVyaW9kCQEAAAAKU3RhdHNFbnRyeQAAAAQJAQAAAAEtAAAAAQUAAAAKdXNlckFtb3VudAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wkBAAAADEhpc3RvcnlFbnRyeQAAAAgCAAAABnVubG9jawUAAAALdXNlckFkZHJlc3MFAAAACnVzZXJBbW91bnQFAAAACWxvY2tTdGFydAUAAAAMbG9ja0R1cmF0aW9uAAAAAAAAAAAAAAAAAAAAAAAABQAAAAFpCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAKdXNlckFtb3VudAUAAAAHYXNzZXRJZAAAAAFpAQAAABNnd3hVc2VySW5mb1JFQURPTkxZAAAAAQAAAAt1c2VyQWRkcmVzcwQAAAAJZ3d4QW1vdW50CQEAAAAUY2FsY0N1cnJlbnRHd3hBbW91bnQAAAABBQAAAAt1c2VyQWRkcmVzcwkABRQAAAACBQAAAANuaWwJAARMAAAAAgUAAAAJZ3d4QW1vdW50BQAAAANuaWwAAAAAokeYSA==", "chainId": 84, "height": 1815511, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9ks3pf46dquR7wVxRLRC9FUSCiCRcZ5d2svG5wfcD9PP Next: F1vVxQvSLefpedwH8scZKUaaciRW1S2YYqbcssG7oR6J Diff:
OldNewDifferences
77
88 let c = 100000000
99
10-func d (e,f) = valueOrErrorMessage(getString(e, f), (("mandatory this." + f) + " is not defined"))
10+let d = 1000000
11+
12+func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
1113
1214
13-func g (e,f) = valueOrElse(getInteger(e, f), 0)
15+func h (f,g) = valueOrElse(getInteger(f, g), 0)
1416
1517
16-func h (e,f,i) = valueOrElse(getInteger(e, f), i)
18+func i (f,g,j) = valueOrElse(getInteger(f, g), j)
1719
1820
19-func j (e,f) = valueOrErrorMessage(getInteger(e, f), (("mandatory this." + f) + " is not defined"))
21+func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
2022
2123
22-func k (l) = {
23- let m = l
24- if ($isInstanceOf(m, "List[Any]"))
24+func l (m) = {
25+ let n = m
26+ if ($isInstanceOf(n, "List[Any]"))
2527 then {
26- let n = m
27- n
28+ let o = n
29+ o
2830 }
2931 else throw("fail to cast into List[Any]")
3032 }
3133
3234
33-func o (l) = {
34- let m = l
35- if ($isInstanceOf(m, "Int"))
35+func p (m) = {
36+ let n = m
37+ if ($isInstanceOf(n, "Int"))
3638 then {
37- let p = m
38- p
39+ let q = n
40+ q
3941 }
4042 else throw("fail to cast into Int")
4143 }
4244
4345
44-func q () = "%s%s__config__factoryAddress"
46+func r () = "%s%s__config__factoryAddress"
4547
4648
47-let r = 1
49+let s = 1
4850
49-let s = 2
51+let t = 2
5052
51-let t = 3
53+let u = 3
5254
53-let u = 4
55+let v = 4
5456
55-let v = 5
57+let w = 5
5658
57-let w = 6
59+let x = 6
5860
59-let x = 7
61+let y = 7
6062
61-func y () = "%s__factoryConfig"
63+func z () = "%s__factoryConfig"
6264
6365
64-func z (A) = makeString(["%s%s%s", A, "mappings__lpAsset2PoolContract"], a)
66+func A (B) = makeString(["%s%s%s", B, "mappings__lpAsset2PoolContract"], a)
6567
6668
67-func B () = "%s__lpTokensList"
69+func C () = "%s__lpTokensList"
6870
6971
70-func C (A) = makeString(["%s%s%s", A, "mappings__lpAsset2PoolContract"], a)
72+func D (B) = makeString(["%s%s%s", B, "mappings__lpAsset2PoolContract"], a)
7173
7274
73-func D (E) = makeString(["%s%s", "poolWeight", E], a)
75+func E (F) = makeString(["%s%s", "poolWeight", F], a)
7476
7577
76-func F () = addressFromStringValue(d(this, q()))
78+func G () = addressFromStringValue(e(this, r()))
7779
7880
79-func G () = split(valueOrElse(getString(F(), B()), ""), a)
81+func H () = split(valueOrElse(getString(G(), C()), ""), a)
8082
8183
82-func H (I) = split(d(I, y()), a)
84+func I (J) = split(e(J, z()), a)
8385
8486
85-func J (K) = addressFromStringValue(K[s])
87+func K (L) = addressFromStringValue(L[t])
8688
8789
88-func L (K) = addressFromStringValue(K[v])
90+func M (L) = addressFromStringValue(L[w])
8991
9092
91-func M (K) = addressFromStringValue(K[r])
93+func N (L) = addressFromStringValue(L[s])
9294
9395
94-func N () = "%s%s__ratePerBlock__current"
96+func O () = "%s%s__ratePerBlock__current"
9597
9698
97-func O () = "%s%s__ratePerBlockMax__current"
99+func P () = "%s%s__ratePerBlockMax__current"
98100
99101
100-func P () = "%s%s__emission__startBlock"
102+func Q () = "%s%s__emission__startBlock"
101103
102104
103-func Q () = "%s%s__emission__duration"
105+func R () = "%s%s__emission__duration"
104106
105107
106-func R () = "%s%s__emission__endBlock"
108+func S () = "%s%s__emission__endBlock"
107109
108110
109-let S = 1
111+let T = 1
110112
111-let T = 2
113+let U = 2
112114
113-let U = 3
115+let V = 3
114116
115-let V = 4
117+let W = 4
116118
117-let W = 5
119+let X = 5
118120
119-func X () = "%s__config"
121+func Y () = "%s__config"
120122
121123
122-func Y () = split(d(this, X()), a)
124+func Z () = split(e(this, Y()), a)
123125
124126
125-func Z (aa,ab,ac,ad,ae) = makeString(["%s%d%d%d", aa, ab, ac, ad, ae], a)
127+func aa (ab,ac,ad,ae,af) = makeString(["%s%d%d%d", ab, ac, ad, ae, af], a)
126128
127129
128-func af (aa,ab,ac,ad,ae) = Z(aa, toString(ab), toString(ac), toString(ad), ae)
130+func ag (ab,ac,ad,ae,af) = aa(ab, toString(ac), toString(ad), toString(ae), af)
129131
130132
131-let ag = 1
133+let ah = 1
132134
133-let ah = 2
135+let ai = 2
134136
135-let ai = 3
137+let aj = 3
136138
137-let aj = 4
139+let ak = 4
138140
139-let ak = 5
141+let al = 5
140142
141-let al = 6
143+let am = 6
142144
143-func am (an) = makeString(["%s%s__lock", an], a)
145+func an (ao) = makeString(["%s%s__lock", ao], a)
144146
145147
146-func ao (an) = split(d(this, am(an)), a)
148+func ap (ao) = split(e(this, an(ao)), a)
147149
148150
149-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)
151+func aq (ar,as,at,au,av,aw,ax,ay) = makeString(["%d%d%d%d%d%d%d%d", ar, as, at, au, av, aw, ax, ay], a)
150152
151153
152-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))
154+func az (ar,as,at,au,av,aw,ay) = aq(ar, toString(as), toString(at), toString(au), toString(av), toString(aw), toString(lastBlock.timestamp), toString(ay))
153155
154156
155-func az () = "%s__nextUserNum"
157+func aA () = "%s__nextUserNum"
156158
157159
158-func aA (an) = makeString(["%s%s%s__mapping__user2num", an], a)
160+func aB (ao) = makeString(["%s%s%s__mapping__user2num", ao], a)
159161
160162
161-func aB (aC) = makeString(["%s%s%s__mapping__num2user", aC], a)
163+func aC (aD) = makeString(["%s%s%s__mapping__num2user", aD], a)
162164
163165
164-func aD (aq) = makeString(["%s%d%s__paramByUserNum", aq, "amount"], a)
166+func aE (ar) = makeString(["%s%d%s__paramByUserNum", ar, "amount"], a)
165167
166168
167-func aE (aq) = makeString(["%s%d%s__paramByUserNum", aq, "start"], a)
169+func aF (ar) = makeString(["%s%d%s__paramByUserNum", ar, "start"], a)
168170
169171
170-func aF (aq) = makeString(["%s%d%s__paramByUserNum", aq, "duration"], a)
172+func aG (ar) = makeString(["%s%d%s__paramByUserNum", ar, "duration"], a)
171173
172174
173-func aG (aq) = makeString(["%s%d%s__paramByUserNum", aq, "k"], a)
175+func aH (ar) = makeString(["%s%d%s__paramByUserNum", ar, "k"], a)
174176
175177
176-func aH (aq) = makeString(["%s%d%s__paramByUserNum", aq, "b"], a)
178+func aI (ar) = makeString(["%s%d%s__paramByUserNum", ar, "b"], a)
177179
178180
179-func aI (aq,aJ) = makeString(["%s%d%s%d__paramByPeriod", aq, "k", aJ], a)
181+func aJ (ar,aK) = makeString(["%s%d%s%d__paramByPeriod", ar, "k", aK], a)
180182
181183
182-func aK (aq,aJ) = makeString(["%s%d%s%d__paramByPeriod", aq, "b", aJ], a)
184+func aL (ar,aK) = makeString(["%s%d%s%d__paramByPeriod", ar, "b", aK], a)
183185
184186
185-func aL () = "%s%s__stats__activeTotalLocked"
187+func aM () = "%s%s__stats__activeTotalLocked"
186188
187189
188-func aM () = "%s%s__stats__locksDurationSumInBlocks"
190+func aN () = "%s%s__stats__locksDurationSumInBlocks"
189191
190192
191-func aN () = "%s%s__stats__locksCount"
193+func aO () = "%s%s__stats__locksCount"
192194
193195
194-func aO () = "%s%s__stats__activeUsersCount"
196+func aP () = "%s%s__stats__activeUsersCount"
195197
196198
197-func aP (aq) = makeString(["%s%d__userBoostEmissionLastInt", aq], a)
199+func aQ (ar) = makeString(["%s%d__userBoostEmissionLastInt", ar], a)
198200
199201
200-func aQ (aq) = makeString(["%s%d__maxBoostInt", aq], a)
202+func aR (ar) = makeString(["%s%d__maxBoostInt", ar], a)
201203
202204
203-func aR () = "%s%s__maxBoostInt__total"
205+func aS () = "%s%s__maxBoostInt__total"
204206
205207
206-func aS (aq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aq], a)
208+func aT (ar) = makeString(["%s%d__userBoostAvaliableToClaimTotal", ar], a)
207209
208210
209-func aT (aq) = makeString(["%s%d__userBoostClaimed", aq], a)
211+func aU (ar) = makeString(["%s%d__userBoostClaimed", ar], a)
210212
211213
212-let aU = F()
214+func aV (aW) = makeString(["%s%s__maxBoostIntMigrated", aW], a)
213215
214-let K = H(aU)
215216
216-let aV = L(K)
217+let aX = G()
217218
218-let aW = M(K)
219+let L = I(aX)
219220
220-func aX (aY,aZ,ar,ba,at,bb,bc,bd) = {
221- let be = makeString(["%s%s%s%s__history", aY, aZ, toBase58String(bd.transactionId)], a)
222- let bf = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(ar), toString(ba), toString(at), toString(bb), toString(bc)], a)
223- StringEntry(be, bf)
221+let aY = M(L)
222+
223+let aZ = N(L)
224+
225+func ba (bb,bc,as,bd,au,be,bf,bg) = {
226+ let bh = makeString(["%s%s%s%s__history", bb, bc, toBase58String(bg.transactionId)], a)
227+ let bi = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(as), toString(bd), toString(au), toString(be), toString(bf)], a)
228+ StringEntry(bh, bi)
224229 }
225230
226231
227-func bg (bh,bi,bj,bk) = {
228- let bl = aM()
229- let bm = aN()
230- let bn = aO()
231- let bo = aL()
232- let bp = g(this, bl)
233- let bq = g(this, bm)
234- let br = g(this, bn)
235- let bs = g(this, bo)
236-[IntegerEntry(bl, (bp + bi)), IntegerEntry(bm, (bq + bj)), IntegerEntry(bn, (br + bk)), IntegerEntry(bo, (bs + bh))]
232+func bj (bk,bl,bm,bn) = {
233+ let bo = aN()
234+ let bp = aO()
235+ let bq = aP()
236+ let br = aM()
237+ let bs = h(this, bo)
238+ let bt = h(this, bp)
239+ let bu = h(this, bq)
240+ let bv = h(this, br)
241+[IntegerEntry(bo, (bs + bl)), IntegerEntry(bp, (bt + bm)), IntegerEntry(bq, (bu + bn)), IntegerEntry(br, (bv + bk))]
237242 }
238243
239244
240-func bt (bu,bv,bw) = {
241- let bx = 1000
242- (((bu * bw) + bv) / bx)
245+func bw (bx,by,bz) = {
246+ let bA = 1000
247+ (((bx * bz) + by) / bA)
243248 }
244249
245250
246-func by (an,aq,ar,as,at,bb,bc,aJ) = {
247- let bz = aD(aq)
248- let bA = aE(aq)
249- let bB = aF(aq)
250- let bC = aG(aq)
251- let bD = aH(aq)
252- let bE = aI(aq, aJ)
253- let bF = aK(aq, aJ)
254- let ax = bt(bb, bc, height)
255-[IntegerEntry(bz, ar), IntegerEntry(bA, as), IntegerEntry(bB, at), IntegerEntry(bC, bb), IntegerEntry(bD, bc), IntegerEntry(bE, bb), IntegerEntry(bF, bc), StringEntry(am(an), ay(aq, ar, as, at, bb, bc, ax))]
251+func bB (ao,ar,as,at,au,be,bf,aK) = {
252+ let bC = aE(ar)
253+ let bD = aF(ar)
254+ let bE = aG(ar)
255+ let bF = aH(ar)
256+ let bG = aI(ar)
257+ let bH = aJ(ar, aK)
258+ let bI = aL(ar, aK)
259+ let ay = bw(be, bf, height)
260+[IntegerEntry(bC, as), IntegerEntry(bD, at), IntegerEntry(bE, au), IntegerEntry(bF, be), IntegerEntry(bG, bf), IntegerEntry(bH, be), IntegerEntry(bI, bf), StringEntry(an(ao), az(ar, as, at, au, be, bf, ay))]
256261 }
257262
258263
259-func bG (bd,bH) = if ((size(bd.payments) > 1))
264+func bJ (bg,bK) = if ((size(bg.payments) > 1))
260265 then throw("only one payment is allowed")
261- else if ((size(bd.payments) == 0))
266+ else if ((size(bg.payments) == 0))
262267 then 0
263268 else {
264- let bI = bd.payments[0]
265- if ((value(bI.assetId) != bH))
269+ let bL = bg.payments[0]
270+ if ((value(bL.assetId) != bK))
266271 then throw("invalid asset id in payment")
267- else bI.amount
272+ else bL.amount
268273 }
269274
270275
271-func bJ (an) = {
272- let bK = "empty"
273- let bL = aA(an)
274- let aq = valueOrElse(getString(bL), bK)
275- let bb = valueOrElse(getInteger(aG(aq)), 0)
276- let bc = valueOrElse(getInteger(aH(aq)), 0)
277- let bM = bt(bb, bc, height)
278- let ax = if ((0 > bM))
276+func bM (ao) = {
277+ let bN = "empty"
278+ let bO = aB(ao)
279+ let ar = valueOrElse(getString(bO), bN)
280+ let be = valueOrElse(getInteger(aH(ar)), 0)
281+ let bf = valueOrElse(getInteger(aI(ar)), 0)
282+ let bP = bw(be, bf, height)
283+ let ay = if ((0 > bP))
279284 then 0
280- else bM
281- ax
285+ else bP
286+ ay
282287 }
283288
284289
285-func bN (bO) = {
286- let bK = "EMPTY"
287- let bP = valueOrElse(getString(this, am(bO)), bK)
288- if ((bP == bK))
290+func bQ (bR) = {
291+ let bN = "EMPTY"
292+ let bS = valueOrElse(getString(this, an(bR)), bN)
293+ if ((bS == bN))
289294 then $Tuple3(0, nil, "userRecord::is::empty")
290295 else {
291- let bQ = split(bP, a)
292- let bR = bQ[ag]
293- let bS = j(aV, N())
294- let bT = j(aV, P())
295- let bU = j(aV, R())
296- let bw = if ((height > bU))
297- then bU
296+ let bT = split(bS, a)
297+ let bU = bT[ah]
298+ let bV = k(aY, O())
299+ let bW = k(aY, Q())
300+ let bX = k(aY, S())
301+ let bz = if ((height > bX))
302+ then bX
298303 else height
299- let bV = max([(bw - bT), 0])
300- let bW = aP(bR)
301- let bX = g(this, bW)
302- let bY = (((bS * bV) * 2) / 3)
303- let bZ = (bY - bX)
304- if ((0 > bZ))
304+ let bY = max([(bz - bW), 0])
305+ let bZ = aQ(bU)
306+ let ca = h(this, bZ)
307+ let cb = (((bV * bY) * 2) / 3)
308+ let cc = (cb - ca)
309+ if ((0 > cc))
305310 then throw("wrong calculations")
306311 else {
307- let ca = aQ(bR)
308- let cb = aR()
309- let cc = aS(bR)
310- let cd = g(this, ca)
311- let ce = g(this, cb)
312- let cf = g(this, cc)
313- let cg = (cf + fraction(bZ, cd, ce))
314- let ch = aT(bR)
315- let ci = g(this, ch)
316- let cj = (cg - ci)
317- let ck = [IntegerEntry(cc, cg), IntegerEntry(bW, bY)]
318- let cl = makeString([("userBoostEmissionLastIntegral=" + toString(bX)), ("userBoostEmissionIntegral=" + toString(bZ)), ("userMaxBoostInt=" + toString(cd)), ("totalMaxBoostInt=" + toString(ce)), ("userBoostAvaliableToClaimTotal=" + toString(cf)), ("userBoostAvaliableToClaimTotalNew=" + toString(cg)), ("userBoostClaimed=" + toString(ci)), ("userBoostAvailable=" + toString(cj))], "::")
319- $Tuple3(cj, ck, cl)
312+ let cd = aV(bU)
313+ let ce = valueOrElse(getInteger(this, cd), 0)
314+ let cf = if ((ce == 0))
315+ then d
316+ else 1
317+ let cg = aV("total")
318+ let ch = valueOrElse(getInteger(this, cg), 0)
319+ let ci = if ((ch == 0))
320+ then d
321+ else 1
322+ let cj = aR(bU)
323+ let ck = aS()
324+ let cl = aT(bU)
325+ let cm = (h(this, cj) / cf)
326+ let cn = (h(this, ck) / ci)
327+ let co = h(this, cl)
328+ let cp = (co + fraction(cc, cm, cn))
329+ let cq = aU(bU)
330+ let cr = h(this, cq)
331+ let cs = (cp - cr)
332+ let ct = [IntegerEntry(cl, cp), IntegerEntry(bZ, cb), IntegerEntry(cg, 1), IntegerEntry(cd, 1)]
333+ let cu = makeString([("userBoostEmissionLastIntegral=" + toString(ca)), ("userBoostEmissionIntegral=" + toString(cc)), ("userMaxBoostInt=" + toString(cm)), ("totalMaxBoostInt=" + toString(cn)), ("userBoostAvaliableToClaimTotal=" + toString(co)), ("userBoostAvaliableToClaimTotalNew=" + toString(cp)), ("userBoostClaimed=" + toString(cr)), ("userBoostAvailable=" + toString(cs))], "::")
334+ $Tuple3(cs, ct, cu)
320335 }
321336 }
322337 }
323338
324339
325-@Callable(bd)
326-func constructor (cm,cn,ab,co,cp,ae) = if ((this != bd.caller))
340+@Callable(bg)
341+func constructor (cv,cw,ac,cx,cy,af) = if ((this != bg.caller))
327342 then throw("not authorized")
328- else ([IntegerEntry(az(), 0), StringEntry(X(), af(cn, ab, co, cp, ae)), StringEntry(q(), cm)] ++ bg(0, 0, 0, 0))
343+ else ([IntegerEntry(aA(), 0), StringEntry(Y(), ag(cw, ac, cx, cy, af)), StringEntry(r(), cv)] ++ bj(0, 0, 0, 0))
329344
330345
331346
332-@Callable(bd)
333-func lock (at) = {
334- let cq = Y()
335- let cr = cq[S]
336- let aa = fromBase58String(cr)
337- let ab = parseIntValue(cq[T])
338- let ac = parseIntValue(cq[U])
339- let ad = parseIntValue(cq[V])
340- let ae = addressFromStringValue(cq[W])
341- if ((size(bd.payments) != 1))
347+@Callable(bg)
348+func lock (au) = {
349+ let cz = Z()
350+ let cA = cz[T]
351+ let ab = fromBase58String(cA)
352+ let ac = parseIntValue(cz[U])
353+ let ad = parseIntValue(cz[V])
354+ let ae = parseIntValue(cz[W])
355+ let af = addressFromStringValue(cz[X])
356+ if ((size(bg.payments) != 1))
342357 then throw("invalid payment - exact one payment must be attached")
343358 else {
344- let bI = bd.payments[0]
345- let cs = bI.amount
346- if ((aa != value(bI.assetId)))
347- then throw((("invalid asset is in payment - " + cr) + " is expected"))
359+ let bL = bg.payments[0]
360+ let cB = bL.amount
361+ if ((ab != value(bL.assetId)))
362+ then throw((("invalid asset is in payment - " + cA) + " is expected"))
348363 else {
349- let ct = az()
350- let bO = toString(bd.caller)
351- let cu = isDefined(getString(aA(bO)))
352- let bR = if (cu)
353- then value(getString(aA(bO)))
354- else toString(j(this, ct))
355- let aq = parseIntValue(bR)
356- let ba = height
357- let bA = aE(bR)
358- let bB = aF(bR)
359- let bz = aD(bR)
360- if ((ab > cs))
361- then throw(("amount is less then minLockAmount=" + toString(ab)))
362- else if ((ac > at))
363- then throw(("passed duration is less then minLockDuration=" + toString(ac)))
364- else if ((at > ad))
365- then throw(("passed duration is greater then maxLockDuration=" + toString(ad)))
366- else if (if (cu)
367- then ((j(this, bA) + j(this, bB)) >= ba)
364+ let cC = aA()
365+ let bR = toString(bg.caller)
366+ let cD = isDefined(getString(aB(bR)))
367+ let bU = if (cD)
368+ then value(getString(aB(bR)))
369+ else toString(k(this, cC))
370+ let ar = parseIntValue(bU)
371+ let bd = height
372+ let bD = aF(bU)
373+ let bE = aG(bU)
374+ let bC = aE(bU)
375+ if ((ac > cB))
376+ then throw(("amount is less then minLockAmount=" + toString(ac)))
377+ else if ((ad > au))
378+ then throw(("passed duration is less then minLockDuration=" + toString(ad)))
379+ else if ((au > ae))
380+ then throw(("passed duration is greater then maxLockDuration=" + toString(ae)))
381+ else if (if (cD)
382+ then ((k(this, bD) + k(this, bE)) >= bd)
368383 else false)
369384 then throw("there is an active lock - consider to use increaseLock")
370385 else {
371- let cv = fraction(at, c, ad)
372- let cw = fraction(cs, cv, c)
373- let cx = k(invoke(ae, "calcGwxParamsREADONLY", [cw, ba, at], nil))
374- let bb = o(cx[0])
375- let bc = o(cx[1])
376- let aJ = toString(o(cx[2]))
377- let bS = j(aV, N())
378- let bT = j(aV, P())
379- let bU = j(aV, R())
380- let bw = if ((height > bU))
381- then bU
386+ let cE = fraction(au, c, ae)
387+ let cF = fraction(cB, cE, c)
388+ let cG = l(invoke(af, "calcGwxParamsREADONLY", [cF, bd, au], nil))
389+ let be = p(cG[0])
390+ let bf = p(cG[1])
391+ let aK = toString(p(cG[2]))
392+ let bV = k(aY, O())
393+ let bW = k(aY, Q())
394+ let bX = k(aY, S())
395+ let bz = if ((height > bX))
396+ then bX
382397 else height
383- let bV = max([(bw - bT), 0])
384- let bW = aP(bR)
385- let bY = (((bS * bV) * 2) / 3)
386- let ca = aQ(bR)
387- let cb = aR()
388- let cd = ((cw * at) / 2)
389- let ce = g(this, cb)
390- let cy = if (cu)
398+ let bY = max([(bz - bW), 0])
399+ let bZ = aQ(bU)
400+ let cb = (((bV * bY) * 2) / 3)
401+ let cj = aR(bU)
402+ let ck = aS()
403+ let cg = aV("total")
404+ let ch = valueOrElse(getInteger(this, cg), 0)
405+ let ci = if ((ch == 0))
406+ then d
407+ else 1
408+ let cm = ((cF * au) / (2 * d))
409+ let cn = (h(this, ck) / ci)
410+ let cH = if (cD)
391411 then nil
392- else [IntegerEntry(ct, (aq + 1)), StringEntry(aA(bO), bR), StringEntry(aB(bR), bO)]
393- ((((cy ++ by(bO, bR, cs, ba, at, bb, bc, aJ)) ++ bg(cs, at, 1, if (cu)
412+ else [IntegerEntry(cC, (ar + 1)), StringEntry(aB(bR), bU), StringEntry(aC(bU), bR)]
413+ ((((cH ++ bB(bR, bU, cB, bd, au, be, bf, aK)) ++ bj(cB, au, 1, if (cD)
394414 then 0
395- else 1)) :+ aX("lock", bO, cs, ba, at, bb, bc, bd)) ++ [IntegerEntry(bW, bY), IntegerEntry(ca, cd), IntegerEntry(cb, (ce + cd))])
415+ else 1)) :+ ba("lock", bR, cB, bd, au, be, bf, bg)) ++ [IntegerEntry(bZ, cb), IntegerEntry(cj, cm), IntegerEntry(ck, (cn + cm)), IntegerEntry(cg, 1)])
396416 }
397417 }
398418 }
400420
401421
402422
403-@Callable(bd)
404-func increaseLock (cz) = {
405- let cq = Y()
406- let cr = cq[S]
407- let aa = fromBase58String(cr)
408- let ac = parseIntValue(cq[U])
409- let ad = parseIntValue(cq[V])
410- let ae = addressFromStringValue(cq[W])
411- let cs = bG(bd, aa)
412- let bO = toString(bd.caller)
413- let bQ = ao(bO)
414- let bR = bQ[ag]
415- let cA = parseIntValue(bQ[ah])
416- let ba = parseIntValue(bQ[ai])
417- let cB = parseIntValue(bQ[aj])
418- let cC = (ba + cB)
419- let cD = max([(cC - height), 0])
420- let cE = (cA + cs)
421- let cF = (cD + cz)
422- if ((0 > cz))
423+@Callable(bg)
424+func increaseLock (cI) = {
425+ let cz = Z()
426+ let cA = cz[T]
427+ let ab = fromBase58String(cA)
428+ let ad = parseIntValue(cz[V])
429+ let ae = parseIntValue(cz[W])
430+ let af = addressFromStringValue(cz[X])
431+ let cB = bJ(bg, ab)
432+ let bR = toString(bg.caller)
433+ let bT = ap(bR)
434+ let bU = bT[ah]
435+ let cJ = parseIntValue(bT[ai])
436+ let bd = parseIntValue(bT[aj])
437+ let cK = parseIntValue(bT[ak])
438+ let cL = (bd + cK)
439+ let cM = max([(cL - height), 0])
440+ let cN = (cJ + cB)
441+ let cO = (cM + cI)
442+ if ((0 > cI))
423443 then throw("duration is less then zero")
424- else if ((ac > cF))
425- then throw(("lockDurationNew is less then minLockDuration=" + toString(ac)))
426- else if ((cF > ad))
427- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ad)))
428- else if (if ((height >= cC))
429- then (cA > 0)
444+ else if ((ad > cO))
445+ then throw(("lockDurationNew is less then minLockDuration=" + toString(ad)))
446+ else if ((cO > ae))
447+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ae)))
448+ else if (if ((height >= cL))
449+ then (cJ > 0)
430450 else false)
431451 then throw("there is an expired lock - need to unlock before new lock")
432452 else {
433- let cv = fraction(cF, c, ad)
434- let cw = fraction(cE, cv, c)
435- let cx = k(invoke(ae, "calcGwxParamsREADONLY", [cw, height, cF], nil))
436- let bb = o(cx[0])
437- let bc = o(cx[1])
438- let aJ = toString(o(cx[2]))
439- let bS = j(aV, N())
440- let bT = j(aV, P())
441- let bU = j(aV, R())
442- let bw = if ((height > bU))
443- then bU
453+ let cE = fraction(cO, c, ae)
454+ let cF = fraction(cN, cE, c)
455+ let cG = l(invoke(af, "calcGwxParamsREADONLY", [cF, height, cO], nil))
456+ let be = p(cG[0])
457+ let bf = p(cG[1])
458+ let aK = toString(p(cG[2]))
459+ let bV = k(aY, O())
460+ let bW = k(aY, Q())
461+ let bX = k(aY, S())
462+ let bz = if ((height > bX))
463+ then bX
444464 else height
445- let bV = max([(bw - bT), 0])
446- let bW = aP(bR)
447- let bX = g(this, bW)
448- let bY = (((bS * bV) * 2) / 3)
449- let bZ = (bY - bX)
450- if ((0 > bZ))
465+ let bY = max([(bz - bW), 0])
466+ let bZ = aQ(bU)
467+ let ca = h(this, bZ)
468+ let cb = (((bV * bY) * 2) / 3)
469+ let cc = (cb - ca)
470+ if ((0 > cc))
451471 then throw("wrong calculations")
452472 else {
453- let ca = aQ(bR)
454- let cb = aR()
455- let cc = aS(bR)
456- let cd = g(this, ca)
457- let ce = g(this, cb)
458- let cf = g(this, cc)
459- let cg = (cf + fraction(bZ, cd, ce))
460- let cG = ((cw * cF) / 2)
461- let cH = bJ(bO)
462- let cI = ((cH * cD) / 2)
463- let cJ = (cG - cI)
464- if ((0 > cJ))
473+ let cd = aV(bU)
474+ let ce = valueOrElse(getInteger(this, cd), 0)
475+ let cf = if ((ce == 0))
476+ then d
477+ else 1
478+ let cg = aV("total")
479+ let ch = valueOrElse(getInteger(this, cg), 0)
480+ let ci = if ((ch == 0))
481+ then d
482+ else 1
483+ let cj = aR(bU)
484+ let ck = aS()
485+ let cl = aT(bU)
486+ let cm = (h(this, cj) / cf)
487+ let cn = (h(this, ck) / ci)
488+ let co = h(this, cl)
489+ let cp = (co + fraction(cc, cm, cn))
490+ let cP = ((cF * cO) / 2)
491+ let cQ = bM(bR)
492+ let cR = ((cQ * cM) / 2)
493+ let cS = (cP - cR)
494+ if ((0 > cS))
465495 then throw("wrong calculations")
466- else (((by(bO, bR, cE, ba, cF, bb, bc, aJ) ++ bg(cs, cz, 0, 0)) :+ aX("lock", bO, cs, ba, cF, bb, bc, bd)) ++ [IntegerEntry(ca, (cd + cJ)), IntegerEntry(cb, (ce + cJ)), IntegerEntry(cc, cg), IntegerEntry(bW, bY)])
496+ else (((bB(bR, bU, cN, bd, cO, be, bf, aK) ++ bj(cB, cI, 0, 0)) :+ ba("lock", bR, cB, bd, cO, be, bf, bg)) ++ [IntegerEntry(cj, (cm + cS)), IntegerEntry(ck, (cn + cS)), IntegerEntry(cl, cp), IntegerEntry(bZ, cb), IntegerEntry(cg, 1), IntegerEntry(cd, 1)])
467497 }
468498 }
469499 }
470500
471501
472502
473-@Callable(bd)
474-func claimWxBoost (bO) = if ((aW != bd.caller))
503+@Callable(bg)
504+func claimWxBoost (bR) = if ((aZ != bg.caller))
475505 then throw("permissions denied")
476506 else {
477- let cK = bN(bO)
478- let cj = cK._1
479- let ck = cK._2
480- let cl = cK._3
481- $Tuple2(ck, [cj])
507+ let cT = bQ(bR)
508+ let cs = cT._1
509+ let ct = cT._2
510+ let cu = cT._3
511+ $Tuple2(ct, [cs])
482512 }
483513
484514
485515
486-@Callable(bd)
487-func claimWxBoostREADONLY (bO) = {
488- let cL = bN(bO)
489- let cj = cL._1
490- let ck = cL._2
491- let cl = cL._3
492- $Tuple2(nil, [cj, cl])
516+@Callable(bg)
517+func claimWxBoostREADONLY (bR) = {
518+ let cU = bQ(bR)
519+ let cs = cU._1
520+ let ct = cU._2
521+ let cu = cU._3
522+ $Tuple2(nil, [cs, cu])
493523 }
494524
495525
496526
497-@Callable(bd)
498-func unlock (an) = {
499- let bQ = ao(an)
500- let bR = bQ[ag]
501- let cA = parseIntValue(bQ[ah])
502- let ba = parseIntValue(bQ[ai])
503- let cB = parseIntValue(bQ[aj])
504- let cC = (ba + cB)
505- let cq = Y()
506- let aa = fromBase58String(cq[S])
507- if ((cC >= height))
508- then throw((("wait " + toString(cC)) + " to unlock"))
509- else if ((0 >= cA))
527+@Callable(bg)
528+func unlock (ao) = {
529+ let bT = ap(ao)
530+ let bU = bT[ah]
531+ let cJ = parseIntValue(bT[ai])
532+ let bd = parseIntValue(bT[aj])
533+ let cK = parseIntValue(bT[ak])
534+ let cL = (bd + cK)
535+ let cz = Z()
536+ let ab = fromBase58String(cz[T])
537+ if ((cL >= height))
538+ then throw((("wait " + toString(cL)) + " to unlock"))
539+ else if ((0 >= cJ))
510540 then throw("nothing to unlock")
511541 else {
512- let aJ = "0"
513- (((by(an, bR, 0, ba, cB, 0, 0, aJ) ++ bg(-(cA), 0, 0, -1)) :+ aX("unlock", an, cA, ba, cB, 0, 0, bd)) :+ ScriptTransfer(addressFromStringValue(an), cA, aa))
542+ let aK = "0"
543+ (((bB(ao, bU, 0, bd, cK, 0, 0, aK) ++ bj(-(cJ), 0, 0, -1)) :+ ba("unlock", ao, cJ, bd, cK, 0, 0, bg)) :+ ScriptTransfer(addressFromStringValue(ao), cJ, ab))
514544 }
515545 }
516546
517547
518548
519-@Callable(bd)
520-func gwxUserInfoREADONLY (an) = {
521- let ax = bJ(an)
522- $Tuple2(nil, [ax])
549+@Callable(bg)
550+func gwxUserInfoREADONLY (ao) = {
551+ let ay = bM(ao)
552+ $Tuple2(nil, [ay])
523553 }
524554
525555
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
10-func d (e,f) = valueOrErrorMessage(getString(e, f), (("mandatory this." + f) + " is not defined"))
10+let d = 1000000
11+
12+func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
1113
1214
13-func g (e,f) = valueOrElse(getInteger(e, f), 0)
15+func h (f,g) = valueOrElse(getInteger(f, g), 0)
1416
1517
16-func h (e,f,i) = valueOrElse(getInteger(e, f), i)
18+func i (f,g,j) = valueOrElse(getInteger(f, g), j)
1719
1820
19-func j (e,f) = valueOrErrorMessage(getInteger(e, f), (("mandatory this." + f) + " is not defined"))
21+func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
2022
2123
22-func k (l) = {
23- let m = l
24- if ($isInstanceOf(m, "List[Any]"))
24+func l (m) = {
25+ let n = m
26+ if ($isInstanceOf(n, "List[Any]"))
2527 then {
26- let n = m
27- n
28+ let o = n
29+ o
2830 }
2931 else throw("fail to cast into List[Any]")
3032 }
3133
3234
33-func o (l) = {
34- let m = l
35- if ($isInstanceOf(m, "Int"))
35+func p (m) = {
36+ let n = m
37+ if ($isInstanceOf(n, "Int"))
3638 then {
37- let p = m
38- p
39+ let q = n
40+ q
3941 }
4042 else throw("fail to cast into Int")
4143 }
4244
4345
44-func q () = "%s%s__config__factoryAddress"
46+func r () = "%s%s__config__factoryAddress"
4547
4648
47-let r = 1
49+let s = 1
4850
49-let s = 2
51+let t = 2
5052
51-let t = 3
53+let u = 3
5254
53-let u = 4
55+let v = 4
5456
55-let v = 5
57+let w = 5
5658
57-let w = 6
59+let x = 6
5860
59-let x = 7
61+let y = 7
6062
61-func y () = "%s__factoryConfig"
63+func z () = "%s__factoryConfig"
6264
6365
64-func z (A) = makeString(["%s%s%s", A, "mappings__lpAsset2PoolContract"], a)
66+func A (B) = makeString(["%s%s%s", B, "mappings__lpAsset2PoolContract"], a)
6567
6668
67-func B () = "%s__lpTokensList"
69+func C () = "%s__lpTokensList"
6870
6971
70-func C (A) = makeString(["%s%s%s", A, "mappings__lpAsset2PoolContract"], a)
72+func D (B) = makeString(["%s%s%s", B, "mappings__lpAsset2PoolContract"], a)
7173
7274
73-func D (E) = makeString(["%s%s", "poolWeight", E], a)
75+func E (F) = makeString(["%s%s", "poolWeight", F], a)
7476
7577
76-func F () = addressFromStringValue(d(this, q()))
78+func G () = addressFromStringValue(e(this, r()))
7779
7880
79-func G () = split(valueOrElse(getString(F(), B()), ""), a)
81+func H () = split(valueOrElse(getString(G(), C()), ""), a)
8082
8183
82-func H (I) = split(d(I, y()), a)
84+func I (J) = split(e(J, z()), a)
8385
8486
85-func J (K) = addressFromStringValue(K[s])
87+func K (L) = addressFromStringValue(L[t])
8688
8789
88-func L (K) = addressFromStringValue(K[v])
90+func M (L) = addressFromStringValue(L[w])
8991
9092
91-func M (K) = addressFromStringValue(K[r])
93+func N (L) = addressFromStringValue(L[s])
9294
9395
94-func N () = "%s%s__ratePerBlock__current"
96+func O () = "%s%s__ratePerBlock__current"
9597
9698
97-func O () = "%s%s__ratePerBlockMax__current"
99+func P () = "%s%s__ratePerBlockMax__current"
98100
99101
100-func P () = "%s%s__emission__startBlock"
102+func Q () = "%s%s__emission__startBlock"
101103
102104
103-func Q () = "%s%s__emission__duration"
105+func R () = "%s%s__emission__duration"
104106
105107
106-func R () = "%s%s__emission__endBlock"
108+func S () = "%s%s__emission__endBlock"
107109
108110
109-let S = 1
111+let T = 1
110112
111-let T = 2
113+let U = 2
112114
113-let U = 3
115+let V = 3
114116
115-let V = 4
117+let W = 4
116118
117-let W = 5
119+let X = 5
118120
119-func X () = "%s__config"
121+func Y () = "%s__config"
120122
121123
122-func Y () = split(d(this, X()), a)
124+func Z () = split(e(this, Y()), a)
123125
124126
125-func Z (aa,ab,ac,ad,ae) = makeString(["%s%d%d%d", aa, ab, ac, ad, ae], a)
127+func aa (ab,ac,ad,ae,af) = makeString(["%s%d%d%d", ab, ac, ad, ae, af], a)
126128
127129
128-func af (aa,ab,ac,ad,ae) = Z(aa, toString(ab), toString(ac), toString(ad), ae)
130+func ag (ab,ac,ad,ae,af) = aa(ab, toString(ac), toString(ad), toString(ae), af)
129131
130132
131-let ag = 1
133+let ah = 1
132134
133-let ah = 2
135+let ai = 2
134136
135-let ai = 3
137+let aj = 3
136138
137-let aj = 4
139+let ak = 4
138140
139-let ak = 5
141+let al = 5
140142
141-let al = 6
143+let am = 6
142144
143-func am (an) = makeString(["%s%s__lock", an], a)
145+func an (ao) = makeString(["%s%s__lock", ao], a)
144146
145147
146-func ao (an) = split(d(this, am(an)), a)
148+func ap (ao) = split(e(this, an(ao)), a)
147149
148150
149-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)
151+func aq (ar,as,at,au,av,aw,ax,ay) = makeString(["%d%d%d%d%d%d%d%d", ar, as, at, au, av, aw, ax, ay], a)
150152
151153
152-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))
154+func az (ar,as,at,au,av,aw,ay) = aq(ar, toString(as), toString(at), toString(au), toString(av), toString(aw), toString(lastBlock.timestamp), toString(ay))
153155
154156
155-func az () = "%s__nextUserNum"
157+func aA () = "%s__nextUserNum"
156158
157159
158-func aA (an) = makeString(["%s%s%s__mapping__user2num", an], a)
160+func aB (ao) = makeString(["%s%s%s__mapping__user2num", ao], a)
159161
160162
161-func aB (aC) = makeString(["%s%s%s__mapping__num2user", aC], a)
163+func aC (aD) = makeString(["%s%s%s__mapping__num2user", aD], a)
162164
163165
164-func aD (aq) = makeString(["%s%d%s__paramByUserNum", aq, "amount"], a)
166+func aE (ar) = makeString(["%s%d%s__paramByUserNum", ar, "amount"], a)
165167
166168
167-func aE (aq) = makeString(["%s%d%s__paramByUserNum", aq, "start"], a)
169+func aF (ar) = makeString(["%s%d%s__paramByUserNum", ar, "start"], a)
168170
169171
170-func aF (aq) = makeString(["%s%d%s__paramByUserNum", aq, "duration"], a)
172+func aG (ar) = makeString(["%s%d%s__paramByUserNum", ar, "duration"], a)
171173
172174
173-func aG (aq) = makeString(["%s%d%s__paramByUserNum", aq, "k"], a)
175+func aH (ar) = makeString(["%s%d%s__paramByUserNum", ar, "k"], a)
174176
175177
176-func aH (aq) = makeString(["%s%d%s__paramByUserNum", aq, "b"], a)
178+func aI (ar) = makeString(["%s%d%s__paramByUserNum", ar, "b"], a)
177179
178180
179-func aI (aq,aJ) = makeString(["%s%d%s%d__paramByPeriod", aq, "k", aJ], a)
181+func aJ (ar,aK) = makeString(["%s%d%s%d__paramByPeriod", ar, "k", aK], a)
180182
181183
182-func aK (aq,aJ) = makeString(["%s%d%s%d__paramByPeriod", aq, "b", aJ], a)
184+func aL (ar,aK) = makeString(["%s%d%s%d__paramByPeriod", ar, "b", aK], a)
183185
184186
185-func aL () = "%s%s__stats__activeTotalLocked"
187+func aM () = "%s%s__stats__activeTotalLocked"
186188
187189
188-func aM () = "%s%s__stats__locksDurationSumInBlocks"
190+func aN () = "%s%s__stats__locksDurationSumInBlocks"
189191
190192
191-func aN () = "%s%s__stats__locksCount"
193+func aO () = "%s%s__stats__locksCount"
192194
193195
194-func aO () = "%s%s__stats__activeUsersCount"
196+func aP () = "%s%s__stats__activeUsersCount"
195197
196198
197-func aP (aq) = makeString(["%s%d__userBoostEmissionLastInt", aq], a)
199+func aQ (ar) = makeString(["%s%d__userBoostEmissionLastInt", ar], a)
198200
199201
200-func aQ (aq) = makeString(["%s%d__maxBoostInt", aq], a)
202+func aR (ar) = makeString(["%s%d__maxBoostInt", ar], a)
201203
202204
203-func aR () = "%s%s__maxBoostInt__total"
205+func aS () = "%s%s__maxBoostInt__total"
204206
205207
206-func aS (aq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aq], a)
208+func aT (ar) = makeString(["%s%d__userBoostAvaliableToClaimTotal", ar], a)
207209
208210
209-func aT (aq) = makeString(["%s%d__userBoostClaimed", aq], a)
211+func aU (ar) = makeString(["%s%d__userBoostClaimed", ar], a)
210212
211213
212-let aU = F()
214+func aV (aW) = makeString(["%s%s__maxBoostIntMigrated", aW], a)
213215
214-let K = H(aU)
215216
216-let aV = L(K)
217+let aX = G()
217218
218-let aW = M(K)
219+let L = I(aX)
219220
220-func aX (aY,aZ,ar,ba,at,bb,bc,bd) = {
221- let be = makeString(["%s%s%s%s__history", aY, aZ, toBase58String(bd.transactionId)], a)
222- let bf = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(ar), toString(ba), toString(at), toString(bb), toString(bc)], a)
223- StringEntry(be, bf)
221+let aY = M(L)
222+
223+let aZ = N(L)
224+
225+func ba (bb,bc,as,bd,au,be,bf,bg) = {
226+ let bh = makeString(["%s%s%s%s__history", bb, bc, toBase58String(bg.transactionId)], a)
227+ let bi = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(as), toString(bd), toString(au), toString(be), toString(bf)], a)
228+ StringEntry(bh, bi)
224229 }
225230
226231
227-func bg (bh,bi,bj,bk) = {
228- let bl = aM()
229- let bm = aN()
230- let bn = aO()
231- let bo = aL()
232- let bp = g(this, bl)
233- let bq = g(this, bm)
234- let br = g(this, bn)
235- let bs = g(this, bo)
236-[IntegerEntry(bl, (bp + bi)), IntegerEntry(bm, (bq + bj)), IntegerEntry(bn, (br + bk)), IntegerEntry(bo, (bs + bh))]
232+func bj (bk,bl,bm,bn) = {
233+ let bo = aN()
234+ let bp = aO()
235+ let bq = aP()
236+ let br = aM()
237+ let bs = h(this, bo)
238+ let bt = h(this, bp)
239+ let bu = h(this, bq)
240+ let bv = h(this, br)
241+[IntegerEntry(bo, (bs + bl)), IntegerEntry(bp, (bt + bm)), IntegerEntry(bq, (bu + bn)), IntegerEntry(br, (bv + bk))]
237242 }
238243
239244
240-func bt (bu,bv,bw) = {
241- let bx = 1000
242- (((bu * bw) + bv) / bx)
245+func bw (bx,by,bz) = {
246+ let bA = 1000
247+ (((bx * bz) + by) / bA)
243248 }
244249
245250
246-func by (an,aq,ar,as,at,bb,bc,aJ) = {
247- let bz = aD(aq)
248- let bA = aE(aq)
249- let bB = aF(aq)
250- let bC = aG(aq)
251- let bD = aH(aq)
252- let bE = aI(aq, aJ)
253- let bF = aK(aq, aJ)
254- let ax = bt(bb, bc, height)
255-[IntegerEntry(bz, ar), IntegerEntry(bA, as), IntegerEntry(bB, at), IntegerEntry(bC, bb), IntegerEntry(bD, bc), IntegerEntry(bE, bb), IntegerEntry(bF, bc), StringEntry(am(an), ay(aq, ar, as, at, bb, bc, ax))]
251+func bB (ao,ar,as,at,au,be,bf,aK) = {
252+ let bC = aE(ar)
253+ let bD = aF(ar)
254+ let bE = aG(ar)
255+ let bF = aH(ar)
256+ let bG = aI(ar)
257+ let bH = aJ(ar, aK)
258+ let bI = aL(ar, aK)
259+ let ay = bw(be, bf, height)
260+[IntegerEntry(bC, as), IntegerEntry(bD, at), IntegerEntry(bE, au), IntegerEntry(bF, be), IntegerEntry(bG, bf), IntegerEntry(bH, be), IntegerEntry(bI, bf), StringEntry(an(ao), az(ar, as, at, au, be, bf, ay))]
256261 }
257262
258263
259-func bG (bd,bH) = if ((size(bd.payments) > 1))
264+func bJ (bg,bK) = if ((size(bg.payments) > 1))
260265 then throw("only one payment is allowed")
261- else if ((size(bd.payments) == 0))
266+ else if ((size(bg.payments) == 0))
262267 then 0
263268 else {
264- let bI = bd.payments[0]
265- if ((value(bI.assetId) != bH))
269+ let bL = bg.payments[0]
270+ if ((value(bL.assetId) != bK))
266271 then throw("invalid asset id in payment")
267- else bI.amount
272+ else bL.amount
268273 }
269274
270275
271-func bJ (an) = {
272- let bK = "empty"
273- let bL = aA(an)
274- let aq = valueOrElse(getString(bL), bK)
275- let bb = valueOrElse(getInteger(aG(aq)), 0)
276- let bc = valueOrElse(getInteger(aH(aq)), 0)
277- let bM = bt(bb, bc, height)
278- let ax = if ((0 > bM))
276+func bM (ao) = {
277+ let bN = "empty"
278+ let bO = aB(ao)
279+ let ar = valueOrElse(getString(bO), bN)
280+ let be = valueOrElse(getInteger(aH(ar)), 0)
281+ let bf = valueOrElse(getInteger(aI(ar)), 0)
282+ let bP = bw(be, bf, height)
283+ let ay = if ((0 > bP))
279284 then 0
280- else bM
281- ax
285+ else bP
286+ ay
282287 }
283288
284289
285-func bN (bO) = {
286- let bK = "EMPTY"
287- let bP = valueOrElse(getString(this, am(bO)), bK)
288- if ((bP == bK))
290+func bQ (bR) = {
291+ let bN = "EMPTY"
292+ let bS = valueOrElse(getString(this, an(bR)), bN)
293+ if ((bS == bN))
289294 then $Tuple3(0, nil, "userRecord::is::empty")
290295 else {
291- let bQ = split(bP, a)
292- let bR = bQ[ag]
293- let bS = j(aV, N())
294- let bT = j(aV, P())
295- let bU = j(aV, R())
296- let bw = if ((height > bU))
297- then bU
296+ let bT = split(bS, a)
297+ let bU = bT[ah]
298+ let bV = k(aY, O())
299+ let bW = k(aY, Q())
300+ let bX = k(aY, S())
301+ let bz = if ((height > bX))
302+ then bX
298303 else height
299- let bV = max([(bw - bT), 0])
300- let bW = aP(bR)
301- let bX = g(this, bW)
302- let bY = (((bS * bV) * 2) / 3)
303- let bZ = (bY - bX)
304- if ((0 > bZ))
304+ let bY = max([(bz - bW), 0])
305+ let bZ = aQ(bU)
306+ let ca = h(this, bZ)
307+ let cb = (((bV * bY) * 2) / 3)
308+ let cc = (cb - ca)
309+ if ((0 > cc))
305310 then throw("wrong calculations")
306311 else {
307- let ca = aQ(bR)
308- let cb = aR()
309- let cc = aS(bR)
310- let cd = g(this, ca)
311- let ce = g(this, cb)
312- let cf = g(this, cc)
313- let cg = (cf + fraction(bZ, cd, ce))
314- let ch = aT(bR)
315- let ci = g(this, ch)
316- let cj = (cg - ci)
317- let ck = [IntegerEntry(cc, cg), IntegerEntry(bW, bY)]
318- let cl = makeString([("userBoostEmissionLastIntegral=" + toString(bX)), ("userBoostEmissionIntegral=" + toString(bZ)), ("userMaxBoostInt=" + toString(cd)), ("totalMaxBoostInt=" + toString(ce)), ("userBoostAvaliableToClaimTotal=" + toString(cf)), ("userBoostAvaliableToClaimTotalNew=" + toString(cg)), ("userBoostClaimed=" + toString(ci)), ("userBoostAvailable=" + toString(cj))], "::")
319- $Tuple3(cj, ck, cl)
312+ let cd = aV(bU)
313+ let ce = valueOrElse(getInteger(this, cd), 0)
314+ let cf = if ((ce == 0))
315+ then d
316+ else 1
317+ let cg = aV("total")
318+ let ch = valueOrElse(getInteger(this, cg), 0)
319+ let ci = if ((ch == 0))
320+ then d
321+ else 1
322+ let cj = aR(bU)
323+ let ck = aS()
324+ let cl = aT(bU)
325+ let cm = (h(this, cj) / cf)
326+ let cn = (h(this, ck) / ci)
327+ let co = h(this, cl)
328+ let cp = (co + fraction(cc, cm, cn))
329+ let cq = aU(bU)
330+ let cr = h(this, cq)
331+ let cs = (cp - cr)
332+ let ct = [IntegerEntry(cl, cp), IntegerEntry(bZ, cb), IntegerEntry(cg, 1), IntegerEntry(cd, 1)]
333+ let cu = makeString([("userBoostEmissionLastIntegral=" + toString(ca)), ("userBoostEmissionIntegral=" + toString(cc)), ("userMaxBoostInt=" + toString(cm)), ("totalMaxBoostInt=" + toString(cn)), ("userBoostAvaliableToClaimTotal=" + toString(co)), ("userBoostAvaliableToClaimTotalNew=" + toString(cp)), ("userBoostClaimed=" + toString(cr)), ("userBoostAvailable=" + toString(cs))], "::")
334+ $Tuple3(cs, ct, cu)
320335 }
321336 }
322337 }
323338
324339
325-@Callable(bd)
326-func constructor (cm,cn,ab,co,cp,ae) = if ((this != bd.caller))
340+@Callable(bg)
341+func constructor (cv,cw,ac,cx,cy,af) = if ((this != bg.caller))
327342 then throw("not authorized")
328- else ([IntegerEntry(az(), 0), StringEntry(X(), af(cn, ab, co, cp, ae)), StringEntry(q(), cm)] ++ bg(0, 0, 0, 0))
343+ else ([IntegerEntry(aA(), 0), StringEntry(Y(), ag(cw, ac, cx, cy, af)), StringEntry(r(), cv)] ++ bj(0, 0, 0, 0))
329344
330345
331346
332-@Callable(bd)
333-func lock (at) = {
334- let cq = Y()
335- let cr = cq[S]
336- let aa = fromBase58String(cr)
337- let ab = parseIntValue(cq[T])
338- let ac = parseIntValue(cq[U])
339- let ad = parseIntValue(cq[V])
340- let ae = addressFromStringValue(cq[W])
341- if ((size(bd.payments) != 1))
347+@Callable(bg)
348+func lock (au) = {
349+ let cz = Z()
350+ let cA = cz[T]
351+ let ab = fromBase58String(cA)
352+ let ac = parseIntValue(cz[U])
353+ let ad = parseIntValue(cz[V])
354+ let ae = parseIntValue(cz[W])
355+ let af = addressFromStringValue(cz[X])
356+ if ((size(bg.payments) != 1))
342357 then throw("invalid payment - exact one payment must be attached")
343358 else {
344- let bI = bd.payments[0]
345- let cs = bI.amount
346- if ((aa != value(bI.assetId)))
347- then throw((("invalid asset is in payment - " + cr) + " is expected"))
359+ let bL = bg.payments[0]
360+ let cB = bL.amount
361+ if ((ab != value(bL.assetId)))
362+ then throw((("invalid asset is in payment - " + cA) + " is expected"))
348363 else {
349- let ct = az()
350- let bO = toString(bd.caller)
351- let cu = isDefined(getString(aA(bO)))
352- let bR = if (cu)
353- then value(getString(aA(bO)))
354- else toString(j(this, ct))
355- let aq = parseIntValue(bR)
356- let ba = height
357- let bA = aE(bR)
358- let bB = aF(bR)
359- let bz = aD(bR)
360- if ((ab > cs))
361- then throw(("amount is less then minLockAmount=" + toString(ab)))
362- else if ((ac > at))
363- then throw(("passed duration is less then minLockDuration=" + toString(ac)))
364- else if ((at > ad))
365- then throw(("passed duration is greater then maxLockDuration=" + toString(ad)))
366- else if (if (cu)
367- then ((j(this, bA) + j(this, bB)) >= ba)
364+ let cC = aA()
365+ let bR = toString(bg.caller)
366+ let cD = isDefined(getString(aB(bR)))
367+ let bU = if (cD)
368+ then value(getString(aB(bR)))
369+ else toString(k(this, cC))
370+ let ar = parseIntValue(bU)
371+ let bd = height
372+ let bD = aF(bU)
373+ let bE = aG(bU)
374+ let bC = aE(bU)
375+ if ((ac > cB))
376+ then throw(("amount is less then minLockAmount=" + toString(ac)))
377+ else if ((ad > au))
378+ then throw(("passed duration is less then minLockDuration=" + toString(ad)))
379+ else if ((au > ae))
380+ then throw(("passed duration is greater then maxLockDuration=" + toString(ae)))
381+ else if (if (cD)
382+ then ((k(this, bD) + k(this, bE)) >= bd)
368383 else false)
369384 then throw("there is an active lock - consider to use increaseLock")
370385 else {
371- let cv = fraction(at, c, ad)
372- let cw = fraction(cs, cv, c)
373- let cx = k(invoke(ae, "calcGwxParamsREADONLY", [cw, ba, at], nil))
374- let bb = o(cx[0])
375- let bc = o(cx[1])
376- let aJ = toString(o(cx[2]))
377- let bS = j(aV, N())
378- let bT = j(aV, P())
379- let bU = j(aV, R())
380- let bw = if ((height > bU))
381- then bU
386+ let cE = fraction(au, c, ae)
387+ let cF = fraction(cB, cE, c)
388+ let cG = l(invoke(af, "calcGwxParamsREADONLY", [cF, bd, au], nil))
389+ let be = p(cG[0])
390+ let bf = p(cG[1])
391+ let aK = toString(p(cG[2]))
392+ let bV = k(aY, O())
393+ let bW = k(aY, Q())
394+ let bX = k(aY, S())
395+ let bz = if ((height > bX))
396+ then bX
382397 else height
383- let bV = max([(bw - bT), 0])
384- let bW = aP(bR)
385- let bY = (((bS * bV) * 2) / 3)
386- let ca = aQ(bR)
387- let cb = aR()
388- let cd = ((cw * at) / 2)
389- let ce = g(this, cb)
390- let cy = if (cu)
398+ let bY = max([(bz - bW), 0])
399+ let bZ = aQ(bU)
400+ let cb = (((bV * bY) * 2) / 3)
401+ let cj = aR(bU)
402+ let ck = aS()
403+ let cg = aV("total")
404+ let ch = valueOrElse(getInteger(this, cg), 0)
405+ let ci = if ((ch == 0))
406+ then d
407+ else 1
408+ let cm = ((cF * au) / (2 * d))
409+ let cn = (h(this, ck) / ci)
410+ let cH = if (cD)
391411 then nil
392- else [IntegerEntry(ct, (aq + 1)), StringEntry(aA(bO), bR), StringEntry(aB(bR), bO)]
393- ((((cy ++ by(bO, bR, cs, ba, at, bb, bc, aJ)) ++ bg(cs, at, 1, if (cu)
412+ else [IntegerEntry(cC, (ar + 1)), StringEntry(aB(bR), bU), StringEntry(aC(bU), bR)]
413+ ((((cH ++ bB(bR, bU, cB, bd, au, be, bf, aK)) ++ bj(cB, au, 1, if (cD)
394414 then 0
395- else 1)) :+ aX("lock", bO, cs, ba, at, bb, bc, bd)) ++ [IntegerEntry(bW, bY), IntegerEntry(ca, cd), IntegerEntry(cb, (ce + cd))])
415+ else 1)) :+ ba("lock", bR, cB, bd, au, be, bf, bg)) ++ [IntegerEntry(bZ, cb), IntegerEntry(cj, cm), IntegerEntry(ck, (cn + cm)), IntegerEntry(cg, 1)])
396416 }
397417 }
398418 }
399419 }
400420
401421
402422
403-@Callable(bd)
404-func increaseLock (cz) = {
405- let cq = Y()
406- let cr = cq[S]
407- let aa = fromBase58String(cr)
408- let ac = parseIntValue(cq[U])
409- let ad = parseIntValue(cq[V])
410- let ae = addressFromStringValue(cq[W])
411- let cs = bG(bd, aa)
412- let bO = toString(bd.caller)
413- let bQ = ao(bO)
414- let bR = bQ[ag]
415- let cA = parseIntValue(bQ[ah])
416- let ba = parseIntValue(bQ[ai])
417- let cB = parseIntValue(bQ[aj])
418- let cC = (ba + cB)
419- let cD = max([(cC - height), 0])
420- let cE = (cA + cs)
421- let cF = (cD + cz)
422- if ((0 > cz))
423+@Callable(bg)
424+func increaseLock (cI) = {
425+ let cz = Z()
426+ let cA = cz[T]
427+ let ab = fromBase58String(cA)
428+ let ad = parseIntValue(cz[V])
429+ let ae = parseIntValue(cz[W])
430+ let af = addressFromStringValue(cz[X])
431+ let cB = bJ(bg, ab)
432+ let bR = toString(bg.caller)
433+ let bT = ap(bR)
434+ let bU = bT[ah]
435+ let cJ = parseIntValue(bT[ai])
436+ let bd = parseIntValue(bT[aj])
437+ let cK = parseIntValue(bT[ak])
438+ let cL = (bd + cK)
439+ let cM = max([(cL - height), 0])
440+ let cN = (cJ + cB)
441+ let cO = (cM + cI)
442+ if ((0 > cI))
423443 then throw("duration is less then zero")
424- else if ((ac > cF))
425- then throw(("lockDurationNew is less then minLockDuration=" + toString(ac)))
426- else if ((cF > ad))
427- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ad)))
428- else if (if ((height >= cC))
429- then (cA > 0)
444+ else if ((ad > cO))
445+ then throw(("lockDurationNew is less then minLockDuration=" + toString(ad)))
446+ else if ((cO > ae))
447+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ae)))
448+ else if (if ((height >= cL))
449+ then (cJ > 0)
430450 else false)
431451 then throw("there is an expired lock - need to unlock before new lock")
432452 else {
433- let cv = fraction(cF, c, ad)
434- let cw = fraction(cE, cv, c)
435- let cx = k(invoke(ae, "calcGwxParamsREADONLY", [cw, height, cF], nil))
436- let bb = o(cx[0])
437- let bc = o(cx[1])
438- let aJ = toString(o(cx[2]))
439- let bS = j(aV, N())
440- let bT = j(aV, P())
441- let bU = j(aV, R())
442- let bw = if ((height > bU))
443- then bU
453+ let cE = fraction(cO, c, ae)
454+ let cF = fraction(cN, cE, c)
455+ let cG = l(invoke(af, "calcGwxParamsREADONLY", [cF, height, cO], nil))
456+ let be = p(cG[0])
457+ let bf = p(cG[1])
458+ let aK = toString(p(cG[2]))
459+ let bV = k(aY, O())
460+ let bW = k(aY, Q())
461+ let bX = k(aY, S())
462+ let bz = if ((height > bX))
463+ then bX
444464 else height
445- let bV = max([(bw - bT), 0])
446- let bW = aP(bR)
447- let bX = g(this, bW)
448- let bY = (((bS * bV) * 2) / 3)
449- let bZ = (bY - bX)
450- if ((0 > bZ))
465+ let bY = max([(bz - bW), 0])
466+ let bZ = aQ(bU)
467+ let ca = h(this, bZ)
468+ let cb = (((bV * bY) * 2) / 3)
469+ let cc = (cb - ca)
470+ if ((0 > cc))
451471 then throw("wrong calculations")
452472 else {
453- let ca = aQ(bR)
454- let cb = aR()
455- let cc = aS(bR)
456- let cd = g(this, ca)
457- let ce = g(this, cb)
458- let cf = g(this, cc)
459- let cg = (cf + fraction(bZ, cd, ce))
460- let cG = ((cw * cF) / 2)
461- let cH = bJ(bO)
462- let cI = ((cH * cD) / 2)
463- let cJ = (cG - cI)
464- if ((0 > cJ))
473+ let cd = aV(bU)
474+ let ce = valueOrElse(getInteger(this, cd), 0)
475+ let cf = if ((ce == 0))
476+ then d
477+ else 1
478+ let cg = aV("total")
479+ let ch = valueOrElse(getInteger(this, cg), 0)
480+ let ci = if ((ch == 0))
481+ then d
482+ else 1
483+ let cj = aR(bU)
484+ let ck = aS()
485+ let cl = aT(bU)
486+ let cm = (h(this, cj) / cf)
487+ let cn = (h(this, ck) / ci)
488+ let co = h(this, cl)
489+ let cp = (co + fraction(cc, cm, cn))
490+ let cP = ((cF * cO) / 2)
491+ let cQ = bM(bR)
492+ let cR = ((cQ * cM) / 2)
493+ let cS = (cP - cR)
494+ if ((0 > cS))
465495 then throw("wrong calculations")
466- else (((by(bO, bR, cE, ba, cF, bb, bc, aJ) ++ bg(cs, cz, 0, 0)) :+ aX("lock", bO, cs, ba, cF, bb, bc, bd)) ++ [IntegerEntry(ca, (cd + cJ)), IntegerEntry(cb, (ce + cJ)), IntegerEntry(cc, cg), IntegerEntry(bW, bY)])
496+ else (((bB(bR, bU, cN, bd, cO, be, bf, aK) ++ bj(cB, cI, 0, 0)) :+ ba("lock", bR, cB, bd, cO, be, bf, bg)) ++ [IntegerEntry(cj, (cm + cS)), IntegerEntry(ck, (cn + cS)), IntegerEntry(cl, cp), IntegerEntry(bZ, cb), IntegerEntry(cg, 1), IntegerEntry(cd, 1)])
467497 }
468498 }
469499 }
470500
471501
472502
473-@Callable(bd)
474-func claimWxBoost (bO) = if ((aW != bd.caller))
503+@Callable(bg)
504+func claimWxBoost (bR) = if ((aZ != bg.caller))
475505 then throw("permissions denied")
476506 else {
477- let cK = bN(bO)
478- let cj = cK._1
479- let ck = cK._2
480- let cl = cK._3
481- $Tuple2(ck, [cj])
507+ let cT = bQ(bR)
508+ let cs = cT._1
509+ let ct = cT._2
510+ let cu = cT._3
511+ $Tuple2(ct, [cs])
482512 }
483513
484514
485515
486-@Callable(bd)
487-func claimWxBoostREADONLY (bO) = {
488- let cL = bN(bO)
489- let cj = cL._1
490- let ck = cL._2
491- let cl = cL._3
492- $Tuple2(nil, [cj, cl])
516+@Callable(bg)
517+func claimWxBoostREADONLY (bR) = {
518+ let cU = bQ(bR)
519+ let cs = cU._1
520+ let ct = cU._2
521+ let cu = cU._3
522+ $Tuple2(nil, [cs, cu])
493523 }
494524
495525
496526
497-@Callable(bd)
498-func unlock (an) = {
499- let bQ = ao(an)
500- let bR = bQ[ag]
501- let cA = parseIntValue(bQ[ah])
502- let ba = parseIntValue(bQ[ai])
503- let cB = parseIntValue(bQ[aj])
504- let cC = (ba + cB)
505- let cq = Y()
506- let aa = fromBase58String(cq[S])
507- if ((cC >= height))
508- then throw((("wait " + toString(cC)) + " to unlock"))
509- else if ((0 >= cA))
527+@Callable(bg)
528+func unlock (ao) = {
529+ let bT = ap(ao)
530+ let bU = bT[ah]
531+ let cJ = parseIntValue(bT[ai])
532+ let bd = parseIntValue(bT[aj])
533+ let cK = parseIntValue(bT[ak])
534+ let cL = (bd + cK)
535+ let cz = Z()
536+ let ab = fromBase58String(cz[T])
537+ if ((cL >= height))
538+ then throw((("wait " + toString(cL)) + " to unlock"))
539+ else if ((0 >= cJ))
510540 then throw("nothing to unlock")
511541 else {
512- let aJ = "0"
513- (((by(an, bR, 0, ba, cB, 0, 0, aJ) ++ bg(-(cA), 0, 0, -1)) :+ aX("unlock", an, cA, ba, cB, 0, 0, bd)) :+ ScriptTransfer(addressFromStringValue(an), cA, aa))
542+ let aK = "0"
543+ (((bB(ao, bU, 0, bd, cK, 0, 0, aK) ++ bj(-(cJ), 0, 0, -1)) :+ ba("unlock", ao, cJ, bd, cK, 0, 0, bg)) :+ ScriptTransfer(addressFromStringValue(ao), cJ, ab))
514544 }
515545 }
516546
517547
518548
519-@Callable(bd)
520-func gwxUserInfoREADONLY (an) = {
521- let ax = bJ(an)
522- $Tuple2(nil, [ax])
549+@Callable(bg)
550+func gwxUserInfoREADONLY (ao) = {
551+ let ay = bM(ao)
552+ $Tuple2(nil, [ay])
523553 }
524554
525555

github/deemru/w8io/169f3d6 
265.36 ms