tx · BAk3WBRB9ftqvAH6Qc357RPUTfCsoc2U7DRSgtvLWXb9

3N9LkJahTMx41wGhSxLS42prCZtRCp4dhTs:  -0.04000000 Waves

2022.10.19 14:08 [2279194] smart account 3N9LkJahTMx41wGhSxLS42prCZtRCp4dhTs > SELF 0.00000000 Waves

{ "type": 13, "id": "BAk3WBRB9ftqvAH6Qc357RPUTfCsoc2U7DRSgtvLWXb9", "fee": 4000000, "feeAssetId": null, "timestamp": 1666177735841, "version": 1, "sender": "3N9LkJahTMx41wGhSxLS42prCZtRCp4dhTs", "senderPublicKey": "8hm3x3tdBbKUu4XpjDGwNdaPA2qEdrdchHue4k49BsYJ", "proofs": [ "26MqkQ918oNZKSUoAnwtPjJqwoXThYvnjnCFtkgy6e5mpdeJM43e5yq2RaRxs6HA4Qsy6H3cCctctjSYATywkSnt", "65GQj2DpjTEtC1YjfvVLqiMA9Zvo7qorPXH33MaJg7SGNAMnJguVzbGw2vH5abKrfAaQw3Sr9DjQupS8ifmNHavG", "2St4DNFS3XDeb5k7Hiv3yefFpVwdGzwXLvFNFdS28SQ422ntm9ZKzEMhXx7DdquUhXR1CdoiGM1t7oJvp6wAJ477" ], "script": "base64:BgI5CAISBQoDAQgIEgASABIDCgEBEgASABIAEgMKAQgSBAoCCAESABIECgIIARIAEgQKAgEIEgQKAgEIZQADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDYJALYCAQUFTVVMVDYABk1VTFRYOAkAtgIBBQVNVUxUOAAHTVVMVFgxOAkAtgIBAICAkLu61q3wDQAKV0FWRVNJRFNUUgIFV0FWRVMAB1dBVkVTSUQJANkEAQUKV0FWRVNJRFNUUgAJREFZTUlMTElTAIC4mSkAGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAAQAYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAIAFElkeENvbnRyb2xDZmdScGREYXBwAAMAFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAEABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAUAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAGAB1JZHhDb250cm9sQ2ZnTm9kZVJlZ2lzdHJ5RGFwcAAHABxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwAAgAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAACQAcSWR4Q29udHJvbENmZ1N1cmZTdGFraW5nRGFwcAAKACBJZHhDb250cm9sQ2ZnR25zYnRDb250cm9sbGVyRGFwcAALAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDGdldEludE9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUDa2V5CQCsAgIJAKwCAgIPTWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEMZ2V0U3RyT3JFbHNlAgNrZXkKZGVmYXVsdFZhbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkFCmRlZmF1bHRWYWwBEGtleU1pbkxvY2tBbW91bnQAAhElc19fbWluTG9ja0Ftb3VudAEQa2V5U3Rha2VkQXNzZXRJZAACESVzX19zdGFrZWRBc3NldElkARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAIVc3VwcG9ydGVkUmV3YXJkQXNzZXRzARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM040TlM3ZDRKbzlhNkYxNExpRlVLS1lWZFVra2YyZVA0WngACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAMbWF0aENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUVSWR4Q29udHJvbENmZ01hdGhEYXBwABBuZXV0cmlub0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAPYXVjdGlvbkNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwABBzdGFrZWRBc3NldElkU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEGtleVN0YWtlZEFzc2V0SWQAAA1zdGFrZWRBc3NldElkCQDZBAEFEHN0YWtlZEFzc2V0SWRTdHIADW1pbkxvY2tBbW91bnQJAQxnZXRJbnRPckZhaWwBCQEQa2V5TWluTG9ja0Ftb3VudAAAEnN1cHBvcnRlZEFzc2V0c1N0cgkBDGdldFN0ck9yRWxzZQIJARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAgAAE3N1cHBvcnRlZEFzc2V0c0xpc3QJALUJAgUSc3VwcG9ydGVkQXNzZXRzU3RyAgFfARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBmFtb3VudAUDbmlsBQNTRVABFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIFc3RhcnQFA25pbAUDU0VQARBrZXlIaXN0b3J5UmVjb3JkAwR0eXBlC3VzZXJBZGRyZXNzBHR4SWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAgdoaXN0b3J5CQDMCAIFBHR5cGUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkA2AQBBQR0eElkBQNuaWwFA1NFUAEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAhFhY3RpdmVUb3RhbExvY2tlZAUDbmlsBQNTRVABEmtleVN0YXRzTG9ja3NDb3VudAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICCmxvY2tzQ291bnQFA25pbAUDU0VQARJrZXlTdGF0c1VzZXJzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAhBhY3RpdmVVc2Vyc0NvdW50BQNuaWwFA1NFUAEXa2V5U3RhdHNEZXBvc2l0QW10QnlEYXkBCXRpbWVzdGFtcAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgVzdGF0cwkAzAgCAg9kZXBvc2l0QW10QnlEYXkJAMwIAgkApAMBBQl0aW1lc3RhbXAFA25pbAUDU0VQARhrZXlTdGF0c0RlcG9zaXRBbXRUb3RhbHMACQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICBXN0YXRzCQDMCAICEGRlcG9zaXRBbXRUb3RhbHMFA25pbAUDU0VQAQ1rZXlOZXh0UGVyaW9kAAIOJXNfX25leHRQZXJpb2QBEWtleURlcG9zaXROdW1MYXN0AAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNkZXAJAMwIAgIHbGFzdE51bQUDbmlsBQNTRVABG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdXNlclJ3ZEZyb21EZXBOdW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCCmRlcG9zaXROdW0DdGtuCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhVyd2RQZXJOc2J0U3VtQnlEZXBOdW0JAMwIAgkApAMBBQpkZXBvc2l0TnVtCQDMCAIFA3RrbgUDbmlsBQNTRVABCWtleVJld2FyZAILdXNlckFkZHJlc3MDdGtuCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA3J3ZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQN0a24FA25pbAUDU0VQAQprZXlDbGFpbWVkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDY2xtCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQNTRVABF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQN0a24JALkJAgkAzAgCAgQlcyVzCQDMCAICDm5vdERpc3RyaWJ1dGVkCQDMCAIFA3RrbgUDbmlsBQNTRVABFGtleUxlZ2FjeVVzZXJCYWxhbmNlAgh1c2VyQWRkcgN0a24JALkJAgkAzAgCAgtycGRfYmFsYW5jZQkAzAgCBQN0a24JAMwIAgUIdXNlckFkZHIFA25pbAUDU0VQARVrZXlMZWdhY3lUb3RhbEJhbGFuY2UBA3RrbgkAuQkCCQDMCAICC3JwZF9iYWxhbmNlCQDMCAIFA3RrbgUDbmlsBQNTRVABBXRvWDE4AgdvcmlnVmFsCG9yaWdNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHTVVMVFgxOAUIb3JpZ011bHQBDGdldEludE9yWmVybwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEPdG9BZGRyZXNzT3JGYWlsAQphZGRyZXNzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUKYWRkcmVzc1N0cgkArAICAiFjb3VsZG4ndCBwYXJzZSBwYXNzZWQgYWRkcmVzc1N0cj0FCmFkZHJlc3NTdHIBC3RvQXNzZXRWZWN0AQhhc3NldFN0cgMJAAACBQhhc3NldFN0cgUKV0FWRVNJRFNUUgUEdW5pdAkA2QQBBQhhc3NldFN0cgEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBEmFzU3dhcFBhcmFtc1NUUlVDVAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAiMoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50KQQGc3RydWN0BQckbWF0Y2gwBQZzdHJ1Y3QJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBE2Zvcm1hdEhpc3RvcnlSZWNvcmQDC3VzZXJBZGRyZXNzCW9sZEFtb3VudAluZXdBbW91bnQJALkJAgkAzAgCAgolcyVkJWQlZCVkCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFCW9sZEFtb3VudAkAzAgCCQCkAwEFCW5ld0Ftb3VudAUDbmlsBQNTRVABGGZvcm1hdENsYWltSGlzdG9yeVJlY29yZAILdXNlckFkZHJlc3MOY2xhaW1lZFJld2FyZHMJALkJAgkAzAgCAgglcyVkJWQlcwkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgUOY2xhaW1lZFJld2FyZHMFA25pbAUDU0VQARJIaXN0b3J5UmVjb3JkRW50cnkFBHR5cGULdXNlckFkZHJlc3MEdHhJZAlvbGRBbW91bnQJbmV3QW1vdW50CQELU3RyaW5nRW50cnkCCQEQa2V5SGlzdG9yeVJlY29yZAMFBHR5cGUFC3VzZXJBZGRyZXNzBQR0eElkCQETZm9ybWF0SGlzdG9yeVJlY29yZAMFC3VzZXJBZGRyZXNzBQlvbGRBbW91bnQFCW5ld0Ftb3VudAERQ2xhaW1IaXN0b3J5RW50cnkDC3VzZXJBZGRyZXNzBHR4SWQOY2xhaW1lZFJld2FyZHMJAQtTdHJpbmdFbnRyeQIJARBrZXlIaXN0b3J5UmVjb3JkAwIFY2xhaW0FC3VzZXJBZGRyZXNzBQR0eElkCQEYZm9ybWF0Q2xhaW1IaXN0b3J5UmVjb3JkAgULdXNlckFkZHJlc3MFDmNsYWltZWRSZXdhcmRzAQtTdGF0c1Jlc3VsdAMOdG90YWxMb2NrZWRJbmMMbG9ja0NvdW50SW5jDXVzZXJzQ291bnRJbmMECmxvY2tzQ291bnQJAQxnZXRJbnRPclplcm8BCQESa2V5U3RhdHNMb2Nrc0NvdW50AAQKdXNlcnNDb3VudAkBDGdldEludE9yWmVybwEJARJrZXlTdGF0c1VzZXJzQ291bnQABAt0b3RhbEFtb3VudAkBDGdldEludE9yWmVybwEJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAEDnRvdGFsQW1vdW50TmV3CQBkAgULdG90YWxBbW91bnQFDnRvdGFsTG9ja2VkSW5jCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlTdGF0c0xvY2tzQ291bnQACQBkAgUKbG9ja3NDb3VudAUMbG9ja0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5U3RhdHNVc2Vyc0NvdW50AAkAZAIFCnVzZXJzQ291bnQFDXVzZXJzQ291bnRJbmMJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAFDnRvdGFsQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5TGVnYWN5VG90YWxCYWxhbmNlAQUQc3Rha2VkQXNzZXRJZFN0cgUOdG90YWxBbW91bnROZXcFA25pbAULdG90YWxBbW91bnQFDnRvdGFsQW1vdW50TmV3AQ9Mb2NrUGFyYW1zRW50cnkDC3VzZXJBZGRyZXNzBmFtb3VudBJzdGFraW5nU3RhcnRIZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQt1c2VyQWRkcmVzcwUSc3Rha2luZ1N0YXJ0SGVpZ2h0BQNuaWwBD2dldFBhcmFtc09yRmFpbAAJAJQKAgkA2QQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEGtleVN0YWtlZEFzc2V0SWQACQEMZ2V0SW50T3JGYWlsAQkBEGtleU1pbkxvY2tBbW91bnQAAQxpc0FjdGl2ZVVzZXIBC3VzZXJBZGRyZXNzCQBmAgkBDGdldEludE9yRWxzZQIJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MAAAAAARNnZXRVc2VyUGFyYW1zT3JVbml0AQt1c2VyQWRkcmVzcwMJAQxpc0FjdGl2ZVVzZXIBBQt1c2VyQWRkcmVzcwkAlQoDBwkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MJAQxnZXRJbnRPckZhaWwBCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFC3VzZXJBZGRyZXNzBQR1bml0ARNnZXRVc2VyUGFyYW1zT3JGYWlsAQt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCsAgIJAKwCAgIFVXNlciAJAKUIAQULdXNlckFkZHJlc3MCDyBpcyBub3QgZGVmaW5lZAEKY2FsY1Jld2FyZAULdXNlckFkZHJlc3MHYXNzZXRJZA1zdGFrZWRBbW91bnRYDmRlcG9zaXROdW1Vc2VyDmRlcG9zaXROdW1MYXN0BBdyZXdhcmRQZXJOc2J0U3VtTGFzdEtFWQkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQdhc3NldElkBApzdW1MYXN0WDE4CQCnAwEJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFB2Fzc2V0SWQCATAECnN1bVVzZXJYMTgJAKcDAQkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtVXNlcgUHYXNzZXRJZAIBMAQRcmV3YXJkRHluYW1pY1BhcnQJAKADAQkAvAIDCQC4AgIFCnN1bUxhc3RYMTgFCnN1bVVzZXJYMTgFDXN0YWtlZEFtb3VudFgFB01VTFRYMTgEE3Jld2FyZENhY2hlZFBhcnRLRVkJAQlrZXlSZXdhcmQCBQt1c2VyQWRkcmVzcwUHYXNzZXRJZAQQcmV3YXJkQ2FjaGVkUGFydAkBDGdldEludE9yRWxzZQIFE3Jld2FyZENhY2hlZFBhcnRLRVkAAAkAlgoECQBkAgUQcmV3YXJkQ2FjaGVkUGFydAURcmV3YXJkRHluYW1pY1BhcnQFEHJld2FyZENhY2hlZFBhcnQFEXJld2FyZER5bmFtaWNQYXJ0BRNyZXdhcmRDYWNoZWRQYXJ0S0VZAQx0b1N0YXJ0T2ZEYXkBCXRpbWVzdGFtcAkAaAIJAGkCBQl0aW1lc3RhbXAFCURBWU1JTExJUwUJREFZTUlMTElTARNmaW5kRWxlbWVudFBvc2l0aW9uAwNzcmMHZWxlbWVudANzZXAEDGVsZW1lbnRTdGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCzCQIFA3NyYwUHZWxlbWVudAkArAICCQCsAgIJAKwCAgIWdGhlcmUgaXMgbm8gc3Vic3RyaW5nIAUHZWxlbWVudAIEIGluIAUDc3JjAwkAAAIFDGVsZW1lbnRTdGFydAAAAAAEBGxlZnQJAK8CAgUDc3JjBQxlbGVtZW50U3RhcnQJAGUCCQCQAwEJALUJAgUEbGVmdAUDc2VwAAEAE0RlcG9zaXRUb3RhbHNQUkVGSVgCBCVkJWQBE3VwZGF0ZURlcG9zaXRUb3RhbHMDB2N1cnJWYWwLaWR4VG9VcGRhdGUIZGVsdGFBbXQEB2N1cnJBcnIJALUJAgUHY3VyclZhbAUDU0VQCgEOdXBkRGVwVG90QnlJZHgBA2lkeAMJAQIhPQIFA2lkeAULaWR4VG9VcGRhdGUJAJEDAgUHY3VyckFycgUDaWR4CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyckFycgUDaWR4BQhkZWx0YUFtdAkAuQkCCQDMCAIFE0RlcG9zaXRUb3RhbHNQUkVGSVgJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQABCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAAgUDbmlsBQNTRVABFURlcG9zaXRzVG90YWxzRW50cmllcwINZGVwb3NpdEFtb3VudAphc3NldElkU3RyBApzdGFydE9mRGF5CQEMdG9TdGFydE9mRGF5AQgFCWxhc3RCbG9jawl0aW1lc3RhbXAECGJ5RGF5S0VZCQEXa2V5U3RhdHNEZXBvc2l0QW10QnlEYXkBBQpzdGFydE9mRGF5BAl0b3RhbHNLRVkJARhrZXlTdGF0c0RlcG9zaXRBbXRUb3RhbHMABAhwb3NpdGlvbgkBE2ZpbmRFbGVtZW50UG9zaXRpb24DBRJzdXBwb3J0ZWRBc3NldHNTdHIFCmFzc2V0SWRTdHICAV8EC2RlZmF1bHREQVRBCQCsAgIFE0RlcG9zaXRUb3RhbHNQUkVGSVgCBl9fMF9fMAQOY3VyclRvdGFsc0RBVEEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUJdG90YWxzS0VZBQtkZWZhdWx0REFUQQQNbmV3VG90YWxzREFUQQkBE3VwZGF0ZURlcG9zaXRUb3RhbHMDBQ5jdXJyVG90YWxzREFUQQkAZAIFCHBvc2l0aW9uAAEFDWRlcG9zaXRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgUJdG90YWxzS0VZBQ1uZXdUb3RhbHNEQVRBCQDMCAIJAQtTdHJpbmdFbnRyeQIFCGJ5RGF5S0VZBQ1uZXdUb3RhbHNEQVRBBQNuaWwBDVJld2FyZEVudHJpZXMDCWlzTmV3VXNlcgt1c2VyQWRkcmVzcwxzdGFrZWRBbW91bnQEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQt1c2VyQWRkcmVzcwQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKARtmb3JFYWNoQXNzZXRDYWNoZVVzZXJSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAxMDU3ODEwNzEzCQEKY2FsY1Jld2FyZAUFC3VzZXJBZGRyZXNzBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDEwNTc4MTA3MTMCXzEEBmNhY2hlZAgFDSR0MDEwNTc4MTA3MTMCXzIEB2R5bmFtaWMIBQ0kdDAxMDU3ODEwNzEzAl8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMTA1NzgxMDcxMwJfNAkAzQgCBQVhY2N1bQkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkFC3Jld2FyZFRvdGFsAwMJAAACBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQAAAgUOZGVwb3NpdE51bVVzZXIA////////////AQcFA25pbAMDCQAAAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAZgIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHCQACAQIvaW52YWxpZCBkZXBvc2l0TnVtTGFzdCBhbmQgZGVwb3NpdE51bVVzZXIgc3RhdGUDAwkAZgIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAGcCBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwMFCWlzTmV3VXNlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZBQ5kZXBvc2l0TnVtTGFzdAUDbmlsCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEbZm9yRWFjaEFzc2V0Q2FjaGVVc2VyUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAyCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJAAIBCQCsAgIJAKwCAgkArAICAiR1bmNvdmVyZWQgY29uZGl0aW9uOiBkZXBvc2l0TnVtTGFzdD0JAKQDAQUOZGVwb3NpdE51bUxhc3QCECBkZXBvc2l0TnVtVXNlcj0JAKQDAQUOZGVwb3NpdE51bVVzZXIBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCA3RrbglhbW91bnRJbmMEF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZCQEXa2V5Tm90RGlzdHJpYnV0ZWRSZXdhcmQBBQN0a24EFG5vdERpc3RyaWJ1dGVkUmV3YXJkCQEMZ2V0SW50T3JFbHNlAgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJAGQCBRRub3REaXN0cmlidXRlZFJld2FyZAUJYW1vdW50SW5jBQNuaWwBCm1lcmdlU3Rha2UCC3VzZXJBZGRyZXNzC2Ftb3VudFRvQWRkBA0kdDAxMzUzODEzNjU0CQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCVCgMGAAAFBmhlaWdodAQJaXNOZXdVc2VyCAUNJHQwMTM1MzgxMzY1NAJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMTM1MzgxMzY1NAJfMgQSc3Rha2luZ1N0YXJ0SGVpZ2h0CAUNJHQwMTM1MzgxMzY1NAJfMwQPc3Rha2VkQW1vdW50TkVXAwUJaXNOZXdVc2VyBQthbW91bnRUb0FkZAkAZAIFC2Ftb3VudFRvQWRkBQxzdGFrZWRBbW91bnQJAJYKBAUJaXNOZXdVc2VyBQxzdGFrZWRBbW91bnQFEnN0YWtpbmdTdGFydEhlaWdodAUPc3Rha2VkQW1vdW50TkVXAQtjb21tb25TdGFrZQILdXNlckFkZHJlc3MBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECFUludmFsaWQgcGF5bWVudHMgc2l6ZQQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQdwYXltZW50BmFtb3VudAQTaW52YWxpZEFzc2V0TWVzc2FnZQkArAICCQCsAgICD0ludmFsaWQgYXNzZXQuIAkA2AQBBQ1zdGFrZWRBc3NldElkAgwgaXMgZXhwZWN0ZWQEB2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAUTaW52YWxpZEFzc2V0TWVzc2FnZQMJAQIhPQIFB2Fzc2V0SWQFDXN0YWtlZEFzc2V0SWQJAAIBBRNpbnZhbGlkQXNzZXRNZXNzYWdlBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwQKbWVyZ2VkRGF0YQkBCm1lcmdlU3Rha2UCBQt1c2VyQWRkcmVzcwUGYW1vdW50BAlpc05ld1VzZXIIBQptZXJnZWREYXRhAl8xBAxzdGFrZWRBbW91bnQIBQptZXJnZWREYXRhAl8yBBJzdGFraW5nU3RhcnRIZWlnaHQIBQptZXJnZWREYXRhAl8zBA9zdGFrZWRBbW91bnRORVcIBQptZXJnZWREYXRhAl80AwkAZgIFDW1pbkxvY2tBbW91bnQFD3N0YWtlZEFtb3VudE5FVwkAAgEJAKwCAgITTWluIGxvY2sgYW1vdW50IGlzIAkApAMBBQ1taW5Mb2NrQW1vdW50BA0kdDAxNDYyNDE0NzI2CQELU3RhdHNSZXN1bHQDBQZhbW91bnQAAQMFCWlzTmV3VXNlcgABAAAEDHN0YXRzRW50cmllcwgFDSR0MDE0NjI0MTQ3MjYCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTQ2MjQxNDcyNgJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxNDYyNDE0NzI2Al8zCQDOCAIJAM4IAgkAzggCCQDMCAIJARJIaXN0b3J5UmVjb3JkRW50cnkFAgVzdGFrZQUOdXNlckFkZHJlc3NTdHIIBQFpDXRyYW5zYWN0aW9uSWQFDHN0YWtlZEFtb3VudAUPc3Rha2VkQW1vdW50TkVXBQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwUJaXNOZXdVc2VyBQ51c2VyQWRkcmVzc1N0cgUMc3Rha2VkQW1vdW50CQEPTG9ja1BhcmFtc0VudHJ5AwULdXNlckFkZHJlc3MFD3N0YWtlZEFtb3VudE5FVwUSc3Rha2luZ1N0YXJ0SGVpZ2h0BQxzdGF0c0VudHJpZXMBDWNvbW1vblVuc3Rha2UCBmFtb3VudAFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIjdW5zdGFrZSBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnQEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzBA0kdDAxNTE5ODE1MjgzCQETZ2V0VXNlclBhcmFtc09yRmFpbAEFC3VzZXJBZGRyZXNzBAlpc05ld1VzZXIIBQ0kdDAxNTE5ODE1MjgzAl8xBAxzdGFrZWRBbW91bnQIBQ0kdDAxNTE5ODE1MjgzAl8yBBJzdGFraW5nU3RhcnRIZWlnaHQIBQ0kdDAxNTE5ODE1MjgzAl8zBBBzd2FwUGFyYW1zU1RSVUNUCQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/QcEBRBuZXV0cmlub0NvbnRyYWN0Ahtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgAABQNuaWwFA25pbAQUc3dhcExpbWl0U3BlbnRJblVzZG4IBRBzd2FwUGFyYW1zU1RSVUNUAl8yBA5ibGNrczJMbXRSZXNldAgFEHN3YXBQYXJhbXNTVFJVQ1QCXzMDCQBmAgUUc3dhcExpbWl0U3BlbnRJblVzZG4AAAkAAgEJAKwCAgkArAICAi1Zb3UgaGF2ZSBhbHJlYWR5IG1hZGUgYSBzd2FwIG9wZXJhdGlvbi4gV2FpdCAJAKQDAQkAZAIFBmhlaWdodAUOYmxja3MyTG10UmVzZXQCEiBoZWlnaHQgdG8gdW5zdGFrZQMJAGcCAAAFDHN0YWtlZEFtb3VudAkAAgECEk5vdGhpbmcgdG8gdW5zdGFrZQMJAGYCBQZhbW91bnQFDHN0YWtlZEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICClJlcXVlc3RlZCAJAKQDAQUGYW1vdW50AhIsIGJ1dCBzdGFrZWQgb25seSAJAKQDAQUMc3Rha2VkQW1vdW50BA9zdGFrZWRBbW91bnRORVcJAGUCBQxzdGFrZWRBbW91bnQFBmFtb3VudAQNJHQwMTU5MjExNjA3OQkBC1N0YXRzUmVzdWx0AwkBAS0BBQZhbW91bnQDCQAAAgUGYW1vdW50BQxzdGFrZWRBbW91bnQA////////////AQAAAwkAAAIFBmFtb3VudAUMc3Rha2VkQW1vdW50AP///////////wEAAAQMc3RhdHNFbnRyaWVzCAUNJHQwMTU5MjExNjA3OQJfMQQLdG90YWxTdGFrZWQIBQ0kdDAxNTkyMTE2MDc5Al8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDE1OTIxMTYwNzkCXzMJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFBmFtb3VudAUNc3Rha2VkQXNzZXRJZAkAzAgCCQESSGlzdG9yeVJlY29yZEVudHJ5BQIHdW5zdGFrZQUOdXNlckFkZHJlc3NTdHIIBQFpDXRyYW5zYWN0aW9uSWQFDHN0YWtlZEFtb3VudAUPc3Rha2VkQW1vdW50TkVXBQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwcFDnVzZXJBZGRyZXNzU3RyBQxzdGFrZWRBbW91bnQJAQ9Mb2NrUGFyYW1zRW50cnkDBQt1c2VyQWRkcmVzcwUPc3Rha2VkQW1vdW50TkVXBRJzdGFraW5nU3RhcnRIZWlnaHQFDHN0YXRzRW50cmllcwELY29tbW9uQ2xhaW0CC3VzZXJBZGRyZXNzAWkEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzAwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECGXBheW1lbnRzIGFyZSBub3QgYWNjZXB0ZWQEDSR0MDE2NTcyMTY2NzcJAQt2YWx1ZU9yRWxzZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQULdXNlckFkZHJlc3MJAJUKAwYAAAAABAlpc05ld1VzZXIIBQ0kdDAxNjU3MjE2Njc3Al8xBAxzdGFrZWRBbW91bnQIBQ0kdDAxNjU3MjE2Njc3Al8yBAxzdGFraW5nU3RhcnQIBQ0kdDAxNjU3MjE2Njc3Al8zBA1zdGFrZWRBbW91bnRYCQC2AgEFDHN0YWtlZEFtb3VudAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQUOdXNlckFkZHJlc3NTdHIEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFYWNjdW0FYXNzZXQEDSR0MDE3MDQ4MTcxODYJAQpjYWxjUmV3YXJkBQUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAUNJHQwMTcwNDgxNzE4NgJfMQQGY2FjaGVkCAUNJHQwMTcwNDgxNzE4NgJfMgQHZHluYW1pYwgFDSR0MDE3MDQ4MTcxODYCXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQ0kdDAxNzA0ODE3MTg2Al80BApjbGFpbWVkS0VZCQEKa2V5Q2xhaW1lZAIFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAQNJHQwMTcyNDYxNzI4MwUFYWNjdW0EBGRhdGEIBQ0kdDAxNzI0NjE3MjgzAl8xBBFjbGFpbWVkQW10QnlBc3NldAgFDSR0MDE3MjQ2MTcyODMCXzIEB25ld1BhcnQJALkJAgkAzAgCBQVhc3NldAkAzAgCCQCkAwEFC3Jld2FyZFRvdGFsBQNuaWwCAToEFGNsYWltZWRBbXRCeUFzc2V0TmV3CQC5CQIJAMwIAgURY2xhaW1lZEFtdEJ5QXNzZXQJAMwIAgUHbmV3UGFydAUDbmlsAgFfAwkAZwIAAAULcmV3YXJkVG90YWwJAJQKAgUEZGF0YQUUY2xhaW1lZEFtdEJ5QXNzZXROZXcJAJQKAgkAzQgCCQDNCAIJAM0IAgUEZGF0YQkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFC3Jld2FyZFRvdGFsCQELdG9Bc3NldFZlY3QBBQVhc3NldAkBDEludGVnZXJFbnRyeQIFCmNsYWltZWRLRVkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCmNsYWltZWRLRVkAAAULcmV3YXJkVG90YWwJAQxJbnRlZ2VyRW50cnkCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZAAAFFGNsYWltZWRBbXRCeUFzc2V0TmV3BA0kdDAxNzc0MzE3ODU2CgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAyCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgQJdHJhbnNmZXJzCAUNJHQwMTc3NDMxNzg1NgJfMQQXY2xhaW1lZEFtdEJ5QXNzZXRSZXN1bHQIBQ0kdDAxNzc0MzE3ODU2Al8yAwkAZwIAAAkAkAMBBQl0cmFuc2ZlcnMJAJQKAgUDbmlsAAAJAJQKAgkAzQgCCQDNCAIFCXRyYW5zZmVycwkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJARFDbGFpbUhpc3RvcnlFbnRyeQMFDnVzZXJBZGRyZXNzU3RyCAUBaQ10cmFuc2FjdGlvbklkCQCwAgIFF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0AAEJAJADAQUJdHJhbnNmZXJzAAhVU0ROVFlQRQIEVVNETgAITlNCVFRZUEUCBE5TQlQAEk5ldXRyaW5vQXNzZXRJZEtleQIRbmV1dHJpbm9fYXNzZXRfaWQAE05ldXRyaW5vQ29udHJhY3RLZXkCEW5ldXRyaW5vX2NvbnRyYWN0AA5Oc2J0QXNzZXRJZEtleQINYm9uZF9hc3NldF9pZAAKQmFsYW5jZUtleQILcnBkX2JhbGFuY2UAD25ldXRyaW5vQXNzZXRJZAkA2QQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUQbmV1dHJpbm9Db250cmFjdAUSTmV1dHJpbm9Bc3NldElkS2V5AA5uc2J0QXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAIFEG5ldXRyaW5vQ29udHJhY3QFDk5zYnRBc3NldElkS2V5AAtuc2J0QXNzZXRJZAkA2QQBBQ5uc2J0QXNzZXRJZFN0cgERZ2V0VXNlckJhbGFuY2VLZXkCBW93bmVyB2Fzc2V0SWQJALkJAgkAzAgCBQpCYWxhbmNlS2V5CQDMCAIFB2Fzc2V0SWQJAMwIAgUFb3duZXIFA25pbAIBXwEVZ2V0Q29udHJhY3RCYWxhbmNlS2V5AQdhc3NldElkCQCsAgIJAKwCAgUKQmFsYW5jZUtleQIBXwUHYXNzZXRJZAESZ2V0Q29udHJhY3RCYWxhbmNlAQdhc3NldElkCQEMZ2V0SW50T3JFbHNlAgkBFWdldENvbnRyYWN0QmFsYW5jZUtleQEFB2Fzc2V0SWQAAAEOZ2V0VXNlckJhbGFuY2UCBW93bmVyB2Fzc2V0SWQJAQxnZXRJbnRPckVsc2UCCQERZ2V0VXNlckJhbGFuY2VLZXkCBQVvd25lcgUHYXNzZXRJZAAAARpnZXRWYWxpZFN0YWtpbmdBc3NldE9yRmFpbAILc3Rha2luZ1R5cGUHYXNzZXRJZAMDCQAAAgULc3Rha2luZ1R5cGUFCFVTRE5UWVBFCQECIT0CBQdhc3NldElkBQ9uZXV0cmlub0Fzc2V0SWQHCQACAQIRY2FuIHVzZSBVU0ROIG9ubHkDAwkAAAIFC3N0YWtpbmdUeXBlBQhOU0JUVFlQRQkBAiE9AgUHYXNzZXRJZAULbnNidEFzc2V0SWQHCQACAQIRY2FuIHVzZSBOU0JUIG9ubHkDAwkBAiE9AgULc3Rha2luZ1R5cGUFCFVTRE5UWVBFCQECIT0CBQtzdGFraW5nVHlwZQUITlNCVFRZUEUHCQACAQkArAICAhl1bnN1cHBvcnRlZCBzdGFraW5nIHR5cGUgBQtzdGFraW5nVHlwZQUHYXNzZXRJZAEOaW50ZXJuYWxVbmxvY2sEC3N0YWtpbmdUeXBlAWkMdW5sb2NrQW1vdW50DGFzc2V0SWRQYXJhbQQHYWNjb3VudAkApQgBCAUBaQZjYWxsZXIEB2Fzc2V0SWQJARpnZXRWYWxpZFN0YWtpbmdBc3NldE9yRmFpbAIFC3N0YWtpbmdUeXBlCQDZBAEFDGFzc2V0SWRQYXJhbQQNYXNzZXRJZFN0cmluZwkA2AQBBQdhc3NldElkBAdiYWxhbmNlCQBlAgkBDmdldFVzZXJCYWxhbmNlAgUHYWNjb3VudAUNYXNzZXRJZFN0cmluZwUMdW5sb2NrQW1vdW50AwkAZgIAAAUHYmFsYW5jZQkAAgECDmludmFsaWQgYW1vdW50CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARVnZXRDb250cmFjdEJhbGFuY2VLZXkBBQ1hc3NldElkU3RyaW5nCQBlAgkBEmdldENvbnRyYWN0QmFsYW5jZQEFDWFzc2V0SWRTdHJpbmcFDHVubG9ja0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWdldFVzZXJCYWxhbmNlS2V5AgUHYWNjb3VudAUNYXNzZXRJZFN0cmluZwUHYmFsYW5jZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhY2NvdW50BQx1bmxvY2tBbW91bnQFB2Fzc2V0SWQFA25pbAUEdW5pdA4BaQELY29uc3RydWN0b3IDDW1pbkxvY2tBbW91bnQVc3VwcG9ydGVkUmV3YXJkQXNzZXRzDnBTdGFrZWRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlNaW5Mb2NrQW1vdW50AAUNbWluTG9ja0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAUVc3VwcG9ydGVkUmV3YXJkQXNzZXRzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTdGFrZWRBc3NldElkAAUOcFN0YWtlZEFzc2V0SWQFA25pbAFpAQVzdGFrZQAJAQtjb21tb25TdGFrZQIIBQFpBmNhbGxlcgUBaQFpARNzdGFrZUJ5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vblN0YWtlAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBB3Vuc3Rha2UBBmFtb3VudAkBDWNvbW1vblVuc3Rha2UCBQZhbW91bnQFAWkBaQEHZGVwb3NpdAADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAh9leGFjdCAxIHBheW1lbnQgaXMgYWxsb3dlZCBvbmx5BANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CAUDcG10BmFtb3VudAQKcG10QXNzZXRJZAkBC3ZhbHVlT3JFbHNlAggFA3BtdAdhc3NldElkBQdXQVZFU0lEBA1wbXRBc3NldElkU3RyCQDYBAEFCnBtdEFzc2V0SWQECHBtdE11bHRYAwkAAAIFCnBtdEFzc2V0SWQFB1dBVkVTSUQFBk1VTFRYOAUGTVVMVFg2BAdhbW91bnRYCQC2AgEFBmFtb3VudAQLdG90YWxTdGFrZWQJAQxnZXRJbnRPckVsc2UCCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQAAAAEDHRvdGFsU3Rha2VkWAkAtgIBBQt0b3RhbFN0YWtlZAMJAGYCAAAFC3RvdGFsU3Rha2VkCQACAQIbVE9ETzogY2FzZSBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFC3RvdGFsU3Rha2VkAAAJASJJbmNyZW1lbnROb3REaXN0cmlidXRlZFJld2FyZEVudHJ5AgUNcG10QXNzZXRJZFN0cgUGYW1vdW50BBByZXdhcmRQZXJOc2J0WDE4CQC8AgMFB2Ftb3VudFgFB01VTFRYMTgFDHRvdGFsU3Rha2VkWAQRZGVwb3NpdE51bUxhc3RLRVkJARFrZXlEZXBvc2l0TnVtTGFzdAAEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgURZGVwb3NpdE51bUxhc3RLRVkA////////////AQQNZGVwb3NpdE51bU5ldwkAZAIFDmRlcG9zaXROdW1MYXN0AAEDCQEBIQEJAQhjb250YWlucwIFEnN1cHBvcnRlZEFzc2V0c1N0cgUNcG10QXNzZXRJZFN0cgkAAgEJAKwCAgkArAICBRJzdXBwb3J0ZWRBc3NldHNTdHICESBkb2Vzbid0IGNvbnRhaW4gBQ1wbXRBc3NldElkU3RyCgEXcmVmcmVzaFJld2FyZFBlck5zYnRTVU0CBWFjY3VtCW5leHRBc3NldAQWcmV3YXJkUGVyTnNidFN1bU5ld0tFWQkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDWRlcG9zaXROdW1OZXcFCW5leHRBc3NldAQKc3VtTGFzdFN0cgkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUJbmV4dEFzc2V0AgEwCQDNCAIFBWFjY3VtAwkAAAIFCW5leHRBc3NldAUNcG10QXNzZXRJZFN0cgkBC1N0cmluZ0VudHJ5AgUWcmV3YXJkUGVyTnNidFN1bU5ld0tFWQkApgMBCQC3AgIJAKcDAQUKc3VtTGFzdFN0cgUQcmV3YXJkUGVyTnNidFgxOAkBC1N0cmluZ0VudHJ5AgUWcmV3YXJkUGVyTnNidFN1bU5ld0tFWQUKc3VtTGFzdFN0cgkAzggCCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEXcmVmcmVzaFJld2FyZFBlck5zYnRTVU0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDIJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACCQEMSW50ZWdlckVudHJ5AgURZGVwb3NpdE51bUxhc3RLRVkFDWRlcG9zaXROdW1OZXcJARVEZXBvc2l0c1RvdGFsc0VudHJpZXMCBQZhbW91bnQFDXBtdEFzc2V0SWRTdHIBaQEMY2xhaW1SZXdhcmRzAAkBC2NvbW1vbkNsYWltAggFAWkGY2FsbGVyBQFpAWkBGmNsYWltUmV3YXJkc0J5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vbkNsYWltAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQEOdXNlckFkZHJlc3NTdHIKARZmb3JFYWNoQXNzZXRaZXJvUmV3YXJkAgVhY2N1bQVhc3NldAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgIBMAkAzAgCAgEwBQNuaWwCAToCAV8EEnVuY2xhaW1lZFJld2FyZFN0cgMJAAACBQ51c2VyQWRkcmVzc1N0cgIACgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDIJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACBAt1c2VyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUOdXNlckFkZHJlc3NTdHIEDSR0MDIyOTExMjMwMjIJAQt2YWx1ZU9yRWxzZQIJARNnZXRVc2VyUGFyYW1zT3JVbml0AQULdXNlckFkZHJlc3MJAJUKAwYAAAAABAlpc05ld1VzZXIIBQ0kdDAyMjkxMTIzMDIyAl8xBAxzdGFrZWRBbW91bnQIBQ0kdDAyMjkxMTIzMDIyAl8yBBJzdGFraW5nU3RhcnRIZWlnaHQIBQ0kdDAyMjkxMTIzMDIyAl8zBA1zdGFrZWRBbW91bnRYCQC2AgEFDHN0YWtlZEFtb3VudAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQUOdXNlckFkZHJlc3NTdHIEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFYWNjdW0FYXNzZXQEDSR0MDIzMzY4MjM1MDYJAQpjYWxjUmV3YXJkBQUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAUNJHQwMjMzNjgyMzUwNgJfMQQGY2FjaGVkCAUNJHQwMjMzNjgyMzUwNgJfMgQHZHluYW1pYwgFDSR0MDIzMzY4MjM1MDYCXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQ0kdDAyMzM2ODIzNTA2Al80BAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJAQprZXlDbGFpbWVkAgUOdXNlckFkZHJlc3NTdHIFBWFzc2V0AAAJAKwCAgkArAICBQVhY2N1bQkAuQkCCQDMCAIFBWFzc2V0CQDMCAIJAKQDAQULcmV3YXJkVG90YWwJAMwIAgkApAMBBQdjbGFpbWVkBQNuaWwCAToCAV8KAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIJAJQKAgUDbmlsCQCzAgIFEnVuY2xhaW1lZFJld2FyZFN0cgABAWkBFnVzZG5TdGFraW5nU1lTUkVBRE9OTFkCFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQh1c2RuRGlmZgQSdXNkblRvdGFsQW10U3Rha2VkCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAAAwkAAAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQIACQCUCgIFA25pbAkAzAgCAAAJAMwIAgUSdXNkblRvdGFsQW10U3Rha2VkCQDMCAIAAAUDbmlsBAt1c2VyQWRkcmVzcwkBD3RvQWRkcmVzc09yRmFpbAEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQKbWVyZ2VkRGF0YQkBCm1lcmdlU3Rha2UCBQt1c2VyQWRkcmVzcwUIdXNkbkRpZmYECWlzTmV3VXNlcggFCm1lcmdlZERhdGECXzEEEHVzZG5TdGFrZWRCeVVzZXIIBQptZXJnZWREYXRhAl8yBBJzdGFraW5nU3RhcnRIZWlnaHQIBQptZXJnZWREYXRhAl8zBA9zdGFrZWRBbW91bnRORVcIBQptZXJnZWREYXRhAl80CQCUCgIFA25pbAkAzAgCBRB1c2RuU3Rha2VkQnlVc2VyCQDMCAIFEnVzZG5Ub3RhbEFtdFN0YWtlZAUDbmlsAWkBEWNvbmZpZ1NZU1JFQURPTkxZAAQKbWluTG9ja0FtdAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEGtleU1pbkxvY2tBbW91bnQACQCUCgIFA25pbAkAzAgCBQptaW5Mb2NrQW10BQNuaWwBaQEObG9ja05ldXRyaW5vU1ACCHJlY2VpdmVyBXNoYXJlCQELY29tbW9uU3Rha2UCCAUBaQZjYWxsZXIFAWkBaQEMbG9ja05ldXRyaW5vAAkBC2NvbW1vblN0YWtlAggFAWkGY2FsbGVyBQFpAWkBDnVubG9ja05ldXRyaW5vAgx1bmxvY2tBbW91bnQNYXNzZXRJZFN0cmluZwkBDWNvbW1vblVuc3Rha2UCBQx1bmxvY2tBbW91bnQFAWkBaQEKdW5sb2NrTnNidAIMdW5sb2NrQW1vdW50DWFzc2V0SWRTdHJpbmcJAQ5pbnRlcm5hbFVubG9jawQFCE5TQlRUWVBFBQFpBQx1bmxvY2tBbW91bnQFDWFzc2V0SWRTdHJpbmcBAnR4AQZ2ZXJpZnkABBNwdWJLZXlBZG1pbnNMaXN0U3RyCQC5CQIJAMwIAgIsRXh0RUVLMTlubUtqOW1DcG5XeXZFRUpGWUFUTE1jVkVNdm9oaFVIa3lITm0JAMwIAgIsRXY1cHk1RmZCUVg5Y1pwWUtuZlFyVEI0OUJ5ZjhRbXBaV2VEVlJpbTR5VjcJAMwIAgIsRFV1dUxqWHU5OG5Cd1pjN2Zxd0NUanRBM25uUndnVGJrTVNyNVNVMk5tRFIJAMwIAgIsRFV1dUxqWHU5OG5Cd1pjN2Zxd0NUanRBM25uUndnVGJrTVNyNVNVMk5tRFIFA25pbAUDU0VQBBBwdWJLZXlBZG1pbnNMaXN0CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPY29udHJvbENvbnRyYWN0Agwlc19fbXVsdGlzaWcFE3B1YktleUFkbWluc0xpc3RTdHIFA1NFUAQFY291bnQJAGQCCQBkAgkAZAIDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAAAAAEAAAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEJANkEAQkAkQMCBRBwdWJLZXlBZG1pbnNMaXN0AAEAAQAAAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgkA2QQBCQCRAwIFEHB1YktleUFkbWluc0xpc3QAAgABAAADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwADCQDZBAEJAJEDAgUQcHViS2V5QWRtaW5zTGlzdAADAAIAAAkAZwIFBWNvdW50AAMc/Ar0", "chainId": 84, "height": 2279194, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4QUN8aBuen5JnuegaH99WiavzNRH35yfiS2DYo6tMhfk Next: 3jh6dkt1R7KUXxJZ2Dbg82p4DraHUKknmgByigfFUiUR Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func a (b) = valueOrElse(getInteger(this, b), 0)
4+let a = "__"
5+
6+let b = 1000000
7+
8+let c = 100000000
9+
10+let d = toBigInt(b)
11+
12+let e = toBigInt(c)
13+
14+let f = toBigInt(1000000000000000000)
15+
16+let g = "WAVES"
17+
18+let h = fromBase58String(g)
19+
20+let i = 86400000
21+
22+let j = 1
23+
24+let k = 2
25+
26+let l = 3
27+
28+let m = 4
29+
30+let n = 5
31+
32+let o = 6
33+
34+let p = 7
35+
36+let q = 8
37+
38+let r = 9
39+
40+let s = 10
41+
42+let t = 11
43+
44+func u (v,w) = valueOrErrorMessage(getString(v, w), (((("mandatory " + toString(v)) + ".") + w) + " is not defined"))
545
646
7-func c (b) = valueOrElse(getString(this, b), "")
47+func x (w) = valueOrErrorMessage(getInteger(this, w), (("Mandatory this." + w) + " is not defined"))
848
949
10-func d (b) = valueOrElse(getBoolean(this, b), false)
50+func y (w,z) = valueOrElse(getString(this, w), z)
1151
1252
13-func e (f,b) = valueOrElse(getInteger(addressFromStringValue(f), b), 0)
53+func A () = "%s__minLockAmount"
1454
1555
16-func g (f,b) = valueOrElse(getString(f, b), "")
56+func B () = "%s__stakedAssetId"
1757
1858
19-let h = "neutrino_asset_id"
20-
21-let i = "neutrino_contract"
22-
23-let j = "rpd_balance"
24-
25-let k = "control_contract"
26-
27-let l = "bond_asset_id"
28-
29-let m = "admins"
30-
31-let n = "USDN"
32-
33-let o = "NSBT"
34-
35-func p (q,r) = makeString([j, r, q], "_")
59+func C () = "%s%s__config__controlAddress"
3660
3761
38-func s (r) = ((j + "_") + r)
62+func D () = "%s__controlConfig"
3963
4064
41-func t (u) = (("proposal_expire" + "_") + u)
65+func E () = "supportedRewardAssets"
4266
4367
44-func v (u) = (("proposal_owner" + "_") + u)
68+func F (G) = split_4C(u(G, D()), a)
4569
4670
47-func w (u) = (("proposal_arguments" + "_") + u)
71+func H (I,J) = valueOrErrorMessage(addressFromString(I[J]), ("Control cfg doesn't contain address at index " + toString(J)))
4872
4973
50-func x (q,u) = (((("proposal_vote" + "_") + q) + "_") + u)
74+let K = addressFromStringValue(valueOrElse(getString(this, C()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
75+
76+let I = F(K)
77+
78+let L = H(I, m)
79+
80+let M = H(I, j)
81+
82+let N = H(I, k)
83+
84+let O = u(this, B())
85+
86+let P = fromBase58String(O)
87+
88+let Q = x(A())
89+
90+let R = y(E(), "")
91+
92+let S = split(R, "_")
93+
94+func T (U) = makeString(["%s%s%s", "paramByUser", toString(U), "amount"], a)
5195
5296
53-func y (z) = split(z, ",")
97+func V (U) = makeString(["%s%s%s", "paramByUser", toString(U), "start"], a)
5498
5599
56-let A = addressFromStringValue(c(i))
57-
58-let B = addressFromStringValue(g(A, k))
59-
60-let C = fromBase58String(g(A, h))
61-
62-let D = g(A, l)
63-
64-let E = fromBase58String(D)
65-
66-func F (r) = a(s(r))
100+func W (X,U,Y) = makeString(["%s%s%s%s", "history", X, U, toBase58String(Y)], a)
67101
68102
69-func G (q,r) = a(p(q, r))
103+func Z () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
70104
71105
72-func H (q,I,J) = makeString(["stakingconfig", q, toString(I), J], "_")
106+func aa () = makeString(["%s%s", "stats", "locksCount"], a)
73107
74108
75-func K (q) = ("stakingconfig_current_" + q)
109+func ab () = makeString(["%s%s", "stats", "activeUsersCount"], a)
76110
77111
78-func L (M,N) = (M + (if (N)
79- then "_start"
80- else "_end"))
112+func ac (ad) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ad)], a)
81113
82114
83-func O (q) = (q + "_initialShare")
115+func ae () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
84116
85117
86-func P (Q,r) = if (if ((Q == n))
87- then (r != C)
88- else false)
89- then throw("can use USDN only")
90- else if (if ((Q == o))
91- then (r != E)
92- else false)
93- then throw("can use NSBT only")
94- else if (if ((Q != n))
95- then (Q != o)
96- else false)
97- then throw(("unsupported staking type " + Q))
98- else r
118+func af () = "%s__nextPeriod"
99119
100120
101-func R (Q,S,J,I) = {
102- let T = value(S.payments[0])
103- let r = P(Q, value(T.assetId))
104- if (!(isDefined(addressFromString(J))))
105- then throw(("Invalid address format " + J))
106- else if ((I > 100))
107- then throw("staking rewards share cannot be higher than 100%")
108- else if ((1 > I))
109- then throw("staking rewards share cannot be lower than 1%")
110- else {
111- let U = toString(S.caller)
112- let V = toBase58String(r)
113- let W = c(K(U))
114- let X = if ((W != ""))
115- then {
116- let Y = split(W, "_")
117- let Z = parseIntValue(Y[2])
118- let aa = Y[3]
119- let ab = a(O(U))
120- let ac = if ((ab == 0))
121- then Z
122- else ab
123- let ad = if (if ((ac > I))
124- then true
125- else (aa != J))
126- then ac
127- else I
128-[toString(ac), toString(ad), aa]
129- }
130- else [toString(I), toString(I), J]
131- let ae = parseIntValue(X[0])
132- let af = parseIntValue(X[1])
133- let ag = X[2]
134- let ah = H(U, af, ag)
135- let ai = !((W == ah))
136- let aj = if (ai)
137- then height
138- else 0
139- let ak = if (ai)
140- then height
141- else a(L(ah, true))
142- $Tuple2([IntegerEntry(s(V), (F(V) + T.amount)), IntegerEntry(p(U, V), (G(U, V) + T.amount)), IntegerEntry(L(W, false), aj), IntegerEntry(L(ah, true), ak), IntegerEntry(O(U), ae), StringEntry(K(U), ah)], unit)
143- }
121+func ag () = makeString(["%s%s%s", "dep", "lastNum"], a)
122+
123+
124+func ah (U) = makeString(["%s%s%s", "userRwdFromDepNum", U], a)
125+
126+
127+func ai (aj,ak) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(aj), ak], a)
128+
129+
130+func al (U,ak) = makeString(["%s%s%s", "rwd", U, ak], a)
131+
132+
133+func am (U,ak) = makeString(["%s%s%s", "clm", U, ak], a)
134+
135+
136+func an (ak) = makeString(["%s%s", "notDistributed", ak], a)
137+
138+
139+func ao (ap,ak) = makeString(["rpd_balance", ak, ap], a)
140+
141+
142+func aq (ak) = makeString(["rpd_balance", ak], a)
143+
144+
145+func ar (as,at) = fraction(toBigInt(as), f, at)
146+
147+
148+func au (w) = valueOrElse(getInteger(this, w), 0)
149+
150+
151+func av (w,z) = valueOrElse(getInteger(this, w), z)
152+
153+
154+func aw (ax) = valueOrErrorMessage(addressFromString(ax), ("couldn't parse passed addressStr=" + ax))
155+
156+
157+func ay (az) = if ((az == g))
158+ then unit
159+ else fromBase58String(az)
160+
161+
162+func aA (aB) = {
163+ let aC = aB
164+ if ($isInstanceOf(aC, "Int"))
165+ then {
166+ let aD = aC
167+ aD
168+ }
169+ else throw("fail to cast into Int")
144170 }
145171
146172
147-func al (Q,S,am,an) = {
148- let U = toString(S.caller)
149- let r = P(Q, fromBase58String(an))
150- let V = toBase58String(r)
151- let ao = (G(U, V) - am)
152- if ((0 > ao))
153- then throw("invalid amount")
154- else $Tuple2([IntegerEntry(s(V), (F(V) - am)), IntegerEntry(p(U, V), ao), ScriptTransfer(addressFromStringValue(U), am, r)], unit)
173+func aE (aF) = {
174+ let aC = aF
175+ if ($isInstanceOf(aC, "(Int, Int, Int, Int, Int, Int, Int)"))
176+ then {
177+ let aG = aC
178+ aG
179+ }
180+ else throw("fail to cast into Int")
155181 }
156182
157183
158-@Callable(S)
159-func lockNeutrinoSP (J,I) = R(n, S, J, I)
184+func aH (U,aI,aJ) = makeString(["%s%d%d%d%d", U, toString(lastBlock.height), toString(lastBlock.timestamp), toString(aI), toString(aJ)], a)
185+
186+
187+func aK (U,aL) = makeString(["%s%d%d%s", U, toString(lastBlock.height), toString(lastBlock.timestamp), aL], a)
188+
189+
190+func aM (X,U,Y,aI,aJ) = StringEntry(W(X, U, Y), aH(U, aI, aJ))
191+
192+
193+func aN (U,Y,aL) = StringEntry(W("claim", U, Y), aK(U, aL))
194+
195+
196+func aO (aP,aQ,aR) = {
197+ let aS = au(aa())
198+ let aT = au(ab())
199+ let aU = au(Z())
200+ let aV = (aU + aP)
201+ $Tuple3([IntegerEntry(aa(), (aS + aQ)), IntegerEntry(ab(), (aT + aR)), IntegerEntry(Z(), aV), IntegerEntry(aq(O), aV)], aU, aV)
202+ }
203+
204+
205+func aW (U,aX,aY) = [IntegerEntry(T(U), aX), IntegerEntry(V(U), aY)]
206+
207+
208+func aZ () = $Tuple2(fromBase58String(u(this, B())), x(A()))
209+
210+
211+func ba (U) = (av(T(U), 0) > 0)
212+
213+
214+func bb (U) = if (ba(U))
215+ then $Tuple3(false, x(T(U)), x(V(U)))
216+ else unit
217+
218+
219+func bc (U) = valueOrErrorMessage(bb(U), (("User " + toString(U)) + " is not defined"))
220+
221+
222+func bd (U,be,bf,bg,bh) = {
223+ let bi = ai(bh, be)
224+ let bj = parseBigIntValue(y(ai(bh, be), "0"))
225+ let bk = parseBigIntValue(y(ai(bg, be), "0"))
226+ let bl = toInt(fraction((bj - bk), bf, f))
227+ let bm = al(U, be)
228+ let bn = av(bm, 0)
229+ $Tuple4((bn + bl), bn, bl, bm)
230+ }
231+
232+
233+func bo (ad) = ((ad / i) * i)
234+
235+
236+func bp (bq,br,bs) = {
237+ let bt = valueOrErrorMessage(indexOf(bq, br), ((("there is no substring " + br) + " in ") + bq))
238+ if ((bt == 0))
239+ then 0
240+ else {
241+ let bu = take(bq, bt)
242+ (size(split(bu, bs)) - 1)
243+ }
244+ }
245+
246+
247+let bv = "%d%d"
248+
249+func bw (bx,by,bz) = {
250+ let bA = split(bx, a)
251+ func bB (J) = if ((J != by))
252+ then bA[J]
253+ else toString((parseIntValue(bA[J]) + bz))
254+
255+ makeString([bv, bB(1), bB(2)], a)
256+ }
257+
258+
259+func bC (bD,bE) = {
260+ let bF = bo(lastBlock.timestamp)
261+ let bG = ac(bF)
262+ let bH = ae()
263+ let bI = bp(R, bE, "_")
264+ let bJ = (bv + "__0__0")
265+ let bK = valueOrElse(getString(this, bH), bJ)
266+ let bL = bw(bK, (bI + 1), bD)
267+[StringEntry(bH, bL), StringEntry(bG, bL)]
268+ }
269+
270+
271+func bM (bN,U,bO) = {
272+ let bf = toBigInt(bO)
273+ let bP = ah(U)
274+ let bg = av(bP, -1)
275+ let bh = av(ag(), -1)
276+ func bQ (bR,bS) = {
277+ let bT = bd(U, bS, bf, bg, bh)
278+ let bU = bT._1
279+ let bV = bT._2
280+ let bW = bT._3
281+ let bm = bT._4
282+ (bR :+ IntegerEntry(bm, bU))
283+ }
284+
285+ if (if ((bh == -1))
286+ then (bg == -1)
287+ else false)
288+ then nil
289+ else if (if ((bh == -1))
290+ then (bg > -1)
291+ else false)
292+ then throw("invalid depositNumLast and depositNumUser state")
293+ else if (if ((bh > -1))
294+ then (bg >= -1)
295+ else false)
296+ then if (bN)
297+ then [IntegerEntry(bP, bh)]
298+ else ({
299+ let bX = S
300+ let bY = size(bX)
301+ let bZ = nil
302+ func ca (cb,cc) = if ((cc >= bY))
303+ then cb
304+ else bQ(cb, bX[cc])
305+
306+ func cd (cb,cc) = if ((cc >= bY))
307+ then cb
308+ else throw("List size exceeds 2")
309+
310+ cd(ca(ca(bZ, 0), 1), 2)
311+ } :+ IntegerEntry(bP, bh))
312+ else throw(((("uncovered condition: depositNumLast=" + toString(bh)) + " depositNumUser=") + toString(bg)))
313+ }
314+
315+
316+func ce (ak,cf) = {
317+ let cg = an(ak)
318+ let ch = av(cg, 0)
319+[IntegerEntry(cg, (ch + cf))]
320+ }
321+
322+
323+func ci (U,cj) = {
324+ let ck = valueOrElse(bb(U), $Tuple3(true, 0, height))
325+ let bN = ck._1
326+ let bO = ck._2
327+ let aY = ck._3
328+ let cl = if (bN)
329+ then cj
330+ else (cj + bO)
331+ $Tuple4(bN, bO, aY, cl)
332+ }
333+
334+
335+func cm (U,cn) = if ((size(cn.payments) != 1))
336+ then throw("Invalid payments size")
337+ else {
338+ let co = cn.payments[0]
339+ let aX = co.amount
340+ let cp = (("Invalid asset. " + toBase58String(P)) + " is expected")
341+ let be = valueOrErrorMessage(co.assetId, cp)
342+ if ((be != P))
343+ then throw(cp)
344+ else {
345+ let cq = toString(U)
346+ let cr = ci(U, aX)
347+ let bN = cr._1
348+ let bO = cr._2
349+ let aY = cr._3
350+ let cl = cr._4
351+ if ((Q > cl))
352+ then throw(("Min lock amount is " + toString(Q)))
353+ else {
354+ let cs = aO(aX, 1, if (bN)
355+ then 1
356+ else 0)
357+ let ct = cs._1
358+ let cu = cs._2
359+ let cv = cs._3
360+ ((([aM("stake", cq, cn.transactionId, bO, cl)] ++ bM(bN, cq, bO)) ++ aW(U, cl, aY)) ++ ct)
361+ }
362+ }
363+ }
364+
365+
366+func cw (aX,cn) = if ((size(cn.payments) != 0))
367+ then throw("unstake doesn't require any payment")
368+ else {
369+ let U = cn.caller
370+ let cq = toString(U)
371+ let cx = bc(U)
372+ let bN = cx._1
373+ let bO = cx._2
374+ let aY = cx._3
375+ let cy = aE(reentrantInvoke(M, "swapParamsByUserSYSREADONLY", [cq, 0], nil))
376+ let cz = cy._2
377+ let cA = cy._3
378+ if ((cz > 0))
379+ then throw((("You have already made a swap operation. Wait " + toString((height + cA))) + " height to unstake"))
380+ else if ((0 >= bO))
381+ then throw("Nothing to unstake")
382+ else if ((aX > bO))
383+ then throw(((("Requested " + toString(aX)) + ", but staked only ") + toString(bO)))
384+ else {
385+ let cl = (bO - aX)
386+ let cB = aO(-(aX), if ((aX == bO))
387+ then -1
388+ else 0, if ((aX == bO))
389+ then -1
390+ else 0)
391+ let ct = cB._1
392+ let cu = cB._2
393+ let cv = cB._3
394+ ((([ScriptTransfer(U, aX, P), aM("unstake", cq, cn.transactionId, bO, cl)] ++ bM(false, cq, bO)) ++ aW(U, cl, aY)) ++ ct)
395+ }
396+ }
397+
398+
399+func cC (U,cn) = {
400+ let cq = toString(U)
401+ if ((size(cn.payments) > 0))
402+ then throw("payments are not accepted")
403+ else {
404+ let cD = valueOrElse(bb(U), $Tuple3(true, 0, 0))
405+ let bN = cD._1
406+ let bO = cD._2
407+ let cE = cD._3
408+ let bf = toBigInt(bO)
409+ let bP = ah(cq)
410+ let bg = av(bP, -1)
411+ let bh = av(ag(), -1)
412+ func cF (bR,bS) = {
413+ let cG = bd(cq, bS, bf, bg, bh)
414+ let bU = cG._1
415+ let bV = cG._2
416+ let bW = cG._3
417+ let bm = cG._4
418+ let cH = am(cq, bS)
419+ let cI = bR
420+ let cJ = cI._1
421+ let cK = cI._2
422+ let cL = makeString([bS, toString(bU)], ":")
423+ let cM = makeString([cK, cL], "_")
424+ if ((0 >= bU))
425+ then $Tuple2(cJ, cM)
426+ else $Tuple2((((cJ :+ ScriptTransfer(U, bU, ay(bS))) :+ IntegerEntry(cH, (valueOrElse(getInteger(cH), 0) + bU))) :+ IntegerEntry(bm, 0)), cM)
427+ }
428+
429+ let cN = {
430+ let bX = S
431+ let bY = size(bX)
432+ let bZ = $Tuple2(nil, "")
433+ func ca (cb,cc) = if ((cc >= bY))
434+ then cb
435+ else cF(cb, bX[cc])
436+
437+ func cd (cb,cc) = if ((cc >= bY))
438+ then cb
439+ else throw("List size exceeds 2")
440+
441+ cd(ca(ca(bZ, 0), 1), 2)
442+ }
443+ let cO = cN._1
444+ let cP = cN._2
445+ if ((0 >= size(cO)))
446+ then $Tuple2(nil, 0)
447+ else $Tuple2(((cO :+ IntegerEntry(bP, bh)) :+ aN(cq, cn.transactionId, drop(cP, 1))), size(cO))
448+ }
449+ }
450+
451+
452+let cQ = "USDN"
453+
454+let cR = "NSBT"
455+
456+let cS = "neutrino_asset_id"
457+
458+let cT = "neutrino_contract"
459+
460+let cU = "bond_asset_id"
461+
462+let cV = "rpd_balance"
463+
464+let cW = fromBase58String(u(M, cS))
465+
466+let cX = u(M, cU)
467+
468+let cY = fromBase58String(cX)
469+
470+func cZ (da,be) = makeString([cV, be, da], "_")
471+
472+
473+func db (be) = ((cV + "_") + be)
474+
475+
476+func dc (be) = av(db(be), 0)
477+
478+
479+func dd (da,be) = av(cZ(da, be), 0)
480+
481+
482+func de (df,be) = if (if ((df == cQ))
483+ then (be != cW)
484+ else false)
485+ then throw("can use USDN only")
486+ else if (if ((df == cR))
487+ then (be != cY)
488+ else false)
489+ then throw("can use NSBT only")
490+ else if (if ((df != cQ))
491+ then (df != cR)
492+ else false)
493+ then throw(("unsupported staking type " + df))
494+ else be
495+
496+
497+func dg (df,cn,dh,di) = {
498+ let dj = toString(cn.caller)
499+ let be = de(df, fromBase58String(di))
500+ let dk = toBase58String(be)
501+ let dl = (dd(dj, dk) - dh)
502+ if ((0 > dl))
503+ then throw("invalid amount")
504+ else $Tuple2([IntegerEntry(db(dk), (dc(dk) - dh)), IntegerEntry(cZ(dj, dk), dl), ScriptTransfer(addressFromStringValue(dj), dh, be)], unit)
505+ }
506+
507+
508+@Callable(cn)
509+func constructor (Q,dm,dn) = if ((cn.caller != this))
510+ then throw("Permission denied")
511+ else [IntegerEntry(A(), Q), StringEntry(E(), dm), StringEntry(B(), dn)]
160512
161513
162514
163-@Callable(S)
164-func lockNeutrino () = R(n, S, toString(S.caller), 100)
515+@Callable(cn)
516+func stake () = cm(cn.caller, cn)
165517
166518
167519
168-@Callable(S)
169-func lockNsbtSP (J,I) = R(o, S, J, I)
520+@Callable(cn)
521+func stakeByOriginCaller () = cm(cn.originCaller, cn)
170522
171523
172524
173-@Callable(S)
174-func lockNsbt () = R(o, S, toString(S.caller), 100)
525+@Callable(cn)
526+func unstake (aX) = cw(aX, cn)
175527
176528
177529
178-@Callable(S)
179-func unlockNeutrino (am,V) = al(n, S, am, V)
530+@Callable(cn)
531+func deposit () = if ((size(cn.payments) != 1))
532+ then throw("exact 1 payment is allowed only")
533+ else {
534+ let do = cn.payments[0]
535+ let aX = do.amount
536+ let dp = valueOrElse(do.assetId, h)
537+ let dq = toBase58String(dp)
538+ let dr = if ((dp == h))
539+ then e
540+ else d
541+ let ds = toBigInt(aX)
542+ let cu = av(Z(), 0)
543+ let dt = toBigInt(cu)
544+ if ((0 > cu))
545+ then throw("TODO: case is not supported")
546+ else if ((cu == 0))
547+ then ce(dq, aX)
548+ else {
549+ let du = fraction(ds, f, dt)
550+ let dv = ag()
551+ let bh = av(dv, -1)
552+ let dw = (bh + 1)
553+ if (!(contains(R, dq)))
554+ then throw(((R + " doesn't contain ") + dq))
555+ else {
556+ func dx (bR,dy) = {
557+ let dz = ai(dw, dy)
558+ let dA = y(ai(bh, dy), "0")
559+ (bR :+ (if ((dy == dq))
560+ then StringEntry(dz, toString((parseBigIntValue(dA) + du)))
561+ else StringEntry(dz, dA)))
562+ }
563+
564+ (({
565+ let bX = S
566+ let bY = size(bX)
567+ let bZ = nil
568+ func ca (cb,cc) = if ((cc >= bY))
569+ then cb
570+ else dx(cb, bX[cc])
571+
572+ func cd (cb,cc) = if ((cc >= bY))
573+ then cb
574+ else throw("List size exceeds 2")
575+
576+ cd(ca(ca(bZ, 0), 1), 2)
577+ } :+ IntegerEntry(dv, dw)) ++ bC(aX, dq))
578+ }
579+ }
580+ }
180581
181582
182583
183-@Callable(S)
184-func unlockNsbt (am,V) = al(o, S, am, V)
584+@Callable(cn)
585+func claimRewards () = cC(cn.caller, cn)
185586
186587
187-@Verifier(ap)
188-func aq () = {
189- let ar = ["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
190- let as = ((((if (sigVerify(ap.bodyBytes, ap.proofs[0], fromBase58String(ar[0])))
588+
589+@Callable(cn)
590+func claimRewardsByOriginCaller () = cC(cn.originCaller, cn)
591+
592+
593+
594+@Callable(cn)
595+func unclaimedRewardsREADONLY (cq) = {
596+ func dB (bR,bS) = ((bR + makeString([bS, "0", "0"], ":")) + "_")
597+
598+ let dC = if ((cq == ""))
599+ then {
600+ let bX = S
601+ let bY = size(bX)
602+ let bZ = ""
603+ func ca (cb,cc) = if ((cc >= bY))
604+ then cb
605+ else dB(cb, bX[cc])
606+
607+ func cd (cb,cc) = if ((cc >= bY))
608+ then cb
609+ else throw("List size exceeds 2")
610+
611+ cd(ca(ca(bZ, 0), 1), 2)
612+ }
613+ else {
614+ let U = addressFromStringValue(cq)
615+ let dD = valueOrElse(bb(U), $Tuple3(true, 0, 0))
616+ let bN = dD._1
617+ let bO = dD._2
618+ let aY = dD._3
619+ let bf = toBigInt(bO)
620+ let bP = ah(cq)
621+ let bg = av(bP, -1)
622+ let bh = av(ag(), -1)
623+ func cF (bR,bS) = {
624+ let dE = bd(cq, bS, bf, bg, bh)
625+ let bU = dE._1
626+ let bV = dE._2
627+ let bW = dE._3
628+ let bm = dE._4
629+ let dF = valueOrElse(getInteger(am(cq, bS)), 0)
630+ ((bR + makeString([bS, toString(bU), toString(dF)], ":")) + "_")
631+ }
632+
633+ let bX = S
634+ let bY = size(bX)
635+ let bZ = ""
636+ func ca (cb,cc) = if ((cc >= bY))
637+ then cb
638+ else cF(cb, bX[cc])
639+
640+ func cd (cb,cc) = if ((cc >= bY))
641+ then cb
642+ else throw("List size exceeds 2")
643+
644+ cd(ca(ca(bZ, 0), 1), 2)
645+ }
646+ $Tuple2(nil, dropRight(dC, 1))
647+ }
648+
649+
650+
651+@Callable(cn)
652+func usdnStakingSYSREADONLY (dG,dH) = {
653+ let dI = av(Z(), 0)
654+ if ((dG == ""))
655+ then $Tuple2(nil, [0, dI, 0])
656+ else {
657+ let U = aw(dG)
658+ let cr = ci(U, dH)
659+ let bN = cr._1
660+ let dJ = cr._2
661+ let aY = cr._3
662+ let cl = cr._4
663+ $Tuple2(nil, [dJ, dI])
664+ }
665+ }
666+
667+
668+
669+@Callable(cn)
670+func configSYSREADONLY () = {
671+ let dK = getIntegerValue(A())
672+ $Tuple2(nil, [dK])
673+ }
674+
675+
676+
677+@Callable(cn)
678+func lockNeutrinoSP (dL,dM) = cm(cn.caller, cn)
679+
680+
681+
682+@Callable(cn)
683+func lockNeutrino () = cm(cn.caller, cn)
684+
685+
686+
687+@Callable(cn)
688+func unlockNeutrino (dh,dk) = cw(dh, cn)
689+
690+
691+
692+@Callable(cn)
693+func unlockNsbt (dh,dk) = dg(cR, cn, dh, dk)
694+
695+
696+@Verifier(dN)
697+func dO () = {
698+ let dP = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], a)
699+ let dQ = split(valueOrElse(getString(K, "%s__multisig"), dP), a)
700+ let dR = ((((if (sigVerify(dN.bodyBytes, dN.proofs[0], fromBase58String(dQ[0])))
191701 then 1
192- else 0) + (if (sigVerify(ap.bodyBytes, ap.proofs[1], fromBase58String(ar[1])))
702+ else 0) + (if (sigVerify(dN.bodyBytes, dN.proofs[1], fromBase58String(dQ[1])))
193703 then 1
194- else 0)) + (if (sigVerify(ap.bodyBytes, ap.proofs[2], fromBase58String(ar[2])))
704+ else 0)) + (if (sigVerify(dN.bodyBytes, dN.proofs[2], fromBase58String(dQ[2])))
195705 then 1
196- else 0)) + (if (sigVerify(ap.bodyBytes, ap.proofs[3], fromBase58String(ar[3])))
706+ else 0)) + (if (sigVerify(dN.bodyBytes, dN.proofs[3], fromBase58String(dQ[3])))
197707 then 2
198708 else 0))
199- (as >= 3)
709+ (dR >= 3)
200710 }
201711

github/deemru/w8io/873ac7e 
458.25 ms